When yydebug, report semantic and location values for reductions.

* data/glr.c (yy_reduce_print): Report the semantic values and the
locations.
(YY_REDUCE_PRINT): Adjust.
(yyglrReduce): Use them.
(b4_rhs_value, b4_rhs_location): Remove m4_eval invocations.
* data/c.m4 (b4_yysymprint_generate): Specify the const arguments.
* tests/calc.at (_AT_CHECK_CALC_ERROR): Remove the reduction
traces.
This commit is contained in:
Akim Demaille
2005-11-11 10:36:24 +00:00
parent 0299809431
commit 62b08cfcd7
4 changed files with 48 additions and 21 deletions

View File

@@ -1,3 +1,15 @@
2005-11-11 Akim <akim@epita.fr>
When yydebug, report semantic and location values for reductions.
* data/glr.c (yy_reduce_print): Report the semantic values and the
locations.
(YY_REDUCE_PRINT): Adjust.
(yyglrReduce): Use them.
(b4_rhs_value, b4_rhs_location): Remove m4_eval invocations.
* data/c.m4 (b4_yysymprint_generate): Specify the const arguments.
* tests/calc.at (_AT_CHECK_CALC_ERROR): Remove the reduction
traces.
2005-11-10 Akim Demaille <akim@epita.fr>
* data/glr.c (yynewGLRStackItem, YY_RESERVE_GLRSTACK): New.

View File

@@ -413,10 +413,10 @@ m4_define_default([b4_yysymprint_generate],
]$1([yysymprint],
[static void],
[[FILE *yyoutput], [yyoutput]],
[[int yytype], [yytype]],
[[YYSTYPE *yyvaluep], [yyvaluep]][]dnl
b4_location_if( [, [[YYLTYPE *yylocationp], [yylocationp]]])[]dnl
[[FILE *yyoutput], [yyoutput]],
[[int yytype], [yytype]],
[[const YYSTYPE * const yyvaluep], [yyvaluep]][]dnl
b4_location_if([, [[const YYLTYPE * const yylocationp], [yylocationp]]])[]dnl
m4_ifset([b4_parse_param], [, b4_parse_param]))[
{
YYUSE (yyvaluep);

View File

@@ -113,7 +113,7 @@ m4_define([b4_lhs_value],
# Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH
# symbols on RHS.
m4_define([b4_rhs_value],
[(((yyGLRStackItem const *)yyvsp)@{YYFILL (m4_eval([$2 - $1]))@}.yystate.yysemantics.yysval[]m4_ifval([$3], [.$3]))])
[(((yyGLRStackItem const *)yyvsp)@{YYFILL ($2 - $1)@}.yystate.yysemantics.yysval[]m4_ifval([$3], [.$3]))])
@@ -133,7 +133,7 @@ m4_define([b4_lhs_location],
# Expansion of @NUM, where the current rule has RULE-LENGTH symbols
# on RHS.
m4_define([b4_rhs_location],
[(((yyGLRStackItem const *)yyvsp)@{YYFILL (m4_eval([$2 - $1]))@}.yystate.yyloc)])
[(((yyGLRStackItem const *)yyvsp)@{YYFILL ($2 - $1)@}.yystate.yyloc)])
# We do want M4 expansion after # for CPP macros.
m4_changecom()
@@ -956,9 +956,9 @@ yylhsNonterm (yyRuleNum yyrule)
}
#define yyis_pact_ninf(yystate) \
]m4_if(m4_eval(b4_pact_ninf < b4_pact_min), 1,
0,
((yystate) == YYPACT_NINF))[
]m4_if(m4_eval(b4_pact_ninf < b4_pact_min), [1],
[0],
[((yystate) == YYPACT_NINF)])[
/** True iff LR state STATE has only a default reduction (regardless
* of token). */
@@ -976,9 +976,9 @@ yydefaultAction (yyStateNum yystate)
}
#define yyis_table_ninf(yytable_value) \
]m4_if(m4_eval(b4_table_ninf < b4_table_min), 1,
0,
((yytable_value) == YYTABLE_NINF))[
]m4_if(m4_eval(b4_table_ninf < b4_table_min), [1],
[0],
[((yytable_value) == YYTABLE_NINF)])[
/** Set *YYACTION to the action to take in YYSTATE on seeing YYTOKEN.
* Result R means
@@ -1328,12 +1328,12 @@ yydoAction (yyGLRStack* yystack, size_t yyk, yyRuleNum yyrule,
}
#if !YYDEBUG
# define YY_REDUCE_PRINT(K, Rule)
# define YY_REDUCE_PRINT(Args)
#else
# define YY_REDUCE_PRINT(K, Rule) \
# define YY_REDUCE_PRINT(Args) \
do { \
if (yydebug) \
yy_reduce_print (K, Rule); \
yy_reduce_print Args; \
} while (/*CONSTCOND*/ 0)
/*----------------------------------------------------------.
@@ -1341,16 +1341,29 @@ do { \
`----------------------------------------------------------*/
static inline void
yy_reduce_print (size_t yyk, yyRuleNum yyrule)
yy_reduce_print (yyGLRStack* yystack, size_t yyk, yyRuleNum yyrule,
YYSTYPE* yyvalp, YYLTYPE* yylocp]b4_user_formals[)
{
int yynrhs = yyrhsLength (yyrule);
yybool yynormal __attribute__ ((__unused__)) =
(yystack->yysplitPoint == NULL);
yyGLRStackItem* yyvsp = (yyGLRStackItem*) yystack->yytops.yystates[yyk];
int yylow = 1;
int yyi;
YYFPRINTF (stderr, "Reducing stack %lu by rule %d (line %lu), ",
YYFPRINTF (stderr, "Reducing stack %lu by rule %d (line %lu):\n",
(unsigned long int) yyk, yyrule - 1,
(unsigned long int) yyrline[yyrule]);
/* Print the symbols being reduced, and their result. */
for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
YYFPRINTF (stderr, "%s ", yytokenName (yyrhs[yyi]));
YYFPRINTF (stderr, "-> %s\n", yytokenName (yyr1[yyrule]));
//for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
for (yyi = 0; yyi < yynrhs; yyi++)
{
fprintf (stderr, " $%d = ", yyi);
yysymprint (stderr, yyrhs[yyprhs[yyrule] + yyi],
&]b4_rhs_value(yynrhs, yyi)[
]b4_location_if([, &]b4_rhs_location(yynrhs, yyi))[]dnl
b4_user_args[);
fprintf (stderr, "\n");
}
}
#endif
@@ -1376,8 +1389,9 @@ yyglrReduce (yyGLRStack* yystack, size_t yyk, yyRuleNum yyrule,
YYSTYPE yysval;
YYLTYPE yyloc;
YY_REDUCE_PRINT (yyk, yyrule);
YY_REDUCE_PRINT ((yystack, yyk, yyrule, &yysval, &yyloc]b4_user_args[));
YYCHK (yydoAction (yystack, yyk, yyrule, &yysval, &yyloc]b4_user_args[));
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyrule], &yysval, &yyloc);
yyglrShift (yystack, yyk,
yyLRgotoState (yystack->yytops.yystates[yyk]->yylrState,
yylhsNonterm (yyrule)),

View File

@@ -409,6 +409,7 @@ sed '/^Starting/d
/^Error:/d
/^Next/d
/^Discarding/d
/ \$[[0-9$]]* = /d
/^yydestructor:/d' stderr >at-stderr
mv at-stderr stderr
# 2. Create the reference error message.