    YACC(I)                      11/25/74                     YACC(I)

    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 re-
         port 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 ac-
         tions, 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
         found in the y.output file.

                                  - 1 -

    YACC(I)                      11/25/74                     YACC(I)

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

                                  - 2 -