# yacc(1)

## NAME

         yacc - an LALR(1) parser generator

## SYNOPSIS

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

## DESCRIPTION

         Yacc reads the grammar specification in the file filename  and  generates
         an  LR(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.

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

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

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

         If the environment variable TMPDIR is set, the string denoted  by  TMPDIR
         will  be  used as the name of the directory where the temporary files are
         created.

## FILES

         y.code.c
         y.tab.c
         y.tab.h
         y.output
         /tmp/yacc.aXXXXXX
         /tmp/yacc.tXXXXXX
         /tmp/yacc.uXXXXXX

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