[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
1.9 The Overall Layout of a Bison Grammar
The input file for the Bison utility is a Bison grammar file. The general form of a Bison grammar file is as follows:
%{ Prologue %} Bison declarations %% Grammar rules %% Epilogue |
The ‘%%’, ‘%{’ and ‘%}’ are punctuation that appears in every Bison grammar file to separate the sections.
The prologue may define types and variables used in the actions. You can
also use preprocessor commands to define macros used there, and use
#include
to include header files that do any of these things.
You need to declare the lexical analyzer yylex
and the error
printer yyerror
here, along with any other global identifiers
used by the actions in the grammar rules.
The Bison declarations declare the names of the terminal and nonterminal symbols, and may also describe operator precedence and the data types of semantic values of various symbols.
The grammar rules define how to construct each nonterminal symbol from its parts.
The epilogue can contain any code you want to use. Often the definitions of functions declared in the prologue go here. In a simple program, all the rest of the program can go here.