Next Previous Contents

5. MSTA Usage




MSTA(1)                    User Manuals                   MSTA(1)


NAME
       msta - syntax description translator

SYNOPSIS
       msta  [  -d  -define  -l  -line  -t  -trace -v -verbose -b
       file_prefix -p sym_prefix -h -help --help  -w  -c++  -enum
       -no-enum -pattern-equiv -no-pattern-equiv -look-ahead num-
       ber -la number  -lr  -no-lr  -lalr-optimization  -no-lalr-
       optimization  -regular-optimization  -no-regular-optimiza-
       tion -split-lr-sets -no-split-lr-sets -yacc-error-recovery
       -local-error-recovery    -minimal-error-recovery   -error-
       reduce -no-error-reduce -error-conflict -no-error-conflict
       -yacc-input  -no-yacc-input -strict -no-strict -yacc-file-
       names -no-yacc-file-names -o name  -y  -yacc  -full-lr-set
       -lr-situation-context  -removed-lr-sets -expand -no-expand
       -time] specification-file

DESCRIPTION
       MSTA reads input grammar which is described in  specifica-
       tion  file  and generates parser for it.  MSTA can process
       any POSIX YACC grammar and generates equivalent parser  in
       the  sence  of POSIX standard.  But MSTA can do many addi-
       tional things: generation of more safe error  recovery  or
       much  better  error  recovery,  better output of generated
       parser  description,  generation  of  fast  LALR(k)-   and
       LR(k)-grammar  parser  with acceptable space requirements,
       generation of scanners described as  context-free  grammar
       (CFG), and so on.  The specification file must have suffix
       `.y'

       The generated code  consists  of  optional  interface  and
       implementation  files and optional description file having
       the same names as one of  specification  file  and  corre-
       spondingly  suffixes  `.h' (if option -d or -c++ is given)
       and `.c' (C code)  or  `.cpp'  (C++  code)  and  `.output'
       (description file).  If MSTA runs in YACC regime, the cor-
       responding files will be `y.tab.h' (if option -d  or  -c++
       is given) and `y.tab.c' (C code) or `y.tab.cpp' (C++ code)
       and `y.output' (description file).

       Full documentation of MSTA is in MSTA User's manual.

OPTIONS
       The options which are known for MSTA and YACC are:

       -d     Create the interface file.  By default  the  inter-
              face file is not generated.

       -l     Insert  user's  original code into generated parser
              without `#line' constructs.  By  default  construc-
              tions `#line' are always generated.

       -t     Permit  compilation  of  debugging code in the code
              file  (tracing  of  the  parser   work).    Runtime



COCOM                       5 SEP 1999                          1





MSTA(1)                    User Manuals                   MSTA(1)


              debugging  statements  are  always contained in the
              parser,  but  by  default  conditional  compilation
              directives  prevent their compilation.  This option
              defines macro `YYDEBUG' as 1 (by default its  value
              is  0)  and as consequence the debugging statements
              are processed.

       -v     Create a file containing description of the parser.

       -b file_prefix
              Use  file_prefix  instead  of `y' as the prefix for
              all output filenames when YACC regime of  generated
              file names is on.

       -p sym_prefix
              Use  sym_prefix instead of yy as the prefix for all
              external names (i.e.  functions yyparse ,  yylex  ,
              and  yyerror  , and the variables yylval , yychar ,
              and yydebug ) produced by MSTA.

       Additional options which are known only for MSTA are:

       -define
              This is synonym of option `-d'

       -line  This is synonym of option `-l'

       -trace This is synonym of option `-t'

       -verbose
              This is synonym of option `-v'

       -h, -help, --help
              These options result in that only brief description
              of  options is output into stderr.  The same result
              can be achieved by calling MSTA without any options
              and arguments.

       -w     No   any   warning  messages  are  generated,  e.g.
              repeated description of type, value,  and  priority
              of   token   or   terminal,  repeated  construction
              `%start' and many others.

       -c++   Output of C++ code instead  of  C  code  (which  is
              default).

       -enum  Generate  token constants as enumeration instead of
              macro.

       -no-enum
              Generate  token  constants  as   macro   (this   is
              default).





