[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: incorrect yychar for unambiguous GLR
From: |
Joel E. Denny |
Subject: |
Re: incorrect yychar for unambiguous GLR |
Date: |
Wed, 11 Jan 2006 20:47:35 -0500 (EST) |
On Wed, 11 Jan 2006, Joel E. Denny wrote:
> On Wed, 11 Jan 2006, Paul Hilfinger wrote:
>
> > > I agree about yylookaheadStatuses. However, yylookaheadAvailable sounds
> > > like it means yychar != YYEMPTY. The polarity of yylookaheadUnused is
> > > confusing, and it sounds like it might indicate whether the lookahead has
> > > been shifted. How about yylookaheadNeeds, which follows from my comments
> > > above its declaration and maintains the plural? I'm open to other
> > > suggestions of course.
> >
> > That one's fine.
>
> OK, I'll rename it.
I installed this.
Joel
2006-01-12 Joel E. Denny <address@hidden>
* 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'.
Index: data/glr.c
===================================================================
RCS file: /sources/bison/bison/data/glr.c,v
retrieving revision 1.158
diff -p -u -r1.158 glr.c
--- data/glr.c 12 Jan 2006 00:16:35 -0000 1.158
+++ data/glr.c 12 Jan 2006 01:20:07 -0000
@@ -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* yystack
&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
if (yystackp->yytops.yysize >= yystackp->yytops.yycapacity)
{
yyGLRState** yynewStates;
- yybool* yynewLookaheadStatuses;
+ yybool* yynewLookaheadNeeds;
yynewStates = NULL;
@@ -1550,18 +1550,18 @@ yysplitStack (yyGLRStack* yystackp, size
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,
}
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(address@hidden@], address@hidden@])])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:
Index: tests/glr-regression.at
===================================================================
RCS file: /sources/bison/bison/tests/glr-regression.at,v
retrieving revision 1.26
diff -p -u -r1.26 glr-regression.at
--- tests/glr-regression.at 8 Jan 2006 23:16:51 -0000 1.26
+++ tests/glr-regression.at 12 Jan 2006 01:20:07 -0000
@@ -1151,17 +1151,17 @@ AT_SETUP([Incorrect lookahead during non
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");
- Re: incorrect yychar for unambiguous GLR, (continued)
- Re: incorrect yychar for unambiguous GLR, Paul Hilfinger, 2006/01/11
- Re: incorrect yychar for unambiguous GLR, Joel E. Denny, 2006/01/10
- Re: incorrect yychar for unambiguous GLR, Paul Eggert, 2006/01/11
- Re: incorrect yychar for unambiguous GLR, Joel E. Denny, 2006/01/11
- Re: incorrect yychar for unambiguous GLR, Joel E. Denny, 2006/01/30
- Re: incorrect yychar for unambiguous GLR, Paul Eggert, 2006/01/30
- Re: incorrect yychar for unambiguous GLR, Joel E. Denny, 2006/01/30
- Re: incorrect yychar for unambiguous GLR, Paul Hilfinger, 2006/01/11
- Re: incorrect yychar for unambiguous GLR, Joel E. Denny, 2006/01/11
- Re: incorrect yychar for unambiguous GLR,
Joel E. Denny <=
- Re: incorrect yychar for unambiguous GLR, Joel E. Denny, 2006/01/11
- Re: incorrect yychar for unambiguous GLR, Joel E. Denny, 2006/01/30
- Re: incorrect yychar for unambiguous GLR, Paul Eggert, 2006/01/30
- Re: incorrect yychar for unambiguous GLR, Joel E. Denny, 2006/01/30
- Re: incorrect yychar for unambiguous GLR, Paul Eggert, 2006/01/31