]> git.saurik.com Git - bison.git/blobdiff - doc/refcard.tex
doc: merge HACKING and README-hacking.
[bison.git] / doc / refcard.tex
index 02281bf6c1f78c8371f24f3cef5355986df61401..85663cd63ada23b41a303a75ddc1339ead43c079 100644 (file)
@@ -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.
 \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.
 %
-% 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.
@@ -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}
 
 % **************