* data/skeletons/glr.c, data/skeletons/glr2.cc: Use yyval, as in the other skeletons. --- TODO | 8 +------- data/skeletons/glr.c | 46 +++++++++++++++++++++--------------------- data/skeletons/glr2.cc | 44 ++++++++++++++++++++-------------------- 3 files changed, 46 insertions(+), 52 deletions(-)
diff --git a/TODO b/TODO index db73ace8..f88a12d4 100644 --- a/TODO +++ b/TODO @@ -16,16 +16,10 @@ Discourage the use of YYDEBUG in C++ (see thread with Jot). Stop supporting Add value_type as a synonym for semantic_type. ** Asymmetries -In glr_state, we have yysval and yylloc. It should be yyval/yyloc (and -yylval/yylloc when referring to the lookahead). glr.c should -s/yysval/yyval/. - -Also +Why are yylval and yylloc treated differently? yystack.yyglrShift (create_state_set_index(0), 0, 0, yylval, &yylloc); -Why are yylval and yylloc treated differently? - ** yyerrok in Java And add tests in calc.at, to prepare work for D. diff --git a/data/skeletons/glr.c b/data/skeletons/glr.c index 29e7761a..78e255e1 100644 --- a/data/skeletons/glr.c +++ b/data/skeletons/glr.c @@ -124,7 +124,7 @@ m4_define([b4_rhs_data], # -------------------------------------------------- # Expansion of $$ or $<TYPE>$, for symbol SYMBOL-NUM. m4_define([b4_rhs_value], -[b4_symbol_value([b4_rhs_data([$1], [$2]).yysemantics.yysval], [$3], [$4])]) +[b4_symbol_value([b4_rhs_data([$1], [$2]).yysemantics.yyval], [$3], [$4])]) @@ -502,7 +502,7 @@ struct yyGLRState { /** Type tag: always true. */ yybool yyisState; - /** Type tag for yysemantics. If true, yysval applies, otherwise + /** Type tag for yysemantics. If true, yyval applies, otherwise * yyfirstVal applies. */ yybool yyresolved; /** Number of corresponding LALR(1) machine state. */ @@ -517,7 +517,7 @@ struct yyGLRState * yynext. */ yySemanticOption* yyfirstVal; /** Semantic value for this state. */ - YYSTYPE yysval; + YYSTYPE yyval; } yysemantics;]b4_locations_if([[ /** Source location for this state. */ YYLTYPE yyloc;]])[ @@ -796,9 +796,9 @@ yyfillin (yyGLRStackItem *yyvsp, int yylow0, int yylow1) #endif yyvsp[i].yystate.yyresolved = s->yyresolved; if (s->yyresolved) - yyvsp[i].yystate.yysemantics.yysval = s->yysemantics.yysval; + yyvsp[i].yystate.yysemantics.yyval = s->yysemantics.yyval; else - /* The effect of using yysval or yyloc (in an immediate rule) is + /* The effect of using yyval or yyloc (in an immediate rule) is * undefined. */ yyvsp[i].yystate.yysemantics.yyfirstVal = YY_NULLPTR;]b4_locations_if([[ yyvsp[i].yystate.yyloc = s->yyloc;]])[ @@ -904,7 +904,7 @@ yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp, if (yyrhslen == 0) *yyvalp = yyval_default; else - *yyvalp = yyvsp[YYFILL (1-yyrhslen)].yystate.yysemantics.yysval;]b4_locations_if([[ + *yyvalp = yyvsp[YYFILL (1-yyrhslen)].yystate.yysemantics.yyval;]b4_locations_if([[ /* Default location. */ YYLLOC_DEFAULT ((*yylocp), (yyvsp - yyrhslen), yyrhslen); yystackp->yyerror_range[1].yystate.yyloc = *yylocp; @@ -970,7 +970,7 @@ yydestroyGLRState (char const *yymsg, yyGLRState *yys]b4_user_formals[) { if (yys->yyresolved) yydestruct (yymsg, yy_accessing_symbol (yys->yylrState), - &yys->yysemantics.yysval]b4_locuser_args([&yys->yyloc])[); + &yys->yysemantics.yyval]b4_locuser_args([&yys->yyloc])[); else { #if ]b4_api_PREFIX[DEBUG @@ -1345,7 +1345,7 @@ yyglrShift (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yy_state_t yylrState, yynewState->yyposn = yyposn; yynewState->yyresolved = yytrue; yynewState->yypred = yystackp->yytops.yystates[yyk]; - yynewState->yysemantics.yysval = *yyvalp;]b4_locations_if([ + yynewState->yysemantics.yyval = *yyvalp;]b4_locations_if([ yynewState->yyloc = *yylocp;])[ yystackp->yytops.yystates[yyk] = yynewState; @@ -1403,7 +1403,7 @@ yy_reduce_print (yybool yynormal, yyGLRStackItem* yyvsp, YYPTRDIFF_T yyk, YY_FPRINTF ((stderr, " $%d = ", yyi + 1)); yy_symbol_print (stderr, yy_accessing_symbol (yyvsp[yyi - yynrhs + 1].yystate.yylrState), - &yyvsp[yyi - yynrhs + 1].yystate.yysemantics.yysval]b4_locations_if([, + &yyvsp[yyi - yynrhs + 1].yystate.yysemantics.yyval]b4_locations_if([, &]b4_rhs_location(yynrhs, yyi + 1))[]dnl b4_user_args[); if (!yyvsp[yyi - yynrhs + 1].yystate.yyresolved) @@ -1479,21 +1479,21 @@ yyglrReduce (yyGLRStack* yystackp, YYPTRDIFF_T yyk, yyRuleNum yyrule, if (yyforceEval || yystackp->yysplitPoint == YY_NULLPTR) { - YYSTYPE yysval;]b4_locations_if([[ + YYSTYPE yyval;]b4_locations_if([[ YYLTYPE yyloc;]])[ - YYRESULTTAG yyflag = yydoAction (yystackp, yyk, yyrule, &yysval]b4_locuser_args([&yyloc])[); + YYRESULTTAG yyflag = yydoAction (yystackp, yyk, yyrule, &yyval]b4_locuser_args([&yyloc])[); if (yyflag == yyerr && yystackp->yysplitPoint != YY_NULLPTR) YY_DPRINTF ((stderr, "Parse on stack %ld rejected by rule %d (line %d).\n", YY_CAST (long, yyk), yyrule - 1, yyrline[yyrule])); if (yyflag != yyok) return yyflag; - YY_SYMBOL_PRINT ("-> $$ =", yylhsNonterm (yyrule), &yysval, &yyloc); + YY_SYMBOL_PRINT ("-> $$ =", yylhsNonterm (yyrule), &yyval, &yyloc); yyglrShift (yystackp, yyk, yyLRgotoState (yystackp->yytops.yystates[yyk]->yylrState, yylhsNonterm (yyrule)), - yyposn, &yysval]b4_locations_if([, &yyloc])[); + yyposn, &yyval]b4_locations_if([, &yyloc])[); } else { @@ -1624,12 +1624,12 @@ yymergeOptionSets (yySemanticOption* yyy0, yySemanticOption* yyy1) else if (yys0->yyresolved) { yys1->yyresolved = yytrue; - yys1->yysemantics.yysval = yys0->yysemantics.yysval; + yys1->yysemantics.yyval = yys0->yysemantics.yyval; } else if (yys1->yyresolved) { yys0->yyresolved = yytrue; - yys0->yysemantics.yysval = yys1->yysemantics.yysval; + yys0->yysemantics.yyval = yys1->yysemantics.yyval; } else { @@ -1875,7 +1875,7 @@ yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp]b4_user_formals[) yySemanticOption* yybest = yyoptionList; yySemanticOption** yypp; yybool yymerge = yyfalse; - YYSTYPE yysval; + YYSTYPE yyval; YYRESULTTAG yyflag;]b4_locations_if([ YYLTYPE *yylocp = &yys->yyloc;])[ @@ -1919,33 +1919,33 @@ yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp]b4_user_formals[) { yySemanticOption* yyp; int yyprec = yydprec[yybest->yyrule]; - yyflag = yyresolveAction (yybest, yystackp, &yysval]b4_locuser_args[); + yyflag = yyresolveAction (yybest, yystackp, &yyval]b4_locuser_args[); if (yyflag == yyok) for (yyp = yybest->yynext; yyp != YY_NULLPTR; yyp = yyp->yynext) { if (yyprec == yydprec[yyp->yyrule]) { - YYSTYPE yysval_other;]b4_locations_if([ + YYSTYPE yyval_other;]b4_locations_if([ YYLTYPE yydummy;])[ - yyflag = yyresolveAction (yyp, yystackp, &yysval_other]b4_locuser_args([&yydummy])[); + yyflag = yyresolveAction (yyp, yystackp, &yyval_other]b4_locuser_args([&yydummy])[); if (yyflag != yyok) { yydestruct ("Cleanup: discarding incompletely merged value for", yy_accessing_symbol (yys->yylrState), - &yysval]b4_locuser_args[); + &yyval]b4_locuser_args[); break; } - yyuserMerge (yymerger[yyp->yyrule], &yysval, &yysval_other); + yyuserMerge (yymerger[yyp->yyrule], &yyval, &yyval_other); } } } else - yyflag = yyresolveAction (yybest, yystackp, &yysval]b4_locuser_args([yylocp])[); + yyflag = yyresolveAction (yybest, yystackp, &yyval]b4_locuser_args([yylocp])[); if (yyflag == yyok) { yys->yyresolved = yytrue; - yys->yysemantics.yysval = yysval; + yys->yysemantics.yyval = yyval; } else yys->yysemantics.yyfirstVal = YY_NULLPTR; diff --git a/data/skeletons/glr2.cc b/data/skeletons/glr2.cc index 2ab40800..a31ad36b 100644 --- a/data/skeletons/glr2.cc +++ b/data/skeletons/glr2.cc @@ -741,7 +741,7 @@ public: , yylrState (lrState) , yyposn (posn) , yypred (0) - , yysval (sval)]b4_locations_if([[ + , yyval (sval)]b4_locations_if([[ , yyloc (loc)]])[]b4_parse_assert_if([[ , magic_ (MAGIC)]])[ {} @@ -767,7 +767,7 @@ public: { setPred (other.pred ()); if (other.yyresolved) - new (&yysval) value_type (other.value ()); + new (&yyval) value_type (other.value ()); else setFirstVal (other.firstVal ());]b4_parse_assert_if([[ check_();]])[ @@ -778,7 +778,7 @@ public: check_ (); magic_ = 0;]])[ if (yyresolved) - yysval.~value_type (); + yyval.~value_type (); } glr_state& operator= (const glr_state& other) @@ -786,7 +786,7 @@ public: check_ (); other.check_ ();]])[ if (!yyresolved && other.yyresolved) - new (&yysval) value_type; + new (&yyval) value_type; yyresolved = other.yyresolved; yylrState = other.yylrState; yyposn = other.yyposn; @@ -799,7 +799,7 @@ public: return *this; } - /** Type tag for the semantic value. If true, yysval applies, otherwise + /** Type tag for the semantic value. If true, yyval applies, otherwise * yyfirstVal applies. */ bool yyresolved; /** Number of corresponding LALR(1) machine state. */ @@ -821,13 +821,13 @@ public: value_type& value () {]b4_parse_assert_if([[ check_ ();]])[ - return yysval; + return yyval; } const value_type& value () const {]b4_parse_assert_if([[ check_ ();]])[ - return yysval; + return yyval; } void @@ -888,7 +888,7 @@ private: * yyfirstVal. */ std::ptrdiff_t yyfirstVal; /** Semantic value for this state. */ - value_type yysval; + value_type yyval; };]b4_locations_if([[ // FIXME: Why public? public: @@ -1702,7 +1702,7 @@ public: if (s->yyresolved) new (&yys.value ()) value_type (s->value ()); else - /* The effect of using yysval or yyloc (in an immediate + /* The effect of using yyval or yyloc (in an immediate * rule) is undefined. */ yys.setFirstVal (YY_NULLPTR);]b4_locations_if([[ yys.yyloc = s->yyloc;]])[ @@ -2409,10 +2409,10 @@ public: if (yyforceEval || !yystateStack.isSplit()) { - value_type yysval;]b4_locations_if([[ + value_type val;]b4_locations_if([[ location_type loc;]])[ - YYRESULTTAG yyflag = yydoAction (yyk, yyrule, &yysval]b4_locations_if([, &loc])[); + YYRESULTTAG yyflag = yydoAction (yyk, yyrule, &val]b4_locations_if([, &loc])[); if (yyflag == yyerr && yystateStack.isSplit()) {]b4_parse_trace_if([[ YYCDEBUG << "Parse on stack " << yyk.get () @@ -2421,11 +2421,11 @@ public: ]])[} if (yyflag != yyok) return yyflag; - YY_SYMBOL_PRINT ("-> $$ =", static_cast<yysymbol_kind_t>(yyr1[yyrule]), &yysval, &loc); + YY_SYMBOL_PRINT ("-> $$ =", static_cast<yysymbol_kind_t>(yyr1[yyrule]), &val, &loc); yyglrShift (yyk, yyLRgotoState (topState(yyk)->yylrState, yylhsNonterm (yyrule)), - yyposn, yysval]b4_locations_if([, loc])[); + yyposn, val]b4_locations_if([, loc])[); } else { @@ -2582,7 +2582,7 @@ private: semantic_option* yybest = yys.firstVal(); YYASSERT(yybest != YY_NULLPTR); bool yymerge = false; - value_type yysval; + value_type val; YYRESULTTAG yyflag;]b4_locations_if([ location_type *yylocp = &yys.yyloc;])[ @@ -2627,7 +2627,7 @@ private: if (yymerge) { int yyprec = yydprec[yybest->yyrule]; - yyflag = yyresolveAction (*yybest, &yysval]b4_locations_if([, yylocp])[); + yyflag = yyresolveAction (*yybest, &val]b4_locations_if([, yylocp])[); if (yyflag == yyok) for (semantic_option* yyp = yybest->next(); yyp != YY_NULLPTR; @@ -2635,28 +2635,28 @@ private: { if (yyprec == yydprec[yyp->yyrule]) { - value_type yysval_other;]b4_locations_if([ + value_type yyval_other;]b4_locations_if([ location_type yydummy;])[ - yyflag = yyresolveAction (*yyp, &yysval_other]b4_locations_if([, &yydummy])[); + yyflag = yyresolveAction (*yyp, &yyval_other]b4_locations_if([, &yydummy])[); if (yyflag != yyok) { yyparser.yy_destroy_ ("Cleanup: discarding incompletely merged value for", - yy_accessing_symbol(yys.yylrState), - &yysval]b4_locations_if([, yylocp])[); + yy_accessing_symbol(yys.yylrState), + &yyval]b4_locations_if([, yylocp])[); break; } - yyuserMerge (yymerger[yyp->yyrule], &yysval, &yysval_other); + yyuserMerge (yymerger[yyp->yyrule], &val, &yyval_other); } } } else - yyflag = yyresolveAction (*yybest, &yysval]b4_locations_if([, yylocp])[); + yyflag = yyresolveAction (*yybest, &val]b4_locations_if([, yylocp])[); if (yyflag == yyok) { yys.yyresolved = true; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - new (&yys.value ()) value_type (yysval); + new (&yys.value ()) value_type (val); YY_IGNORE_MAYBE_UNINITIALIZED_END } else -- 2.29.2