1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html40/loose.dtd">
<HTML>
<!-- Created on January, 28 2005 by texi2html 1.66 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
Olaf Bachmann <obachman@mathematik.uni-kl.de>
and many others.
Maintained by: Many creative people <dev@texi2html.cvshome.org>
Send bugs and suggestions to <users@texi2html.cvshome.org>
-->
<HEAD>
<TITLE>Bison 2.21.5: Bison 2.21.5</TITLE>
<META NAME="description" CONTENT="Bison 2.21.5: Bison 2.21.5">
<META NAME="keywords" CONTENT="Bison 2.21.5: Bison 2.21.5">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META NAME="Generator" CONTENT="texi2html 1.66">
</HEAD>
<BODY LANG="en" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000">
<A NAME="SEC_Top"></A>
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bison.html#SEC_Top">Top</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bison_toc.html#SEC_Contents">Contents</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bison_15.html#SEC92">Index</A>]</TD>
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bison_abt.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1>Bison 2.21.5</H1>
<P>
This manual documents version 2.21.5 of Bison.
</P>
<P>
</P>
<TABLE BORDER="0" CELLSPACING="0">
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_1.html#SEC1">Introduction</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_2.html#SEC2">Conditions for Using Bison</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_3.html#SEC3">GNU GENERAL PUBLIC LICENSE</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">The GNU General Public License says
how you can copy and share Bison</TD></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">Tutorial sections:
</TH></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_4.html#SEC6">1. The Concepts of Bison</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Basic concepts for understanding Bison.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_5.html#SEC14">2. Examples</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Three simple explained examples of using Bison.</TD></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">Reference sections:
</TH></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC33">3. Bison Grammar Files</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Writing Bison declarations and rules.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_7.html#SEC58">4. Parser C-Language Interface</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">C-language interface to the parser function <CODE>yyparse</CODE>.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_8.html#SEC67">5. The Bison Parser Algorithm</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How the Bison parser works at run-time.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_9.html#SEC80">6. Error Recovery</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Writing rules for error recovery.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_10.html#SEC81">7. Handling Context Dependencies</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">What to do if your language syntax is too
messy for Bison to handle straightforwardly.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_11.html#SEC85">8. Debugging Your Parser</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Debugging Bison parsers that parse wrong.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_12.html#SEC86">9. Invoking Bison</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How to run Bison (to produce the parser source file).</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_13.html#SEC90">A. Bison Symbols</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">All the keywords of the Bison language are explained.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_14.html#SEC91">B. Glossary</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Basic concepts are explained.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_15.html#SEC92">Index</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Cross-references to the text.</TD></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP"> -- The Detailed Node Listing ---
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">The Concepts of Bison
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_4.html#SEC7">1.1 Languages and Context-Free Grammars</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Languages and context-free grammars,
as mathematical ideas.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_4.html#SEC8">1.2 From Formal Rules to Bison Input</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How we represent grammars for Bison's sake.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_4.html#SEC9">1.3 Semantic Values</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Each token or syntactic grouping can have
a semantic value (the value of an integer,
the name of an identifier, etc.).</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_4.html#SEC10">1.4 Semantic Actions</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Each rule can have an action containing C code.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_4.html#SEC11">1.5 Bison Output: the Parser File</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">What are Bison's input and output,
how is the output used?</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_4.html#SEC12">1.6 Stages in Using Bison</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Stages in writing and running Bison grammars.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_4.html#SEC13">1.7 The Overall Layout of a Bison Grammar</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Overall structure of a Bison grammar file.</TD></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">Examples
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_5.html#SEC15">2.1 Reverse Polish Notation Calculator</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Reverse polish notation calculator;
a first example with no operator precedence.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_5.html#SEC26">2.2 Infix Notation Calculator: <CODE>calc</CODE></A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Infix (algebraic) notation calculator.
Operator precedence is introduced.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_5.html#SEC27">2.3 Simple Error Recovery</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Continuing after syntax errors.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_5.html#SEC28">2.4 Multi-Function Calculator: <CODE>mfcalc</CODE></A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Calculator with memory and trig functions.
It uses multiple data-types for semantic values.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_5.html#SEC32">2.5 Exercises</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Ideas for improving the multi-function calculator.</TD></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">Reverse Polish Notation Calculator
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_5.html#SEC16">2.1.1 Declarations for <CODE>rpcalc</CODE></A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Bison and C declarations for rpcalc.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_5.html#SEC17">2.1.2 Grammar Rules for <CODE>rpcalc</CODE></A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Grammar Rules for rpcalc, with explanation.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_5.html#SEC21">2.1.3 The <CODE>rpcalc</CODE> Lexical Analyzer</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">The lexical analyzer.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_5.html#SEC22">2.1.4 The Controlling Function</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">The controlling function.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_5.html#SEC23">2.1.5 The Error Reporting Routine</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">The error reporting function.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_5.html#SEC24">2.1.6 Running Bison to Make the Parser</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Running Bison on the grammar file.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_5.html#SEC25">2.1.7 Compiling the Parser File</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Run the C compiler on the output code.</TD></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">Grammar Rules for <CODE>rpcalc</CODE>
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_5.html#SEC18">2.1.2.1 Explanation of <CODE>input</CODE></A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_5.html#SEC19">2.1.2.2 Explanation of <CODE>line</CODE></A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_5.html#SEC20">2.1.2.3 Explanation of <CODE>expr</CODE></A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">Multi-Function Calculator: <CODE>mfcalc</CODE>
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_5.html#SEC29">2.4.1 Declarations for <CODE>mfcalc</CODE></A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Bison declarations for multi-function calculator.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_5.html#SEC30">2.4.2 Grammar Rules for <CODE>mfcalc</CODE></A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Grammar rules for the calculator.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_5.html#SEC31">2.4.3 The <CODE>mfcalc</CODE> Symbol Table</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Symbol table management subroutines.</TD></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">Bison Grammar Files
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC34">3.1 Outline of a Bison Grammar</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Overall layout of the grammar file.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC39">3.2 Symbols, Terminal and Nonterminal</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Terminal and nonterminal symbols.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC40">3.3 Syntax of Grammar Rules</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How to write grammar rules.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC41">3.4 Recursive Rules</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Writing recursive rules.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC42">3.5 Defining Language Semantics</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Semantic values and actions.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC48">3.6 Bison Declarations</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">All kinds of Bison declarations are described here.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC57">3.7 Multiple Parsers in the Same Program</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Putting more than one Bison parser in one program.</TD></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">Outline of a Bison Grammar
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC35">3.1.1 The C Declarations Section</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Syntax and usage of the C declarations section.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC36">3.1.2 The Bison Declarations Section</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Syntax and usage of the Bison declarations section.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC37">3.1.3 The Grammar Rules Section</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Syntax and usage of the grammar rules section.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC38">3.1.4 The Additional C Code Section</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Syntax and usage of the additional C code section.</TD></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">Defining Language Semantics
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC43">3.5.1 Data Types of Semantic Values</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Specifying one data type for all semantic values.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC44">3.5.2 More Than One Value Type</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Specifying several alternative data types.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC45">3.5.3 Actions</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">An action is the semantic definition of a grammar rule.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC46">3.5.4 Data Types of Values in Actions</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Specifying data types for actions to operate on.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC47">3.5.5 Actions in Mid-Rule</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Most actions go at the end of a rule.
This says when, why and how to use the exceptional
action in the middle of a rule.</TD></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">Bison Declarations
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC49">3.6.1 Token Type Names</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Declaring terminal symbols.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC50">3.6.2 Operator Precedence</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Declaring terminals with precedence and associativity.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC51">3.6.3 The Collection of Value Types</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Declaring the set of all semantic value types.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC52">3.6.4 Nonterminal Symbols</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Declaring the choice of type for a nonterminal symbol.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC53">3.6.5 Suppressing Conflict Warnings</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Suppressing warnings about shift/reduce conflicts.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC54">3.6.6 The Start-Symbol</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Specifying the start symbol.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC55">3.6.7 A Pure (Reentrant) Parser</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Requesting a reentrant parser.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_6.html#SEC56">3.6.8 Bison Declaration Summary</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Table of all Bison declarations.</TD></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">Parser C-Language Interface
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_7.html#SEC59">4.1 The Parser Function <CODE>yyparse</CODE></A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How to call <CODE>yyparse</CODE> and what it returns.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_7.html#SEC60">4.2 The Lexical Analyzer Function <CODE>yylex</CODE></A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">You must supply a function <CODE>yylex</CODE>
which reads tokens.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_7.html#SEC65">4.3 The Error Reporting Function <CODE>yyerror</CODE></A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">You must supply a function <CODE>yyerror</CODE>.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_7.html#SEC66">4.4 Special Features for Use in Actions</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Special features for use in actions.</TD></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">The Lexical Analyzer Function <CODE>yylex</CODE>
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_7.html#SEC61">4.2.1 Calling Convention for <CODE>yylex</CODE></A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How <CODE>yyparse</CODE> calls <CODE>yylex</CODE>.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_7.html#SEC62">4.2.2 Semantic Values of Tokens</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How <CODE>yylex</CODE> must return the semantic value
of the token it has read.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_7.html#SEC63">4.2.3 Textual Positions of Tokens</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How <CODE>yylex</CODE> must return the text position</TD></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP"> (line number, etc.) of the token, if the
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP"> actions want that.
</TH></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_7.html#SEC64">4.2.4 Calling Conventions for Pure Parsers</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How the calling convention differs
in a pure parser (@pxref{Pure Decl, ,A Pure (Reentrant) Parser}).</TD></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">The Bison Parser Algorithm
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_8.html#SEC68">5.1 Look-Ahead Tokens</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Parser looks one token ahead when deciding what to do.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_8.html#SEC69">5.2 Shift/Reduce Conflicts</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Conflicts: when either shifting or reduction is valid.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_8.html#SEC70">5.3 Operator Precedence</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Operator precedence works by resolving conflicts.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_8.html#SEC75">5.4 Context-Dependent Precedence</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">When an operator's precedence depends on context.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_8.html#SEC76">5.5 Parser States</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">The parser is a finite-state-machine with stack.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_8.html#SEC77">5.6 Reduce/Reduce Conflicts</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">When two rules are applicable in the same situation.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_8.html#SEC78">5.7 Mysterious Reduce/Reduce Conflicts</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Reduce/reduce conflicts that look unjustified.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_8.html#SEC79">5.8 Stack Overflow, and How to Avoid It</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">What happens when stack gets full. How to avoid it.</TD></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">Operator Precedence
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_8.html#SEC71">5.3.1 When Precedence is Needed</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">An example showing why precedence is needed.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_8.html#SEC72">5.3.2 Specifying Operator Precedence</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How to specify precedence in Bison grammars.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_8.html#SEC73">5.3.3 Precedence Examples</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How these features are used in the previous example.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_8.html#SEC74">5.3.4 How Precedence Works</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How they work.</TD></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">Handling Context Dependencies
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_10.html#SEC82">7.1 Semantic Info in Token Types</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Token parsing can depend on the semantic context.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_10.html#SEC83">7.2 Lexical Tie-ins</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Token parsing can depend on the syntactic context.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_10.html#SEC84">7.3 Lexical Tie-ins and Error Recovery</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Lexical tie-ins have implications for how
error recovery rules must be written.</TD></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">Invoking Bison
</TH></TR>
<TR><TH COLSPAN="3" ALIGN="left" VALIGN="TOP">
</TH></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_12.html#SEC87">9.1 Bison Options</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">All the options described in detail,
in alphabetical order by short options.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_12.html#SEC88">9.2 Option Cross Key</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Alphabetical list of long options.</TD></TR>
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bison_12.html#SEC89">9.3 Invoking Bison under VMS</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Bison command syntax on VMS.</TD></TR>
</TABLE>
<P>
<HR SIZE=1>
<BR>
<FONT SIZE="-1">
This document was generated
by <I>Frank B. Brokken</I> on <I>January, 28 2005</I>
using <A HREF="http://texi2html.cvshome.org"><I>texi2html</I></A>
</FONT>
</BODY>
</HTML>
|