[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
08-fyi-nlookaheads.patch
From: |
Akim Demaille |
Subject: |
08-fyi-nlookaheads.patch |
Date: |
Mon, 17 Dec 2001 18:21:11 +0100 |
Index: ChangeLog
from Akim Demaille <address@hidden>
* src/state.h (state_t): Rename lookaheads as lookaheadsp.
nlookaheads is a new member.
Adjust all users.
* src/lalr.h (nlookaheads): Remove this orphan declaration.
* src/lalr.c (initialize_lookaheads): Set nlookaheads for each
state.
Index: src/conflicts.c
--- src/conflicts.c Sun, 16 Dec 2001 17:16:27 +0100 akim
+++ src/conflicts.c Sun, 16 Dec 2001 18:15:40 +0100 akim
@@ -172,8 +172,8 @@
/* Loop over all rules which require lookahead in this state. First
check for shift-reduce conflict, and try to resolve using
precedence */
- for (i = state_table[state]->lookaheads;
- i < state_table[state + 1]->lookaheads;
+ for (i = state_table[state]->lookaheadsp;
+ i < state_table[state + 1]->lookaheadsp;
++i)
if (rule_table[LAruleno[i]].prec)
for (j = 0; j < tokensetsize; ++j)
@@ -186,8 +186,8 @@
/* Loop over all rules which require lookahead in this state. Check
for conflicts not resolved above. */
- for (i = state_table[state]->lookaheads;
- i < state_table[state + 1]->lookaheads;
+ for (i = state_table[state]->lookaheadsp;
+ i < state_table[state + 1]->lookaheadsp;
++i)
{
for (j = 0; j < tokensetsize; ++j)
@@ -237,8 +237,8 @@
if (!SHIFT_IS_DISABLED (shiftp, i))
SETBIT (shiftset, SHIFT_SYMBOL (shiftp, i));
- for (i = state_table[state]->lookaheads;
- i < state_table[state + 1]->lookaheads;
+ for (i = state_table[state]->lookaheadsp;
+ i < state_table[state + 1]->lookaheadsp;
++i)
for (k = 0; k < tokensetsize; ++k)
lookaheadset[k] |= LA (i)[k];
@@ -264,8 +264,8 @@
int i;
int rrc_count = 0;
- int m = state_table[state]->lookaheads;
- int n = state_table[state + 1]->lookaheads;
+ int m = state_table[state]->lookaheadsp;
+ int n = state_table[state + 1]->lookaheadsp;
if (n - m < 2)
return 0;
@@ -414,8 +414,8 @@
{
int i;
int j;
- int m = state_table[state]->lookaheads;
- int n = state_table[state + 1]->lookaheads;
+ int m = state_table[state]->lookaheadsp;
+ int n = state_table[state + 1]->lookaheadsp;
shifts *shiftp = state_table[state]->shifts;
errs *errp = state_table[state]->errs;
int nodefault = 0;
Index: src/lalr.c
--- src/lalr.c Sun, 09 Dec 2001 11:48:23 +0100 akim
+++ src/lalr.c Sun, 16 Dec 2001 18:25:34 +0100 akim
@@ -140,7 +140,7 @@
short *np;
reductions *rp;
- size_t nLA = state_table[nstates]->lookaheads;
+ size_t nLA = state_table[nstates]->lookaheadsp;
if (!nLA)
nLA = 1;
@@ -314,8 +314,8 @@
int found;
shorts *sp;
- i = state_table[stateno]->lookaheads;
- k = state_table[stateno + 1]->lookaheads;
+ i = state_table[stateno]->lookaheadsp;
+ k = state_table[stateno + 1]->lookaheadsp;
found = 0;
while (!found && i < k)
{
@@ -516,7 +516,7 @@
int i;
shorts *sp;
- for (i = 0; i < state_table[nstates]->lookaheads; i++)
+ for (i = 0; i < state_table[nstates]->lookaheadsp; i++)
for (sp = lookback[i]; sp; sp = sp->next)
{
int size = LA (i + 1) - LA (i);
@@ -526,7 +526,7 @@
}
/* Free LOOKBACK. */
- for (i = 0; i < state_table[nstates]->lookaheads; i++)
+ for (i = 0; i < state_table[nstates]->lookaheadsp; i++)
LIST_FREE (shorts, lookback[i]);
XFREE (lookback);
@@ -546,14 +546,13 @@
for (i = 0; i < nstates; i++)
{
int k;
+ int nlookaheads = 0;
reductions *rp = state_table[i]->reductions;
shifts *sp = state_table[i]->shifts;
- state_table[i]->lookaheads = count;
-
if (rp
&& (rp->nreds > 1 || (sp->nshifts && SHIFT_IS_SHIFT (sp, 0))))
- count += rp->nreds;
+ nlookaheads += rp->nreds;
else
state_table[i]->consistent = 1;
@@ -563,11 +562,15 @@
state_table[i]->consistent = 0;
break;
}
+
+ state_table[i]->nlookaheads = nlookaheads;
+ state_table[i]->lookaheadsp = count;
+ count += nlookaheads;
}
/* Seems to be needed by conflicts.c. */
state_table[nstates] = STATE_ALLOC (0);
- state_table[nstates]->lookaheads = count;
+ state_table[nstates]->lookaheadsp = count;
}
void
Index: src/lalr.h
--- src/lalr.h Sat, 08 Dec 2001 13:33:23 +0100 akim
+++ src/lalr.h Sun, 16 Dec 2001 18:21:26 +0100 akim
@@ -74,6 +74,4 @@
extern int tokensetsize;
-/* The number of lookaheads. */
-extern size_t nlookaheads;
#endif /* !LALR_H_ */
Index: src/output.c
--- src/output.c Sun, 16 Dec 2001 16:51:00 +0100 akim
+++ src/output.c Sun, 16 Dec 2001 18:16:00 +0100 akim
@@ -327,8 +327,8 @@
int j;
/* loop over all the rules available here which require
lookahead */
- m = state_table[state]->lookaheads;
- n = state_table[state + 1]->lookaheads;
+ m = state_table[state]->lookaheadsp;
+ n = state_table[state + 1]->lookaheadsp;
for (i = n - 1; i >= m; i--)
/* and find each token which the rule finds acceptable
Index: src/state.h
--- src/state.h Sat, 08 Dec 2001 22:32:43 +0100 akim
+++ src/state.h Sun, 16 Dec 2001 18:19:25 +0100 akim
@@ -189,7 +189,9 @@
char consistent;
/* Used in LALR, not LR(0). */
- short lookaheads;
+ /* Pseudo pointer into LA. */
+ short lookaheadsp;
+ int nlookaheads;
/* Its items. */
short nitems;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- 08-fyi-nlookaheads.patch,
Akim Demaille <=