yacc(1) USER COMMANDS yacc(1)
NAME
yacc - yet another compiler-compiler
SYNOPSIS
yacc [-vVdlt] [-Q[y|n]] file
DESCRIPTION
The yacc command converts a context-free grammar into a set
of tables for a simple automaton that executes an LALR(1)
parsing algorithm. The grammar may be ambiguous; specified
precedence rules are used to break ambiguities.
The output file, y.tab.c, must be compiled by the C compiler
to produce a program yyparse. This program must be loaded
with the lexical analyzer program, yylex, as well as main
and yyerror, an error handling routine. These routines must
be supplied by the user; the lex(1) command is useful for
creating lexical analyzers usable by yacc.
-v Prepares the file y.output, which contains a
description of the parsing tables and a report on
conflicts generated by ambiguities in the grammar.
-d Generates the file y.tab.h with the #define state-
ments that associate the yacc-assigned ``token
codes'' with the user-declared ``token names.''
This association allows source files other than
y.tab.c to access the token codes.
-l Specifies that the code produced in y.tab.c will
not contain any #line constructs. This option
should only be used after the grammar and the asso-
ciated actions are fully debugged.
-Q[y|n] The -Qy option puts the version stamping informa-
tion in y.tab.c. This allows you to know what ver-
sion of yacc built the file. The -Qn option (the
default) writes no version information.
-t Compiles runtime debugging code by default. Run-
time debugging code is always generated in y.tab.c
under conditional compilation control. By default,
this code is not included when y.tab.c is compiled.
Whether or not the -t option is used, the runtime
debugging code is under the control of YYDEBUG, a
preprocessor symbol. If YYDEBUG has a non-zero
value, then the debugging code is included. If its
value is zero, then the code will not be included.
The size and execution time of a program produced
without the runtime debugging code will be smaller
and slightly faster.
1
yacc(1) USER COMMANDS yacc(1)
-V Prints on the standard error output the version
information for yacc.
FILES
y.output
y.tab.c
y.tab.h defines for token names
yacc.tmp,
yacc.debug, yacc.acts
temporary files
LIBDIR/yaccpar parser prototype for C programs
LIBDIR usually /usr/ccs/lib
SEE ALSO
lex(1).
See the ``yacc'' chapter in the Programmer's Guide: ANSI C
and Programming Support Tools.
DIAGNOSTICS
The number of reduce-reduce and shift-reduce conflicts is
reported on the standard error output; a more detailed
report is found in the y.output file. Similarly, if some
rules are not reachable from the start symbol, this instance
is also reported.
NOTES
Because file names are fixed, at most one yacc process can
be active in a given directory at a given time.
2