YACC(1-SVR4) RISC/os Reference Manual YACC(1-SVR4)
NAME
yacc - yet another compiler-compiler
SYNOPSIS
yacc [-vVdlt] [-Q[y|n]] [-p driver_file] file
DESCRIPTION
The yacc command converts a context-free grammar into a set
of tables for a simple automaton that executes an LALR(1)
(Look-Ahead one input symbol) parsing algorithm. The gram-
mar may be ambiguous; specified precedence rules are used to
break ambiguities.
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 state-
ments 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 asso-
ciated actions are fully debugged.
-Q[y|n] The -Qy option puts the version stamping informa-
tion in y.tab.c. This allows you to know what ver-
sion of yacc built the file. The -Qn option (the
default) writes no version information.
-t Compiles runtime debugging code by default. Run-
time 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.
Printed 11/19/92 Page 1
YACC(1-SVR4) RISC/os Reference Manual YACC(1-SVR4)
-V Prints on the standard error output the version
information for yacc.
-p Specifies parser to be used. The default is
LIBDIR/yaccpar.
INTERNATIONAL FUNCTIONALITY
yacc can process characters from supplementary code sets as
well as ASCII characters.
Characters from supplementary code sets can be specified in
comments which exist in declarations, rules, and programs.
Characters from supplementary code sets can be specified in
strings which exist in actions in rules and in programs.
Character strings from supplementary code sets can be
defined as tokens.
FILES
/usr/ccs/bin/yacc
/usr/ccs/lib/yaccpar
parser prototype for C programs
y.output
y.tab.c
y.tab.h defines for token names
yacc.tmp,
yacc.debug, yacc.acts
temporary files
LIMITATIONS
Characters from supplementary code sets which define tokens
are restricted to single-byte characters.
SEE ALSO
lex(1).
The yacc chapter in the Programmer's Guide.
DIAGNOSTICS
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.
NOTES
Because file names are fixed, at most one yacc process can
be active in a given directory at a given time.
RISC/os 5.0 provides 3 version of the yacc command: BSD43-
based, SVR3-based, and this SVR4-based version, which is
similar to the SVR3-based version but produces slightly dif-
ferent output. This SVR4-based yacc handles multibyte char-
acters and uses messaging facilities (see INTERNATIONAL
FUNCTIONALITY, above), dynamically allocates storage, and
includes the following header files:
Page 2 Printed 11/19/92
YACC(1-SVR4) RISC/os Reference Manual YACC(1-SVR4)
#include <malloc.h>
#include <memory.h>
#include <values.h>
Printed 11/19/92 Page 3