⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 refcard.tex

📁 bison 2.0 主要可以用来做语法分析用的
💻 TEX
字号:
% Bison Quick Reference%**start of header\newcount\columnsperpage% 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% 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.\columnsperpage=1% comment out this line if you want page numbers to appear.\nopagenumbers\def\finalout{\overfullrule=0pt}%\finalout% 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.%% 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.%% 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.%% This file is intended to be processed by plain TeX (TeX82).%% The final reference card has two columns:% This file can be used to produce it in any of three ways:% 1 column per page%    produces two separate pages, each of which needs to be reduced to 80%.%    This gives the best resolution.% 2 columns per page%    produces a single page.%    You will still need to cut and paste.% Which mode to use is controlled by setting \columnsperpage above.%% Authors:%  Brendan Kehoe%  UUCP: widener!brendan%  Internet: brendan@cs.widener.edu%%  Gavin Nicol%  Internet: nick@nsis.cl.co.jp%% This refcard format was created by Steve Gildea.%% Thanks to Paul Rubin, Bob Chassell, Len Tower, and Richard Mlynarik% for their many good ideas.% We only change the following to change the version numbers and% such.\def\bisonversion{1.31}                    % the bison version\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}\def\medium{\mediumfont\textfont2=\mediumsy\baselineskip=.8\baselineskip}\def\copyrightnotice{\vskip .15ex plus .25 fill\begingroup\medium\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.}\vskip .2\baselineskip\centerline{\version}\vskip .2\baselineskip\centerline{designed by Brendan Kehoe and Gavin Nicol}\vskip .2\baselineskip\centerline{for Bison \bisonversion}Permission is granted to make and distribute copies of this cardprovided the copyright notice and this permission noticeare preserved on all copies.\vskip .2\baselineskipFor information, write to the:\vskip .2\baselineskip\centerline{Free Software Foundation, Inc.}\vskip .2\baselineskip\centerline{59 Temple Place - Suite 330}\vskip .2\baselineskip\centerline{Boston, MA 02111-1307 USA}\endgroup}%%%% smallcopyrightnotice for two column printing on one page.\def\smallcopyrightnotice{\vskip .15ex plus .25 fill\begingroup\small\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.}\vskip .2\baselineskip\centerline{\version}\vskip .2\baselineskip\centerline{designed by Brendan Kehoe and Gavin Nicol}\vskip .2\baselineskip\centerline{for Bison \bisonversion}Permission is granted to make and distribute copies of this cardprovided the copyright notice and this permission noticeare preserved on all copies.\vskip .2\baselineskipFor information, write to the:\vskip .2\baselineskip\centerline{Free Software Foundation, Inc.}\vskip .2\baselineskip\centerline{59 Temple Place - Suite 330}\vskip .2\baselineskip\centerline{Boston, MA 02111-1307 USA}\endgroup}% make \bye not \outer so that the \def\bye in the \else clause below% can be scanned without complaint.\def\bye{\par\vfill\supereject\end}\newdimen\intercolumnskip\newbox\columna\newbox\columnb\def\ncolumns{\the\columnsperpage}\message{[\ncolumns\space  column\if 1\ncolumns\else s\fi\space per page]}\def\scaledmag#1{ scaled \magstep #1}% This multi-way format was designed by Stephen Gildea% October 1986.\if 1\ncolumns  \hsize 4in  \vsize 10in% We want output .3 inch *from top of paper edge*; i.e. -.7in from TeX default  \voffset -.7in % Comment out for xdvi viewing; include for printing.  \font\titlefont=\fontname\tenbf \scaledmag3  \font\headingfont=\fontname\tenbf \scaledmag2  \font\smallfont=cmr6  \font\smallsy=cmsy6  \font\mediumfont=cmr10  \font\mediumsy=cmsy10% two lines below commented out in Yet Another Attempt to eliminate% page numbers from the output.  \footline{\hss}% \footline{\hss\folio}  \def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}}\else  \hsize 3.2in  \vsize 7.95in  \hoffset -.75in  \voffset -.745in  \font\titlefont=cmbx10 \scaledmag2  \font\headingfont=cmbx10 \scaledmag1  \font\smallfont=cmr6  \font\smallsy=cmsy6  \font\eightrm=cmr8  \font\eightbf=cmbx8  \font\eightit=cmti8  \font\eighttt=cmtt8  \font\eightsy=cmsy8  \textfont0=\eightrm  \textfont2=\eightsy  \def\rm{\eightrm}  \def\bf{\eightbf}  \def\it{\eightit}  \def\tt{\eighttt}%%%% Reduce skip from .8 to .75 to permit printing on two pages.  \normalbaselineskip=.75\normalbaselineskip  \normallineskip=.75\normallineskip  \normallineskiplimit=.75\normallineskiplimit  \normalbaselines\rm           %make definitions take effect  \if 2\ncolumns    \let\maxcolumn=b    \footline{\hss\rm\folio\hss}    \def\makefootline{\vskip 2in \hsize=6.86in\line{\the\footline}}  \font\mediumfont=cmr10  \font\mediumsy=cmsy10% Leave 3 column code here in case size increases.  \else \if 3\ncolumns    \let\maxcolumn=c    \nopagenumbers  \font\mediumfont=cmr10  \font\mediumsy=cmsy10  \else    \errhelp{You must set \columnsperpage equal to 1, 2, or 3.}    \errmessage{Illegal number of columns per page}  \fi\fi  \intercolumnskip=.46in  \def\abc{a}  \output={%      % This next line is useful when designing the layout.      %\immediate\write16{Column \folio\abc\space starts with \firstmark}      \if \maxcolumn\abc \multicolumnformat \global\def\abc{a}      \else\if a\abc        \global\setbox\columna\columnbox \global\def\abc{b}        %% in case we never use \columnb (two-column mode)        \global\setbox\columnb\hbox to -\intercolumnskip{}      \else        \global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}  \def\multicolumnformat{\shipout\vbox{\makeheadline      \hbox{\box\columna\hskip\intercolumnskip        \box\columnb\hskip\intercolumnskip\columnbox}      \makefootline}\advancepageno}  \def\columnbox{\leftline{\pagebody}}  \def\bye{\par\vfill\supereject    \if a\abc \else\null\vfill\eject\fi    \if a\abc \else\null\vfill\eject\fi    \end}\fi% we won't be using math mode much, so redefine some of the characters% we might want to talk about\catcode`\^=12\catcode`\_=12\chardef\\=`\\\chardef\{=`\{\chardef\}=`\}\hyphenation{mini-buf-fer}\parindent 0pt% \parskip 1ex plus .5ex minus .5ex\parskip 0.5ex plus .25ex minus .25ex\outer\def\newcolumn{\vfill\eject}\outer\def\title#1{{\titlefont\centerline{#1}}\vskip 1ex plus .5ex}\outer\def\section#1{\par\filbreak  \vskip 1.5ex plus 1ex minus 1ex {\headingfont #1}\mark{#1}%  \vskip 1ex plus .5ex minus 0.75ex}\newdimen\keyindent\def\beginindentedkeys{\keyindent=1em}\def\endindentedkeys{\keyindent=0em}\endindentedkeys\def\paralign{\vskip\parskip\halign}\def\<#1>{$\langle${\rm #1}$\rangle$}\def\kbd#1{{\tt#1}\null}        %\null so not an abbrev even if period follows\def\beginexample{\par\leavevmode\begingroup  \obeylines\obeyspaces\parskip0pt\tt}{\obeyspaces\global\let =\ }\def\endexample{\endgroup}\def\begincexample{%  \par\leavevmode\begingroup%  \obeylines\obeyspaces%  % bpk--added indentation  \advance\leftskip.25truein%  \parskip0pt%  \tt}{\obeyspaces\global\let =\ }\def\endcexample{\endgroup}%%%%% Prime definition of key; redefined below to prevent overful hboxes\def\key#1#2{\leavevmode\hbox to \hsize  {\vtop {\hsize=.67\hsize \rightskip=1em #1}  \kbd{#2}\hfil}}\newbox\metaxbox\setbox\metaxbox\hbox{\kbd{M-x }}\newdimen\metaxwidth\metaxwidth=\wd\metaxbox\def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize  {\hskip\keyindent\relax#1\hfil}%  \hskip -\metaxwidth minus 1fil  \kbd{#2}\hfil}}\def\threecol#1#2#3{\hskip\keyindent\relax#1\hfil&\kbd{#2}\quad  &\kbd{#3}\quad\cr}%**end of header%     ************%     **  BISON **%     ************\title{Bison Quick Reference}\section{Starting Bison}%***********************To use Bison, type: \kbd{bison {\it filename}}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{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 generatedto 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\/}>      {\it n}}\key{Declare a terminal symbol, and define its association.}      {{\it association} <{\it t\/}> {\it n}}\vskip .2\baselineskip\key{Generate a reentrant (pure) parser.}      {\%pure_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} the data type of symbols.}      {\%type <{\it t\/}> {\it s1}\dots{\it sn}}\vskip .10trueinIn the above, {\it t} is a {\it type} defined in the {\tt \%union}definition,  {\it n} is a {\it terminal} symbol name, {\it m} is a{\it non-terminal} symbol name, and {\it association} can be one of{\tt \%left}, {\tt \%right}, or {\tt \%nonassoc}.\vskip .10trueinThe {\tt <{\it t\/}>} after {\tt \%token, \%left, \%right} and {\tt  \%nonassoc} is optional. Additionally, precedence may be overriddenin the rules with {\tt \%prec} commands.\section{Parser Definition Files}%*********************************The general form for a parser definition is:\begincexample\{\%   /* Initial C code.  */\%\} {\it Token and type definitions}\%\%   Rule definition 1          \vdots   Rule definition {\it n}\%\%  /* Other C code.  */\endcexample% Decrease standard baselineskip for the second page \baselineskip = .9\baselineskip\section {Rule definitions}%**************************Rules take the form:\vskip -\baselineskip\beginexample     non-terminal : {\it statement} 1                  | {\it statement} 2                      \vdots                  | {\it statement n}                  ;\endexampleWhere {\it statements} can be either empty, or containa mixture of C code (enclosed in {\tt \{...\}}), and thesymbols that make up the non-terminal. For example:\vskip -\baselineskip\beginexample     expression : number '$+$' number \{ \$\$ $=$ \$1 $+$ \$3 \}                | number '$-$' number \{ \$\$ $=$ \$1 $-$ \$3 \}                | number '$/$' number \{ \$\$ $=$ \$1 $/$ \$3 \}                | number '$*$' number \{ \$\$ $=$ \$1 $*$ \$3 \}                ;\endexampleFor altering the precedence of a symbol use:\vskip -\baselineskip\beginexample     \%prec name\endexampleFor example:\vskip -\baselineskip\beginexample     foo : gnu bar gnu      \%prec bar         ;\endexample\section{Grammar Variables and Symbols}%**************************************\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 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 anumber, {\it x} is a number or \$, {\it line\_spec} one of {\tt  first_line} and {\tt last_line}, and {\it column\_spec} is specifiedas either {\tt first_column} or {\tt last_column}.\section {Variables and Types}%*****************************\key{Current look ahead token.}                {yychar}\key{Debug mode flag.}                         {yydebug}\key{Data associated with the current token.}  {yylval}\key{Source position of current token.}        {yylloc}\key{Number of errors encountered.}            {yynerrs}\key{Position information type.}               {YYLTYPE}\key{Data type associated with symbols.}       {YYSTYPE}\section {Functions}%*******************% Redefine to prevent overfull hboxes\def\key#1#2{\leavevmode\hbox to \hsize  {\vtop {\hsize=.625\hsize \rightskip=1em #1}  \kbd{#2}\hfil}}\key{User defined error handler.}         {int yyerror(char *)}\key{User defined lexical analyzer.}      {int yylex()}\key{The grammar parser.}                 {int yyparse()}% Return to previous size\def\key#1#2{\leavevmode\hbox to \hsize  {\vtop {\hsize=.67\hsize \rightskip=1em #1}  \kbd{#2}\hfil}}\section{Macros}%***************\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{Recover normally from an error.}               {yyerrok}% **************% ** The end  **% **************\vskip \baselineskip\if 1\ncolumns\copyrightnotice\else\smallcopyrightnotice\fi\bye% Local variables:% compile-command: "tex refcard"% End:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -