[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 1/5] skeletons: use better names when computing a "goto"
From: |
Akim Demaille |
Subject: |
[PATCH 1/5] skeletons: use better names when computing a "goto" |
Date: |
Fri, 15 Nov 2013 10:19:04 +0100 |
* 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.
---
data/glr.c | 10 +++++++---
data/lalr1.cc | 10 +++++-----
data/lalr1.java | 22 ++++++++++++++--------
3 files changed, 26 insertions(+), 16 deletions(-)
diff --git a/data/glr.c b/data/glr.c
index 5069f61..39d12a0 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 9703e44..d3d063a 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 d137ed8..bd32fa7 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;
}
--
1.8.4.2
- [PATCH 0/5] {maint} fix variants when YYERROR is used, Akim Demaille, 2013/11/15
- [PATCH 3/5] tests: check $$'s destruction with variant, YYERROR, and no error recovery, Akim Demaille, 2013/11/15
- [PATCH 4/5] lalr1.cc: fix the support of YYERROR with variants, Akim Demaille, 2013/11/15
- [PATCH 1/5] skeletons: use better names when computing a "goto",
Akim Demaille <=
- [PATCH 5/5] lalr1.cc: formatting changes, Akim Demaille, 2013/11/15
- [PATCH 2/5] tests: simplify useless obfuscation, Akim Demaille, 2013/11/15