242 |
/* Index over RULESET. */ |
/* Index over RULESET. */ |
243 |
int r; |
int r; |
244 |
|
|
245 |
int itemno; |
/* A bit index over RULESET. */ |
246 |
|
int b; |
247 |
|
|
248 |
if (trace_flag) |
if (trace_flag) |
249 |
{ |
{ |
272 |
ruleno = 0; |
ruleno = 0; |
273 |
itemsetsize = 0; |
itemsetsize = 0; |
274 |
c = 0; |
c = 0; |
275 |
for (r = 0; r < rulesetsize; ++r) |
for (b = 0; b < rulesetsize * BITS_PER_WORD; ++b) |
276 |
{ |
{ |
277 |
int b; |
if (BITISSET (ruleset, b)) |
|
|
|
|
for (b = 0; b < BITS_PER_WORD; b++) |
|
278 |
{ |
{ |
279 |
if (ruleset[r] & (1 << b)) |
int itemno = rule_table[ruleno].rhs; |
280 |
|
while (c < n && core[c] < itemno) |
281 |
{ |
{ |
282 |
itemno = rule_table[ruleno].rhs; |
itemset[itemsetsize] = core[c]; |
|
while (c < n && core[c] < itemno) |
|
|
{ |
|
|
itemset[itemsetsize] = core[c]; |
|
|
itemsetsize++; |
|
|
c++; |
|
|
} |
|
|
itemset[itemsetsize] = itemno; |
|
283 |
itemsetsize++; |
itemsetsize++; |
284 |
|
c++; |
285 |
} |
} |
286 |
|
itemset[itemsetsize] = itemno; |
287 |
ruleno++; |
itemsetsize++; |
288 |
} |
} |
289 |
|
|
290 |
|
ruleno++; |
291 |
} |
} |
292 |
|
|
293 |
while (c < n) |
while (c < n) |