X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/649d71cc969d12a20634b5b2b58a4bc8969c5fe9..b85481146a172533e0ceb2c4d759cfb8b8aa60b3:/doc/refcard.tex?ds=sidebyside diff --git a/doc/refcard.tex b/doc/refcard.tex index 02281bf6..ead2a563 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,7 +19,7 @@ \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. % @@ -51,11 +51,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 +66,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,7 +90,7 @@ 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 @@ -115,7 +115,7 @@ 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 @@ -136,7 +136,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 +227,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 +316,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 +365,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 +382,7 @@ The general form for a parser definition is: \%\% - Rule definition 1 + Rule definition 1 \vdots Rule definition {\it n} @@ -397,8 +400,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 +410,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 +432,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,16 +442,18 @@ 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} %*****************************