YACC(1) UNIX Programmer's Manual YACC(1) NAME yacc - yet another compiler-compiler SYNOPSIS yacc [ -vd ] grammar DESCRIPTION _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 file, _y._t_a_b._c, must be compiled by the C compiler to produce a program _y_y_p_a_r_s_e. This program must be loaded with the lexical analyzer program, _y_y_l_e_x, as well as _m_a_i_n and _y_y_e_r_r_o_r, an error handling routine. These routines must be supplied by the user; _L_e_x(1) is useful for creating lexi- cal analyzers usable by _y_a_c_c. If the -v flag is given, the file _y._o_u_t_p_u_t is prepared, which contains a description of the parsing tables and a report on conflicts generated by ambiguities in the grammar. If the -d flag is used, the file _y._t_a_b._h is generated with the _d_e_f_i_n_e statements that associate the _y_a_c_c-assigned `token codes' with the user-declared `token names'. This allows source files other than _y._t_a_b._c to access the token codes. FILES y.output y.tab.c y.tab.h defines for token names yacc.tmp, yacc.acts temporary files /usr/lib/yaccpar parser prototype for C programs /lib/liby.a library with default `main' and `yyer- ror' SEE ALSO lex(1) _L_R _P_a_r_s_i_n_g by A. V. Aho and S. C. Johnson, Computing Sur- veys, June, 1974. _Y_A_C_C - _Y_e_t _A_n_o_t_h_e_r _C_o_m_p_i_l_e_r _C_o_m_p_i_l_e_r by S. C. Johnson. 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. Similarly, if some rules are not reachable from the start symbol, this is also reported. BUGS Because file names are fixed, at most one _y_a_c_c process can Printed 12/7/82 1 YACC(1) UNIX Programmer's Manual YACC(1) be active in a given directory at a time. Printed 12/7/82 2