(bison.info)Top


Next: Introduction Up: (dir)

Bison
*****



   This manual is for GNU Bison (version 1.875, 28 December 2002), the
GNU parser generator.

   Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1998, 1999,
2000, 2001, 2002 Free Software Foundation, Inc.

     Permission is granted to copy, distribute and/or modify this
     document under the terms of the GNU Free Documentation License,
     Version 1.1 or any later version published by the Free Software
     Foundation; with no Invariant Sections, with the Front-Cover texts
     being "A GNU Manual," and with the Back-Cover Texts as in (a)
     below.  A copy of the license is included in the section entitled
     "GNU Free Documentation License."

     (a) The FSF's Back-Cover Text is: "You have freedom to copy and
     modify this GNU Manual, like GNU software.  Copies published by
     the Free Software Foundation raise funds for GNU development."
   
* Introduction
* Conditions
* Copying
The GNU General Public License says how you can copy and share Bison
Tutorial sections:
* Concepts
Basic concepts for understanding Bison.
* Examples
Three simple explained examples of using Bison.
Reference sections:
* Grammar File
Writing Bison declarations and rules.
* Interface
C-language interface to the parser function `yyparse'.
* Algorithm
How the Bison parser works at run-time.
* Error Recovery
Writing rules for error recovery.
* Context Dependency
What to do if your language syntax is too messy for Bison to handle straightforwardly.
* Debugging
Understanding or debugging Bison parsers.
* Invocation
How to run Bison (to produce the parser source file).
* Table of Symbols
All the keywords of the Bison language are explained.
* Glossary
Basic concepts are explained.
* FAQ
Frequently Asked Questions
* Copying This Manual
License for copying this manual.
* Index
Cross-references to the text.
 --- The Detailed Node Listing ---

The Concepts of Bison

* Language and Grammar
Languages and context-free grammars, as mathematical ideas.
* Grammar in Bison
How we represent grammars for Bison's sake.
* Semantic Values
Each token or syntactic grouping can have a semantic value (the value of an integer, the name of an identifier, etc.).
* Semantic Actions
Each rule can have an action containing C code.
* GLR Parsers
Writing parsers for general context-free languages
* Locations Overview
Tracking Locations.
* Bison Parser
What are Bison's input and output, how is the output used?
* Stages
Stages in writing and running Bison grammars.
* Grammar Layout
Overall structure of a Bison grammar file.
Examples

* RPN Calc
Reverse polish notation calculator; a first example with no operator precedence.
* Infix Calc
Infix (algebraic) notation calculator. Operator precedence is introduced.
* Simple Error Recovery
Continuing after syntax errors.
* Location Tracking Calc
Demonstrating the use of @N and @$.
* Multi-function Calc
Calculator with memory and trig functions. It uses multiple data-types for semantic values.
* Exercises
Ideas for improving the multi-function calculator.
Reverse Polish Notation Calculator

* Decls
Rpcalc DeclsPrologue (declarations) for rpcalc.
* Rules
Rpcalc RulesGrammar Rules for rpcalc, with explanation.
* Lexer
Rpcalc LexerThe lexical analyzer.
* Main
Rpcalc MainThe controlling function.
* Error
Rpcalc ErrorThe error reporting function.
* Gen
Rpcalc GenRunning Bison on the grammar file.
* Comp
Rpcalc CompileRun the C compiler on the output code.
Grammar Rules for `rpcalc'

* Rpcalc Input
* Rpcalc Line
* Rpcalc Expr
Location Tracking Calculator: `ltcalc'

* Decls
Ltcalc DeclsBison and C declarations for ltcalc.
* Rules
Ltcalc RulesGrammar rules for ltcalc, with explanations.
* Lexer
Ltcalc LexerThe lexical analyzer.
Multi-Function Calculator: `mfcalc'

* Decl
Mfcalc DeclBison declarations for multi-function calculator.
* Rules
Mfcalc RulesGrammar rules for the calculator.
* Symtab
Mfcalc SymtabSymbol table management subroutines.
Bison Grammar Files

