X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/649d71cc969d12a20634b5b2b58a4bc8969c5fe9..0e164d43d115b13f300892a4c0ab643ed03020c9:/doc/refcard.tex diff --git a/doc/refcard.tex b/doc/refcard.tex index 02281bf6..caabf7e7 100644 --- a/doc/refcard.tex +++ b/doc/refcard.tex @@ -6,7 +6,7 @@ % 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. @@ -19,24 +19,22 @@ \def\finalout{\overfullrule=0pt} %\finalout -% Copyright (c) 1998 Free Software Foundation, Inc. +% Copyright (c) 1998, 2001, 2009-2012 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 . % % This file is intended to be processed by plain TeX (TeX82). % @@ -51,11 +49,11 @@ % 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. @@ -66,12 +64,12 @@ % 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} @@ -90,15 +88,15 @@ 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. @@ -115,15 +113,15 @@ For information, write to the: 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 @@ -136,7 +134,7 @@ For information, write to the: \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} @@ -227,7 +225,7 @@ For information, write to the: \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 @@ -316,41 +314,44 @@ Options can be used as: \kbd{bison {\it options} {\it filename}} \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 @@ -362,8 +363,8 @@ definition, {\it n} is a {\it terminal} symbol name, {\it m} is a \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} %********************************* @@ -379,7 +380,7 @@ The general form for a parser definition is: \%\% - Rule definition 1 + Rule definition 1 \vdots Rule definition {\it n} @@ -397,8 +398,9 @@ The general form for a parser definition is: Rules take the form: +\vskip -\baselineskip \beginexample - non-terminal : {\it statement} 1 + non-terminal : {\it statement} 1 | {\it statement} 2 \vdots | {\it statement n} @@ -406,12 +408,12 @@ Rules take the form: \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 \} @@ -428,7 +430,7 @@ For altering the precedence of a symbol use: For example: \vskip -\baselineskip \beginexample - foo : gnu bar gnu \%prec bar + foo : gnu bar gnu \%prec bar ; \endexample @@ -438,21 +440,23 @@ For example: \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} @@ -483,8 +487,8 @@ last_column}. \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} % **************