mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
* data/c.m4 (b4_yy_symbol_print_generate):
(b4_yy_symbol_print_generate): Use 'YYSTYPE const' rather than 'const YYSTYPE', and similarly for YYLTYPE. This fixes one of the bugs reported today by Derek M Jones in <http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00027.html>. * doc/bison.texinfo (Value Type): Document that YYSTYPE must be defined to be a type name without parens or brackets. (Location Type): Similarly for YYLTYPE. * tests/regression.at (Trivial grammars): Put in a test for this bug that will be caught by 'make maintainer-check' (though not, alas, by 'make check' unless your compiler is picky).
This commit is contained in:
14
ChangeLog
14
ChangeLog
@@ -1,3 +1,17 @@
|
||||
2006-05-20 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* data/c.m4 (b4_yy_symbol_print_generate):
|
||||
(b4_yy_symbol_print_generate): Use 'YYSTYPE const' rather than
|
||||
'const YYSTYPE', and similarly for YYLTYPE. This fixes one
|
||||
of the bugs reported today by Derek M Jones in
|
||||
<http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00027.html>.
|
||||
* doc/bison.texinfo (Value Type): Document that YYSTYPE must be
|
||||
defined to be a type name without parens or brackets.
|
||||
(Location Type): Similarly for YYLTYPE.
|
||||
* tests/regression.at (Trivial grammars): Put in a test for this
|
||||
bug that will be caught by 'make maintainer-check' (though not,
|
||||
alas, by 'make check' unless your compiler is picky).
|
||||
|
||||
2006-05-19 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
* NEWS: Version 2.2.
|
||||
|
||||
@@ -483,8 +483,8 @@ m4_define_default([b4_yy_symbol_print_generate],
|
||||
[static void],
|
||||
[[FILE *yyoutput], [yyoutput]],
|
||||
[[int yytype], [yytype]],
|
||||
[[const YYSTYPE * const yyvaluep], [yyvaluep]][]dnl
|
||||
b4_locations_if([, [[const YYLTYPE * const yylocationp], [yylocationp]]])[]dnl
|
||||
[[YYSTYPE const * const yyvaluep], [yyvaluep]][]dnl
|
||||
b4_locations_if([, [[YYLTYPE const * const yylocationp], [yylocationp]]])[]dnl
|
||||
m4_ifset([b4_parse_param], [, b4_parse_param]))[
|
||||
{
|
||||
if (!yyvaluep)
|
||||
@@ -515,8 +515,8 @@ b4_parse_param_use[]dnl
|
||||
[static void],
|
||||
[[FILE *yyoutput], [yyoutput]],
|
||||
[[int yytype], [yytype]],
|
||||
[[const YYSTYPE * const yyvaluep], [yyvaluep]][]dnl
|
||||
b4_locations_if([, [[const YYLTYPE * const yylocationp], [yylocationp]]])[]dnl
|
||||
[[YYSTYPE const * const yyvaluep], [yyvaluep]][]dnl
|
||||
b4_locations_if([, [[YYLTYPE const * const yylocationp], [yylocationp]]])[]dnl
|
||||
m4_ifset([b4_parse_param], [, b4_parse_param]))[
|
||||
{
|
||||
if (yytype < YYNTOKENS)
|
||||
|
||||
@@ -3067,6 +3067,8 @@ specify some other type, define @code{YYSTYPE} as a macro, like this:
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
@code{YYSTYPE}'s replacement list should be a type name
|
||||
that does not contain parentheses or square brackets.
|
||||
This macro definition must go in the prologue of the grammar file
|
||||
(@pxref{Grammar Outline, ,Outline of a Bison Grammar}).
|
||||
|
||||
@@ -3463,7 +3465,9 @@ actions to take when rules are matched.
|
||||
Defining a data type for locations is much simpler than for semantic values,
|
||||
since all tokens and groupings always use the same type.
|
||||
|
||||
The type of locations is specified by defining a macro called @code{YYLTYPE}.
|
||||
You can specify the type of locations by defining a macro called
|
||||
@code{YYLTYPE}, just as you can specify the semantic value type by
|
||||
defining @code{YYSTYPE} (@pxref{Value Type}).
|
||||
When @code{YYLTYPE} is not defined, Bison uses a default structure type with
|
||||
four members:
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ AT_DATA_GRAMMAR([input.y],
|
||||
[[%{
|
||||
void yyerror (char const *);
|
||||
int yylex (void);
|
||||
#define YYSTYPE int *
|
||||
%}
|
||||
|
||||
%error-verbose
|
||||
@@ -42,6 +43,7 @@ program: 'x';
|
||||
|
||||
AT_CHECK([bison -o input.c input.y])
|
||||
AT_COMPILE([input.o], [-c input.c])
|
||||
AT_COMPILE([input.o], [-DYYDEBUG -c input.c])
|
||||
|
||||
AT_CLEANUP
|
||||
|
||||
|
||||
Reference in New Issue
Block a user