yaccyet another compiler-compiler |
Command |
yacc [-vVcdltw]
[-P driver_file]
[-b file_prefix]
[-p sym_prefix]
[-Q[y|n]]
file
yacc command converts a context-free grammar into a set
of tables for a simple automaton that executes a Look Ahead Left-to-Right
(LALR (1)) parsing algorithm. The grammar may be ambiguous; specified precedence
rules are used to break ambiguities. yacc processes
supplementary code set characters in program comments and strings, and
single-byte supplementary code set characters in tokens, according to the locale
specified in the LC_CTYPE environment variable.
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 command is useful
for creating lexical analyzers usable by yacc.
-b file_prefixuses file_prefix instead of y as the prefix for the
output file names.
-ccauses extern "C" { ... } to surround the C++ only
declarations of the functions yyerror(), yylex(),
and yyparse().
-dgenerates the file y.tab.h with the #define
statements 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.
-lspecifies 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 associated actions are fully debugged.
-P driver_filesupplies the path name of an alternate parser prototype.
-p sym_prefixuses sym_prefix instead of yy as the prefix for the
external linkage names.
-Q[y|n]specifies whether or not to put version stamping information in
y.tab.h. The -Qy option writes the
information and allows you to know what version of yacc
built the file. The -Qn option (the default) writes no
version information.
-tcompiles runtime debugging code by default. Runtime 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 is not
included. The size and execution time of a program produced without the
runtime debugging code is smaller and slightly faster.
-Vprints on the standard error output the version information for
yacc.
-vprepares the file y.output, which contains a description
of the parsing tables and a report on conflicts generated by ambiguities
in the grammar.
-wgenerates writable yacc tables. These tables are
read-only by default.
y.output, y.tab.c, y.tab.hcontain definitions for token names.
yacc.tmp, yacc.debug, yacc.actsare temporary files.
LIBDIR/yaccparis the parser prototype for C programs.
LIBDIRis usually /usr/ccs/lib
/usr/lib/locale/locale>/LC_MESSAGES/uxcpluis the language-specific message file.
y.output file. Similarly, if some rules are not reachable from the
start symbol, this instance is also reported.
yacc process
without -b or with the same -b prefix
can be active in a given directory at a given time.
lex