[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 04/10] glr2.cc: turn some pointers into references
From: |
Akim Demaille |
Subject: |
[PATCH 04/10] glr2.cc: turn some pointers into references |
Date: |
Sun, 6 Dec 2020 14:10:31 +0100 |
* data/skeletons/glr2.cc: Prefer references to pointers.
Add a few more const.
---
TODO | 6 ++
data/skeletons/glr2.cc | 182 ++++++++++++++++++++---------------------
2 files changed, 97 insertions(+), 91 deletions(-)
diff --git a/TODO b/TODO
index a7dc19c2..fa9cee52 100644
--- a/TODO
+++ b/TODO
@@ -187,6 +187,12 @@ And use YYCDEBUG rather than YY_DEBUG_STREAM.
*** Avoid pointers
There are many places where pointers should be replaced with references.
+Some occurrences were fixed, but now some have improper names:
+
+-yygetToken (int *yycharp, ]b4_namespace_ref[::]b4_parser_class[&
yyparser][]b4_pure_if([, glr_stack* yystackp])[]b4_user_formals[)
++yygetToken (int& yycharp, ]b4_namespace_ref[::]b4_parser_class[&
yyparser][]b4_pure_if([, glr_stack* yystackp])[]b4_user_formals[)
+
+yycharp is no longer a Pointer. And yystackp should probably also be a
reference.
*** Use proper type names
Don't use YYSTYPE and YYLTYPE but parser::semantic_type and
diff --git a/data/skeletons/glr2.cc b/data/skeletons/glr2.cc
index 986573ff..748d51de 100644
--- a/data/skeletons/glr2.cc
+++ b/data/skeletons/glr2.cc
@@ -727,10 +727,10 @@ state_set_index create_state_set_index(std::ptrdiff_t
value) {
]b4_table_value_equals([[table]], [[Yytable_value]], [b4_table_ninf],
[YYTABLE_NINF])[
]m4_define([b4_yygetToken_call],
- [[yygetToken (&yychar, yyparser][]b4_pure_if([,
yystackp])[]b4_user_args[)]])[
+ [[yygetToken (yychar, yyparser][]b4_pure_if([,
yystackp])[]b4_user_args[)]])[
static inline yysymbol_kind_t
-yygetToken (int *yycharp, ]b4_namespace_ref[::]b4_parser_class[&
yyparser][]b4_pure_if([, glr_stack* yystackp])[]b4_user_formals[);
+yygetToken (int& yycharp, ]b4_namespace_ref[::]b4_parser_class[&
yyparser][]b4_pure_if([, glr_stack* yystackp])[]b4_user_formals[);
static inline bool
yyisShiftAction (int yyaction)
@@ -745,7 +745,7 @@ yyisErrorAction (int yyaction)
}
static inline int
-yygetLRActions (state_num yystate, yysymbol_kind_t yytoken, const short**
yyconflicts);
+yygetLRActions (state_num yystate, yysymbol_kind_t yytoken, const short*&
yyconflicts);
/** True iff LR state YYSTATE has only a default reduction (regardless
* of token). */
@@ -1038,14 +1038,14 @@ class semantic_option {
* That is, they represent the same rule applied to RHS symbols
* that produce the same terminal symbols. */
bool
- isIdenticalTo (semantic_option* yyy1)
+ isIdenticalTo (const semantic_option& yyy1) const
{
- if (this->yyrule == yyy1->yyrule)
+ if (this->yyrule == yyy1.yyrule)
{
const glr_state *yys0, *yys1;
int yyn;
for (yys0 = this->state(),
- yys1 = yyy1->state(),
+ yys1 = yyy1.state(),
yyn = yyrhsLength (this->yyrule);
yyn > 0;
yys0 = yys0->pred(),
@@ -1061,10 +1061,10 @@ class semantic_option {
/** Assuming identicalOptions (YYY0,YYY1), destructively merge the
* alternative semantic values for the RHS-symbols of YYY1 and YYY0. */
void
- mergeWith (semantic_option* yyy1)
+ mergeWith (semantic_option& yyy1)
{
glr_state *yys0 = this->state();
- glr_state *yys1 = yyy1->state();
+ glr_state *yys1 = yyy1.state();
for (int yyn = yyrhsLength (this->yyrule);
yyn > 0;
yyn -= 1,
@@ -1311,7 +1311,7 @@ void glr_state::destroy (char const *yymsg,
]b4_namespace_ref[::]b4_parser_class
static int
-yypreference (semantic_option* y0, semantic_option* y1);
+yypreference (const semantic_option& y0, const semantic_option& y1);
static void
yyuserMerge (int yyn, YYSTYPE* yy0, YYSTYPE* yy1);
@@ -1328,7 +1328,7 @@ static inline state_num
yyLRgotoState (state_num yystate, yysymbol_kind_t yysym);
#undef YYFILL
-#define YYFILL(N) yyfill (yyvsp, &yylow, (N), yynormal)
+#define YYFILL(N) yyfill (yyvsp, yylow, (N), yynormal)
class state_stack {
public:
@@ -1522,12 +1522,12 @@ class state_stack {
* YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1.
* For convenience, always return YYLOW1. */
inline int
- yyfill (glr_stack_item *yyvsp, int *yylow, int yylow1, bool yynormal)
+ yyfill (glr_stack_item *yyvsp, int &yylow, int yylow1, bool yynormal)
{
- if (!yynormal && yylow1 < *yylow)
+ if (!yynormal && yylow1 < yylow)
{
- yyfillin (yyvsp, *yylow, yylow1);
- *yylow = yylow1;
+ yyfillin (yyvsp, yylow, yylow1);
+ yylow = yylow1;
}
return yylow1;
}
@@ -1644,9 +1644,9 @@ class state_stack {
#if ]b4_api_PREFIX[DEBUG
std::cerr << "Ambiguity detected.\n";
std::cerr << "Option 1,\n";
- yyreportTree (yyx0, 2);
+ yyreportTree (*yyx0, 2);
std::cerr << "\nOption 2,\n";
- yyreportTree (yyx1, 2);
+ yyreportTree (*yyx1, 2);
std::cerr << "\n";
#endif
@@ -1687,14 +1687,14 @@ class state_stack {
#if ]b4_api_PREFIX[DEBUG
void
- yyreportTree (semantic_option* yyx, size_t yyindent)
+ yyreportTree (const semantic_option& yyx, size_t yyindent) const
{
- int yynrhs = yyrhsLength (yyx->yyrule);
- glr_state* yystates[1 + YYMAXRHS];
+ int yynrhs = yyrhsLength (yyx.yyrule);
+ const glr_state* yystates[1 + YYMAXRHS];
glr_state yyleftmost_state;
{
- glr_state* yys = yyx->state();
+ const glr_state* yys = yyx.state();
for (int yyi = yynrhs; 0 < yyi; yyi -= 1)
{
yystates[yyi] = yys;
@@ -1709,16 +1709,16 @@ class state_stack {
yystates[0] = yys;
}
- std::string yylhs = ]b4_namespace_ref::b4_parser_class[::symbol_name
(yylhsNonterm (yyx->yyrule));
- YYASSERT(yyx->state());
- if (yyx->state()->yyposn < yystates[0]->yyposn + 1)
+ std::string yylhs = ]b4_namespace_ref::b4_parser_class[::symbol_name
(yylhsNonterm (yyx.yyrule));
+ YYASSERT(yyx.state());
+ if (yyx.state()->yyposn < yystates[0]->yyposn + 1)
std::cerr << std::string(yyindent, ' ') << yylhs << " -> <Rule "
- << yyx->yyrule - 1 << ", empty>\n";
+ << yyx.yyrule - 1 << ", empty>\n";
else
std::cerr << std::string(yyindent, ' ') << yylhs << " -> <Rule "
- << yyx->yyrule - 1 << ", tokens "
+ << yyx.yyrule - 1 << ", tokens "
<< yystates[0]->yyposn + 1 << " .. "
- << yyx->state()->yyposn << ">\n";
+ << yyx.state()->yyposn << ">\n";
for (int yyi = 1; yyi <= yynrhs; yyi += 1)
{
if (yystates[yyi]->yyresolved)
@@ -1733,7 +1733,7 @@ class state_stack {
<< " .. " << yystates[yyi]->yyposn << ">\n";
}
else
- yyreportTree (yystates[yyi]->firstVal(),
+ yyreportTree (*yystates[yyi]->firstVal(),
yyindent+2);
}
}
@@ -1747,7 +1747,7 @@ class state_stack {
};
#undef YYFILL
-#define YYFILL(N) yystateStack.yyfill (yyvsp, &yylow, (N), yynormal)
+#define YYFILL(N) yystateStack.yyfill (yyvsp, yylow, (N), yynormal)
#define yystackp this
class glr_stack
@@ -2006,7 +2006,7 @@ public:
YY_SYMBOL_PRINT ("Shifting",
static_cast<yysymbol_kind_t>(yystos[yytable[yyj]]),
&yylval, &yyerrloc);
yyglrShift (create_state_set_index(0), yytable[yyj],
- yys->yyposn, &yylval]b4_locations_if([,
&yyerrloc])[);
+ yys->yyposn, yylval]b4_locations_if([,
&yyerrloc])[);
yys = firstTopState();
break;
}
@@ -2059,7 +2059,7 @@ public:
yystateStack.yytops.setLookaheadNeeds(yyk, true);
const yysymbol_kind_t yytoken = ]b4_yygetToken_call[;
const short* yyconflicts;
- int yyaction = yygetLRActions (yystate, yytoken, &yyconflicts);
+ const int yyaction = yygetLRActions (yystate, yytoken,
yyconflicts);
for (; *yyconflicts != 0; ++yyconflicts)
{
@@ -2188,7 +2188,7 @@ public:
yys != yystateStack.yysplitPoint;
yys = yys->pred())
yyn += 1;
- YYCHK (yyresolveStates (firstTopState(), yyn));
+ YYCHK (yyresolveStates (*firstTopState(), yyn));
}
return yyok;
}
@@ -2272,7 +2272,7 @@ public:
yyglrShift (yyk,
yyLRgotoState (topState(yyk)->yylrState,
yylhsNonterm (yyrule)),
- yyposn, &yysval]b4_locations_if([, &loc])[);
+ yyposn, yysval]b4_locations_if([, &loc])[);
}
else
{
@@ -2337,10 +2337,10 @@ public:
inline void
yyglrShift (state_set_index yyk, state_num yylrState,
size_t yyposn,
- YYSTYPE* yyvalp]b4_locations_if([, YYLTYPE* yylocp])[)
+ YYSTYPE& yyval_arg]b4_locations_if([, YYLTYPE* yylocp])[)
{
glr_state& yynewState = yystateStack.yynewGLRState(
- glr_state(yylrState, yyposn, *yyvalp
+ glr_state(yylrState, yyposn, yyval_arg
]b4_locations_if([, *yylocp])[));
yynewState.setPred(yystateStack.topAt(yyk));
yystateStack.setTopAt(yyk, &yynewState);
@@ -2391,13 +2391,13 @@ public:
* of whether result = yyok, each state has been left with consistent
* data so that destroy can be invoked if necessary. */
YYRESULTTAG
- yyresolveStates (glr_state* yys, int yyn)
+ yyresolveStates (glr_state& yys, int yyn)
{
if (0 < yyn)
{
- YYASSERT (yys->pred() != YY_NULLPTR);
- YYCHK (yyresolveStates (yys->pred(), yyn-1));
- if (! yys->yyresolved)
+ YYASSERT (yys.pred() != YY_NULLPTR);
+ YYCHK (yyresolveStates (*yys.pred(), yyn-1));
+ if (! yys.yyresolved)
YYCHK (yyresolveValue (yys));
}
return yyok;
@@ -2411,27 +2411,27 @@ public:
* result = yyok, YYS has been left with consistent data so that
* destroy can be invoked if necessary. */
YYRESULTTAG
- yyresolveValue (glr_state* yys)
+ yyresolveValue (glr_state& yys)
{
- semantic_option* yybest = yys->firstVal();
+ semantic_option* yybest = yys.firstVal();
YYASSERT(yybest != YY_NULLPTR);
bool yymerge = false;
YYSTYPE yysval;
YYRESULTTAG yyflag;]b4_locations_if([
- YYLTYPE *yylocp = &yys->yyloc;])[
+ YYLTYPE *yylocp = &yys.yyloc;])[
semantic_option* yypPrev = yybest;
for (semantic_option* yyp = yybest->next();
yyp != YY_NULLPTR; )
{
- if (yybest->isIdenticalTo (yyp))
+ if (yybest->isIdenticalTo (*yyp))
{
- yybest->mergeWith (yyp);
+ yybest->mergeWith (*yyp);
yypPrev->setNext(yyp->next());
}
else
{
- switch (yypreference (yybest, yyp))
+ switch (yypreference (*yybest, *yyp))
{
case 0:]b4_locations_if([[
yyresolveLocations (yys, 1);]])[
@@ -2460,7 +2460,7 @@ public:
if (yymerge)
{
int yyprec = yydprec[yybest->yyrule];
- yyflag = yyresolveAction (yybest, &yysval]b4_locations_if([,
yylocp])[);
+ yyflag = yyresolveAction (*yybest, &yysval]b4_locations_if([,
yylocp])[);
if (yyflag == yyok)
for (semantic_option* yyp = yybest->next();
yyp != YY_NULLPTR;
@@ -2470,11 +2470,11 @@ public:
{
YYSTYPE yysval_other;]b4_locations_if([
YYLTYPE yydummy;])[
- yyflag = yyresolveAction (yyp,
&yysval_other]b4_locations_if([, &yydummy])[);
+ yyflag = yyresolveAction (*yyp,
&yysval_other]b4_locations_if([, &yydummy])[);
if (yyflag != yyok)
{
yyparser.yy_destroy_ ("Cleanup: discarding incompletely
merged value for",
-
static_cast<yysymbol_kind_t>(yystos[yys->yylrState]),
+
static_cast<yysymbol_kind_t>(yystos[yys.yylrState]),
&yysval]b4_locations_if([, yylocp])[);
break;
}
@@ -2483,17 +2483,17 @@ public:
}
}
else
- yyflag = yyresolveAction (yybest, &yysval]b4_locations_if([, yylocp])[);
+ yyflag = yyresolveAction (*yybest, &yysval]b4_locations_if([, yylocp])[);
if (yyflag == yyok)
{
- yys->yyresolved = true;
+ yys.yyresolved = true;
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
- yys->semanticVal() = yysval;
+ yys.semanticVal() = yysval;
YY_IGNORE_MAYBE_UNINITIALIZED_END
}
else
- yys->setFirstVal(YY_NULLPTR);
+ yys.setFirstVal(YY_NULLPTR);
return yyflag;
}
@@ -2503,13 +2503,14 @@ public:
* have been destroyed (assuming the user action destroys all RHS
* semantic values if invoked). */
YYRESULTTAG
- yyresolveAction (semantic_option* yyopt, YYSTYPE* yyvalp]b4_locations_if([,
YYLTYPE* yylocp])[)
+ yyresolveAction (semantic_option& yyopt, YYSTYPE* yyvalp]b4_locations_if([,
YYLTYPE* yylocp])[)
{
- glr_state* yyoptState = yyopt->state();
+ glr_state* yyoptState = yyopt.state();
+ YYASSERT(yyoptState != YY_NULLPTR);
glr_stack_item yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
- int yynrhs = yyrhsLength (yyopt->yyrule);
+ int yynrhs = yyrhsLength (yyopt.yyrule);
YYRESULTTAG yyflag =
- yyresolveStates (yyoptState, yynrhs);
+ yyresolveStates (*yyoptState, yynrhs);
if (yyflag != yyok)
{
for (glr_state *yys = yyoptState; yynrhs > 0; yys = yys->pred(),
yynrhs -= 1)
@@ -2517,7 +2518,7 @@ public:
return yyflag;
}
- yyrhsVals[YYMAXRHS +
YYMAXLEFT].getState().setPred(yyopt->state());]b4_locations_if([[
+ yyrhsVals[YYMAXRHS +
YYMAXLEFT].getState().setPred(yyopt.state());]b4_locations_if([[
if (yynrhs == 0)
/* Set default location. */
yyrhsVals[YYMAXRHS + YYMAXLEFT - 1].getState().yyloc =
yyoptState->yyloc;]])[
@@ -2525,10 +2526,10 @@ public:
int yychar_current = yychar;
YYSTYPE yylval_current = yylval;]b4_locations_if([
YYLTYPE yylloc_current = yylloc;])[
- yychar = yyopt->yyrawchar;
- yylval = yyopt->yyval;]b4_locations_if([
- yylloc = yyopt->yyloc;])[
- yyflag = yyuserAction (yyopt->yyrule, yynrhs,
+ yychar = yyopt.yyrawchar;
+ yylval = yyopt.yyval;]b4_locations_if([
+ yylloc = yyopt.yyloc;])[
+ yyflag = yyuserAction (yyopt.yyrule, yynrhs,
yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
yyvalp]b4_locations_if([, yylocp])[);
yychar = yychar_current;
yylval = yylval_current;]b4_locations_if([
@@ -2541,22 +2542,21 @@ public:
* ending at YYS1. Has no effect on previously resolved states.
* The first semantic option of a state is always chosen. */
void
- yyresolveLocations (glr_state *yys1, int yyn1)
+ yyresolveLocations (glr_state &yys1, int yyn1)
{
if (0 < yyn1)
{
- yyresolveLocations (yys1->pred(), yyn1 - 1);
- if (!yys1->yyresolved)
+ yyresolveLocations (*yys1.pred(), yyn1 - 1);
+ if (!yys1.yyresolved)
{
glr_stack_item yyrhsloc[1 + YYMAXRHS];
- int yynrhs;
- semantic_option* yyoption = yys1->firstVal();
- YYASSERT (yyoption != YY_NULLPTR);
- yynrhs = yyrhsLength (yyoption->yyrule);
+ YYASSERT (yys1.firstVal() != YY_NULLPTR);
+ semantic_option& yyoption = *yys1.firstVal();
+ const int yynrhs = yyrhsLength (yyoption.yyrule);
if (0 < yynrhs)
{
- yyresolveLocations (yyoption->state(), yynrhs);
- glr_state *yys = yyoption->state();
+ yyresolveLocations (*yyoption.state(), yynrhs);
+ const glr_state *yys = yyoption.state();
for (int yyn = yynrhs; yyn > 0; yyn -= 1)
{
yyrhsloc[yyn].getState().yyloc = yys->yyloc;
@@ -2573,10 +2573,10 @@ public:
necessarily the previous state itself) is guaranteed to be
resolved already. */
YY_IGNORE_NULL_DEREFERENCE_BEGIN
- yyrhsloc[0].getState().yyloc = yyoption->state()->yyloc;
+ yyrhsloc[0].getState().yyloc = yyoption.state()->yyloc;
YY_IGNORE_NULL_DEREFERENCE_END
}
- YYLLOC_DEFAULT ((yys1->yyloc), yyrhsloc, yynrhs);
+ YYLLOC_DEFAULT ((yys1.yyloc), yyrhsloc, yynrhs);
}
}
}]])[
@@ -2590,18 +2590,18 @@ public:
/** If yychar is empty, fetch the next token. */
static inline yysymbol_kind_t
-yygetToken (int *yycharp, ]b4_namespace_ref[::]b4_parser_class[&
yyparser][]b4_pure_if([, glr_stack* yystackp])[]b4_user_formals[)
+yygetToken (int& yycharp, ]b4_namespace_ref[::]b4_parser_class[&
yyparser][]b4_pure_if([, glr_stack* yystackp])[]b4_user_formals[)
{
yysymbol_kind_t yytoken;
]b4_parse_param_use()dnl
-[ if (*yycharp == ]b4_namespace_ref::b4_parser_class::token::b4_symbol(empty,
id)[)
+[ if (yycharp == ]b4_namespace_ref::b4_parser_class::token::b4_symbol(empty,
id)[)
{
YY_DEBUG_STREAM << "Reading a token\n";
#if YY_EXCEPTIONS
try
{
#endif // YY_EXCEPTIONS
- *yycharp = ]b4_lex[;
+ yycharp = ]b4_lex[;
#if YY_EXCEPTIONS
}
catch (const ]b4_namespace_ref[::]b4_parser_class[::syntax_error& yyexc)
@@ -2611,19 +2611,19 @@ yygetToken (int *yycharp,
]b4_namespace_ref[::]b4_parser_class[& yyparser][]b4_p
yyparser.error (]b4_locations_if([yylloc, ])[yyexc.what ());
// Map errors caught in the scanner to the error token, so that error
// handling is started.
- *yycharp =
]b4_namespace_ref::b4_parser_class::token::b4_symbol(error, id)[;
+ yycharp =
]b4_namespace_ref::b4_parser_class::token::b4_symbol(error, id)[;
}
#endif // YY_EXCEPTIONS
}
- if (*yycharp <= ]b4_namespace_ref::b4_parser_class::token::b4_symbol(eof,
id)[)
+ if (yycharp <= ]b4_namespace_ref::b4_parser_class::token::b4_symbol(eof,
id)[)
{
- *yycharp = ]b4_namespace_ref::b4_parser_class::token::b4_symbol(eof,
id)[;
+ yycharp = ]b4_namespace_ref::b4_parser_class::token::b4_symbol(eof, id)[;
yytoken = ]b4_namespace_ref::b4_parser_class::b4_symbol(eof, kind)[;
YY_DEBUG_STREAM << "Now at end of input.\n";
}
else
{
- yytoken = YYTRANSLATE (*yycharp);
+ yytoken = YYTRANSLATE (yycharp);
YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
}
return yytoken;
@@ -2662,29 +2662,29 @@ yyrhsLength (rule_num yyrule)
* of conflicting reductions.
*/
static inline int
-yygetLRActions (state_num yystate, yysymbol_kind_t yytoken, const short**
yyconflicts)
+yygetLRActions (state_num yystate, yysymbol_kind_t yytoken, const short*&
yyconflicts)
{
int yyindex = yypact[yystate] + yytoken;
if (yytoken == ]b4_namespace_ref::b4_parser_class[::]b4_symbol(error, kind)[)
{
// This is the error token.
- *yyconflicts = yyconfl;
+ yyconflicts = yyconfl;
return 0;
}
else if (yyisDefaultedState (yystate)
|| yyindex < 0 || YYLAST < yyindex || yycheck[yyindex] != yytoken)
{
- *yyconflicts = yyconfl;
+ yyconflicts = yyconfl;
return -yydefact[yystate];
}
else if (! yytable_value_is_error (yytable[yyindex]))
{
- *yyconflicts = yyconfl + yyconflp[yyindex];
+ yyconflicts = yyconfl + yyconflp[yyindex];
return yytable[yyindex];
}
else
{
- *yyconflicts = yyconfl + yyconflp[yyindex];
+ yyconflicts = yyconfl + yyconflp[yyindex];
return 0;
}
}
@@ -2709,9 +2709,9 @@ yyLRgotoState (state_num yystate, yysymbol_kind_t yysym)
* parsing state; return 0 if no combination is possible,
* 1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred. */
static int
-yypreference (semantic_option* y0, semantic_option* y1)
+yypreference (const semantic_option& y0, const semantic_option& y1)
{
- rule_num r0 = y0->yyrule, r1 = y1->yyrule;
+ rule_num r0 = y0.yyrule, r1 = y1.yyrule;
int p0 = yydprec[r0], p1 = yydprec[r1];
if (p0 == p1)
@@ -2776,7 +2776,7 @@ b4_dollar_popdef])[]dnl
case 2: goto yyexhaustedlab;
default: goto yybuglab;
}
- yystack.yyglrShift (create_state_set_index(0), 0, 0,
&yylval]b4_locations_if([, &yylloc])[);
+ yystack.yyglrShift (create_state_set_index(0), 0, 0,
yylval]b4_locations_if([, &yylloc])[);
yyposn = 0;
while (true)
@@ -2806,7 +2806,7 @@ b4_dollar_popdef])[]dnl
{
const yysymbol_kind_t yytoken = ]b4_yygetToken_call[;
const short* yyconflicts;
- int yyaction = yygetLRActions (yystate, yytoken, &yyconflicts);
+ const int yyaction = yygetLRActions (yystate, yytoken,
yyconflicts);
if (*yyconflicts != 0)
break;
if (yyisShiftAction (yyaction))
@@ -2814,7 +2814,7 @@ b4_dollar_popdef])[]dnl
YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
yychar =
]b4_namespace_ref::b4_parser_class::token::b4_symbol(empty, id)[;
yyposn += 1;
- yystack.yyglrShift (create_state_set_index(0), yyaction,
yyposn, &yylval]b4_locations_if([, &yylloc])[);
+ yystack.yyglrShift (create_state_set_index(0), yyaction,
yyposn, yylval]b4_locations_if([, &yylloc])[);
if (0 < yystack.yyerrState)
yystack.yyerrState -= 1;
}
@@ -2885,13 +2885,13 @@ b4_dollar_popdef])[]dnl
{
const state_num yystate = yystack.topState(yys)->yylrState;
const short* yyconflicts;
- int yyaction = yygetLRActions (yystate, yytoken_to_shift,
- &yyconflicts);
+ const int yyaction = yygetLRActions (yystate, yytoken_to_shift,
+ yyconflicts);
/* Note that yyconflicts were handled by yyprocessOneStack. */
YY_DEBUG_STREAM << "On stack " << yys.get() << ", ";
YY_SYMBOL_PRINT ("shifting", yytoken_to_shift, &yylval, &yylloc);
yystack.yyglrShift (yys, yyaction, yyposn,
- &yylval]b4_locations_if([, &yylloc])[);
+ yylval]b4_locations_if([, &yylloc])[);
YY_DEBUG_STREAM << "Stack " << yys.get() << " now in state #"
<< yystack.topState(yys)->yylrState << '\n';
}
--
2.29.2
- [PATCH 00/10] glr2.cc: fixes, Akim Demaille, 2020/12/06
- [PATCH 01/10] glr.c: fix line numbers in logs, Akim Demaille, 2020/12/06
- [PATCH 02/10] glr2.cc: fix when the stack is not expandable, Akim Demaille, 2020/12/06
- [PATCH 03/10] glr2.cc: use 'const' for some constant local variables, Akim Demaille, 2020/12/06
- [PATCH 04/10] glr2.cc: turn some pointers into references,
Akim Demaille <=
- [PATCH 05/10] glr2.cc: fix memory corruption bug, Akim Demaille, 2020/12/06
- [PATCH 06/10] glr2.cc: misc cleanups, Akim Demaille, 2020/12/06
- [PATCH 07/10] glr2.cc: fix yyresolveValue, Akim Demaille, 2020/12/06
- [PATCH 08/10] glr2.cc: add support for parse.assert, Akim Demaille, 2020/12/06
- [PATCH 09/10] glr2.cc: use the same format for traces as glr.c, Akim Demaille, 2020/12/06
- [PATCH 10/10] glr2.cc: run the glr-regression tests, Akim Demaille, 2020/12/06