NAME
     yacc - yet another compiler-compiler

SYNOPSIS
     yacc [ -vor ] [ grammar ]

DESCRIPTION
     Yacc 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.tab.c, which must be compiled by the C com-
     piler and loaded with any other routines required (perhaps a
     lexical analyzer) and the Yacc library:

             cc y.tab.c other.o -ly

     If the -v flag is given, the file y.output is prepared,
     which contains a description of the parsing tables and a
     report on conflicts generated by ambiguities in the grammar.

     The -o flag calls an optimizer for the tables; the optimized
     tables, with parser included, appear on file y.tab.c

     The -r flag causes Yacc to accept grammars with Ratfor
     actions, and produce Ratfor output on y.tab.r; -r implies
     the -o flag.  Typical usage is then

             rc y.tab.r other.o

SEE ALSO
     ``LR Parsing'', by A. V. Aho and S. C. Johnson, Computing
     Surveys, June, 1974.  ``The YACC Compiler-compiler'', inter-
     nal memorandum.

AUTHOR
     S. C. Johnson

FILES
     y.output
     y.tab.c
     y.tab.r                 when ratfor output is obtained
     yacc.tmp                when optimizer is called
     /lib/liby.a             runtime library for compiler
     /usr/yacc/fpar.r        ratfor parser
     /usr/yacc/opar.c        parser for optimized tables
     /usr/yacc/yopti         optimizer postpass

DIAGNOSTICS
     The number of reduce-reduce and shift-reduce conflicts is
     reported on the standard output; a more detailed report is

 1

     found in the y.output file.

BUGS
     Because file names are fixed, at most one Yacc process can
     be active in a given directory at a time.

 2