From: Paul Eggert Date: Sun, 21 May 2006 04:48:47 +0000 (+0000) Subject: * data/c.m4 (b4_yy_symbol_print_generate): X-Git-Tag: v2.3b~394 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/50cce58e9a046f6a98b66cf3907f2668d044df1c * 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 . * 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). --- diff --git a/ChangeLog b/ChangeLog index f82892cc..5e13d5a9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2006-05-20 Paul Eggert + + * 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 + . + * 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 * NEWS: Version 2.2. diff --git a/data/c.m4 b/data/c.m4 index c7c50636..f10e0901 100644 --- a/data/c.m4 +++ b/data/c.m4 @@ -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) diff --git a/doc/bison.texinfo b/doc/bison.texinfo index 4b61b401..5021e2e3 100644 --- a/doc/bison.texinfo +++ b/doc/bison.texinfo @@ -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: diff --git a/tests/regression.at b/tests/regression.at index c5ceaf14..6a37f759 100644 --- a/tests/regression.at +++ b/tests/regression.at @@ -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