Files
bison/examples/c++/calc++
Akim Demaille 42ab6c1e44 doc: c++: document parser::context
* doc/bison.texi (C++ Parser Context): New.

* data/skeletons/lalr1.cc (parser::yysymbol_name): Rename as...
(parser::symbol_name): this.
(A Complete C++ Example): Promote LAC, now that we have it.
Promote parse.error detailed over verbose.
* examples/c++/calc++/calc++.test, tests/local.at: Adjust.
2020-04-13 16:54:14 +02:00
..
2020-04-13 16:54:14 +02:00
2020-01-05 10:26:35 +01:00

calc++ - A Flex+Bison calculator

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.