Releases: ehwan/RustyLR
Releases · ehwan/RustyLR
v3.34.0
What's Changed
- Add
--stateoption for state machine inspection in #34 - Add state field to ParseError in #35
- Use ArrayVec for multiple reduce rules container in #36
- Add more test cases in #37
- Optimization for unused data in #38 #39 #40 #41
- Use static memory for parser table generation in #42
Full Changelog: v3.32.0...v3.34.0
v3.32.0
v3.31.0
v3.30.0
v3.29.0
What's Changed
- fix command line arguments for note diagnostics in #19
- split location stack for reduce action, optimizing the stack management in #20
- replacing the enum-based TokenData approach with separate Vec stacks for each rule type by #21
Full Changelog: v3.28.0...v3.29.0
v3.28.0
v3.27.0-1
v3.27.0
v3.25.0
What's Changed
- change error token logic; refactored the parser to treat the error token as a terminal symbol in #13
- add function call and
$sepsyntax in #14
$sep( P, P_separator, *|+ ): A repetition of P separated by P_separator. The repetition can be *, or + to indicate zero or more, or one or more repetitions respectively
Full Changelog: v3.24.0...v3.25.0
v3.24.0
What's Changed
- add error-recovery to grammar parser
- Runtime operator precedence conflict resolution in #12
Example:
%left '+';
%left '*';
E: E op=BinOp E %prec op { ... }
| ...
;
// The precedence of `BinOp` is determined by the production rule that `BinOp` was derived from.
BinOp: '+'
| '*'
;In this example, the E: E op=BinOp E rule's precedence is determined by the BinOp non-terminal.
When the parser needs to resolve a conflict involving this rule, it will look at what BinOp was reduced from.
If BinOp was reduced from +, the precedence of BinOp will be the precedence of +, which is defined by %left '+'.
otherwise, if BinOp was reduced from *, the precedence of BinOp will be the precedence of *, which is defined by %left '*'.
If any non-terminal symbol was referenced in the %prec directive,
every production rule in that non-terminal must have operator precedence.
Full Changelog: v3.22.0...v3.24.0