New features
- Significantly improved compile-time error messages for invalid grammars
- Support
[MyToken(x)]
syntax for capturing variables from pattern expressions (#245)
- Restore support for
[^ ]
inverted pattern syntax
- Add
#[no_eof] pub rule() = ...
syntax to allow matching a prefix of the input rather than reporting a parse error if the rule does not reach end-of-file (#233)
- Allow
rule _ =
without parentheses when defining special underscore rule (#243)
- Add grammar-level type and lifetime parameters (#254)
- Compile-time check for repeat expressions that infinite-loop without consuming input (#210)
- Implement
PartialEq, PartialOrd, Eq, Ord, Debug, Hash
for RuleResult
(#217)
Fixes
- Extend detection of infinite-loop left recursion to check inside
precedence!()
(#238)
- Wrap user-supplied code in immediately-invoked closure so that
return
and ?
behave as expected (#246)
- Remove overzealous error checks to allow passing rule closure arguments as parameters to another call (#226)
Breaking changes
- Add required
is_eof()
method to Parse
trait (#252)
- Certain patterns that would infinite-loop or stack overflow if executed are now a compile-time error
mixed_site
hygiene prevents action code from accessing internal parser state variables such as __input
, __pos
, etc.
Contributors
@kevinmehall @dario23 @bgw @adrianwn