mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-17 08:13:02 +00:00
glr2.cc: more free functions about the automaton into glr_stack
* data/skeletons/glr2.cc (yypact_value_is_default) (yytable_value_is_error, yyisShiftAction, yyisErrorAction) (yyisDefaultedState, yydefaultAction): Move into... (glr_stack): here. Fix naming conventions.
This commit is contained in:
@@ -681,24 +681,6 @@ state_set_index create_state_set_index(std::ptrdiff_t value)
|
|||||||
return state_set_index::create(value);
|
return state_set_index::create(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define yypact_value_is_default(Yystate) \
|
|
||||||
]b4_table_value_equals([[pact]], [[Yystate]], [b4_pact_ninf], [YYPACT_NINF])[
|
|
||||||
|
|
||||||
#define yytable_value_is_error(Yytable_value) \
|
|
||||||
]b4_table_value_equals([[table]], [[Yytable_value]], [b4_table_ninf], [YYTABLE_NINF])[
|
|
||||||
|
|
||||||
static inline bool
|
|
||||||
yyisShiftAction (int yyaction)
|
|
||||||
{
|
|
||||||
return 0 < yyaction;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline bool
|
|
||||||
yyisErrorAction (int yyaction)
|
|
||||||
{
|
|
||||||
return yyaction == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Accessing symbol of state YYSTATE. */
|
/** Accessing symbol of state YYSTATE. */
|
||||||
static inline yysymbol_kind_t
|
static inline yysymbol_kind_t
|
||||||
yy_accessing_symbol (state_num yystate)
|
yy_accessing_symbol (state_num yystate)
|
||||||
@@ -706,21 +688,6 @@ yy_accessing_symbol (state_num yystate)
|
|||||||
return YY_CAST (yysymbol_kind_t, yystos[yystate]);
|
return YY_CAST (yysymbol_kind_t, yystos[yystate]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** True iff LR state YYSTATE has only a default reduction (regardless
|
|
||||||
* of token). */
|
|
||||||
static inline bool
|
|
||||||
yyisDefaultedState (state_num yystate)
|
|
||||||
{
|
|
||||||
return yypact_value_is_default (yypact[yystate]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** The default reduction for YYSTATE, assuming it has one. */
|
|
||||||
static inline rule_num
|
|
||||||
yydefaultAction (state_num yystate)
|
|
||||||
{
|
|
||||||
return yydefact[yystate];
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Left-hand-side symbol for rule #YYRULE. */
|
/** Left-hand-side symbol for rule #YYRULE. */
|
||||||
static inline yysymbol_kind_t
|
static inline yysymbol_kind_t
|
||||||
yylhsNonterm (rule_num yyrule)
|
yylhsNonterm (rule_num yyrule)
|
||||||
@@ -2084,9 +2051,9 @@ b4_dollar_popdef])[]dnl
|
|||||||
YYCDEBUG << "Entering state " << yystate << '\n';
|
YYCDEBUG << "Entering state " << yystate << '\n';
|
||||||
if (yystate == YYFINAL)
|
if (yystate == YYFINAL)
|
||||||
goto yyacceptlab;
|
goto yyacceptlab;
|
||||||
if (yyisDefaultedState (yystate))
|
if (yy_is_defaulted_state (yystate))
|
||||||
{
|
{
|
||||||
const rule_num yyrule = yydefaultAction (yystate);
|
const rule_num yyrule = yy_default_action (yystate);
|
||||||
if (yyrule == 0)
|
if (yyrule == 0)
|
||||||
{]b4_locations_if([[
|
{]b4_locations_if([[
|
||||||
this->yyerror_range[1].getState().yyloc = this->yylloc;]])[
|
this->yyerror_range[1].getState().yyloc = this->yylloc;]])[
|
||||||
@@ -2102,7 +2069,7 @@ b4_dollar_popdef])[]dnl
|
|||||||
const int yyaction = yygetLRActions (yystate, this->yytoken, yyconflicts);
|
const int yyaction = yygetLRActions (yystate, this->yytoken, yyconflicts);
|
||||||
if (*yyconflicts != 0)
|
if (*yyconflicts != 0)
|
||||||
break;
|
break;
|
||||||
if (yyisShiftAction (yyaction))
|
if (yy_is_shift_action (yyaction))
|
||||||
{
|
{
|
||||||
YY_SYMBOL_PRINT ("Shifting", this->yytoken, this->yylval, this->yylloc);
|
YY_SYMBOL_PRINT ("Shifting", this->yytoken, this->yylval, this->yylloc);
|
||||||
yyposn += 1;
|
yyposn += 1;
|
||||||
@@ -2115,7 +2082,7 @@ b4_dollar_popdef])[]dnl
|
|||||||
if (0 < this->yyerrState)
|
if (0 < this->yyerrState)
|
||||||
this->yyerrState -= 1;
|
this->yyerrState -= 1;
|
||||||
}
|
}
|
||||||
else if (yyisErrorAction (yyaction))
|
else if (yy_is_error_action (yyaction))
|
||||||
{]b4_locations_if([[
|
{]b4_locations_if([[
|
||||||
this->yyerror_range[1].getState().yyloc = this->yylloc;]])[
|
this->yyerror_range[1].getState().yyloc = this->yylloc;]])[
|
||||||
/* Don't issue an error message again for exceptions
|
/* Don't issue an error message again for exceptions
|
||||||
@@ -2441,7 +2408,7 @@ b4_dollar_popdef])[]dnl
|
|||||||
{
|
{
|
||||||
yyj += YYTERROR;
|
yyj += YYTERROR;
|
||||||
if (0 <= yyj && yyj <= YYLAST && yycheck[yyj] == YYTERROR
|
if (0 <= yyj && yyj <= YYLAST && yycheck[yyj] == YYTERROR
|
||||||
&& yyisShiftAction (yytable[yyj]))
|
&& yy_is_shift_action (yytable[yyj]))
|
||||||
{
|
{
|
||||||
/* Shift the error token. */]b4_locations_if([[
|
/* Shift the error token. */]b4_locations_if([[
|
||||||
/* First adjust its location.*/
|
/* First adjust its location.*/
|
||||||
@@ -2478,9 +2445,9 @@ b4_dollar_popdef])[]dnl
|
|||||||
|
|
||||||
YYASSERT (yystate != YYFINAL);
|
YYASSERT (yystate != YYFINAL);
|
||||||
|
|
||||||
if (yyisDefaultedState (yystate))
|
if (yy_is_defaulted_state (yystate))
|
||||||
{
|
{
|
||||||
const rule_num yyrule = yydefaultAction (yystate);
|
const rule_num yyrule = yy_default_action (yystate);
|
||||||
if (yyrule == 0)
|
if (yyrule == 0)
|
||||||
{
|
{
|
||||||
YYCDEBUG << "Stack " << yyk.get() << " dies.\n";
|
YYCDEBUG << "Stack " << yyk.get() << " dies.\n";
|
||||||
@@ -2525,9 +2492,9 @@ b4_dollar_popdef])[]dnl
|
|||||||
return yyflag;
|
return yyflag;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (yyisShiftAction (yyaction))
|
if (yy_is_shift_action (yyaction))
|
||||||
break;
|
break;
|
||||||
else if (yyisErrorAction (yyaction))
|
else if (yy_is_error_action (yyaction))
|
||||||
{
|
{
|
||||||
YYCDEBUG << "Stack " << yyk.get() << " dies.\n";
|
YYCDEBUG << "Stack " << yyk.get() << " dies.\n";
|
||||||
yystateStack.yytops.yymarkStackDeleted (yyk);
|
yystateStack.yytops.yymarkStackDeleted (yyk);
|
||||||
@@ -3145,7 +3112,7 @@ private:
|
|||||||
yyconflicts = yyconfl;
|
yyconflicts = yyconfl;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else if (yyisDefaultedState (yystate)
|
else if (yy_is_defaulted_state (yystate)
|
||||||
|| yyindex < 0 || YYLAST < yyindex || yycheck[yyindex] != yytoken)
|
|| yyindex < 0 || YYLAST < yyindex || yycheck[yyindex] != yytoken)
|
||||||
{
|
{
|
||||||
yyconflicts = yyconfl;
|
yyconflicts = yyconfl;
|
||||||
@@ -3177,6 +3144,45 @@ private:
|
|||||||
return yydefgoto[yysym - YYNTOKENS];
|
return yydefgoto[yysym - YYNTOKENS];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
yypact_value_is_default (state_num yystate)
|
||||||
|
{
|
||||||
|
return ]b4_table_value_equals([[pact]], [[yystate]], [b4_pact_ninf], [YYPACT_NINF])[;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
yytable_value_is_error (int yytable_value YY_ATTRIBUTE_UNUSED)
|
||||||
|
{
|
||||||
|
return ]b4_table_value_equals([[table]], [[yytable_value]], [b4_table_ninf], [YYTABLE_NINF])[;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
yy_is_shift_action (int yyaction)
|
||||||
|
{
|
||||||
|
return 0 < yyaction;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
yy_is_error_action (int yyaction)
|
||||||
|
{
|
||||||
|
return yyaction == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Whether LR state YYSTATE has only a default reduction
|
||||||
|
* (regardless of token). */
|
||||||
|
static bool
|
||||||
|
yy_is_defaulted_state (state_num yystate)
|
||||||
|
{
|
||||||
|
return yypact_value_is_default (yypact[yystate]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** The default reduction for YYSTATE, assuming it has one. */
|
||||||
|
static rule_num
|
||||||
|
yy_default_action (state_num yystate)
|
||||||
|
{
|
||||||
|
return yydefact[yystate];
|
||||||
|
}
|
||||||
|
|
||||||
/* GLRStacks */
|
/* GLRStacks */
|
||||||
|
|
||||||
/** Y0 and Y1 represent two possible actions to take in a given
|
/** Y0 and Y1 represent two possible actions to take in a given
|
||||||
|
|||||||
Reference in New Issue
Block a user