rpcalcHere are the C and Bison declarations for the reverse polish notation calculator. As in C, comments are placed between `/*...*/'.
/* Reverse polish notation calculator. */
%{
#define YYSTYPE double
#include <math.h>
%}
%token NUM
%% /* Grammar rules and actions follow */
The C declarations section (see section The C Declarations Section) contains two preprocessor directives.
The #define directive defines the macro YYSTYPE, thus
specifying the C data type for semantic values of both tokens and groupings
(see section Data Types of Semantic Values).  The Bison parser will use whatever type
YYSTYPE is defined as; if you don't define it, int is the
default.  Because we specify double, each token and each expression
has an associated value, which is a floating point number.
The #include directive is used to declare the exponentiation
function pow.
The second section, Bison declarations, provides information to Bison about
the token types (see section The Bison Declarations Section).  Each terminal symbol that is
not a single-character literal must be declared here.  (Single-character
literals normally don't need to be declared.)  In this example, all the
arithmetic operators are designated by single-character literals, so the
only terminal symbol that needs to be declared is NUM, the token
type for numeric constants.
Go to the first, previous, next, last section, table of contents.