mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-18 16:53:02 +00:00
* data/yacc.c (YY_LOCATION_PRINT): Use YYLTYPE_IS_TRIVIAL as a
clearer criterion to define it. (parse): Initialize the initial location when YYLTYPE_IS_TRIVIAL. When reducing on an empty RHS, use the latest stacked location as location. yylloc is not always available. * data/glr.c: Likewise. Also, honor initial-actions.
This commit is contained in:
11
ChangeLog
11
ChangeLog
@@ -1,3 +1,14 @@
|
|||||||
|
2004-09-20 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
|
* data/yacc.c (YY_LOCATION_PRINT): Use YYLTYPE_IS_TRIVIAL as a
|
||||||
|
clearer criterion to define it.
|
||||||
|
(parse): Initialize the initial location when YYLTYPE_IS_TRIVIAL.
|
||||||
|
When reducing on an empty RHS, use the latest stacked location as
|
||||||
|
location.
|
||||||
|
yylloc is not always available.
|
||||||
|
* data/glr.c: Likewise.
|
||||||
|
Also, honor initial-actions.
|
||||||
|
|
||||||
2004-09-20 Akim Demaille <akim@epita.fr>
|
2004-09-20 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
* data/yacc.c (YY_LOCATION_PRINT): New.
|
* data/yacc.c (YY_LOCATION_PRINT): New.
|
||||||
|
|||||||
25
data/glr.c
25
data/glr.c
@@ -427,9 +427,9 @@ 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)
|
||||||
|
|
||||||
/* YY_LOCATION_PRINT -- Print the location on the stream.
|
/* YY_LOCATION_PRINT -- Print the location on the stream.
|
||||||
@@ -720,7 +720,7 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
|
|||||||
if (yyrhslen == 0)
|
if (yyrhslen == 0)
|
||||||
{
|
{
|
||||||
*yyvalp = yyval_default;
|
*yyvalp = yyval_default;
|
||||||
*yylocp = yyloc_default;
|
*yylocp = yyvsp[0].yystate.yyloc;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1825,7 +1825,24 @@ yyrecoverSyntaxError (yyGLRStack* yystack,
|
|||||||
if (setjmp (yystack.yyexception_buffer) != 0)
|
if (setjmp (yystack.yyexception_buffer) != 0)
|
||||||
goto yyDone;
|
goto yyDone;
|
||||||
|
|
||||||
yyglrShift (&yystack, 0, 0, 0, yyval_default, &yyloc_default]b4_user_args[);
|
yylval = yyval_default;
|
||||||
|
]b4_location_if([
|
||||||
|
#if YYLTYPE_IS_TRIVIAL
|
||||||
|
yylloc.first_line = yylloc.last_line = 1;
|
||||||
|
yylloc.first_column = yylloc.last_column = 0;
|
||||||
|
#endif
|
||||||
|
])
|
||||||
|
m4_ifdef([b4_initial_action], [
|
||||||
|
m4_pushdef([b4_at_dollar], [(yylval)])dnl
|
||||||
|
m4_pushdef([b4_dollar_dollar], [(yylloc)])dnl
|
||||||
|
/* User initialization code. */
|
||||||
|
b4_initial_action
|
||||||
|
m4_popdef([b4_dollar_dollar])dnl
|
||||||
|
m4_popdef([b4_at_dollar])dnl
|
||||||
|
/* Line __line__ of glr.c. */
|
||||||
|
b4_syncline([@oline@], [@ofile@])])dnl
|
||||||
|
[
|
||||||
|
yyglrShift (&yystack, 0, 0, 0, yylval, &yylloc]b4_user_args[);
|
||||||
yytoken = YYEMPTY;
|
yytoken = YYEMPTY;
|
||||||
yyposn = 0;
|
yyposn = 0;
|
||||||
|
|
||||||
|
|||||||
32
data/yacc.c
32
data/yacc.c
@@ -514,18 +514,21 @@ while (0)
|
|||||||
(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
|
||||||
|
|
||||||
|
|
||||||
/* YY_LOCATION_PRINT -- Print the location on the stream.
|
/* YY_LOCATION_PRINT -- Print the location on the stream.
|
||||||
This macro was not mandated originally: define only if we know
|
This macro was not mandated originally: define only if we know
|
||||||
we won't break user code: when these are the locations we know. */
|
we won't break user code: when these are the locations we know. */
|
||||||
|
|
||||||
# define YY_LOCATION_PRINT(File, Loc) \
|
|
||||||
fprintf (File, "%d.%d-%d.%d", \
|
|
||||||
(Loc).first_line, (Loc).first_column, \
|
|
||||||
(Loc).last_line, (Loc).last_column)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef YY_LOCATION_PRINT
|
#ifndef YY_LOCATION_PRINT
|
||||||
|
# if YYLTYPE_IS_TRIVIAL
|
||||||
|
# define YY_LOCATION_PRINT(File, Loc) \
|
||||||
|
fprintf (File, "%d.%d-%d.%d", \
|
||||||
|
(Loc).first_line, (Loc).first_column, \
|
||||||
|
(Loc).last_line, (Loc).last_column)
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
|
# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -815,8 +818,14 @@ b4_c_function_def([yyparse], [int], b4_parse_param)
|
|||||||
|
|
||||||
yyssp = yyss;
|
yyssp = yyss;
|
||||||
yyvsp = yyvs;
|
yyvsp = yyvs;
|
||||||
]b4_location_if([ yylsp = yyls;])[
|
]b4_location_if([[ yylsp = yyls;
|
||||||
]m4_ifdef([b4_initial_action], [
|
#if YYLTYPE_IS_TRIVIAL
|
||||||
|
/* Initialize the default location before parsing starts. */
|
||||||
|
yyls[0].first_line = yyls[0].last_line = 1;
|
||||||
|
yyls[0].first_column = yyls[0].last_column = 0;
|
||||||
|
#endif
|
||||||
|
]])
|
||||||
|
m4_ifdef([b4_initial_action], [
|
||||||
m4_pushdef([b4_at_dollar], [(*yylsp)])dnl
|
m4_pushdef([b4_at_dollar], [(*yylsp)])dnl
|
||||||
m4_pushdef([b4_dollar_dollar], [(*yyvsp)])dnl
|
m4_pushdef([b4_dollar_dollar], [(*yyvsp)])dnl
|
||||||
/* User initialization code. */
|
/* User initialization code. */
|
||||||
@@ -1008,8 +1017,11 @@ yyreduce:
|
|||||||
yyval = yyvsp[1-yylen];
|
yyval = yyvsp[1-yylen];
|
||||||
|
|
||||||
]b4_location_if(
|
]b4_location_if(
|
||||||
[ /* Default location. */
|
[[ /* Default location. */
|
||||||
YYLLOC_DEFAULT (yyloc, yylsp - yylen, yylen);])[
|
if (yylen)
|
||||||
|
YYLLOC_DEFAULT (yyloc, yylsp - yylen, yylen);
|
||||||
|
else
|
||||||
|
yyloc = yylsp[0];]])[
|
||||||
YY_REDUCE_PRINT (yyn);
|
YY_REDUCE_PRINT (yyn);
|
||||||
switch (yyn)
|
switch (yyn)
|
||||||
]{
|
]{
|
||||||
|
|||||||
Reference in New Issue
Block a user