Man Linux: Main Page and Category List

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