1cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% Bison Quick Reference 2cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 3cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%**start of header 4cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\newcount\columnsperpage 5cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 6cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% This file can be printed with 1 or 2 columns per page (see below). 7cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% Specify how many you want here. Nothing else needs to be changed 8cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% unless you are maintaining the documentation. 9cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% For printing reference cards to use in books, specify one column 10cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% per page and reduce to 80%. 11cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% Note that if columnsperpage is set to 2, there will be a few overfull 12cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% boxes, but they are not serious. Just uncomment \finalout. 13cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 14cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\columnsperpage=1 15cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 16cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% comment out this line if you want page numbers to appear. 17cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\nopagenumbers 18cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 19cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\finalout{\overfullrule=0pt} 20cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%\finalout 21cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2205436638acc7c010349a69c3395f1a57c642dc62Ying Wang% Copyright (c) 1998, 2001, 2009-2012 Free Software Foundation, Inc. 23cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% 24cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% This file is part of Bison. 25cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% 2605436638acc7c010349a69c3395f1a57c642dc62Ying Wang% This program is free software: you can redistribute it and/or modify 2705436638acc7c010349a69c3395f1a57c642dc62Ying Wang% it under the terms of the GNU General Public License as published by 2805436638acc7c010349a69c3395f1a57c642dc62Ying Wang% the Free Software Foundation, either version 3 of the License, or 2905436638acc7c010349a69c3395f1a57c642dc62Ying Wang% (at your option) any later version. 30cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% 3105436638acc7c010349a69c3395f1a57c642dc62Ying Wang% This program is distributed in the hope that it will be useful, 3205436638acc7c010349a69c3395f1a57c642dc62Ying Wang% but WITHOUT ANY WARRANTY; without even the implied warranty of 3305436638acc7c010349a69c3395f1a57c642dc62Ying Wang% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 3405436638acc7c010349a69c3395f1a57c642dc62Ying Wang% GNU General Public License for more details. 35cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% 36cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% You should have received a copy of the GNU General Public License 3705436638acc7c010349a69c3395f1a57c642dc62Ying Wang% along with this program. If not, see <http://www.gnu.org/licenses/>. 38cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% 39cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% This file is intended to be processed by plain TeX (TeX82). 40cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% 41cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% The final reference card has two columns: 42cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% This file can be used to produce it in any of three ways: 43cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% 1 column per page 44cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% produces two separate pages, each of which needs to be reduced to 80%. 45cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% This gives the best resolution. 46cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% 2 columns per page 47cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% produces a single page. 48cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% You will still need to cut and paste. 49cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% Which mode to use is controlled by setting \columnsperpage above. 50cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% 51cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% Authors: 52cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% Brendan Kehoe 53cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% UUCP: widener!brendan 54cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% Internet: brendan@cs.widener.edu 55cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% 56cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% Gavin Nicol 57cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% Internet: nick@nsis.cl.co.jp 58cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% 59cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% This refcard format was created by Steve Gildea. 60cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% 61cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% Thanks to Paul Rubin, Bob Chassell, Len Tower, and Richard Mlynarik 62cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% for their many good ideas. 63cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 64cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% We only change the following to change the version numbers and 65cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% such. 66cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 67cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\bisonversion{1.31} % the bison version 68cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 69cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\refcardversion{0.5} % reference card version 70cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\month{November} % month 71cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\year{2001} % year 72cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\version{\month\ \year, Bison Refcard Version \refcardversion} 73cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 74cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% for copyright notices 75cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip} 76cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\medium{\mediumfont\textfont2=\mediumsy\baselineskip=.8\baselineskip} 77cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 78cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\copyrightnotice{ 79cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip .15ex plus .25 fill 80cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\begingroup\medium 81cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.} 82cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip .2\baselineskip 83cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\centerline{\version} 84cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip .2\baselineskip 85cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\centerline{designed by Brendan Kehoe and Gavin Nicol} 86cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip .2\baselineskip 87cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\centerline{for Bison \bisonversion} 88cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 89cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectPermission is granted to make and distribute copies of this card 90cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectprovided the copyright notice and this permission notice 91cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectare preserved on all copies. 92cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip .2\baselineskip 93cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectFor information, write to the: 94cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip .2\baselineskip 95cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\centerline{Free Software Foundation, Inc.} 96cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip .2\baselineskip 97cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\centerline{51 Franklin Street, Fifth Floor} 98cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip .2\baselineskip 99cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\centerline{Boston, MA 02110-1301 USA} 100cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\endgroup} 101cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 102cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%%%% smallcopyrightnotice for two column printing on one page. 103cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\smallcopyrightnotice{ 104cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip .15ex plus .25 fill 105cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\begingroup\small 106cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.} 107cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip .2\baselineskip 108cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\centerline{\version} 109cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip .2\baselineskip 110cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\centerline{designed by Brendan Kehoe and Gavin Nicol} 111cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip .2\baselineskip 112cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\centerline{for Bison \bisonversion} 113cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 114cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectPermission is granted to make and distribute copies of this card 115cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectprovided the copyright notice and this permission notice 116cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectare preserved on all copies. 117cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip .2\baselineskip 118cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectFor information, write to the: 119cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip .2\baselineskip 120cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\centerline{Free Software Foundation, Inc.} 121cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip .2\baselineskip 122cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\centerline{51 Franklin Street, Fifth Floor} 123cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip .2\baselineskip 124cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\centerline{Boston, MA 02110-1301 USA} 125cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\endgroup} 126cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 127cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% make \bye not \outer so that the \def\bye in the \else clause below 128cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% can be scanned without complaint. 129cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\bye{\par\vfill\supereject\end} 130cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 131cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\newdimen\intercolumnskip 132cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\newbox\columna 133cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\newbox\columnb 134cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 135cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\ncolumns{\the\columnsperpage} 136cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 137cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\message{[\ncolumns\space 138cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project column\if 1\ncolumns\else s\fi\space per page]} 139cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 140cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\scaledmag#1{ scaled \magstep #1} 141cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 142cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% This multi-way format was designed by Stephen Gildea 143cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% October 1986. 144cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\if 1\ncolumns 145cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \hsize 4in 146cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \vsize 10in 147cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% We want output .3 inch *from top of paper edge*; i.e. -.7in from TeX default 148cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \voffset -.7in % Comment out for xdvi viewing; include for printing. 149cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \font\titlefont=\fontname\tenbf \scaledmag3 150cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \font\headingfont=\fontname\tenbf \scaledmag2 151cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \font\smallfont=cmr6 152cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \font\smallsy=cmsy6 153cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \font\mediumfont=cmr10 154cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \font\mediumsy=cmsy10 155cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 156cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 157cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% two lines below commented out in Yet Another Attempt to eliminate 158cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% page numbers from the output. 159cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \footline{\hss} 160cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% \footline{\hss\folio} 161cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}} 162cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\else 163cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \hsize 3.2in 164cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \vsize 7.95in 165cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \hoffset -.75in 166cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \voffset -.745in 167cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \font\titlefont=cmbx10 \scaledmag2 168cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \font\headingfont=cmbx10 \scaledmag1 169cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \font\smallfont=cmr6 170cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \font\smallsy=cmsy6 171cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \font\eightrm=cmr8 172cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \font\eightbf=cmbx8 173cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \font\eightit=cmti8 174cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \font\eighttt=cmtt8 175cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \font\eightsy=cmsy8 176cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \textfont0=\eightrm 177cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \textfont2=\eightsy 178cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \def\rm{\eightrm} 179cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \def\bf{\eightbf} 180cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \def\it{\eightit} 181cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \def\tt{\eighttt} 182cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%%%% Reduce skip from .8 to .75 to permit printing on two pages. 183cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \normalbaselineskip=.75\normalbaselineskip 184cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \normallineskip=.75\normallineskip 185cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \normallineskiplimit=.75\normallineskiplimit 186cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \normalbaselines\rm %make definitions take effect 187cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 188cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \if 2\ncolumns 189cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \let\maxcolumn=b 190cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \footline{\hss\rm\folio\hss} 191cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \def\makefootline{\vskip 2in \hsize=6.86in\line{\the\footline}} 192cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \font\mediumfont=cmr10 193cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \font\mediumsy=cmsy10 194cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 195cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% Leave 3 column code here in case size increases. 196cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \else \if 3\ncolumns 197cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \let\maxcolumn=c 198cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \nopagenumbers 199cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \font\mediumfont=cmr10 200cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \font\mediumsy=cmsy10 201cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 202cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \else 203cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \errhelp{You must set \columnsperpage equal to 1, 2, or 3.} 204cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \errmessage{Illegal number of columns per page} 205cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \fi\fi 206cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 207cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \intercolumnskip=.46in 208cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \def\abc{a} 209cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \output={% 210cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project % This next line is useful when designing the layout. 211cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project %\immediate\write16{Column \folio\abc\space starts with \firstmark} 212cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \if \maxcolumn\abc \multicolumnformat \global\def\abc{a} 213cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \else\if a\abc 214cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \global\setbox\columna\columnbox \global\def\abc{b} 215cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project %% in case we never use \columnb (two-column mode) 216cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \global\setbox\columnb\hbox to -\intercolumnskip{} 217cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \else 218cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi} 219cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \def\multicolumnformat{\shipout\vbox{\makeheadline 220cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \hbox{\box\columna\hskip\intercolumnskip 221cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \box\columnb\hskip\intercolumnskip\columnbox} 222cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \makefootline}\advancepageno} 223cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \def\columnbox{\leftline{\pagebody}} 224cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 225cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \def\bye{\par\vfill\supereject 226cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \if a\abc \else\null\vfill\eject\fi 227cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \if a\abc \else\null\vfill\eject\fi 228cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \end} 229cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\fi 230cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 231cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% we won't be using math mode much, so redefine some of the characters 232cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% we might want to talk about 233cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\catcode`\^=12 234cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\catcode`\_=12 235cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 236cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\chardef\\=`\\ 237cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\chardef\{=`\{ 238cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\chardef\}=`\} 239cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 240cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\hyphenation{mini-buf-fer} 241cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 242cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\parindent 0pt 243cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% \parskip 1ex plus .5ex minus .5ex 244cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\parskip 0.5ex plus .25ex minus .25ex 245cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 246cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\outer\def\newcolumn{\vfill\eject} 247cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 248cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\outer\def\title#1{{\titlefont\centerline{#1}}\vskip 1ex plus .5ex} 249cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 250cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\outer\def\section#1{\par\filbreak 251cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \vskip 1.5ex plus 1ex minus 1ex {\headingfont #1}\mark{#1}% 252cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \vskip 1ex plus .5ex minus 0.75ex} 253cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 254cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\newdimen\keyindent 255cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 256cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\beginindentedkeys{\keyindent=1em} 257cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\endindentedkeys{\keyindent=0em} 258cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\endindentedkeys 259cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 260cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\paralign{\vskip\parskip\halign} 261cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 262cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\<#1>{$\langle${\rm #1}$\rangle$} 263cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 264cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\kbd#1{{\tt#1}\null} %\null so not an abbrev even if period follows 265cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 266cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\beginexample{\par\leavevmode\begingroup 267cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \obeylines\obeyspaces\parskip0pt\tt} 268cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{\obeyspaces\global\let =\ } 269cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\endexample{\endgroup} 270cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\begincexample{% 271cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \par\leavevmode\begingroup% 272cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \obeylines\obeyspaces% 273cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project % bpk--added indentation 274cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \advance\leftskip.25truein 275cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% \parskip0pt% 276cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \tt} 277cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{\obeyspaces\global\let =\ } 278cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\endcexample{\endgroup} 279cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 280cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%%%%% Prime definition of key; redefined below to prevent overful hboxes 281cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 282cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\key#1#2{\leavevmode\hbox to \hsize 283cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project {\vtop {\hsize=.67\hsize \rightskip=1em #1} 284cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \kbd{#2}\hfil}} 285cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 286cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\newbox\metaxbox 287cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\setbox\metaxbox\hbox{\kbd{M-x }} 288cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\newdimen\metaxwidth 289cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\metaxwidth=\wd\metaxbox 290cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 291cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize 292cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project {\hskip\keyindent\relax#1\hfil}% 293cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \hskip -\metaxwidth minus 1fil 294cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \kbd{#2}\hfil}} 295cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 296cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\threecol#1#2#3{\hskip\keyindent\relax#1\hfil&\kbd{#2}\quad 297cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project &\kbd{#3}\quad\cr} 298cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 299cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%**end of header 300cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 301cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% ************ 302cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% ** BISON ** 303cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% ************ 304cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 305cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\title{Bison Quick Reference} 306cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 307cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\section{Starting Bison} 308cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%*********************** 309cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 310cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectTo use Bison, type: \kbd{bison {\it filename}} 311cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 312cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectOptions can be used as: \kbd{bison {\it options} {\it filename}} 313cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 314cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\section{Command Line Options} 315cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%***************************** 316cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 317cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Display usage information.} {-h} 318cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Display version information.} {-V} 319cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Generate token and {\tt YYSTYPE} definitions.} {-d} 320cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Prepend a prefix to external symbols.} {-p {\it prefix}} 321cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Don't put {\tt \#line} directives in the parser.} {-l} 322cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Specify the output file.} {-o {\it filename}} 323cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Debug or {\it trace} mode.} {-t} 324cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Verbose description of the parser.} {-v} 325cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Emulate {\tt yacc} (generate {\tt y.tab.*} files).} {-y} 326cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 327cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip .10truein 328cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{\bf Note:} The token and {\tt YYSTYPE} definitions are generated 329cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectto a file called {\tt y.tab.h} if the {\tt -y} option is used, 330cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectotherwise it will have the format {\tt {\it name}.tab.h}, where 331cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{\it name} is the leading part of the parser definition filename. 332cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 333cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\section{Definitions} 334cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%******************** 335cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 336cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Declare a terminal symbol.}{\%token <{\it t\/}> 337cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project {\it n}} 338cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 339cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Declare a terminal symbol, and define its association.} 340cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project {{\it association} <{\it t\/}> {\it n}} 341cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 342cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip .2\baselineskip 343cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Generate a reentrant (pure) parser.} 344cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project {\%pure_parser} 345cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 346cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Define the union of all data types used in the parser.} 347cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project {\%union\{{\it field list}\} } 348cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 349cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip .2\baselineskip 350cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Tell {\tt bison} where to start parsing.} 351cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project {\%start {\it m}} 352cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 353cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Tell {\tt bison} the data type of symbols.} 354cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project {\%type <{\it t\/}> {\it s1}\dots{\it sn}} 355cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 356cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip .10truein 357cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 358cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectIn the above, {\it t} is a {\it type} defined in the {\tt \%union} 359cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectdefinition, {\it n} is a {\it terminal} symbol name, {\it m} is a 360cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{\it non-terminal} symbol name, and {\it association} can be one of 361cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{\tt \%left}, {\tt \%right}, or {\tt \%nonassoc}. 362cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 363cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip .10truein 364cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 365cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectThe {\tt <{\it t\/}>} after {\tt \%token, \%left, \%right} and {\tt 366cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \%nonassoc} is optional. Additionally, precedence may be overridden 367cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectin the rules with {\tt \%prec} commands. 368cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 369cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\section{Parser Definition Files} 370cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%********************************* 371cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 372cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectThe general form for a parser definition is: 373cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 374cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\begincexample 375cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\{\% 376cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Initial C code. */ 377cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\%\} 378cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 379cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project {\it Token and type definitions} 380cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 381cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\%\% 382cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 383cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Rule definition 1 384cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \vdots 385cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Rule definition {\it n} 386cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 387cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\%\% 388cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 389cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Other C code. */ 390cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\endcexample 391cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 392cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 393cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% Decrease standard baselineskip for the second page 394cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \baselineskip = .9\baselineskip 395cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 396cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\section {Rule definitions} 397cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%************************** 398cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 399cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectRules take the form: 400cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 401cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip -\baselineskip 402cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\beginexample 403cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project non-terminal : {\it statement} 1 404cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project | {\it statement} 2 405cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \vdots 406cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project | {\it statement n} 407cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ; 408cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\endexample 409cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 410cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectWhere {\it statements} can be either empty, or contain 411cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecta mixture of C code (enclosed in {\tt \{...\}}), and the 412cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectsymbols that make up the non-terminal. For example: 413cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 414cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip -\baselineskip 415cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\beginexample 416cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project expression : number '$+$' number \{ \$\$ $=$ \$1 $+$ \$3 \} 417cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project | number '$-$' number \{ \$\$ $=$ \$1 $-$ \$3 \} 418cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project | number '$/$' number \{ \$\$ $=$ \$1 $/$ \$3 \} 419cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project | number '$*$' number \{ \$\$ $=$ \$1 $*$ \$3 \} 420cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ; 421cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\endexample 422cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 423cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectFor altering the precedence of a symbol use: 424cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip -\baselineskip 425cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 426cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\beginexample 427cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \%prec name 428cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\endexample 429cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 430cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectFor example: 431cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip -\baselineskip 432cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\beginexample 433cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project foo : gnu bar gnu \%prec bar 434cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project ; 435cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\endexample 436cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 437cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\section{Grammar Variables and Symbols} 438cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%************************************** 439cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 440cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Recognize an error \& continue parsing.}{error} 441cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Access data associated with a symbol.} {\$\$, \$0\dots\${\it n}} 442cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Access a field of the data union.} {\$\$.{\it t}, 443cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \$0.{\it t}\dots\${\it n}.{\it t}} 444cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Access symbol's location.} {@\$, @0\dots@{\it n}} 445cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Access data's line location.} {@{\it x}.{\it line\_spec}} 446cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Access data's column location.} {@{\it x}.{\it column\_spec}} 447cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 448cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 449cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip .10truein 450cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% 451cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectWhere {\it t} is a type defined in the {\tt \%union}, {\it n} is a 452cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectnumber, {\it x} is a number or \$, {\it line\_spec} one of {\tt 453cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project first_line} and {\tt last_line}, and {\it column\_spec} is specified 454cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectas either {\tt first_column} or {\tt last_column}. 455cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 456cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\section {Variables and Types} 457cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%***************************** 458cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 45905436638acc7c010349a69c3395f1a57c642dc62Ying Wang\key{Current lookahead token.} {yychar} 460cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Debug mode flag.} {yydebug} 461cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Data associated with the current token.} {yylval} 462cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Source position of current token.} {yylloc} 463cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Number of errors encountered.} {yynerrs} 464cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Position information type.} {YYLTYPE} 465cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Data type associated with symbols.} {YYSTYPE} 466cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 467cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\section {Functions} 468cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%******************* 469cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 470cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% Redefine to prevent overfull hboxes 471cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\key#1#2{\leavevmode\hbox to \hsize 472cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project {\vtop {\hsize=.625\hsize \rightskip=1em #1} 473cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \kbd{#2}\hfil}} 474cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 475cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{User defined error handler.} {int yyerror(char *)} 476cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{User defined lexical analyzer.} {int yylex()} 477cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{The grammar parser.} {int yyparse()} 478cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 479cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% Return to previous size 480cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\def\key#1#2{\leavevmode\hbox to \hsize 481cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project {\vtop {\hsize=.67\hsize \rightskip=1em #1} 482cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project \kbd{#2}\hfil}} 483cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 484cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\section{Macros} 485cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%*************** 486cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 487cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Quit parsing immediately. Return 1.} {YYABORT} 488cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Quit parsing immediately. Return 0.} {YYACCEPT} 489cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Pretend a syntax error occurred.} {YYERROR} 49005436638acc7c010349a69c3395f1a57c642dc62Ying Wang\key{Value in {\tt yychar} if no lookahead token.} {YYEMPTY} 49105436638acc7c010349a69c3395f1a57c642dc62Ying Wang\key{Clear previous lookahead token.} {yyclearin} 492cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\key{Recover normally from an error.} {yyerrok} 493cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 494cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% ************** 495cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% ** The end ** 496cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% ************** 497cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 498cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\vskip \baselineskip 499cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\if 1\ncolumns 500cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\copyrightnotice 501cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\else 502cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\smallcopyrightnotice 503cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\fi 504cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 505cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project\bye 506cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 507cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 508cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% Local variables: 509cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% compile-command: "tex refcard" 510cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project% End: 511