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 -