A mini parser combinator library written in rust. Inspired by the Javascript Version.
string(target: &str): Matches on a stringfooletter(): Matches on a single letterletters(): Matches on one or more lettersdigit(): Matches on a single digitdigits(): Matches on one or more digits
many(p: Parser): Matches on one or more ofp's capture groupalt(ps: Vec<Parser>): Matches on the first successful capture inpssequence(ps: Vec<Parser>): Matches on parsers inpssequentially
use crate::parsers::letters;
let letter_parser = letters();
assert_eq(letter_parser.run("abc").result, Some("abc".to_owned));use crate::effects::{alt, sequence};
use crate::parsers::{letters, digits};
// Parse either letters or digits
let letters_or_digits_parser = alt(Vec::from([letters(), digits()]));
assert_eq(letters_or_digits_parser.run("abc").result, Some("abc".to_owned));
assert_eq(letters_or_digits_parser.run("123").result, Some("123".to_owned));
// Parse letters followed by digits
let letters_then_digits_parser = sequence(Vec::from([letters(), digits()]));
assert_eq(letters_then_digits_parser.run("abc123").result, Some("abc123".to_owned));