yet another compiler-compiler--a parser generator
[-vdltwV -Q[y|n] ] filename
The yacc command is used to generate C code that
implements a parser. The program that yacc
generates is based on an input file consisting
of a grammar and possibly some C code fragments and internal
declarations. yacc converts a context-free grammar
into a set of tables for a simple automaton which executes a
parsing algorithm. Code that is executed whenever a grammar production
is recognized may be supplied. The grammar may be ambiguous; precedence rules
are used to resolve ambiguities.
The output file containing the parser code is called
y.tab.c. This program must be compiled by
the C compiler; the parsing routine is called yyparse.
This program must be linked with a lexical analyzer
routine with the name yylex, as well as main
and yyerror, an error-handling routine.
will generate a lexical analyzer routine called yylex;
if the program is linked with the yacc
library, main and yyerror will be supplied.
yacc produces C code which may be compiled with C++.
All functions produced and used by yacc-produced code
explicitly have "C" linkage.
In particular, user-supplied version of yylex()
and yyerror() may be written in C++,
but must have "C" linkage, and the function yyparse,
must be declared extern "C" if called by C++ code.
Because file names are fixed, only one yacc
process can be active in a given directory.
A file called y.tab.h will be generated.
This file contains #define statements associating
yacc-assigned token codes with the user-declared token names.
This file may be included in other programs which need
to access the token codes.
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.
Obsolete. Silently ignored for backwards compatibility.
Runtime debugging code is always generated in y.tab.c.
By default, this code is not compiled. However, when
yacc's -t option is used, this debugging code
will be compiled. Independent of whether 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 compiled. If its value is zero, then the code
will not be compiled. A program compiled without the
runtime debugging code will be smaller and slightly faster.
A file called y.output will be generated.
This file contains a description of the parsing
tables and a report on conflicts generated by ambiguities in the grammar.
Print out version information on standard error.
Print out version information to output file lex.yy.c
by using -Qy.
The -Qn option does not
print out version information and is the default.
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.
If some rules are not reachable from the start symbol, this is reported.
Defines for token names.
Parser prototype for C programs.
yacc is conformant with:
X/Open Portability Guide, Issue 3, 1989
© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003