yacc(1) yacc(1)
NAME
yacc - yet another compiler-compiler
SYNOPSIS
yacc [-vVdltw] [-p driver_file] [-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. 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.
-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.
-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.
Copyright 1994 Novell, Inc. Page 1
yacc(1) yacc(1)
-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 can be
active in a given directory at a given time.
REFERENCES
environ(5), lex(1)
Copyright 1994 Novell, Inc. Page 2