From b7691f15bdefaabbc246ea9b1855189a8d1cc318 Mon Sep 17 00:00:00 2001 From: "Joel E. Denny" Date: Thu, 12 Jan 2006 01:43:03 +0000 Subject: [PATCH] * data/glr.c (yyGLRStateSet): Rename yylookaheadStatuses to yylookaheadNeeds. All uses updated. (yysplitStack): Rename local yynewLookaheadStatuses to yynewLookaheadNeeds. * data/glr-regression.at (Incorrect lookahead during nondeterministic GLR): In comments, change `lookahead status' to `lookahead need'. --- ChangeLog | 9 +++++++++ data/glr.c | 42 ++++++++++++++++++++--------------------- tests/glr-regression.at | 13 ++++++------- 3 files changed, 36 insertions(+), 28 deletions(-) diff --git a/ChangeLog b/ChangeLog index 31c96a8c..f4f413ef 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2006-01-12 Joel E. Denny + + * data/glr.c (yyGLRStateSet): Rename yylookaheadStatuses to + yylookaheadNeeds. All uses updated. + (yysplitStack): Rename local yynewLookaheadStatuses to + yynewLookaheadNeeds. + * data/glr-regression.at (Incorrect lookahead during nondeterministic + GLR): In comments, change `lookahead status' to `lookahead need'. + 2006-01-11 Paul Hilfinger * data/glr.c (yysplitStack): A little stylistic rewrite. diff --git a/data/glr.c b/data/glr.c index 88103770..44822a96 100644 --- a/data/glr.c +++ b/data/glr.c @@ -761,11 +761,11 @@ struct yyGLRState { struct yyGLRStateSet { yyGLRState** yystates; - /** During nondeterministic operation, yylookaheadStatuses tracks which + /** During nondeterministic operation, yylookaheadNeeds tracks which * stacks have actually needed the current lookahead. During deterministic - * operation, yylookaheadStatuses[0] is not maintained since it would merely + * operation, yylookaheadNeeds[0] is not maintained since it would merely * duplicate yychar != YYEMPTY. */ - yybool* yylookaheadStatuses; + yybool* yylookaheadNeeds; size_t yysize, yycapacity; }; @@ -1113,7 +1113,7 @@ yyaddDeferredAction (yyGLRStack* yystackp, size_t yyk, yyGLRState* yystate, &yynewGLRStackItem (yystackp, yyfalse)->yyoption; yynewOption->yystate = rhs; yynewOption->yyrule = yyrule; - if (yystackp->yytops.yylookaheadStatuses[yyk]) + if (yystackp->yytops.yylookaheadNeeds[yyk]) { yynewOption->yyrawchar = yychar; yynewOption->yyval = yylval; @@ -1139,9 +1139,9 @@ yyinitStateSet (yyGLRStateSet* yyset) if (! yyset->yystates) return yyfalse; yyset->yystates[0] = NULL; - yyset->yylookaheadStatuses = - (yybool*) YYMALLOC (16 * sizeof yyset->yylookaheadStatuses[0]); - if (! yyset->yylookaheadStatuses) + yyset->yylookaheadNeeds = + (yybool*) YYMALLOC (16 * sizeof yyset->yylookaheadNeeds[0]); + if (! yyset->yylookaheadNeeds) { YYFREE (yyset->yystates); return yyfalse; @@ -1152,7 +1152,7 @@ yyinitStateSet (yyGLRStateSet* yyset) static void yyfreeStateSet (yyGLRStateSet* yyset) { YYFREE (yyset->yystates); - YYFREE (yyset->yylookaheadStatuses); + YYFREE (yyset->yylookaheadNeeds); } /** Initialize STACK to a single empty stack, with total maximum @@ -1300,12 +1300,12 @@ yyremoveDeletes (yyGLRStack* yystackp) { yystackp->yytops.yystates[yyj] = yystackp->yytops.yystates[yyi]; /* In the current implementation, it's unnecessary to copy - yystackp->yytops.yylookaheadStatuses[yyi] since, after + yystackp->yytops.yylookaheadNeeds[yyi] since, after yyremoveDeletes returns, the parser immediately either enters deterministic operation or shifts a token. However, it doesn't hurt, and the code might evolve to need it. */ - yystackp->yytops.yylookaheadStatuses[yyj] = - yystackp->yytops.yylookaheadStatuses[yyi]; + yystackp->yytops.yylookaheadNeeds[yyj] = + yystackp->yytops.yylookaheadNeeds[yyi]; if (yyj != yyi) { YYDPRINTF ((stderr, "Rename stack %lu -> %lu.\n", @@ -1533,7 +1533,7 @@ yysplitStack (yyGLRStack* yystackp, size_t yyk) if (yystackp->yytops.yysize >= yystackp->yytops.yycapacity) { yyGLRState** yynewStates; - yybool* yynewLookaheadStatuses; + yybool* yynewLookaheadNeeds; yynewStates = NULL; @@ -1550,18 +1550,18 @@ yysplitStack (yyGLRStack* yystackp, size_t yyk) yyMemoryExhausted (yystackp); yystackp->yytops.yystates = yynewStates; - yynewLookaheadStatuses = - (yybool*) YYREALLOC (yystackp->yytops.yylookaheadStatuses, + yynewLookaheadNeeds = + (yybool*) YYREALLOC (yystackp->yytops.yylookaheadNeeds, (yystackp->yytops.yycapacity - * sizeof yynewLookaheadStatuses[0])); - if (yynewLookaheadStatuses == NULL) + * sizeof yynewLookaheadNeeds[0])); + if (yynewLookaheadNeeds == NULL) yyMemoryExhausted (yystackp); - yystackp->yytops.yylookaheadStatuses = yynewLookaheadStatuses; + yystackp->yytops.yylookaheadNeeds = yynewLookaheadNeeds; } yystackp->yytops.yystates[yystackp->yytops.yysize] = yystackp->yytops.yystates[yyk]; - yystackp->yytops.yylookaheadStatuses[yystackp->yytops.yysize] - = yystackp->yytops.yylookaheadStatuses[yyk]; + yystackp->yytops.yylookaheadNeeds[yystackp->yytops.yysize] + = yystackp->yytops.yylookaheadNeeds[yyk]; yystackp->yytops.yysize += 1; return yystackp->yytops.yysize-1; } @@ -1953,7 +1953,7 @@ yyprocessOneStack (yyGLRStack* yystackp, size_t yyk, } else { - yystackp->yytops.yylookaheadStatuses[yyk] = yytrue; + yystackp->yytops.yylookaheadNeeds[yyk] = yytrue; if (*yytokenp == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); @@ -2318,7 +2318,7 @@ b4_syncline([@oline@], [@ofile@])])dnl size_t yyn = yystack.yytops.yysize; for (yys = 0; yys < yyn; yys += 1) - yystackp->yytops.yylookaheadStatuses[yys] = yychar != YYEMPTY; + yystackp->yytops.yylookaheadNeeds[yys] = yychar != YYEMPTY; /* yyprocessOneStack returns one of three things: diff --git a/tests/glr-regression.at b/tests/glr-regression.at index c1252ea1..3e6d0351 100644 --- a/tests/glr-regression.at +++ b/tests/glr-regression.at @@ -1151,17 +1151,17 @@ AT_SETUP([Incorrect lookahead during nondeterministic GLR]) AT_DATA_GRAMMAR([glr-regr14.y], [[ /* Tests: - - Conflicting actions (split-off parse, which copies lookahead status, + - Conflicting actions (split-off parse, which copies lookahead need, which is necessarily yytrue) and nonconflicting actions (non-split-off parse) for nondefaulted state: yychar != YYEMPTY. - - Merged deferred actions (lookahead status and RHS from different stack + - Merged deferred actions (lookahead need and RHS from different stack than the target state) and nonmerged deferred actions (same stack). - Defaulted state after lookahead: yychar != YYEMPTY. - Defaulted state after shift: yychar == YYEMPTY. - - yychar != YYEMPTY but lookahead status is yyfalse (a previous stack has + - yychar != YYEMPTY but lookahead need is yyfalse (a previous stack has seen the lookahead but current stack has not). - Exceeding stack capacity (stack explosion), and thus reallocating - lookahead status array. + lookahead need array. Note that it does not seem possible to see the initial yychar value during nondeterministic operation since: - In order to preserve the initial yychar, only defaulted states may be @@ -1193,8 +1193,7 @@ start: } ; -/* When merging the 2 deferred actions, the lookahead statuses are - different. */ +/* When merging the 2 deferred actions, the lookahead needs are different. */ merge: nonconflict1 'a' 'b' nonconflict2 %dprec 1 { USE ($2); USE ($3); @@ -1232,7 +1231,7 @@ defstate_look: } ; -/* yychar != YYEMPTY but lookahead status is yyfalse. */ +/* yychar != YYEMPTY but lookahead need is yyfalse. */ defstate_shift: { print_look_ahead ("defstate_shift <- empty string"); -- 2.45.2