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.
-c
causes extern "C" { ... }
to surround the C++ only
declarations of the functions yyerror()
, yylex()
,
and yyparse()
.
-d
generates 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.
-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 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.
-t
compiles 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.
-V
prints on the standard error output the version information for
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.
-w
generates writable yacc
tables. These tables are
read-only by default.
y.output
, y.tab.c
, y.tab.h
contain definitions for token names.
yacc.tmp,
yacc.debug
, yacc.acts
are temporary files.
LIBDIR
/yaccpar
is the parser prototype for C programs.
LIBDIR
is usually /usr/ccs/lib
/usr/lib/locale/locale>/LC_MESSAGES/uxcplu
is 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