Download Latest Version 0.10.0 source code.tar.gz (276.3 kB)
Email in envelope

Get an email when there's a new version of Chumsky

Home / 0.9
Name Modified Size InfoDownloads / Week
Parent folder
0.9.0 source code.tar.gz 2023-02-07 153.6 kB
0.9.0 source code.zip 2023-02-07 165.0 kB
README.md 2023-02-07 2.1 kB
Totals: 3 Items   320.7 kB 0

Added

  • A spill-stack feature that uses stacker to avoid stack overflow errors for deeply recursive parsers
  • The ability to access the token span when using select! like select! { |span| Token::Num(x) => (x, span) }
  • Added a skip_parser recovery strategy that allows you to implement your own recovery strategies in terms of other parsers. For example, .recover_with(skip_parser(take_until(just(';')))) skips tokens until after the next semicolon
  • A not combinator that consumes a single token if it is not the start of a given pattern. For example, just("\\n").or(just('"')).not() matches any char that is not either the final quote of a string, and is not the start of a newline escape sequence
  • A semantic_indentation parser for parsing indentation-sensitive languages. Note that this is likely to be deprecated/removed in the future in favour of a more powerful solution
  • #[must_use] attribute for parsers to ensure that they're not accidentally created without being used
  • Option<Vec<T>> and Vec<Option<T>> now implement Chain<T> and Option<String> implements Chain<char>
  • choice now supports both arrays and vectors of parsers in addition to tuples
  • The Simple error type now implements Eq

Changed

  • text::whitespace returns a Repeated instead of an impl Parser, allowing you to call methods like at_least and exactly on it.
  • Improved no_std support
  • Improved examples and documentation
  • Use zero-width spans for EoI by default
  • Don't allow defining a recursive parser more than once
  • Various minor bug fixes
  • Improved Display implementations for various built-in error types and SimpleReason
  • Use an OrderedContainer trait to avoid unexpected behaviour for unordered containers in combination with just

Fixed

  • Made several parsers (todo, unwrapped, etc.) more useful by reporting the parser's location on panic
  • Boxing a parser that is already boxed just gives you the original parser to avoid double indirection
  • Improved compilation speeds
Source: README.md, updated 2023-02-07