COCOM                       5 SEP 1999                          2





MSTA(1)                    User Manuals                   MSTA(1)


       -pattern-equiv
              Equivalent patterns are denoted by the same nonter-
              minal (by default).  Sometimes this results in dra-
              matic  reducing conflicts when complex patterns are
              used.

       -no-pattern-equiv
              Even equivalent patterns are denoted  by  different
              nonterminals  and  are  expanded into the different
              set of rules

       -look-ahead number, -la number
              Determine maximal length of look-ahead  when  LR(k)
              and  LALR(k)  generated parser.  This does not mean
              that MSTA in each situation and for each input will
              look  ahead  on  given  number  tokens.  MSTA looks
              ahead only on minimal number of tokens required for
              resolution  of  a  conflict.   The default value of
              maximal look ahead is 1.

       -lr    Input grammar is considered to be a  LR(k)-grammar.

       -no-lr Input  grammar  is considered to be a LALR(k)-gram-
              mar.  This is default.

       -lalr-optimization
              If  the  input  grammar  is  considered  to  be   a
              LR(k)-grammar,  MSTA will make LALR(k)-optimization
              after building LR(k)-parser.  It  means  that  MSTA
              will  extract  LALR(k)-parts  of  LR(k)-grammar and
              will represent them by addequate LALR-sets.  If the
              input  LR(k)-grammar is "almost" a LALR(k)-grammar,
              MSTA can descrease size of the generated parser  in
              several   times.    If   the  input  grammar  is  a
              LALR(k)-grammar, MSTA will  create  LALR(k)-parser.
              This  option is default when option `-lr' is given.

       -no-lalr-optimization
              When option `-lr' is  given,  MSTA  does  not  make
              LALR-optimization.

       -regular-optimization
              After  building  LALR-sets  or LR-sets and optional
              LALR-optimization, MSTA  makes  extracting  regular
              parts  of  input grammar and implement them by ade-
              quate  methods  (deterministic  finite  automaton).
              This decreases number of final states in the gener-
              ated parser, speeds  up  the  parser,  but  sigthly
              increases the parser size because some actions will
              be present in several examplars in the parser.  The
              more regular parts in the input grammar, the better
              this method works.  By default this option is on.





COCOM                       5 SEP 1999                          3





