NEWS.md in lrama-0.6.9 vs NEWS.md in lrama-0.6.10
- old
+ new
@@ -1,6 +1,226 @@
# NEWS for Lrama
+## Lrama 0.6.10 (2024-09-11)
+
+### Aliased Named References for actions of RHS in parameterizing rules
+
+Allow to use aliased named references for actions of RHS in parameterizing rules.
+
+```
+%rule sum(X, Y): X[summand] '+' Y[addend] { $$ = $summand + $addend }
+ ;
+```
+
+https://github.com/ruby/lrama/pull/410
+
+
+### Named References for actions of RHS in parameterizing rules caller side
+
+Allow to use named references for actions of RHS in parameterizing rules caller side.
+
+```
+opt_nl: '\n'?[nl] <str> { $$ = $nl; }
+ ;
+```
+
+https://github.com/ruby/lrama/pull/414
+
+### Widen the definable position of parameterizing rules
+
+Allow to define parameterizing rules in the middle of the grammar.
+
+```
+%rule defined_option(X): /* empty */
+ | X
+ ;
+
+%%
+
+program : defined_option(number) <i>
+ | defined_list(number) <i>
+ ;
+
+%rule defined_list(X): /* empty */ /* <--- here */
+ | defined_list(X) number
+ ;
+```
+
+https://github.com/ruby/lrama/pull/420
+
+### Report unused terminal symbols
+
+Support to report unused terminal symbols.
+Run `exe/lrama --report=terms` to show unused terminal symbols.
+
+```
+❯ exe/lrama --report=terms sample/calc.y
+ 11 Unused Terms
+ 0 YYerror
+ 1 YYUNDEF
+ 2 '\\\\'
+ 3 '\\13'
+ 4 keyword_class2
+ 5 tNUMBER
+ 6 tPLUS
+ 7 tMINUS
+ 8 tEQ
+ 9 tEQEQ
+ 10 '>'
+```
+https://github.com/ruby/lrama/pull/439
+
+### Report unused rules
+
+Support to report unused rules.
+Run `exe/lrama --report=rules` to show unused rules.
+
+```
+❯ exe/lrama --report=rules sample/calc.y
+ 3 Unused Rules
+ 0 unused_option
+ 1 unused_list
+ 2 unused_nonempty_list
+```
+
+https://github.com/ruby/lrama/pull/441
+
+### Ensure compatibility with Bison for `%locations` directive
+
+Support `%locations` directive to ensure compatibility with Bison.
+Change to `%locations` directive not set by default.
+
+https://github.com/ruby/lrama/pull/446
+
+### Diagnostics report for parameterizing rules redefine
+
+Support to warning redefined parameterizing rules.
+Run `exe/lrama -W` or `exe/lrama --warnings` to show redefined parameterizing rules.
+
+```
+❯ exe/lrama -W sample/calc.y
+parameterizing rule redefined: redefined_method(X)
+parameterizing rule redefined: redefined_method(X)
+```
+
+https://github.com/ruby/lrama/pull/448
+
+### Support `-v` and `--verbose` option
+
+Support to `-v` and `--verbose` option.
+These options align with Bison behavior. So same as '--report=state' option.
+
+https://github.com/ruby/lrama/pull/457
+
+## Lrama 0.6.9 (2024-05-02)
+
+### Callee side tag specification of parameterizing rules
+
+Allow to specify tag on callee side of parameterizing rules.
+
+```
+%union {
+ int i;
+}
+
+%rule with_tag(X) <i>: X { $$ = $1; }
+ ;
+```
+
+### Named References for actions of RHS in parameterizing rules
+
+Allow to use named references for actions of RHS in parameterizing rules.
+
+```
+%rule option(number): /* empty */
+ | number { $$ = $number; }
+ ;
+```
+
+## Lrama 0.6.8 (2024-04-29)
+
+### Nested parameterizing rules with tag
+
+Allow to nested parameterizing rules with tag.
+
+```
+%union {
+ int i;
+}
+
+%rule nested_nested_option(X): /* empty */
+ | X
+ ;
+
+%rule nested_option(X): /* empty */
+ | nested_nested_option(X) <i>
+ ;
+
+%rule option(Y): /* empty */
+ | nested_option(Y) <i>
+ ;
+```
+
+## Lrama 0.6.7 (2024-04-28)
+
+### RHS of user defined parameterizing rules contains `'symbol'?`, `'symbol'+` and `'symbol'*`.
+
+User can use `'symbol'?`, `'symbol'+` and `'symbol'*` in RHS of user defined parameterizing rules.
+
+```
+%rule with_word_seps(X): /* empty */
+ | X ' '+
+ ;
+```
+
+## Lrama 0.6.6 (2024-04-27)
+
+### Trace actions
+
+Support trace actions for debugging.
+Run `exe/lrama --trace=actions` to show grammar rules with actions.
+
+```
+❯ exe/lrama --trace=actions sample/calc.y
+Grammar rules with actions:
+$accept -> list, YYEOF {}
+list -> ε {}
+list -> list, LF {}
+list -> list, expr, LF { printf("=> %d\n", $2); }
+expr -> NUM {}
+expr -> expr, '+', expr { $$ = $1 + $3; }
+expr -> expr, '-', expr { $$ = $1 - $3; }
+expr -> expr, '*', expr { $$ = $1 * $3; }
+expr -> expr, '/', expr { $$ = $1 / $3; }
+expr -> '(', expr, ')' { $$ = $2; }
+```
+
+### Inlining
+
+Support inlining for rules.
+The `%inline` directive causes all references to symbols to be replaced with its definition.
+
+```
+%rule %inline op: PLUS { + }
+ | TIMES { * }
+ ;
+
+%%
+
+expr : number { $$ = $1; }
+ | expr op expr { $$ = $1 $2 $3; }
+ ;
+```
+
+as same as
+
+```
+expr : number { $$ = $1; }
+ | expr '+' expr { $$ = $1 + $3; }
+ | expr '*' expr { $$ = $1 * $3; }
+ ;
+```
+
## Lrama 0.6.5 (2024-03-25)
### Typed Midrule Actions
User can specify the type of mid rule action by tag (`<bar>`) instead of specifying it with in an action.