summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkim Demaille <akim@lrde.epita.fr>2013-11-14 16:14:39 +0100
committerAkim Demaille <akim@lrde.epita.fr>2013-11-14 16:26:16 +0100
commitedb2e90531197dfd3250bd3ca2e5993376002182 (patch)
tree7b3d584d16b340029491bdb9a29f5de6304da759
parent6d94eebba7bdc817f8534ff0b9541e509e004ad1 (diff)
downloadbison-edb2e90531197dfd3250bd3ca2e5993376002182.tar.gz
skeletons: use better names when computing a "goto"
* data/glr.c (yyLRgotoState): Name the symbol argument yysym, instead of yylhs. * data/lalr1.cc (yy_lr_goto_state_): Likewise. * data/lalr1.java (yy_lr_goto_state_): New, modeled after the previous two routines. Use it.
-rw-r--r--data/glr.c10
-rw-r--r--data/lalr1.cc10
-rw-r--r--data/lalr1.java22
3 files changed, 26 insertions, 16 deletions
diff --git a/data/glr.c b/data/glr.c
index 5069f613..39d12a0e 100644
--- a/data/glr.c
+++ b/data/glr.c
@@ -910,14 +910,18 @@ yygetLRActions (yyStateNum yystate, int yytoken,
}
}
+/** Compute post-reduction state.
+ * \param yystate the current state
+ * \param yysym the nonterminal to push on the stack
+ */
static inline yyStateNum
-yyLRgotoState (yyStateNum yystate, yySymbol yylhs)
+yyLRgotoState (yyStateNum yystate, yySymbol yysym)
{
- int yyr = yypgoto[yylhs - YYNTOKENS] + yystate;
+ int yyr = yypgoto[yysym - YYNTOKENS] + yystate;
if (0 <= yyr && yyr <= YYLAST && yycheck[yyr] == yystate)
return yytable[yyr];
else
- return yydefgoto[yylhs - YYNTOKENS];
+ return yydefgoto[yysym - YYNTOKENS];
}
static inline yybool
diff --git a/data/lalr1.cc b/data/lalr1.cc
index 9703e44a..d3d063ab 100644
--- a/data/lalr1.cc
+++ b/data/lalr1.cc
@@ -220,8 +220,8 @@ b4_location_define])])[
/// Compute post-reduction state.
/// \param yystate the current state
- /// \param yylhs the nonterminal to push on the stack
- state_type yy_lr_goto_state_ (state_type yystate, int yylhs);
+ /// \param yysym the nonterminal to push on the stack
+ state_type yy_lr_goto_state_ (state_type yystate, int yysym);
/// Whether the given \c yypact_ value indicates a defaulted state.
/// \param yyvalue the value to check
@@ -671,13 +671,13 @@ m4_if(b4_prefix, [yy], [],
#endif // ]b4_api_PREFIX[DEBUG
inline ]b4_parser_class_name[::state_type
- ]b4_parser_class_name[::yy_lr_goto_state_ (state_type yystate, int yylhs)
+ ]b4_parser_class_name[::yy_lr_goto_state_ (state_type yystate, int yysym)
{
- int yyr = yypgoto_[yylhs - yyntokens_] + yystate;
+ int yyr = yypgoto_[yysym - yyntokens_] + yystate;
if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate)
return yytable_[yyr];
else
- return yydefgoto_[yylhs - yyntokens_];
+ return yydefgoto_[yysym - yyntokens_];
}
inline bool
diff --git a/data/lalr1.java b/data/lalr1.java
index d137ed81..bd32fa75 100644
--- a/data/lalr1.java
+++ b/data/lalr1.java
@@ -453,6 +453,19 @@ b4_define_state])[
return yyerrstatus_ == 0;
}
+ /** Compute post-reduction state.
+ * @@param yystate the current state
+ * @@param yysym the nonterminal to push on the stack
+ */
+ private int yy_lr_goto_state_ (int yystate, int yysym)
+ {
+ int yyr = yypgoto_[yysym - yyntokens_] + yystate;
+ if (0 <= yyr && yyr <= yylast_ && yycheck_[yyr] == yystate)
+ return yytable_[yyr];
+ else
+ return yydefgoto_[yysym - yyntokens_];
+ }
+
private int yyaction (int yyn, YYStack yystack, int yylen) ]b4_maybe_throws([b4_throws])[
{
]b4_yystype[ yyval;
@@ -483,14 +496,7 @@ b4_define_state])[
yylen = 0;
/* Shift the result of the reduction. */
- yyn = yyr1_[yyn];
- int yystate = yypgoto_[yyn - yyntokens_] + yystack.stateAt (0);
- if (0 <= yystate && yystate <= yylast_
- && yycheck_[yystate] == yystack.stateAt (0))
- yystate = yytable_[yystate];
- else
- yystate = yydefgoto_[yyn - yyntokens_];
-
+ int yystate = yy_lr_goto_state_ (yystack.stateAt (0), yyr1_[yyn]);
yystack.push (yystate, yyval]b4_locations_if([, yyloc])[);
return YYNEWSTATE;
}