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