diff options
author | Akim Demaille <akim@lrde.epita.fr> | 2013-11-14 16:14:39 +0100 |
---|---|---|
committer | Akim Demaille <akim@lrde.epita.fr> | 2013-11-14 16:26:16 +0100 |
commit | edb2e90531197dfd3250bd3ca2e5993376002182 (patch) | |
tree | 7b3d584d16b340029491bdb9a29f5de6304da759 /data | |
parent | 6d94eebba7bdc817f8534ff0b9541e509e004ad1 (diff) | |
download | bison-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.
Diffstat (limited to 'data')
-rw-r--r-- | data/glr.c | 10 | ||||
-rw-r--r-- | data/lalr1.cc | 10 | ||||
-rw-r--r-- | data/lalr1.java | 22 |
3 files changed, 26 insertions, 16 deletions
@@ -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; } |