% This file can be printed with 1 or 2 columns per page (see below).
% Specify how many you want here. Nothing else needs to be changed
% unless you are maintaining the documentation.
-% For printing reference cards to use in books, specify one column
+% For printing reference cards to use in books, specify one column
% per page and reduce to 80%.
% Note that if columnsperpage is set to 2, there will be a few overfull
% boxes, but they are not serious. Just uncomment \finalout.
\def\finalout{\overfullrule=0pt}
%\finalout
-% Copyright (c) 1998 Free Software Foundation, Inc.
+% Copyright (c) 1998, 2001 Free Software Foundation, Inc.
%
% This file is part of Bison.
%
% Which mode to use is controlled by setting \columnsperpage above.
%
% Authors:
-% Brendan Kehoe
+% Brendan Kehoe
% UUCP: widener!brendan
-% Internet: brendan@cs.widener.edu
+% Internet: brendan@cs.widener.edu
%
-% Gavin Nicol
+% Gavin Nicol
% Internet: nick@nsis.cl.co.jp
%
% This refcard format was created by Steve Gildea.
% We only change the following to change the version numbers and
% such.
-\def\bisonversion{1.20} % the bison version
+\def\bisonversion{1.31} % the bison version
-\def\refcardversion{0.4a} % reference card version
-\def\month{August} % month
-\def\year{1998} % year
-\def\version{\month\ \year, Bison Refcard Version \refcardversion}
+\def\refcardversion{0.5} % reference card version
+\def\month{November} % month
+\def\year{2001} % year
+\def\version{\month\ \year, Bison Refcard Version \refcardversion}
% for copyright notices
\def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip}
Permission is granted to make and distribute copies of this card
provided the copyright notice and this permission notice
-are preserved on all copies.
+are preserved on all copies.
\vskip .2\baselineskip
For information, write to the:
\vskip .2\baselineskip
Permission is granted to make and distribute copies of this card
provided the copyright notice and this permission notice
-are preserved on all copies.
+are preserved on all copies.
\vskip .2\baselineskip
For information, write to the:
\vskip .2\baselineskip
\def\ncolumns{\the\columnsperpage}
-\message{[\ncolumns\space
+\message{[\ncolumns\space
column\if 1\ncolumns\else s\fi\space per page]}
\def\scaledmag#1{ scaled \magstep #1}
\def\bye{\par\vfill\supereject
\if a\abc \else\null\vfill\eject\fi
\if a\abc \else\null\vfill\eject\fi
- \end}
+ \end}
\fi
% we won't be using math mode much, so redefine some of the characters
\section{Command Line Options}
%*****************************
+\key{Display usage information.} {-h}
+\key{Display version information.} {-V}
\key{Generate token and {\tt YYSTYPE} definitions.} {-d}
+\key{Prepend a prefix to external symbols.} {-p {\it prefix}}
\key{Don't put {\tt \#line} directives in the parser.} {-l}
\key{Specify the output file.} {-o {\it filename}}
-\key{Debug or {\it trace} mode.} {-t}
+\key{Debug or {\it trace} mode.} {-t}
\key{Verbose description of the parser.} {-v}
\key{Emulate {\tt yacc} (generate {\tt y.tab.*} files).} {-y}
\vskip .10truein
-{\bf Note:} The token and {\tt YYSTYPE} definitions are generated
-to a file called {\tt y.tab.h} if the {\tt -y} option is used,
+{\bf Note:} The token and {\tt YYSTYPE} definitions are generated
+to a file called {\tt y.tab.h} if the {\tt -y} option is used,
otherwise it will have the format {\tt {\it name}.tab.h}, where
{\it name} is the leading part of the parser definition filename.
\section{Definitions}
%********************
-\key{Declare a terminal symbol.}{\%token <{\it t\/}>
+\key{Declare a terminal symbol.}{\%token <{\it t\/}>
{\it n}}
-\key{Declare a terminal symbol, and define its association.}
+\key{Declare a terminal symbol, and define its association.}
{{\it association} <{\it t\/}> {\it n}}
\vskip .2\baselineskip
-\key{Generate a reentrant (pure) parser.}
+\key{Generate a reentrant (pure) parser.}
{\%pure_parser}
-\key{Define the union of all data types used in the parser.}
+\key{Define the union of all data types used in the parser.}
{\%union\{{\it field list}\} }
\vskip .2\baselineskip
-\key{Tell {\tt bison} where to start parsing.}
- {\%start {\it m}}
+\key{Tell {\tt bison} where to start parsing.}
+ {\%start {\it m}}
-\key{Tell {\tt bison} the data type of symbols.}
- {\%type <{\it t\/}> {\it s1}\dots{\it sn}}
+\key{Tell {\tt bison} the data type of symbols.}
+ {\%type <{\it t\/}> {\it s1}\dots{\it sn}}
\vskip .10truein
\vskip .10truein
The {\tt <{\it t\/}>} after {\tt \%token, \%left, \%right} and {\tt
-\%nonassoc} is optional. Additionally, precedence may be overridden with
-embedded {\tt \%prec} commands.
+ \%nonassoc} is optional. Additionally, precedence may be overridden
+in the rules with {\tt \%prec} commands.
\section{Parser Definition Files}
%*********************************
\%\%
- Rule definition 1
+ Rule definition 1
\vdots
Rule definition {\it n}
Rules take the form:
+\vskip -\baselineskip
\beginexample
- non-terminal : {\it statement} 1
+ non-terminal : {\it statement} 1
| {\it statement} 2
\vdots
| {\it statement n}
\endexample
Where {\it statements} can be either empty, or contain
-a mixture of C code (enclosed in {\tt \{...\}}), and the
+a mixture of C code (enclosed in {\tt \{...\}}), and the
symbols that make up the non-terminal. For example:
\vskip -\baselineskip
\beginexample
- expression : number '$+$' number \{ \$\$ $=$ \$1 $+$ \$3 \}
+ expression : number '$+$' number \{ \$\$ $=$ \$1 $+$ \$3 \}
| number '$-$' number \{ \$\$ $=$ \$1 $-$ \$3 \}
| number '$/$' number \{ \$\$ $=$ \$1 $/$ \$3 \}
| number '$*$' number \{ \$\$ $=$ \$1 $*$ \$3 \}
For example:
\vskip -\baselineskip
\beginexample
- foo : gnu bar gnu \%prec bar
+ foo : gnu bar gnu \%prec bar
;
\endexample
\key{Recognize an error \& continue parsing.}{error}
\key{Access data associated with a symbol.} {\$\$, \$0\dots\${\it n}}
\key{Access a field of the data union.} {\$\$.{\it t},
- \$0.{\it t}\dots\${\it n}.{\it t}}
-\key{Access data's line position.} {@{\it n}.{\it line\_spec}}
-\key{Access data's column position.} {@{\it n}.{\it column\_spec}}
+ \$0.{\it t}\dots\${\it n}.{\it t}}
+\key{Access symbol's location.} {@\$, @0\dots@{\it n}}
+\key{Access data's line location.} {@{\it x}.{\it line\_spec}}
+\key{Access data's column location.} {@{\it x}.{\it column\_spec}}
\vskip .10truein
+%
Where {\it t} is a type defined in the {\tt \%union}, {\it n} is a
-number, {\it line\_spec} one of {\tt first_line} and {\tt last_line},
-and {\it column\_spec} is specified as either {\tt first_column} or {\tt
-last_column}.
+number, {\it x} is a number or \$, {\it line\_spec} one of {\tt
+ first_line} and {\tt last_line}, and {\it column\_spec} is specified
+as either {\tt first_column} or {\tt last_column}.
\section {Variables and Types}
%*****************************