A small parsing experiment
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Bruno BELANYI 8201523d8b project: add MIT license 3 years ago
src evalexpr: parse: do not use operator kind directly 3 years ago
tests evalexpr: tests: reduce repetition using X macros 3 years ago
.drone.yml ci: add Drone CI 3 years ago
.gitignore git: ignore testsuite binary 3 years ago
LICENSE project: add MIT license 3 years ago
Makefile evalexpr: tests: add Criterion testsuite 3 years ago
README.md doc: add README 3 years ago



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!