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 read the docs, we have plenty of examples over there, plus detailed explanation of each component.
In order:
Enforce resolving ambiguities in the input grammar.
Release 1.0.0
.