A lexing and parsing toolkit for Rust
✔️ Native 🦀
It's written in pure Rust, zero dependencies, maximum portability.
✔️ Powerful
Santiago can parse all context-free languages, including ambiguous and recursive grammars.
✔️ Simple
Defining a grammar is closely the same to its Backus–Naur form.
Creating a lexer is a matter of mapping some strings.
✔️ Fast
Santiago uses the Earley algorithm. Its time and space performance is that of the theoretical minimum.
✔️ Standing on the shoulders of giants
Santiago is inspired and aims to be an alternative to GNU Bison, Yacc and Flex.
Just checkout the examples:
You can run the examples by cloning this project and executing:
```sh ~ $ git clone https://github.com/kamadorueda/santiago.git
~ $ cd santiago
~/santiago $ cargo run --example calculator ```
In order:
Enforce resolving ambiguities in the input grammar.
Release 1.0.0
.