128 |
firsts = bitsetv_create (nvars, nvars, BITSET_FIXED); |
firsts = bitsetv_create (nvars, nvars, BITSET_FIXED); |
129 |
|
|
130 |
for (i = ntokens; i < nsyms; i++) |
for (i = ntokens; i < nsyms; i++) |
131 |
for (j = 0; derives[i][j]; ++j) |
for (j = 0; derives[i - ntokens][j]; ++j) |
132 |
{ |
{ |
133 |
item_number sym = derives[i][j]->rhs[0]; |
item_number sym = derives[i - ntokens][j]->rhs[0]; |
134 |
if (ISVAR (sym)) |
if (ISVAR (sym)) |
135 |
bitset_set (FIRSTS (i), sym - ntokens); |
bitset_set (FIRSTS (i), sym - ntokens); |
136 |
} |
} |
168 |
for (i = ntokens; i < nsyms; ++i) |
for (i = ntokens; i < nsyms; ++i) |
169 |
for (j = ntokens; j < nsyms; ++j) |
for (j = ntokens; j < nsyms; ++j) |
170 |
if (bitset_test (FIRSTS (i), j - ntokens)) |
if (bitset_test (FIRSTS (i), j - ntokens)) |
171 |
for (k = 0; derives[j][k]; ++k) |
for (k = 0; derives[j - ntokens][k]; ++k) |
172 |
bitset_set (FDERIVES (i), derives[j][k]->number); |
bitset_set (FDERIVES (i), derives[j - ntokens][k]->number); |
173 |
|
|
174 |
if (trace_flag & trace_sets) |
if (trace_flag & trace_sets) |
175 |
print_fderives (); |
print_fderives (); |
182 |
void |
void |
183 |
new_closure (int n) |
new_closure (int n) |
184 |
{ |
{ |
185 |
itemset = XCALLOC (item_number, n); |
CALLOC (itemset, n); |
186 |
|
|
187 |
ruleset = bitset_create (nrules, BITSET_FIXED); |
ruleset = bitset_create (nrules, BITSET_FIXED); |
188 |
|
|
241 |
void |
void |
242 |
free_closure (void) |
free_closure (void) |
243 |
{ |
{ |
244 |
XFREE (itemset); |
free (itemset); |
245 |
bitset_free (ruleset); |
bitset_free (ruleset); |
246 |
bitsetv_free (fderives); |
bitsetv_free (fderives); |
247 |
} |
} |