* src/closure.c (itemsetend): Remove, replaced with...

(itemsetsize): new.
This commit is contained in:
Akim Demaille
2001-11-19 10:39:07 +00:00
parent 125ecb5684
commit fb9087861f
4 changed files with 25 additions and 22 deletions

View File

@@ -1,3 +1,9 @@
2001-11-19 Akim Demaille <akim@epita.fr>
* src/closure.c (itemsetend): Remove, replaced with...
(itemsetsize): new.
2001-11-19 Akim Demaille <akim@epita.fr> 2001-11-19 Akim Demaille <akim@epita.fr>
* src/LR0.c (kernel_end): Remove, replaced with... * src/LR0.c (kernel_end): Remove, replaced with...

View File

@@ -150,7 +150,7 @@ new_itemsets (void)
shiftcount = 0; shiftcount = 0;
for (i = 0; i < itemsetend - itemset; ++i) for (i = 0; i < itemsetsize; ++i)
{ {
int symbol = ritem[itemset[i]]; int symbol = ritem[itemset[i]];
if (symbol > 0) if (symbol > 0)
@@ -544,19 +544,15 @@ augment_automaton (void)
static void static void
save_reductions (void) save_reductions (void)
{ {
short *isp;
int item;
int count; int count;
reductions *p; int i;
short *rend;
/* Find and count the active items that represent ends of rules. */ /* Find and count the active items that represent ends of rules. */
count = 0; count = 0;
for (isp = itemset; isp < itemsetend; isp++) for (i = 0; i < itemsetsize; ++i)
{ {
item = ritem[*isp]; int item = ritem[itemset[i]];
if (item < 0) if (item < 0)
redset[count++] = -item; redset[count++] = -item;
} }
@@ -565,7 +561,7 @@ save_reductions (void)
if (count) if (count)
{ {
p = REDUCTIONS_ALLOC (count); reductions *p = REDUCTIONS_ALLOC (count);
p->number = this_state->number; p->number = this_state->number;
p->nreds = count; p->nreds = count;

View File

@@ -26,8 +26,10 @@
#include "derives.h" #include "derives.h"
#include "warshall.h" #include "warshall.h"
/* ITEMSETSIZE is the size of the array ITEMSET. */
short *itemset; short *itemset;
short *itemsetend; size_t itemsetsize;
static unsigned *ruleset; static unsigned *ruleset;
/* internal data. See comments before set_fderives and set_firsts. */ /* internal data. See comments before set_fderives and set_firsts. */
@@ -51,11 +53,10 @@ static int varsetsize;
static void static void
print_closure (int n) print_closure (int n)
{ {
short *isp; int i;
fprintf (stderr, "n = %d\n", n); fprintf (stderr, "n = %d\n", n);
for (isp = itemset; isp < itemsetend; isp++) for (i = 0; i < itemsetsize; ++i)
fprintf (stderr, " %d\n", *isp); fprintf (stderr, " %d\n", itemset[i]);
fprintf (stderr, "\n\n"); fprintf (stderr, "\n\n");
} }
@@ -265,9 +266,9 @@ closure (short *core, int n)
} }
ruleno = 0; ruleno = 0;
itemsetend = itemset; itemsetsize = 0;
csp = core; csp = core;
for (i= 0; i < rulesetsize; ++i) for (i = 0; i < rulesetsize; ++i)
{ {
int word = ruleset[i]; int word = ruleset[i];
if (word == 0) if (word == 0)
@@ -283,9 +284,9 @@ closure (short *core, int n)
if (word & (1 << b)) if (word & (1 << b))
{ {
itemno = rule_table[ruleno].rhs; itemno = rule_table[ruleno].rhs;
while (csp < (core + n ) && *csp < itemno) while (csp < (core + n) && *csp < itemno)
*itemsetend++ = *csp++; itemset[itemsetsize++] = *csp++;
*itemsetend++ = itemno; itemset[itemsetsize++] = itemno;
} }
ruleno++; ruleno++;
@@ -294,7 +295,7 @@ closure (short *core, int n)
} }
while (csp < (core + n)) while (csp < (core + n))
*itemsetend++ = *csp++; itemset[itemsetsize++] = *csp++;
if (trace_flag) if (trace_flag)
print_closure (n); print_closure (n);

View File

@@ -1,5 +1,5 @@
/* Subroutines for bison /* Subroutines for bison
Copyright 1984, 1989, 2000 Free Software Foundation, Inc. Copyright 1984, 1989, 2000, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
@@ -51,6 +51,6 @@ void closure PARAMS ((short *items, int n));
void free_closure PARAMS ((void)); void free_closure PARAMS ((void));
extern short *itemset; extern short *itemset;
extern short *itemsetend; extern size_t itemsetsize;
#endif /* !CLOSURE_H_ */ #endif /* !CLOSURE_H_ */