DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(bison.info.gz) Mfcalc Decl

Info Catalog (bison.info.gz) Multi-function Calc (bison.info.gz) Mfcalc Rules
 
 Declarations for `mfcalc'
 -------------------------
 
    Here are the C and Bison declarations for the multi-function
 calculator.
 
      %{
      #include <math.h>  /* For math functions, cos(), sin(), etc.  */
      #include "calc.h"  /* Contains definition of `symrec'        */
      %}
      %union {
      double     val;  /* For returning numbers.                   */
      symrec  *tptr;   /* For returning symbol-table pointers      */
      }
      
      %token <val>  NUM        /* Simple double precision number   */
      %token <tptr> VAR FNCT   /* Variable and Function            */
      %type  <val>  exp
      
      %right '='
      %left '-' '+'
      %left '*' '/'
      %left NEG     /* Negation--unary minus */
      %right '^'    /* Exponentiation        */
      
      /* Grammar follows */
      
      %%
 
    The above grammar introduces only two new features of the Bison
 language.  These features allow semantic values to have various data
 types ( More Than One Value Type Multiple Types.).
 
    The `%union' declaration specifies the entire list of possible types;
 this is instead of defining `YYSTYPE'.  The allowable types are now
 double-floats (for `exp' and `NUM') and pointers to entries in the
 symbol table.   The Collection of Value Types Union Decl.
 
    Since values can now have various types, it is necessary to
 associate a type with each grammar symbol whose semantic value is used.
 These symbols are `NUM', `VAR', `FNCT', and `exp'.  Their declarations
 are augmented with information about their data type (placed between
 angle brackets).
 
    The Bison construct `%type' is used for declaring nonterminal
 symbols, just as `%token' is used for declaring token types.  We have
 not used `%type' before because nonterminal symbols are normally
 declared implicitly by the rules that define them.  But `exp' must be
 declared explicitly so we can specify its value type.  
 Nonterminal Symbols Type Decl.
 
Info Catalog (bison.info.gz) Multi-function Calc (bison.info.gz) Mfcalc Rules
automatically generated byinfo2html