mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-20 17:53:02 +00:00
* 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.
This commit is contained in:
10
ChangeLog
10
ChangeLog
@@ -1,3 +1,13 @@
|
|||||||
|
2001-12-17 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
|
* 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.
|
||||||
|
|
||||||
|
|
||||||
2001-12-17 Akim Demaille <akim@epita.fr>
|
2001-12-17 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
* src/files.h, src/files.c (open_files, close_files): Remove.
|
* src/files.h, src/files.c (open_files, close_files): Remove.
|
||||||
|
|||||||
@@ -172,8 +172,8 @@ set_conflicts (int state)
|
|||||||
/* Loop over all rules which require lookahead in this state. First
|
/* Loop over all rules which require lookahead in this state. First
|
||||||
check for shift-reduce conflict, and try to resolve using
|
check for shift-reduce conflict, and try to resolve using
|
||||||
precedence */
|
precedence */
|
||||||
for (i = state_table[state]->lookaheads;
|
for (i = state_table[state]->lookaheadsp;
|
||||||
i < state_table[state + 1]->lookaheads;
|
i < state_table[state + 1]->lookaheadsp;
|
||||||
++i)
|
++i)
|
||||||
if (rule_table[LAruleno[i]].prec)
|
if (rule_table[LAruleno[i]].prec)
|
||||||
for (j = 0; j < tokensetsize; ++j)
|
for (j = 0; j < tokensetsize; ++j)
|
||||||
@@ -186,8 +186,8 @@ set_conflicts (int state)
|
|||||||
|
|
||||||
/* Loop over all rules which require lookahead in this state. Check
|
/* Loop over all rules which require lookahead in this state. Check
|
||||||
for conflicts not resolved above. */
|
for conflicts not resolved above. */
|
||||||
for (i = state_table[state]->lookaheads;
|
for (i = state_table[state]->lookaheadsp;
|
||||||
i < state_table[state + 1]->lookaheads;
|
i < state_table[state + 1]->lookaheadsp;
|
||||||
++i)
|
++i)
|
||||||
{
|
{
|
||||||
for (j = 0; j < tokensetsize; ++j)
|
for (j = 0; j < tokensetsize; ++j)
|
||||||
@@ -237,8 +237,8 @@ count_sr_conflicts (int state)
|
|||||||
if (!SHIFT_IS_DISABLED (shiftp, i))
|
if (!SHIFT_IS_DISABLED (shiftp, i))
|
||||||
SETBIT (shiftset, SHIFT_SYMBOL (shiftp, i));
|
SETBIT (shiftset, SHIFT_SYMBOL (shiftp, i));
|
||||||
|
|
||||||
for (i = state_table[state]->lookaheads;
|
for (i = state_table[state]->lookaheadsp;
|
||||||
i < state_table[state + 1]->lookaheads;
|
i < state_table[state + 1]->lookaheadsp;
|
||||||
++i)
|
++i)
|
||||||
for (k = 0; k < tokensetsize; ++k)
|
for (k = 0; k < tokensetsize; ++k)
|
||||||
lookaheadset[k] |= LA (i)[k];
|
lookaheadset[k] |= LA (i)[k];
|
||||||
@@ -264,8 +264,8 @@ count_rr_conflicts (int state)
|
|||||||
int i;
|
int i;
|
||||||
int rrc_count = 0;
|
int rrc_count = 0;
|
||||||
|
|
||||||
int m = state_table[state]->lookaheads;
|
int m = state_table[state]->lookaheadsp;
|
||||||
int n = state_table[state + 1]->lookaheads;
|
int n = state_table[state + 1]->lookaheadsp;
|
||||||
|
|
||||||
if (n - m < 2)
|
if (n - m < 2)
|
||||||
return 0;
|
return 0;
|
||||||
@@ -414,8 +414,8 @@ print_reductions (FILE *out, int state)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int j;
|
int j;
|
||||||
int m = state_table[state]->lookaheads;
|
int m = state_table[state]->lookaheadsp;
|
||||||
int n = state_table[state + 1]->lookaheads;
|
int n = state_table[state + 1]->lookaheadsp;
|
||||||
shifts *shiftp = state_table[state]->shifts;
|
shifts *shiftp = state_table[state]->shifts;
|
||||||
errs *errp = state_table[state]->errs;
|
errs *errp = state_table[state]->errs;
|
||||||
int nodefault = 0;
|
int nodefault = 0;
|
||||||
|
|||||||
21
src/lalr.c
21
src/lalr.c
@@ -140,7 +140,7 @@ initialize_LA (void)
|
|||||||
short *np;
|
short *np;
|
||||||
reductions *rp;
|
reductions *rp;
|
||||||
|
|
||||||
size_t nLA = state_table[nstates]->lookaheads;
|
size_t nLA = state_table[nstates]->lookaheadsp;
|
||||||
if (!nLA)
|
if (!nLA)
|
||||||
nLA = 1;
|
nLA = 1;
|
||||||
|
|
||||||
@@ -314,8 +314,8 @@ add_lookback_edge (int stateno, int ruleno, int gotono)
|
|||||||
int found;
|
int found;
|
||||||
shorts *sp;
|
shorts *sp;
|
||||||
|
|
||||||
i = state_table[stateno]->lookaheads;
|
i = state_table[stateno]->lookaheadsp;
|
||||||
k = state_table[stateno + 1]->lookaheads;
|
k = state_table[stateno + 1]->lookaheadsp;
|
||||||
found = 0;
|
found = 0;
|
||||||
while (!found && i < k)
|
while (!found && i < k)
|
||||||
{
|
{
|
||||||
@@ -516,7 +516,7 @@ compute_lookaheads (void)
|
|||||||
int i;
|
int i;
|
||||||
shorts *sp;
|
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)
|
for (sp = lookback[i]; sp; sp = sp->next)
|
||||||
{
|
{
|
||||||
int size = LA (i + 1) - LA (i);
|
int size = LA (i + 1) - LA (i);
|
||||||
@@ -526,7 +526,7 @@ compute_lookaheads (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Free LOOKBACK. */
|
/* 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]);
|
LIST_FREE (shorts, lookback[i]);
|
||||||
|
|
||||||
XFREE (lookback);
|
XFREE (lookback);
|
||||||
@@ -546,14 +546,13 @@ initialize_lookaheads (void)
|
|||||||
for (i = 0; i < nstates; i++)
|
for (i = 0; i < nstates; i++)
|
||||||
{
|
{
|
||||||
int k;
|
int k;
|
||||||
|
int nlookaheads = 0;
|
||||||
reductions *rp = state_table[i]->reductions;
|
reductions *rp = state_table[i]->reductions;
|
||||||
shifts *sp = state_table[i]->shifts;
|
shifts *sp = state_table[i]->shifts;
|
||||||
|
|
||||||
state_table[i]->lookaheads = count;
|
|
||||||
|
|
||||||
if (rp
|
if (rp
|
||||||
&& (rp->nreds > 1 || (sp->nshifts && SHIFT_IS_SHIFT (sp, 0))))
|
&& (rp->nreds > 1 || (sp->nshifts && SHIFT_IS_SHIFT (sp, 0))))
|
||||||
count += rp->nreds;
|
nlookaheads += rp->nreds;
|
||||||
else
|
else
|
||||||
state_table[i]->consistent = 1;
|
state_table[i]->consistent = 1;
|
||||||
|
|
||||||
@@ -563,11 +562,15 @@ initialize_lookaheads (void)
|
|||||||
state_table[i]->consistent = 0;
|
state_table[i]->consistent = 0;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
state_table[i]->nlookaheads = nlookaheads;
|
||||||
|
state_table[i]->lookaheadsp = count;
|
||||||
|
count += nlookaheads;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Seems to be needed by conflicts.c. */
|
/* Seems to be needed by conflicts.c. */
|
||||||
state_table[nstates] = STATE_ALLOC (0);
|
state_table[nstates] = STATE_ALLOC (0);
|
||||||
state_table[nstates]->lookaheads = count;
|
state_table[nstates]->lookaheadsp = count;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -74,6 +74,4 @@ extern state_t **state_table;
|
|||||||
|
|
||||||
extern int tokensetsize;
|
extern int tokensetsize;
|
||||||
|
|
||||||
/* The number of lookaheads. */
|
|
||||||
extern size_t nlookaheads;
|
|
||||||
#endif /* !LALR_H_ */
|
#endif /* !LALR_H_ */
|
||||||
|
|||||||
@@ -344,8 +344,8 @@ action_row (int state)
|
|||||||
int j;
|
int j;
|
||||||
/* loop over all the rules available here which require
|
/* loop over all the rules available here which require
|
||||||
lookahead */
|
lookahead */
|
||||||
m = state_table[state]->lookaheads;
|
m = state_table[state]->lookaheadsp;
|
||||||
n = state_table[state + 1]->lookaheads;
|
n = state_table[state + 1]->lookaheadsp;
|
||||||
|
|
||||||
for (i = n - 1; i >= m; i--)
|
for (i = n - 1; i >= m; i--)
|
||||||
/* and find each token which the rule finds acceptable
|
/* and find each token which the rule finds acceptable
|
||||||
|
|||||||
@@ -189,7 +189,9 @@ typedef struct state_s
|
|||||||
char consistent;
|
char consistent;
|
||||||
|
|
||||||
/* Used in LALR, not LR(0). */
|
/* Used in LALR, not LR(0). */
|
||||||
short lookaheads;
|
/* Pseudo pointer into LA. */
|
||||||
|
short lookaheadsp;
|
||||||
|
int nlookaheads;
|
||||||
|
|
||||||
/* Its items. */
|
/* Its items. */
|
||||||
short nitems;
|
short nitems;
|
||||||
|
|||||||
Reference in New Issue
Block a user