Changes in version 2.1a:
+* New warning: unused values
+ Typed right-hand side symbols whose value are not used are reported.
+ For instance:
+
+ exp: exp "?" exp ":" exp { $$ = $1 ? $1 : $3; }
+ | exp "+" exp
+ ;
+
+ will trigger a warning about $5 of the first rule, and $3 in the
+ second ($1 is copied to $$ by the default rule). This example
+ most likely contains two errors, and should be rewritten as:
+
+ exp: exp "?" exp ":" exp { $$ = $1 ? $3 : $5; }
+ | exp "+" exp { $$ = $1 + $3; }
+ ;
+
+ However, if the original actions were really intended, the warnings
+ can be suppressed by letting Bison believe the values are used, e.g.:
+
+ exp: exp "?" exp ":" exp { $$ = $1 ? $1 : $3; (void) $5; }
+ | exp "+" exp { $$ = $1; (void) $3; }
+ ;
+
+ The warning is intended to help catching lost values and memory leaks.
+ If a value is ignored, its associated memory typically is not reclaimed.
+
* %destructor vs. YYABORT, YYACCEPT, and YYERROR.
Destructors are now called when user code invokes YYABORT, YYACCEPT,
and YYERROR, for all objects on the stack, other than objects
corresponding to the right-hand side of the current rule.
-* GLR, C++ LALR(1) parsers.
- These parser skeletons are now distributed with the same special
- license exception that the C LALR(1) parser skeleton has had since
- Bison 1.24. Hence the FSF imposes no copyright restriction on the
- output of Bison when it is generating such parsers.
-
* %expect, %expect-rr
Incorrect numbers of expected conflicts are now actual errors,
instead of warnings.