* Grammar Outline
Overall layout of the grammar file.
* Symbols
Terminal and nonterminal symbols.
* Rules
How to write grammar rules.
* Recursion
Writing recursive rules.
* Semantics
Semantic values and actions.
* Locations
Locations and actions.
* Declarations
All kinds of Bison declarations are described here.
* Multiple Parsers
Putting more than one Bison parser in one program.
Outline of a Bison Grammar

* Prologue
Syntax and usage of the prologue.
* Bison Declarations
Syntax and usage of the Bison declarations section.
* Grammar Rules
Syntax and usage of the grammar rules section.
* Epilogue
Syntax and usage of the epilogue.
Defining Language Semantics

* Value Type
Specifying one data type for all semantic values.
* Multiple Types
Specifying several alternative data types.
* Actions
An action is the semantic definition of a grammar rule.
* Action Types
Specifying data types for actions to operate on.
* Mid-Rule Actions
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.
Tracking Locations

* Location Type
Specifying a data type for locations.
* Actions and Locations
Using locations in actions.
* Location Default Action
Defining a general way to compute locations.
Bison Declarations

* Token Decl
Declaring terminal symbols.
* Precedence Decl
Declaring terminals with precedence and associativity.
* Union Decl
Declaring the set of all semantic value types.
* Type Decl
Declaring the choice of type for a nonterminal symbol.
* Destructor Decl
Declaring how symbols are freed.
* Expect Decl
Suppressing warnings about shift/reduce conflicts.
* Start Decl
Specifying the start symbol.
* Pure Decl
Requesting a reentrant parser.
* Decl Summary
Table of all Bison declarations.
Parser C-Language Interface

* Parser Function
How to call `yyparse' and what it returns.
* Lexical
You must supply a function `yylex' which reads tokens.
* Error Reporting
You must supply a function `yyerror'.
* Action Features
Special features for use in actions.
The Lexical Analyzer Function `yylex'

* Calling Convention
How `yyparse' calls `yylex'.
* Token Values
How `yylex' must return the semantic value of the token it has read.
* Token Positions
How `yylex' must return the text position (line number, etc.) of the token, if the actions want that.
* Pure Calling
How the calling convention differs in a pure parser (Note: A Pure (Reentrant) Parser.).
The Bison Parser Algorithm

* Look-Ahead
Parser looks one token ahead when deciding what to do.
* Shift/Reduce
Conflicts: when either shifting or reduction is valid.
* Precedence
Operator precedence works by resolving conflicts.
* Contextual Precedence
When an operator's precedence depends on context.
* Parser States
The parser is a finite-state-machine with stack.
* Reduce/Reduce
When two rules are applicable in the same situation.
* Mystery Conflicts
Reduce/reduce conflicts that look unjustified.
* Generalized LR Parsing
Parsing arbitrary context-free grammars.
* Stack Overflow
What happens when stack gets full. How to avoid it.
Operator Precedence

* Why Precedence
An example showing why precedence is needed.
* Using Precedence
How to specify precedence in Bison grammars.
* Precedence Examples
How these features are used in the previous example.
* How Precedence
How they work.
Handling Context Dependencies

* Semantic Tokens
Token parsing can depend on the semantic context.
* Lexical Tie-ins
Token parsing can depend on the syntactic context.
* Tie-in Recovery
Lexical tie-ins have implications for how error recovery rules must be written.
Debugging Your Parser

* Understanding
Understanding the structure of your parser.
* Tracing
Tracing the execution of your parser.
Invoking Bison

* Bison Options
All the options described in detail, in alphabetical order by short options.
* Option Cross Key
Alphabetical list of long options.
* Yacc Library
Yacc-compatible `yylex' and `main'.
Frequently Asked Questions

* Parser Stack Overflow
Breaking the Stack Limits
Copying This Manual

* GNU Free Documentation License
License for copying this manual.

automatically generated by info2www