Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ yacc(1) — NEWS-os 5.0.1

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

lex(1)



yacc(1)                  USER COMMANDS                    yacc(1)



NAME
     yacc - yet another compiler-compiler

SYNOPSIS
     yacc [-vVdlt] [-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.

     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.




                                                                1





yacc(1)                  USER COMMANDS                    yacc(1)



     -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
     LIBDIR/yaccpar      parser prototype for C programs
     LIBDIR              usually /usr/ccs/lib
SEE ALSO
     lex(1).
     See the ``yacc'' chapter in the Programmer's Guide:  ANSI  C
     and Programming Support Tools.
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.






























                                                                2



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