% 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, 2009 Free Software Foundation, Inc.
%
% This file is part of Bison.
%
-% Bison is free software; you can redistribute them and/or modify them
-% under the terms of the GNU General Public License as published by the
-% Free Software Foundation; either version 2, or (at your option) any
-% later version.
+% This program is free software: you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation, either version 3 of the License, or
+% (at your option) any later version.
%
-% Bison is distributed in the hope that it will be useful, but WITHOUT
-% ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-% FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-% for more details.
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
-% along with either Flex or Bison; see the file COPYING. If not, write
-% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-% Boston, MA 02111-1307, USA.
+% along with this program. If not, see <http://www.gnu.org/licenses/>.
%
% This file is intended to be processed by plain TeX (TeX82).
%
% 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
\centerline{Free Software Foundation, Inc.}
\vskip .2\baselineskip
-\centerline{59 Temple Place - Suite 330}
+\centerline{51 Franklin Street, Fifth Floor}
\vskip .2\baselineskip
-\centerline{Boston, MA 02111-1307 USA}
+\centerline{Boston, MA 02110-1301 USA}
\endgroup}
%%%% smallcopyrightnotice for two column printing on one page.
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
\centerline{Free Software Foundation, Inc.}
\vskip .2\baselineskip
-\centerline{59 Temple Place - Suite 330}
+\centerline{51 Franklin Street, Fifth Floor}
\vskip .2\baselineskip
-\centerline{Boston, MA 02111-1307 USA}
+\centerline{Boston, MA 02110-1301 USA}
\endgroup}
% make \bye not \outer so that the \def\bye in the \else clause below
\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}
%*****************************
-\key{Current look ahead token.} {yychar}
+\key{Current lookahead token.} {yychar}
\key{Debug mode flag.} {yydebug}
\key{Data associated with the current token.} {yylval}
\key{Source position of current token.} {yylloc}
\key{Quit parsing immediately. Return 1.} {YYABORT}
\key{Quit parsing immediately. Return 0.} {YYACCEPT}
\key{Pretend a syntax error occurred.} {YYERROR}
-\key{Value in {\tt yychar} if no look-ahead token.} {YYEMPTY}
-\key{Clear previous look ahead token.} {yyclearin}
+\key{Value in {\tt yychar} if no lookahead token.} {YYEMPTY}
+\key{Clear previous lookahead token.} {yyclearin}
\key{Recover normally from an error.} {yyerrok}
% **************