GNU Info

Info Node: (bison.info)Top

(bison.info)Top


Next: Introduction Up: (dir)
Enter node , (file) or (file)node

Bison
*****

   This manual documents version 1.35 of Bison, updated 25 February
2002.

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
Debugging Bison parsers that parse wrong.
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.
Copying This Manual
License for copying this manual.
Index
Cross-references to the text.
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.
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 Decls. Bison and C declarations for rpcalc.
Rules
Rpcalc Rules. Grammar Rules for rpcalc, with explanation.
Lexer
Rpcalc Lexer. The lexical analyzer.
Main
Rpcalc Main. The controlling function.
Error
Rpcalc Error. The error reporting function.
Gen
Rpcalc Gen. Running Bison on the grammar file.
Comp
Rpcalc Compile. Run the C compiler on the output code.
Grammar Rules for `rpcalc'

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

Decls
Ltcalc Decls. Bison and C declarations for ltcalc.
Rules
Ltcalc Rules. Grammar rules for ltcalc, with explanations.
Lexer
Ltcalc Lexer. The lexical analyzer.
Multi-Function Calculator: `mfcalc'

Decl
Mfcalc Decl. Bison declarations for multi-function calculator.
Rules
Mfcalc Rules. Grammar rules for the calculator.
Symtab
Mfcalc Symtab. Symbol 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.
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

C Declarations
Syntax and usage of the C declarations section.
Bison Declarations
Syntax and usage of the Bison declarations section.
Grammar Rules
Syntax and usage of the grammar rules section.
C Code
Syntax and usage of the additional C code section.
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.
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.
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.
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.
Invoking Bison

Bison Options
All the options described in detail,
in alphabetical order by short options.
Option Cross Key
Alphabetical list of long options.
Extension Limitations Under DOS
Bison output files extension differences
depending on the DOS/Windows file system flavour used.
VMS Invocation
Bison command syntax on VMS.
Copying This Manual

GNU Free Documentation License
License for copying this manual.

automatically generated by info2www version 1.2.2.9