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:
-bfile_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.
-psymbol_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;