Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

lex(1)



          YACC(1)              INTERACTIVE UNIX System              YACC(1)



          NAME
               yacc - yet another compiler-compiler

          SYNOPSIS
               yacc [ -vdlt ] grammar

          DESCRIPTION
               The yacc command converts a context-free grammar into a set
               of tables for a simple automaton which executes an LR(1)
               parsing algorithm.  The grammar 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; lex(1) is useful for creating lexi-
               cal analyzers usable by yacc.

               If the -v flag is given, the file y.output is prepared,
               which contains a description of the parsing tables and a
               report on conflicts generated by ambiguities in the grammar.

               If the -d flag is used, the file y.tab.h is generated with
               the #define statements that associate the yacc-assigned
               ``token codes'' with the user-declared ``token names''.
               This allows source files other than y.tab.c to access the
               token codes.

               If the -l flag is given, the code produced in y.tab.c will
               not contain any #line constructs.  This should only be used
               after the grammar and the associated actions are fully
               debugged.

               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.  However, when yacc's
               -t option is used, this debugging code will be compiled by
               default.  Independent of whether the -t option was 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.

          FILES
               y.output
               y.tab.c
               y.tab.h             defines for token names
               yacc.tmp,
               yacc.debug, yacc.acts    temporary files
               /usr/lib/yaccpar    parser prototype for C programs


          Rev. C Software Development Set                            Page 1





          YACC(1)              INTERACTIVE UNIX System              YACC(1)



          SEE ALSO
               lex(1).
               Chapter 6 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 is also
               reported.

          CAVEAT
               Because file names are fixed, at most one yacc process can
               be active in a given directory at a given time.









































          Rev. C Software Development Set                            Page 2



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026