A small parsing experiment
Find a file
Bruno BELANYI 793a6c6f6f evalexpr: parse: reorder operator table
This change, by not breaking anything, shows that the order of the table
*probably* does not matter to the parsing code.

This also enables a future refactoring to only use the parts of the
tables that are *actually* needed, such as isolating the prefix, infix,
or postfix operators when using the table to check a subset of them
2020-11-02 16:13:33 +01:00
src evalexpr: parse: reorder operator table 2020-11-02 16:13:33 +01:00
tests evalexpr: tests: add Criterion testsuite 2020-11-02 15:48:30 +01:00
.drone.yml ci: add Drone CI 2020-11-02 15:48:30 +01:00
.gitignore git: ignore testsuite binary 2020-11-02 15:48:30 +01:00
Makefile evalexpr: tests: add Criterion testsuite 2020-11-02 15:48:30 +01:00
README.md doc: add README 2020-11-02 15:48:30 +01:00

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

42sh$ make

If you want to build an evalexpr command using recursive descent instead, use:

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:

42sh$ ./evalexpr
1 + 2 * 3 - 3!
1