This directory contains calc++, a Bison grammar file in C++. If you never saw the traditional implementation in C, please first read examples/c/lexcalc, which can be seen as a C precursor of this example.
Read the corresponding chapter in the documentation: “A Complete C++ Example”. It is also available on line (maybe with a different version of Bison): https://www.gnu.org/software/bison/manual/html_node/A-Complete-C_002b_002b-Example.html
To use it, copy this directory into some work directory, and run make
to compile the executable, and try it. It is a simple calculator which accepts several variable definitions, one per line, and then a single expression to evaluate.
The program calc++ expects the file to parse as argument; pass -
to read the standard input (and then hit , control-d, to end your input).
$ ./calc++ - one := 1 two := 2 three := 3 (one + two * three) * two * three <Ctrl-d> 42
You may pass -p
to activate the parser debug traces, and -s
to activate the scanner's.