kamadorueda/santiago

Santiago is a lexing and parsing toolkit for Rust

110

stars

167

commits

Rust

primary language

Feb 19, 2026

updated

bison
bison-flex
bison-grammar
bison-yacc
flex
lexer
lexical-analysis
parser
parser-combinators
parser-generator
parsing
rust

README

🐆 Santiago

A lexing and parsing toolkit for Rust

CI/CD Documentation Version License

Santiago provides you:

With Santiago you have everything that is needed to build your own programming language!

Features

  • ✔️ Fast 🦀

    It's written in Rust, with zero dependencies and maximum portability in mind.

  • ✔️ Easy to use

    Defining a grammar is closely the same to its Backus–Naur form.

    Creating a lexer is a matter of mapping some strings.

    Error messages contain useful information.

  • ✔️ Powerful

    Santiago can parse all context-free languages without exceptions.

  • ✔️ Reliable

    High coverage, battle tested.

  • ✔️ Compatible

    Santiago is inspired and aims to be an alternative to GNU Bison, Yacc and Flex, which are amazing tools, but not compatible with rust.

Getting started

Just read the docs, we have plenty of examples over there, plus detailed explanation of each component.

Alternatively, you can checkout more examples in the tests folder.

We hope you find Santiago useful!

And don’t forget to give us a star ⭐

Contributors

kamadorueda

166 commits

kamadorueda/santiago

Santiago is a lexing and parsing toolkit for Rust

110

stars

167

commits

Rust

primary language

Feb 19, 2026

updated

bison
bison-flex
bison-grammar
bison-yacc
flex
lexer
lexical-analysis
parser
parser-combinators
parser-generator
parsing
rust

README

🐆 Santiago

A lexing and parsing toolkit for Rust

CI/CD Documentation Version License

Santiago provides you:

With Santiago you have everything that is needed to build your own programming language!

Features

  • ✔️ Fast 🦀

    It's written in Rust, with zero dependencies and maximum portability in mind.

  • ✔️ Easy to use

    Defining a grammar is closely the same to its Backus–Naur form.

    Creating a lexer is a matter of mapping some strings.

    Error messages contain useful information.

  • ✔️ Powerful

    Santiago can parse all context-free languages without exceptions.

  • ✔️ Reliable

    High coverage, battle tested.

  • ✔️ Compatible

    Santiago is inspired and aims to be an alternative to GNU Bison, Yacc and Flex, which are amazing tools, but not compatible with rust.

Getting started

Just read the docs, we have plenty of examples over there, plus detailed explanation of each component.

Alternatively, you can checkout more examples in the tests folder.

We hope you find Santiago useful!

And don’t forget to give us a star ⭐

Contributors

kamadorueda

166 commits

Languages

Rust

98.4%

Nix

1.5%