chumsky
chumsky copied to clipboard
Write expressive, high-performance parsers with ease.
The following code prints out `0..3` which means that `.padded()` includes the padding in the span of the output. ``` let parser = just::("5").padded().map_with_span(|_, s: Span| s); let result =...
I was having trouble parsing binary operators with deeply nested combinators to handle precedence. The Rust compiler time and memory usage grow exponentially until it runs out of memory for...
I propose a combinator that repeats the first parser until the second one matches. [nom](https://github.com/Geal/nom) has an equivalent combinator: https://docs.rs/nom/7.1.1/nom/multi/fn.many_till.html The output type would be `(Vec, B)`, `A` and `B`...
Parsers don't do anything by themselves, so the `#[must_use]` attribute should probably be applied to them (as with `Iterator`).
Hi again! I want to write a parser where the delimiters are optional. I tried the following: ```rust let lapp__ = expr .clone() .then_ignore(just(Token::Space)) .then_ignore(just(Token::RParen)) .then(expr.clone()); let lapp_ = choice((...
Having an example on how to parse Python-like languages that are aware of indentation would be interesting.
I don't really see why this parameter is needed, and as far as I'm aware the end of a set of disjoint ranges is a number and not a range,...
I would expect that adding recovery logic to a grammar doesn't functionally change the grammar, but currently it does: `repeated()` and `or_not()` (at least) with an inner that can recover...
AFAIK there's not a lot of documentation (except few lines), nor examples on how to use the recovery module and the `parse_recovery_*` functions https://docs.rs/chumsky/latest/chumsky/recovery/index.html Especially on the functions `nested_delimiters` `skip_then_retry_until`...