2.9BSD/usr/man/cat1/eyacc.1

Compare this file to the similar file:
Show the results in this format:


EYACC(1)            UNIX Programmer's Manual             EYACC(1)

NAME
     eyacc - modified yacc allowing much improved error recovery

SYNOPSIS
     eyacc [ -v ] [ grammar ]

DESCRIPTION
     _E_y_a_c_c converts a context-free grammar into a set of tables
     for a simple automaton which executes an LR(1) parsing algo-
     rithm.  The grammar may be ambiguous; specified precedence
     rules are used to break ambiguities.

     The output is _y._t_a_b._c, which must be compiled by the C com-
     piler and loaded with any other routines required.  If the
     -v flag is given, the file _y._o_u_t_p_u_t is prepared, which con-
     tains a description of the parsing tables and a report on
     conflicts generated by ambiguities in the grammar.

     _E_y_a_c_c is a slight but significant modification of an old
     version of _y_a_c_c(1).  The most important change is that _e_y_a_c_c
     fully enumerates test actions in its parser when an error
     token is in the look-ahead set.  This prevents the parser
     from making undesirable reductions when an error occurs
     before the error is detected.  _E_y_a_c_c also uses a different
     encoding for the action tables to allow the parser to run
     faster.  Because of the change in enumerating look-aheads,
     there are more frequently a series of `test' states in the
     parse tables.  For this reason, test states are encoded as
     the arithmetic inverse of the value of the token to be
     tested for.  This allows a much tighter inner loop in the
     parser and more than compensates for the extra tests
     required.  (Of course, the same change could be made to the
     tables of _y_a_c_c and it would then run significantly faster
     than _e_y_a_c_c, but error recovery of the kind performed using
     _e_y_a_c_c would not be possible without the enumerated look-
     aheads.)

     Minor changes to _y_a_c_c in _e_y_a_c_c include the recognition of a
     form-feed as a white space character, increased table size
     so as to handle larger grammars, and a change of the code
     for the error action (from 0 to 1) because of the change in
     the testing outlined above.  For this reason it is not pos-
     sible to use the standard _y_a_c_c library with _e_y_a_c_c. This
     would be pointless in any case, because a different set of
     recovery routines is needed.

SEE ALSO
     `LR Parsing', by A. V. Aho and S. C. Johnson, Computing Sur-
     veys, June, 1974.

     `The YACC Compiler-compiler', internal memorandum.

Printed 5/16/83                                                 1

EYACC(1)            UNIX Programmer's Manual             EYACC(1)

     `Practical syntactic error recovery', by Susan L. Graham and
     Stephen P. Rhodes, CACM, November 1975.

     pi(1), yacc(1)

AUTHOR
     S. C. Johnson

     _E_y_a_c_c modifications by Charles Haley and William Joy.

FILES
     y.output
     y.tab.c

DIAGNOSTICS
     The number of reduce-reduce and shift-reduce conflicts is
     reported on the standard output; a more detailed report is
     found in the _y._o_u_t_p_u_t file.

BUGS
     An _e_y_a_c_c library should be available.

Printed 5/16/83                                                 2