(bison.info)Multi-function Calc


Next: Exercises Prev: Location Tracking Calc Up: Examples

Multi-Function Calculator: `mfcalc'
===================================

   Now that the basics of Bison have been discussed, it is time to move
on to a more advanced problem.  The above calculators provided only five
functions, `+', `-', `*', `/' and `^'.  It would be nice to have a
calculator that provides other mathematical functions such as `sin',
`cos', etc.

   It is easy to add new operators to the infix calculator as long as
they are only single-character literals.  The lexical analyzer `yylex'
passes back all nonnumber characters as tokens, so new grammar rules
suffice for adding a new operator.  But we want something more
flexible: built-in functions whose syntax has this form:

     FUNCTION_NAME (ARGUMENT)

At the same time, we will add memory to the calculator, by allowing you
to create named variables, store values in them, and use them later.
Here is a sample session with the multi-function calculator:

     $ mfcalc
     pi = 3.141592653589
     3.1415926536
     sin(pi)
     0.0000000000
     alpha = beta1 = 2.3
     2.3000000000
     alpha
     2.3000000000
     ln(alpha)
     0.8329091229
     exp(ln(beta1))
     2.3000000000
     $

   Note that multiple assignment and nested function calls are
permitted.

* Decl
Mfcalc Decl. Bison declarations for multi-function calculator.
* Rules
Mfcalc Rules. Grammar rules for the calculator.
* Symtab
Mfcalc Symtab. Symbol table management subroutines.

automatically generated by info version 1.5

Dirfile and infopages generated Sat Dec 3 02:07:54 2005