parsimonious: a parser combinator library for Rust

The goal of this library is to provide parser combinators that:

It is based on:

Rustdoc | Crate | CI

Example

To parse a sequence of alphanumerics into a string buffer: rust let ALPHANUMERIC = character_guard(char::is_alphanumeric); let ALPHANUMERICS = ALPHANUMERIC.star(String::new); If you provide complete input to the parser, you will get back a Done response, for example: rust if let Done(rest,result) = ALPHANUMERICS.init().parse("abc123!") { println!("Matched {} with left over {}.", result, rest); } prints: Matched abc123 with left over !. If you provide incomplete input, you will get back a Continue response, for example: rust if let Continue(parsing) = ALPHANUMERICS.init().parse("abc") { println!("Still going..."); if let Done(rest,result) = parsing.parse("123!") { println!("Matched {} with left over {}.", result, rest); } } prints: Still going... Matched abc123 with left over !.