COHERENT manpages
This page displays the COHERENT manpage for yacc [Parser generator].
List of available manpages
Index
yacc -- Command Parser generator yacc [option ...] file cc y.tab.c [-ly] Many programs process highly structured input according to given rules. Compilers are a familiar example. Two of the most complicated parts of such programs are lexical analysis and parsing (sometimes called syntax analysis). The COHERENT system includes two powerful tools called lex and yacc to assist you in performing these tasks. lex takes a set of lexical rules and writes a lexical analyzer, whereas yacc takes a set of parsing rules and writes a parser; both output C source code that can be compiled into a full program. The term yacc is an acronym for ``yet another compiler-compiler''. In brief, the yacc input file describes a context free grammar using a BNF- like syntax. The output is a file y.tab.c; it contains the definition of a C function yyparse(), which parses the language described in file. The output is ready for processing by the C compiler cc. Ambiguities in the grammar are reported to the user, but resolved automatically by precedence rules. The user must provide a lexical scanner yylex(), which you may generate with lex. The yacc library includes default definitions of main, yylex, and yyerror, and may be included with the option -ly on the cc command line. yacc recognizes the following options: -d Enable debugging output; implies -v. -hdr headerfile Put the header output in headerfile instead of y.tab.h. -items N Allow N items per state. This option is designed to help yacc users deal with the ANSI C grammar. -l listfile Place a description of the state machine, tokens, parsing actions, and statistics in file listfile. -sprod N Allow N symbols per production; default, 20. This option is designed to help yacc users deal with the ANSI C grammar. -st Print statistics on the standard output. -v Verbose option. Like -l, but places the listing in file y.output by default. The following options are useful if table overflow messages appear: -nterms N Allow for N nonterminals; default, 100. -prods N Allow for N productions (rules); default, 350. -states N Allow for N states; default, 300. -terms N Allow for N terminal symbols; default 100. -types N Allow for N types; default, ten. Files y.tab.c -- C source output y.tab.h -- Default C header output y.output -- Default listing output /lib/yyparse.c -- Protoparser /tmp/y[ao]* -- Temporaries /usr/lib/liby.a -- Library See Also cc, commands, lex, Programming COHERENT Introduction to yacc, Yet Another Compiler-Compiler Diagnostics yacc writes onto the standard error the number of R/R (reduce/reduce) and S/R (shift/reduce) conflicts (ambiguities). Notes The version of yacc shipped prior to release 4.2 of COHERENT included the header file <action.h> in its output. This file's data are now built into parser skeleton in /lib/yyparse, thus obviating <action.h>. This header has been dropped from COHERENT. You should re-run yacc to update the source files generated by previous versions of yacc.