oni-comb-parser-rs

Crates.iooni-comb-parser-rs
lib.rsoni-comb-parser-rs
version0.0.419
sourcesrc
created_at2021-11-13 01:07:37.849451
updated_at2024-04-22 00:22:09.087161
descriptionA Rust crate for parser combinators
homepage
repositoryhttps://github.com/j5ik2o/oni-comb-rs
max_upload_size
id481233
size239,187
Junichi Kato (j5ik2o)

documentation

README

# oni-comb-parser-rs A Rust crate for LL(k) parser combinators. ## Install to Cargo.toml Add this to your `Cargo.toml`: ```toml [dependencies] oni-comb-parser-rs = "<>" ``` ## Usage ```rust use oni_comb_parser_rs::prelude::*; fn main() { let input: &[u8; 14] = b"'hello world';"; let parser: Parser = surround( elm(b'\''), (seq(b"hello") + elm_space() + seq(b"world")).collect(), elm(b'\'') + elm(b';'), ) .map_res(std::str::from_utf8); let result: &str = parser.parse(input).unwrap(); println!("{}", result); // hello world } ``` ## Influenced by the following parsers implementations - Rust - [J-F-Liu/pom](https://github.com/J-F-Liu/pom) - [Geal/nom](https://github.com/Geal/nom) - Scala - [fp in scala](https://github.com/fpinscala/fpinscala/blob/first-edition/answers/src/main/scala/fpinscala/parsing) - [scala-parser-combinators](https://github.com/scala/scala-parser-combinators) - Java - [jparsec](https://github.com/jparsec/jparsec) ## Examples - [Hello World!](/parser/examples/hello_world.rs) - JSON Parsers - [Bytes](/parser/examples/json_byte.rs) - [Characters](/parser/examples/json_char.rs) - [Calculator](/parser/examples/calculator.rs) ## Alternative parsers - [Geal/nom](https://github.com/Geal/nom) - [J-F-Liu/pom](https://github.com/J-F-Liu/pom) - [Marwes/combine](https://github.com/Marwes/combine) - [zesterer/chumsky](https://github.com/zesterer/chumsky) - [zesterer/parze](https://github.com/zesterer/parze)
Commit count: 2548

cargo fmt