* data/glr.c (YYLLOC_DEFAULT): Parenthesize arguments as needed,

and return properly parenthesized result.
* data/lalar1.cc (YYLLOC_DEFAULT): Likewise.
* data/yacc.c (YYLLOC_DEFAULT): Likewise.
Remove unnecessary parentheses from uses.
* doc/bison.texinfo (Location Default Action): Describe the
conventions for parentheses.
This commit is contained in:
Paul Eggert
2003-06-20 22:52:12 +00:00
parent 81fd08cad0
commit 0ae99356d5
5 changed files with 39 additions and 23 deletions

View File

@@ -1,3 +1,13 @@
2003-06-20 Paul Eggert <eggert@twinsun.com>
* data/glr.c (YYLLOC_DEFAULT): Parenthesize arguments as needed,
and return properly parenthesized result.
* data/lalar1.cc (YYLLOC_DEFAULT): Likewise.
* data/yacc.c (YYLLOC_DEFAULT): Likewise.
Remove unnecessary parentheses from uses.
* doc/bison.texinfo (Location Default Action): Describe the
conventions for parentheses.
2003-06-19 Paul Eggert <eggert@twinsun.com> 2003-06-19 Paul Eggert <eggert@twinsun.com>
* data/glr.c (yyremoveDeletes, yy_reduce_print, yyglrReduce, * data/glr.c (yyremoveDeletes, yy_reduce_print, yyglrReduce,

View File

@@ -414,14 +414,14 @@ static const ]b4_int_type_for([b4_stos])[ yystos[] =
#ifndef YYLLOC_DEFAULT #ifndef YYLLOC_DEFAULT
# define YYLLOC_DEFAULT(yyCurrent, yyRhs, YYN) \ # define YYLLOC_DEFAULT(yyCurrent, yyRhs, YYN) \
(yyCurrent).first_line = YYRHSLOC(yyRhs,1).first_line; \ ((yyCurrent).first_line = YYRHSLOC(yyRhs, 1).first_line, \
(yyCurrent).first_column = YYRHSLOC(yyRhs,1).first_column; \ (yyCurrent).first_column = YYRHSLOC(yyRhs, 1).first_column, \
(yyCurrent).last_line = YYRHSLOC(yyRhs,YYN).last_line; \ (yyCurrent).last_line = YYRHSLOC(yyRhs, YYN).last_line, \
(yyCurrent).last_column = YYRHSLOC(yyRhs,YYN).last_column; (yyCurrent).last_column = YYRHSLOC(yyRhs, YYN).last_column)
#endif #endif
]],[ ]],[
#ifndef YYLLOC_DEFAULT #ifndef YYLLOC_DEFAULT
# define YYLLOC_DEFAULT(yyCurrent, yyRhs, YYN) # define YYLLOC_DEFAULT(yyCurrent, yyRhs, YYN) ((void) 0)
#endif #endif
])[ ])[

View File

@@ -170,7 +170,7 @@ b4_syncline([@oline@], [@ofile@])],
b4_syncline([@oline@], [@ofile@])[ b4_syncline([@oline@], [@ofile@])[
#ifndef YYLLOC_DEFAULT #ifndef YYLLOC_DEFAULT
# define YYLLOC_DEFAULT(Current, Rhs, N) \ # define YYLLOC_DEFAULT(Current, Rhs, N) \
Current.end = Rhs[N].end; ((Current).end = Rhs[N].end)
#endif #endif
namespace yy namespace yy

View File

@@ -501,11 +501,11 @@ while (0)
are run). */ are run). */
#ifndef YYLLOC_DEFAULT #ifndef YYLLOC_DEFAULT
# define YYLLOC_DEFAULT(Current, Rhs, N) \ # define YYLLOC_DEFAULT(Current, Rhs, N) \
Current.first_line = Rhs[1].first_line; \ ((Current).first_line = (Rhs)[1].first_line, \
Current.first_column = Rhs[1].first_column; \ (Current).first_column = (Rhs)[1].first_column, \
Current.last_line = Rhs[N].last_line; \ (Current).last_line = (Rhs)[N].last_line, \
Current.last_column = Rhs[N].last_column; (Current).last_column = (Rhs)[N].last_column)
#endif #endif
/* YYLEX -- calling `yylex' with the right arguments. */ /* YYLEX -- calling `yylex' with the right arguments. */
@@ -983,7 +983,7 @@ yyreduce:
]b4_location_if( ]b4_location_if(
[ /* Default location. */ [ /* Default location. */
YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);])[ YYLLOC_DEFAULT (yyloc, yylsp - yylen, yylen);])[
YY_REDUCE_PRINT (yyn); YY_REDUCE_PRINT (yyn);
switch (yyn) switch (yyn)
]{ ]{
@@ -1180,7 +1180,7 @@ yyerrlab1:
YYDPRINTF ((stderr, "Shifting error token, ")); YYDPRINTF ((stderr, "Shifting error token, "));
*++yyvsp = yylval; *++yyvsp = yylval;
]b4_location_if([ YYLLOC_DEFAULT (yyloc, yylsp, (yylerrsp - yylsp)); ]b4_location_if([ YYLLOC_DEFAULT (yyloc, yylsp, yylerrsp - yylsp);
*++yylsp = yyloc;])[ *++yylsp = yyloc;])[
yystate = yyn; yystate = yyn;

View File

@@ -3210,11 +3210,11 @@ By default, @code{YYLLOC_DEFAULT} is defined this way for simple
@example @example
@group @group
#define YYLLOC_DEFAULT(Current, Rhs, N) \ # define YYLLOC_DEFAULT(Current, Rhs, N) \
Current.first_line = Rhs[1].first_line; \ ((Current).first_line = (Rhs)[1].first_line, \
Current.first_column = Rhs[1].first_column; \ (Current).first_column = (Rhs)[1].first_column, \
Current.last_line = Rhs[N].last_line; \ (Current).last_line = (Rhs)[N].last_line, \
Current.last_column = Rhs[N].last_column; (Current).last_column = (Rhs)[N].last_column)
@end group @end group
@end example @end example
@@ -3223,11 +3223,11 @@ and like this for @acronym{GLR} parsers:
@example @example
@group @group
#define YYLLOC_DEFAULT(Current, Rhs, N) \ # define YYLLOC_DEFAULT(yyCurrent, yyRhs, YYN) \
Current.first_line = YYRHSLOC(Rhs,1).first_line; \ ((yyCurrent).first_line = YYRHSLOC(yyRhs, 1).first_line, \
Current.first_column = YYRHSLOC(Rhs,1).first_column; \ (yyCurrent).first_column = YYRHSLOC(yyRhs, 1).first_column, \
Current.last_line = YYRHSLOC(Rhs,N).last_line; \ (yyCurrent).last_line = YYRHSLOC(yyRhs, YYN).last_line, \
Current.last_column = YYRHSLOC(Rhs,N).last_column; (yyCurrent).last_column = YYRHSLOC(yyRhs, YYN).last_column)
@end group @end group
@end example @end example
@@ -3241,6 +3241,12 @@ result) should be modified by @code{YYLLOC_DEFAULT}.
@item @item
For consistency with semantic actions, valid indexes for the location For consistency with semantic actions, valid indexes for the location
array range from 1 to @var{n}. array range from 1 to @var{n}.
@item
Your macro should parenthesize its arguments, if need be, since the
actual arguments may not be surrounded by parentheses. Also, your
macro should expand to something that can be used as a single
statement when it is followed by a semicolon.
@end itemize @end itemize
@node Declarations @node Declarations