chumsky
chumsky copied to clipboard
Write expressive, high-performance parsers with ease.
If I have a chain of `then` parsers, e.g.: ``` parse_int() .then_ignore(parse_whitespace()) .then(parse_char()) .then_ignore(parse_whitespace() .then(parse_float().then(parse_float())) ``` The output type of this parser will be a nested sequence of 2-tuples, i.e....
Here is a quick rundown of the changes: - Additions: - `zero_copy::text::whitespace` - `zero_copy::text::newline` - `zero_copy::text::digits` - `zero_copy::text::int` - `zero_copy::text::ident` - `zero_copy::text::keyword` - `zero_copy::Parser::repeated_slice` - `zero_copy::Parser::then_slice` - `zero_copy::sliced` - `zero_copy::sliced::RepeatedSlice`...
I'd like to give each of the nodes generated by my parser a unique ID. ~Unfortunately, `map_to_span` takes a `Fn` instead of a `FnMut` so it looks like this isn't...
Allow ```rust const OPEN_PAREN: Just = just('('); ``` and such
This will allow the use of `todo!()` in places that expect a parser.
It looks like if you use take_until( ).ignored() the actual taking still makes a vec internally, it just throws it away after filling it up. but heck maybe this is...
When the `todo()` parser panics it gives panic locations like ``` C:\Users\Daniel\.cargo\registry\src\github.com-1ecc6299db9ec823\chumsky-0.8.0\src\primitive.rs:841:9 ``` And that's never helpful. However, adding `track_caller` to just the `parse_inner` method probably won't do. It needs...
I'm trying to parse a simple tag-like language, for example `foo{{x}}bar` would be a valid input. I tried using `choice` to parse this, like so: ```rust let tag = any().map(Token::Verbatim).repeated();...
eg: `4_567` would be able to be parsed by `int_`