* 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:
Paul Eggert
2006-02-13 19:07:04 +00:00
parent 498e897c67
commit 4e26c69eb6
3 changed files with 24 additions and 19 deletions

View File

@@ -1,3 +1,9 @@
2006-02-13 Paul Eggert <eggert@cs.ucla.edu>
* NEWS: Version 2.1a.
* tests/headers.at (AT_TEST_CPP_GUARD_H): Declare yyerror and yylex,
since C99 requires this.
2006-02-11 Paul Eggert <eggert@cs.ucla.edu> 2006-02-11 Paul Eggert <eggert@cs.ucla.edu>
* m4/c-working.m4: New file. * m4/c-working.m4: New file.
@@ -1376,7 +1382,7 @@
2005-09-19 Akim Demaille <akim@epita.fr> 2005-09-19 Akim Demaille <akim@epita.fr>
* NEWS, configure.ac: Version 2.1a. * NEWS, configure.ac: update version number to 2.1a.
2005-09-16 Paul Eggert <eggert@cs.ucla.edu> 2005-09-16 Paul Eggert <eggert@cs.ucla.edu>

33
NEWS
View File

@@ -1,14 +1,14 @@
Bison News Bison News
---------- ----------
Changes in version 2.1a: Changes in version 2.1a, 2006-02-13:
* Bison now allows multiple %union declarations, and concatenates * Bison now allows multiple %union declarations, and concatenates
their contents together. their contents together.
* New warning: unused values * New warning: unused values
Typed right-hand side symbols whose value are not used are reported. Typed right-hand side symbols whose values are not used are reported,
For instance: if the associated types have destructors. For instance:
exp: exp "?" exp ":" exp { $1 ? $1 : $3; } exp: exp "?" exp ":" exp { $1 ? $1 : $3; }
| exp "+" exp | 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 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 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 "?" exp ":" exp
| exp "+" exp { $$ = $1 + $3; } { $$ = $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 However, if the original actions were really intended, memory leaks
can be suppressed by letting Bison believe the values are used, e.g.: 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 "?" exp ":" exp { $1 ? $1 : $3; (void) ($$, $5); }
| exp "+" exp { $$ = $1; (void) $3; } | exp "+" exp { $$ = $1; (void) $3; }
@@ -34,12 +37,6 @@ Changes in version 2.1a:
exp: exp { push ($1); } '+' exp { push ($3); sum (); }; 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. The warning is intended to help catching lost values and memory leaks.
If a value is ignored, its associated memory typically is not reclaimed. If a value is ignored, its associated memory typically is not reclaimed.
@@ -53,14 +50,14 @@ Changes in version 2.1a:
instead of warnings. instead of warnings.
* GLR, YACC parsers. * GLR, YACC parsers.
The %parse-params are available in the %destructor's (and the The %parse-params are available in the destructors (and the
experimental %printer's) as per the documentation. experimental printers) as per the documentation.
* Bison now warns if it finds a stray `$' or `@' in an action. * Bison now warns if it finds a stray `$' or `@' in an action.
* %require "VERSION" * %require "VERSION"
To specify that the grammar file depends on features implemented in This specifies that the grammar file depends on features implemented
Bison version VERSION or higher. in Bison version VERSION or higher.
* lalr1.cc: The token and value types are now class members. * lalr1.cc: The token and value types are now class members.
The tokens were defined as free form enums and cpp macros. YYSTYPE The tokens were defined as free form enums and cpp macros. YYSTYPE

View File

@@ -58,6 +58,8 @@ AS_MKDIR_P([$dirname])
AT_DATA_GRAMMAR([$1.y], AT_DATA_GRAMMAR([$1.y],
[%{ [%{
#include <$1.h> #include <$1.h>
void yyerror (const char *);
int yylex (void);
%} %}
%% %%
dummy:; dummy:;