+ Starting from this version, Bison can also accept named references.
+ When no ambiguity is possible, original symbol names may be used
+ as named references:
+
+ if_stmt : 'if' cond_expr 'then' then_stmt ';'
+ { $if_stmt = mk_if_stmt($cond_expr, $then_stmt); }
+
+ In the more common case, explicit names may be declared:
+
+ stmt[res] : 'if' expr[cond] 'then' stmt[then] 'else' stmt[else] ';'
+ { $res = mk_if_stmt($cond, $then, $else); }
+
+ Location information is also accessible using @name syntax. When
+ accessing symbol names containing dots or dashes, explicit bracketing
+ ($[sym.1]) must be used.
+
+ These features are experimental in this version. More user feedback
+ will help to stabilize them.
+
+** IELR(1) and Canonical LR(1) Support
+
+ IELR(1) is a minimal LR(1) parser table generation algorithm. That
+ is, given any context-free grammar, IELR(1) generates parser tables
+ with the full language recognition power of canonical LR(1) but with
+ nearly the same number of parser states as LALR(1). This reduction in
+ parser states is often an order of magnitude. More importantly,
+ because canonical LR(1)'s extra parser states may contain duplicate
+ conflicts in the case of non-LR(1) grammars, the number of conflicts
+ for IELR(1) is often an order of magnitude less as well. This can
+ significantly reduce the complexity of developing of a grammar.
+
+ Bison can now generate IELR(1) and canonical LR(1) parser tables in
+ place of its traditional LALR(1) parser tables, which remain the
+ default. You can specify the type of parser tables in the grammar
+ file with these directives:
+
+ %define lr.type lalr
+ %define lr.type ielr
+ %define lr.type canonical-lr
+
+ The default reduction optimization in the parser tables can also be
+ adjusted using `%define lr.default-reductions'. See the documentation
+ for `%define lr.type' and `%define lr.default-reductions' in the
+ section `Bison Declaration Summary' in the Bison manual for the
+ details.
+
+ These features are experimental. More user feedback will help to
+ stabilize them.
+
+** Unrecognized %code qualifiers are now an error not a warning.
+
+** %define improvements.
+
+*** Unrecognized variables are now an error not a warning.
+
+*** Multiple invocations for any variable is now an error not a warning.
+
+*** Can now be invoked via the command line.
+
+ Each of these command-line options
+
+ -D NAME[=VALUE]
+ --define=NAME[=VALUE]
+
+ -F NAME[=VALUE]
+ --force-define=NAME[=VALUE]