yacc(1)
yacc --
yet another compiler-compiler
Synopsis
yacc [-vVcdltw] [-P driver_file] [-b file_prefix] [-p sym_prefix] [-Q[y|n]] file
Description
The
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 (see LANG on
environ(5)).
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.
-b file_prefix-
Change to use file_prefix instead of y as the
prefix for the output filenames.
-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_file-
Supplies the path name of an alternate parser prototype.
-p sym_prefix-
Change to use sym_prefix instead of yy as the
prefix for the external linkage names.
-Q[y|n]-
The -Qy option puts the version stamping information in y.tab.c.
This 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 will not be included.
The size and execution time of a program produced without the
runtime debugging code will be smaller and slightly faster.
-V-
Prints on the standard error output
the version information for yacc.
-w-
Generates writable yacc tables.
These tables are read-only by default.
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
/usr/lib/locale/locale/LC_MESSAGES/uxcplu-
language-specific message file. (See LANG on
environ(5).)
Errors
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.
Notices
Because file names are fixed, at most one
yacc
process without -b or with the same -b prefix can
be active in a given directory at
a given time.
References
environ(5),
lex(1)
© 2004 The SCO Group, Inc. All rights reserved.
UnixWare 7 Release 7.1.4 - 25 April 2004