mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
* NEWS: Version 2.1a.
* tests/headers.at (AT_TEST_CPP_GUARD_H): Declare yyerror and yylex, since C99 requires this.
This commit is contained in:
33
NEWS
33
NEWS
@@ -1,14 +1,14 @@
|
||||
Bison News
|
||||
----------
|
||||
|
||||
Changes in version 2.1a:
|
||||
Changes in version 2.1a, 2006-02-13:
|
||||
|
||||
* Bison now allows multiple %union declarations, and concatenates
|
||||
their contents together.
|
||||
|
||||
* New warning: unused values
|
||||
Typed right-hand side symbols whose value are not used are reported.
|
||||
For instance:
|
||||
Typed right-hand side symbols whose values are not used are reported,
|
||||
if the associated types have destructors. For instance:
|
||||
|
||||
exp: exp "?" exp ":" exp { $1 ? $1 : $3; }
|
||||
| exp "+" exp
|
||||
@@ -16,14 +16,17 @@ Changes in version 2.1a:
|
||||
|
||||
will trigger a warning about $$ and $5 in the first rule, and $3 in
|
||||
the second ($1 is copied to $$ by the default rule). This example
|
||||
most likely contains three errors, and should be rewritten as:
|
||||
most likely contains three errors, and could be rewritten as:
|
||||
|
||||
exp: exp "?" exp ":" exp { $$ = $1 ? $3 : $5; }
|
||||
| exp "+" exp { $$ = $1 + $3; }
|
||||
exp: exp "?" exp ":" exp
|
||||
{ $$ = $1 ? $3 : $5; free ($1 ? $5 : $3); free ($1); }
|
||||
| exp "+" exp
|
||||
{ $$ = $1 ? $1 : $3; if ($1) free ($3); }
|
||||
;
|
||||
|
||||
However, if the original actions were really intended, the warnings
|
||||
can be suppressed by letting Bison believe the values are used, e.g.:
|
||||
However, if the original actions were really intended, memory leaks
|
||||
and all, 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; }
|
||||
@@ -34,12 +37,6 @@ Changes in version 2.1a:
|
||||
|
||||
exp: exp { push ($1); } '+' exp { push ($3); sum (); };
|
||||
|
||||
Mid-rule actions that use $$ cause the corresponding value to be
|
||||
set, therefore the following action must use it. The following rule
|
||||
triggers a warning about $2.
|
||||
|
||||
exp: '1' { $$ = 1; } '+' exp { $$ = $1 + $4; };
|
||||
|
||||
The warning is intended to help catching lost values and memory leaks.
|
||||
If a value is ignored, its associated memory typically is not reclaimed.
|
||||
|
||||
@@ -53,14 +50,14 @@ Changes in version 2.1a:
|
||||
instead of warnings.
|
||||
|
||||
* GLR, YACC parsers.
|
||||
The %parse-params are available in the %destructor's (and the
|
||||
experimental %printer's) as per the documentation.
|
||||
The %parse-params are available in the destructors (and the
|
||||
experimental printers) as per the documentation.
|
||||
|
||||
* Bison now warns if it finds a stray `$' or `@' in an action.
|
||||
|
||||
* %require "VERSION"
|
||||
To specify that the grammar file depends on features implemented in
|
||||
Bison version VERSION or higher.
|
||||
This specifies that the grammar file depends on features implemented
|
||||
in Bison version VERSION or higher.
|
||||
|
||||
* lalr1.cc: The token and value types are now class members.
|
||||
The tokens were defined as free form enums and cpp macros. YYSTYPE
|
||||
|
||||
Reference in New Issue
Block a user