Provided by: perl-byacc_2.0-10_amd64 bug

NAME

       pbyacc - an LALR(1) parser generator

SYNOPSIS

       pbyacc [ -CPcdlrtv ] [ -b file_prefix ] [ -p symbol_prefix ] filename

DESCRIPTION

       pbyacc  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  or  Perl
       programming  languages.   pbyacc  normally  writes  the  parse  tables and the driver routine to the file
       y.tab.c, using the C programming language.

       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.

              -C or -c
                     Use the C programming language (default).

              -d     The -d option causes the header file y.tab.h to be written (or y.tab.ph, for Perl).

              -l     If  the  -l  option  is not specified, pbyacc 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, pbyacc will not insert the #line
                     directives.  #line directives specified by the user will be retained.

              -p symbol_prefix
                     Change the prefix in symbols in the generated code to the string denoted  by  symbol_prefix
                     rather than the default of "yy".  Only symbols generated by pbyacc are affected. Symbols in
                     the definition and user subroutine sections are not changed.

                     The  symbol_prefix  can  contain  upper  or  lower case letters, digits, or _ (underline or
                     underscore). It must start with either an underline or a letter and must contain  at  least
                     one lower case letter.

                     All  lower  case  letters in the symbol prefix will be converted to upper case letters when
                     defined values or typedefs are generated.

                     For example, if '-p ftp_' is specifed on the pbyacc command line:
                          ┌──────────────┬──────────────┐
                          │  old symbol  │  new symbol  │
                          ├──────────────┼──────────────┤
                          │  YYABORT     │  FTP_ABORT   │
                          │  YYACCEPT    │  FTP_ACCEPT  │
                          │  YYBYACC     │  FTP_BYACC   │
                          │  YYDEBUG     │  FTP_DEBUG   │
                          │  YYSTYPE     │  FTP_STYPE   │
                          │  yyabort     │  ftp_abort   │
                          │  yyerrok     │  ftp_errok   │
                          │  yylex       │  ftp_lex     │
                          │  yylval      │  ftp_lval    │
                          │  yyparse     │  ftp_parse   │
                          └──────────────┴──────────────┘
                     Note: The above list is not complete.

              -P     Use the Perl programming language.  The output files have extensions .tab.pl and .tab.ph.

              -r     The -r option causes pbyacc 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.  In Perl mode, the file name
                     extension is .pl, but the use of this option is not recommended.

              -t     The -t option changes the preprocessor directives generated by  pbyacc  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.

       In  C  mode, the user's code at the end of the PBYACC file is inserted before the yyparse subroutine, but
       in Perl mode, it is appended to yyparse so it can contain the main program.  In Perl mode,  there  is  no
       library, so the user must supply the yyerror and yylex subroutines and a main program that calls yyparse.
       For example:

              %%
              ...grammar...
              %%
              sub yyerror { print STDERR "$.: $@\n"; }
              sub yylex { ... }
              exit &yyparse;

FILES

       y.code.c    output parser code in C
       y.tab.c     output parser code and tables in C or, if -r switch specified, output parser tables in C
       y.tab.h     defines for token names and, if %union used in grammar, the union definition for C parsers
       y.code.pl   output parser code in PERL
       y.tab.pl    output  parser  code  and  tables in PERL or, if -r switch specified, output parser tables in
                   PERL
       y.tab.ph    PERL assignment statements for token names
       y.output    description of parser states, state transitions, and conflicts
       /tmp/pbyacc.aXXXXXX, /tmp/byacc.tXXXXXX, /tmp/byacc.uXXXXXX
                   temporary files
       /usr/lib/libby.a
                   library containing simple versions of main()  (calls  yyparse()  then  exits)  and  yyerror()
                   (prints message to stderr then returns)

SEE ALSO

       flex(1), lex(1)

       Yacc: Yet Another Compiler-Compiler
       Stephen C. Johnson
       Originally (?) published as Comp. Sci. Tech. Rep. No. 32. Bell Laboratories, July 1975. Reprinted in many
       different places.

       Introduction to Compiler Construction with UNIX
       Axel T. Schreiner and H. George Friedman, Jr.
       Prentice Hall, 1985.

       lex & yacc, Second Edition
       John R. Levine, Tony Mason, and Doug Brown
       O'Reilly & Associates, Inc., 1992.
            Possibly the best book yet on lex and yacc. (My opinion only. Others may disagree. - Rick Ohnemus)

       comp.compilers monthly message and Frequently Asked Questions
       Posted monthly in comp.compilers and news.answers USENET newsgroups.

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.

RESTRICTIONS

       A  symbol prefix specified using the -p switch must contain at least one lower case character. This is to
       allow a distinction between variables, defined values, and typedefs.

BUGS

4.3 Berkeley Distribution                       January 18, 1993                                       PBYACC(1)