(bison.info.gz) Multi-function Calc
Info Catalog
(bison.info.gz) Location Tracking Calc
(bison.info.gz) Examples
(bison.info.gz) Exercises
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.
Menu
* Decl Mfcalc Decl. Bison declarations for multi-function calculator.
* Rules Mfcalc Rules. Grammar rules for the calculator.
* Symtab Mfcalc Symtab. Symbol table management subroutines.
Info Catalog
(bison.info.gz) Location Tracking Calc
(bison.info.gz) Examples
(bison.info.gz) Exercises
automatically generated byinfo2html