doc: add README
This commit is contained in:
parent
92ae5e3ab9
commit
23c94b1d06
40
README.md
Normal file
40
README.md
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
# Evalexpr
|
||||||
|
|
||||||
|
This was a small experiment in writing a precedence climbing parser, using C.
|
||||||
|
I also have my reference parsing implementation, using recursive descent, to
|
||||||
|
compare the parsing results.
|
||||||
|
|
||||||
|
This is mostly based on the explanation found at this address:
|
||||||
|
https://www.engr.mun.ca/~theo/Misc/exp_parsing.htm (use the Wayback Machine to
|
||||||
|
read it).
|
||||||
|
|
||||||
|
## How to build
|
||||||
|
|
||||||
|
Simply launch the following command
|
||||||
|
|
||||||
|
```sh
|
||||||
|
42sh$ make
|
||||||
|
```
|
||||||
|
|
||||||
|
If you want to build an `evalexpr` command using recursive descent instead, use:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
42sh$ make USE_CLIMBING=0
|
||||||
|
```
|
||||||
|
|
||||||
|
Don't forget to use `make clean` when alternating between both.
|
||||||
|
|
||||||
|
|
||||||
|
## How to use
|
||||||
|
|
||||||
|
Simply launch the binary, and write an expression on its standard input. The
|
||||||
|
binary can parse exactly one expression per line, and reports parsing errors if
|
||||||
|
they happen.
|
||||||
|
|
||||||
|
Example use:
|
||||||
|
|
||||||
|
```none
|
||||||
|
42sh$ ./evalexpr
|
||||||
|
1 + 2 * 3 - 3!
|
||||||
|
1
|
||||||
|
```
|
Loading…
Reference in a new issue