Contents | < Browse | Browse >
Declarations for `rpcalc'
-------------------------

   Here 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 (C Declarations)
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 
(Value Type).  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 (Bison Declarations).
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.