Releases: ehwan/RustyLR
Releases · ehwan/RustyLR
v3.34.0
What's Changed
- Add
--state
option 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
$sep
syntax 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