yacc(1)                                                                yacc(1)


NAME
     yacc - yet another compiler-compiler

SYNOPSIS
     yacc [-vVdlt] [-Q[y|n]] [-p sym_prefix] [-b file_prefix]
     [-P parser] 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 may be supplied by the user; the lex(1) command is useful
     for creating lexical analyzers usable by yacc.  A simple main and yyerror
     are available in liby.  The yyerror routine in liby.a has the following
     signature:  int yyerror(const char *).  If a user wishes to have a
     yyerror with a different signature, they must define the symbol
     __my_yyerror at the top of their .y file.

     -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
               Use file_prefix instead of y as the prefix for all output
               filenames.

     -p sym_prefix
               Use sym_prefix instead of yy as the prefix for all external
               names produced by yacc.  For X/Open compliance, when the
               environment variable _XPG is set, then the -p option will work
               as described in the previous sentence.  If the environment
               variable _XPG is not set, then the -p option will work as
               described below in the -P option.

     -P file   Location of the common parser; the code contained here is
               emitted verbatim by yacc in the generated code. This provides
               compatibility with the old -p flag in AT&T yacc.

     -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.

     -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.

FILES
     y.output
     y.tab.c
     y.tab.h
          defines for token names
     yacc.tmp, yacc.debug, yacc.acts
          temporary files; these names are used only if the TMPDIR environment
          variable is not set.  If TMPDIR is set, then these temporary files
          are stored in that directory, using unique names.
     /usr/lib/yaccpar
          parser prototype for C programs
SEE ALSO
     lex(1)
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.


                                                                        Page 2