mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
* src/LR0.c (new_itemsets): Use nshifts only, not shiftcount.
* src/closure.c, src/closure.h (itemsetsize): Rename as... (nitemset): for consistency with the rest of the project.
This commit is contained in:
@@ -1,3 +1,10 @@
|
||||
2001-12-05 Akim Demaille <akim@epita.fr>
|
||||
|
||||
* src/LR0.c (new_itemsets): Use nshifts only, not shiftcount.
|
||||
* src/closure.c, src/closure.h (itemsetsize): Rename as...
|
||||
(nitemset): for consistency with the rest of the project.
|
||||
|
||||
|
||||
2001-12-05 Akim Demaille <akim@epita.fr>
|
||||
|
||||
* src/closure.c (print_closure): Improve.
|
||||
|
||||
13
src/LR0.c
13
src/LR0.c
@@ -141,7 +141,6 @@ static void
|
||||
new_itemsets (void)
|
||||
{
|
||||
int i;
|
||||
int shiftcount;
|
||||
|
||||
if (trace_flag)
|
||||
fprintf (stderr, "Entering new_itemsets, state = %d\n",
|
||||
@@ -151,25 +150,23 @@ new_itemsets (void)
|
||||
kernel_size[i] = 0;
|
||||
|
||||
shift_symbol = XCALLOC (short, nsyms);
|
||||
shiftcount = 0;
|
||||
nshifts = 0;
|
||||
|
||||
for (i = 0; i < itemsetsize; ++i)
|
||||
for (i = 0; i < nitemset; ++i)
|
||||
{
|
||||
int symbol = ritem[itemset[i]];
|
||||
if (symbol > 0)
|
||||
{
|
||||
if (!kernel_size[symbol])
|
||||
{
|
||||
shift_symbol[shiftcount] = symbol;
|
||||
shiftcount++;
|
||||
shift_symbol[nshifts] = symbol;
|
||||
nshifts++;
|
||||
}
|
||||
|
||||
kernel_base[symbol][kernel_size[symbol]] = itemset[i] + 1;
|
||||
kernel_size[symbol]++;
|
||||
}
|
||||
}
|
||||
|
||||
nshifts = shiftcount;
|
||||
}
|
||||
|
||||
|
||||
@@ -542,7 +539,7 @@ save_reductions (void)
|
||||
/* Find and count the active items that represent ends of rules. */
|
||||
|
||||
count = 0;
|
||||
for (i = 0; i < itemsetsize; ++i)
|
||||
for (i = 0; i < nitemset; ++i)
|
||||
{
|
||||
int item = ritem[itemset[i]];
|
||||
if (item < 0)
|
||||
|
||||
@@ -26,9 +26,9 @@
|
||||
#include "derives.h"
|
||||
#include "warshall.h"
|
||||
|
||||
/* ITEMSETSIZE is the size of the array ITEMSET. */
|
||||
/* NITEMSET is the size of the array ITEMSET. */
|
||||
short *itemset;
|
||||
int itemsetsize;
|
||||
int nitemset;
|
||||
|
||||
static unsigned *ruleset;
|
||||
|
||||
@@ -218,7 +218,7 @@ closure (short *core, int n)
|
||||
ruleset[r] |= FDERIVES (ritem[core[c]])[r];
|
||||
}
|
||||
|
||||
itemsetsize = 0;
|
||||
nitemset = 0;
|
||||
c = 0;
|
||||
for (ruleno = 0; ruleno < rulesetsize * BITS_PER_WORD; ++ruleno)
|
||||
if (BITISSET (ruleset, ruleno))
|
||||
@@ -226,23 +226,23 @@ closure (short *core, int n)
|
||||
int itemno = rule_table[ruleno].rhs;
|
||||
while (c < n && core[c] < itemno)
|
||||
{
|
||||
itemset[itemsetsize] = core[c];
|
||||
itemsetsize++;
|
||||
itemset[nitemset] = core[c];
|
||||
nitemset++;
|
||||
c++;
|
||||
}
|
||||
itemset[itemsetsize] = itemno;
|
||||
itemsetsize++;
|
||||
itemset[nitemset] = itemno;
|
||||
nitemset++;
|
||||
}
|
||||
|
||||
while (c < n)
|
||||
{
|
||||
itemset[itemsetsize] = core[c];
|
||||
itemsetsize++;
|
||||
itemset[nitemset] = core[c];
|
||||
nitemset++;
|
||||
c++;
|
||||
}
|
||||
|
||||
if (trace_flag)
|
||||
print_closure ("output", itemset, itemsetsize);
|
||||
print_closure ("output", itemset, nitemset);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -30,18 +30,19 @@
|
||||
void new_closure PARAMS ((int n));
|
||||
|
||||
|
||||
/* Given a vector of item numbers ITEMS, of length N, set up ruleset
|
||||
and itemset to indicate what rules could be run and which items
|
||||
could be accepted when those items are the active ones.
|
||||
/* Given the kernel (aka core) of a state (a vector of item numbers
|
||||
ITEMS, of length N), set up ruleset and itemset to indicate what
|
||||
rules could be run and which items could be accepted when those
|
||||
items are the active ones.
|
||||
|
||||
ruleset contains a bit for each rule. closure sets the bits for
|
||||
all rules which could potentially describe the next input to be
|
||||
read.
|
||||
|
||||
itemset is a vector of item numbers; itemsetend points to just
|
||||
beyond the end of the part of it that is significant. closure
|
||||
places there the indices of all items which represent units of
|
||||
input that could arrive next. */
|
||||
ITEMSET is a vector of item numbers; NITEMSET is its size
|
||||
9actually, points to just beyond the end of the part of it that is
|
||||
significant). closure places there the indices of all items which
|
||||
represent units of input that could arrive next. */
|
||||
|
||||
void closure PARAMS ((short *items, int n));
|
||||
|
||||
@@ -51,6 +52,6 @@ void closure PARAMS ((short *items, int n));
|
||||
void free_closure PARAMS ((void));
|
||||
|
||||
extern short *itemset;
|
||||
extern int itemsetsize;
|
||||
extern int nitemset;
|
||||
|
||||
#endif /* !CLOSURE_H_ */
|
||||
|
||||
Reference in New Issue
Block a user