Provided by: perl-byacc_2.0-10_amd64
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 │ --
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.