PREV UP NEXT Bison 1.24

This manual documents version 1.24 of Bison.

  • 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.
  • 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.
  • 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.
  • 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 Bison and C declarations for rpcalc.
  • Rules Grammar Rules for rpcalc, with explanation.
  • Lexer The lexical analyzer.
  • Main The controlling function.
  • Error The error reporting function.
  • Gen Running Bison on the grammar file.
  • Comp Run the C compiler on the output code.

    Grammar Rules for rpcalc

  • Rpcalc Input
  • Rpcalc Line
  • Rpcalc Expr

    Multi-Function Calculator: mfcalc

  • Decl Bison declarations for multi-function calculator.
  • Rules Grammar rules for the calculator.
  • 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 (see Pure Decl).

    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.
  • VMS Invocation Bison command syntax on VMS.