Man Linux: Main Page and Category List

NAME

       Yacc - an LALR(1) parser generator

SYNOPSIS

       yacc [ -dglrtv ] [ -b file_prefix ] [ -p symbol_prefix ] filename

DESCRIPTION

       Yacc reads the grammar specification in the file filename and generates
       an LALR(1) parser for it.  The parsers consist  of  a  set  of  LALR(1)
       parsing  tables  and  a  driver  routine  written  in the C programming
       language.  Yacc normally writes the parse tables and the driver routine
       to the file y.tab.c.

       The following options are available:

       -b file_prefix
              The  -b  option  changes the prefix prepended to the output file
              names to the string denoted by file_prefix.  The default  prefix
              is the character y.

       -d     The -d option causes the header file y.tab.h to be written.

       -g     The  -g  option  causes a graphical description of the generated
              LALR(1) parser to be written  to  the  file  y.dot  in  graphviz
              format, ready to be processed by dot(1).

       -l     If  the  -l  option  is  not  specified,  yacc will insert #line
              directives in the generated code.  The #line directives let  the
              C  compiler  relate  errors  in the generated code to the user’s
              original code.  If the -l option is  specified,  yacc  will  not
              insert  the #line directives.  #line directives specified by the
              user will be retained.

       -o output_file
              specify the filename for the parser file.  If this option is not
              given,  the output filename is the file prefix concatenated with
              the file suffix, e.g., y.tab.c.  This overrides the -p option.

       -p symbol_prefix
              The -p option changes the  prefix  prepended  to  yacc-generated
              symbols  to  the  string  denoted by symbol_prefix.  The default
              prefix is the string yy.

       -P     create a reentrant parser, e.g., "%pure-parser".

       -r     The -r option causes yacc to produce separate files for code and
              tables.  The code file is named y.code.c, and the tables file is
              named y.tab.c.

       -t     The -t option changes the preprocessor directives  generated  by
              yacc  so  that  debugging statements will be incorporated in the
              compiled code.

       -v     The  -v  option  causes  a  human-readable  description  of  the
              generated parser to be written to the file y.output.

       -V     print the version number to the standard output.

EXTENSIONS

       yacc  provides  some  extensions for compatibility with bison and other
       implementations of yacc:

        %expect number
              tell yacc the expected number of shift/reduce  conflicts.   That
              makes it only report the number if it differs.

        %expect-rr number
              tell  yacc the expected number of reduce/reduce conflicts.  That
              makes it only report the number if it differs.  This is  (unlike
              bison) allowable in LALR parsers.

        %lex-param { argument-declaration }
              By default, the lexer accepts no parameters, e.g., yylex().  Use
              this directive to add parameter declarations for your customized
              lexer.

        %parse-param { argument-declaration }
              By  default,  the parser accepts no parameters, e.g., yyparse().
              Use this  directive  to  add  parameter  declarations  for  your
              customized parser.

        %pure-parser
              Most variables (other than yydebug and yynerrs) are allocated on
              the  stack  within  yyparse,  making   the   parser   reasonably
              reentrant.

DIAGNOSTICS

       If  there are rules that are never reduced, the number of such rules is
       reported on standard error.  If there are any  LALR(1)  conflicts,  the
       number of conflicts is reported on standard error.