MSTA(1)                    User Manuals                   MSTA(1)


       -no-regular-optimization
              Disable the regular optimizations.

       -split-lr-sets
              Splitting LR-sets during  regular  optimization  in
              order  to  extract  the most of regular parts (only
              when option  `-regular-optimization'  is  on).   By
              default this option is on if `%free_format' is pre-
              sent in the specification file.

       -no-split-lr-sets
              Option is opposite to the previous one.  By default
              this  option  is  on if `%free_format' is absent in
              the specification file.

       -yacc-error-recovery
              The generated parser will use error recover accord-
              ing to Posix YACC standard.  This error recovery is
              used by default.

       -local-error-recovery
              The generated parser  will  use  sligthly  modified
              error  recovery  method.  This method is more safe.
              It is  guaranteed  that  this  method  can  not  be
              cycled.

       -minimal-error-recovery
              The  generated parser will use a minimal cost error
              recovery where the cost is overall number of tokens
              ignored.  It is guaranteed that this method can not
              be cycled.  This method is expensive because it may
              save   many   input   tokens,   parser  states  and
              attributes.

       -error-reduce
              MSTA generates parser with possible default  reduc-
              ing  (without  checking  the  look  ahead) when the
              token error is in the context.  It means the parser
              may  make a few reduces before recognizing a syntax
              error.  This option is default.

       -no-error-reduce
              The option means that the  generated  parser  makes
              reduces in situation where shift on error is possi-
              ble only when there is  corresponding  look  ahead.
              It  results in better error recovery but the parser
              will have bigger size.

       -error-conflict
              MSTA reports conflicts  on  look  ahead  containing
              token error in LR-set which is a result of shifting
              token error.  This option is default.





COCOM                       5 SEP 1999                          4





MSTA(1)                    User Manuals                   MSTA(1)


       -no-error-conflict
              Token error is not a real token it  is  never  read
              but  many  error  recovery  rules may generate con-
              flicts on error.  To avoid this  you  can  use  the
              option.  In this case MSTA does report conflicts on
              look ahead containing token error in  LR-set  which
              is a result of shifting token error.

       -yacc-input
              Only Posix YACC input can be used as input grammar.

       -no-yacc-input
              All input grammar features of  MSTA  can  be  used.
              This option is default.

       -yacc-file-names
              MSTA  output  file names are generated according to
              Posix YACC ( y.output , y.tab.c , y.tab.h).

       -strict
              Use only strict POSIX YACC input (this option is in
              action  only   when -yacc-input ) not SYSTEM V one.
              Errors are output when nonstrict features are used.
              These  features  are usage of ';' after definitions
              and C/C++ code insertions and usage of a token  and
              a  literal  in  %type clauses as before and after a
              description of the token  and  the  literal.   This
              option is on by default.

       -no-strict
              This  option  is in action only when -yacc-input is
              on.  Only warnings about non strict POSIX YACC fea-
              tures usage are output.

       -no-yacc-file-names
              Output files will have the same name and suffixes (
              .h , .c , and .output ).   This  option  is  on  by
              default.

       -o     Specify names of output files (header file name.h ,
              code file name.c , description file name.output

       -y, -yacc
              Emulate Posix YACC.   It  means  that  the  options
              `-yacc-input'  , `-lalr' , `-yacc-error-recovery' ,
              and `-yacc-file-names' are on,  and  -c++  is  off.
              This  option  is  useful  with  other options, e.g.
              options `-lr' and `-y' means also  `-yacc-input'  ,
              `-yacc-error-recovery' , and `-yacc-file-names'.

       -full-lr-set
              Write all LR-situations (besides essential ones) of
              LR-sets into a file containing description  of  the
              parser  (the  option  acts only with option `-v' ).



COCOM                       5 SEP 1999                          5





MSTA(1)                    User Manuals                   MSTA(1)


              Sometimes it is  useful  for  better  understanding
              conflicts.   But  in this case the description file
              can be significantly bigger.

       -lr-situation-context
              Write context of LR-situations into description  of
              the  parser  (the option acts only with option `-v'
              ).  Sometimes it is useful for better understanding
              conflicts.   But  in this case the description file
              can be huge espicially for LR(k)- and LALR(k)-gram-
              mar  when  k > 1 or when with option `-full-lr-set'
              parser generation speed because classic  method  of
              LR-,  LALR-sets  is  used  instead  of fast DeRemer
              method.  By default this option is off.

       -removed-lr-sets
              Write LR-sets removed  during  conflict  resolution
              and  regular  optimization  into description of the
              parser (the option acts only with option -v ).   By
              default such unchievable LR-sets are not present in
              the description file.

       -expand
              Attributes and states stacks in the parser will  be
              expandable (this is default).

       -no-expand
              Attributes  and states stacks in the parser will be
              not expandable.

       -time  Output detail time statistics of MSTA work  on  its
              basic passes and optimizations.

FILES
       file.y
              MSTA specification file
       file.c or y.tab.c
              generated C implementation file
       file.cpp or y.tab.cpp
              generated C++ implementation file
       file.h or y.tab.h
              generated interface file
       file.output or y.output
              generated interface file
       There are no any temporary files used by MSTA.

ENVIRONMENT
       There  are  no  environment  variables  which  affect MSTA
       behavior.

DIAGNOSTICS
       MSTA diagnostics is self-explanatory.





COCOM                       5 SEP 1999                          6





MSTA(1)                    User Manuals                   MSTA(1)


AUTHOR
       Vladimir N. Makarov, vmakarov@users.sourceforge.net

SEE ALSO
       oka(1), sprut(1), nona(1), shilka(1).  SHILKA manual.

BUGS
       Please, report bugs to cocom-bugs@lists.sourceforge.net.

















































COCOM                       5 SEP 1999                          7


Next Previous Contents