liblet 0.2.0

Library for learning about formal languages and grammars
Documentation

liblet-rust

Crates.io GitHub Workflow Status (branch) Codecov branch contributions welcome

coverage disclaimer: percentage of code coverage is not reliable as of now, due to some issues with the tool used (cargo tarpaulin). If you have any advices, feel free to contact me.

Porting project for the liblet library of the University of Milan course "Linguaggi e Traduttori" (Languages and Translators) in Rust.

A generic and possibly updated roadmap/to-do list is available in this repo project. If you want to contribute or correct any errors, please do so opening issues or creating pull requests.

This is also a learning project, used to better comprehend both the course topics and the rust programming language.

Features

changelog

More info available at the docs.

Following the official liblet documentation.

  • symbol (new)
  • production
  • item (not planned)
  • grammar
  • derivation
  • transition
  • automaton
  • antlr support (not planned)
  • rich display (not planned yet)
  • utilities (not planned yet)

Notice that this project doesn't make any difference between grammar types at the moment. In fact, you won't find parameters like "context_free" flags for switching behaviour depending on grammar type, because there's no such equivalent switch in implementation planned for this library at the moment. This library implementation ignores the grammar type concepts, at least at the moment, for those features which don't need a strict grammar type level (eg. grammar creation, grammar restrict_to function, etc.).

Examples

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.