santiago 0.6.0

A lexing and parsing toolkit for Rust
Documentation

Features

  • ✔️ 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.

Getting started

Just checkout the examples:

You can run the examples by cloning this project and executing:

~ $ git clone https://github.com/kamadorueda/santiago.git

~ $ cd santiago

~/santiago $ cargo run --example calculator

Short term goals

In order:

  1. Enforce resolving ambiguities in the input grammar.

  2. Release 1.0.0.