# ripeg
**Incremental packrat Parsing Expression Grammar in Rust**
[](https://crates.io/crates/ripeg)
[](https://docs.rs/ripeg/latest/ripeg/)

[](https://github.com/lwandrebeck/ripeg/actions/workflows/rust.yml)
[](https://coveralls.io/github/lwandrebeck/ripeg?branch=main)
[](https://codecov.io/gh/lwandrebeck/ripeg)



[](https://www.gnu.org/licenses/gpl-3.0)
[](#rust-version-requirements)
[](https://deps.rs/repo/github/lwandrebeck/ripeg)
[](https://github.com/lwandrebeck/ripeg/issues)
[](https://github.com/lwandrebeck/ripeg/issues?q=is%3Aissue+is%3Aclosed)
[](https://github.com/lwandrebeck/ripeg/pulls)
[](https://github.com/lwandrebeck/ripeg/pulls?q=is%3Apr+is%3Aclosed)
This project intends to be a Rust port of https://github.com/zyedidia/gpeg/ which is itself inspired by http://www.inf.puc-rio.br/~roberto/lpeg/. Related research publications about incremental PEG are https://zyedidia.github.io/notes/yedidia_thesis.pdf and https://zyedidia.github.io/preprints/gpeg_sle21.pdf
## Contributing
PRs are more than welcome, I’d like a lot this project not to be a one-random-guy work. Please read [Contributing](https://github.com/lwandrebeck/ripeg/blob/main/CONTRIBUTING.md)
## Code of Conduct
Please follow the [CoC from rust-lang](https://www.rust-lang.org/policies/code-of-conduct). I’ll be glad if I can avoid any kind of moderation, I have better to do with my time, thanks !
## Current status
A first part of code has been ported, but you definitely can't use that crate yet.
## Roadmap && Changelog
* 20220319 0.1.0 : ripeg crate published so name is reserved.
* 20220322 0.1.1 : Release with CI, code coverage configured, and use of cargo-nextest.
* 20220405 0.1.2 :
* Release with __charset module ported__.
* Use of cargo test instead of nextest because it does not support doc tests yet.
* Comment out criterion bench in github actions as results are useless in CI env.
* Update tarpaulin to 0.20.0, and fix test coverage.
* Please note that charset methods prototypes may change.
* 20220410 0.1.3 :
* Release with __isa module ported__.
* Update benchmarks
* Please note that isa will probably change until 0.1.6 is released.
* 202????? 0.1.4 : release with __input module ported__.
* 202????? 0.1.5 : release with __pattern module ported__.
* 202????? 0.1.6 : release with __memo module ported__.
* 202????? 0.1.6 : release with __vm module ported__.
* 202????? 0.1.7..n: port other modules.
* 202????? 0.2.0 : 1st usable version.
* 202????? 0.x.y : optimize
* 202????? 1.0.0 : stable release.