summaryrefslogtreecommitdiff
path: root/examples/c++/calc++/README.md
blob: 11ee1810768e388cf294326cbe6e9e74342daadb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 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](https://www.gnu.org/software/bison/manual/html_node/A-Complete-C_002b_002b-Example.html)
(maybe with a different version of Bison).

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 <Ctrl-d>, 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.

<!---
Local Variables:
fill-column: 76
ispell-dictionary: "american"
End:

Copyright (C) 2018-2022 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts.  A copy of the license is included in the "GNU Free
Documentation License" file as part of this distribution.

LocalWords:  calc parsers yy MERCHANTABILITY Ctrl ispell american
--->