96 |
{ |
{ |
97 |
short *rhsp; |
short *rhsp; |
98 |
fprintf (stderr, "\t\t%d:", j - 1); |
fprintf (stderr, "\t\t%d:", j - 1); |
99 |
for (rhsp = &ritem[rules[j].rhs]; *rhsp >= 0; ++rhsp) |
for (rhsp = rules[j].rhs; *rhsp >= 0; ++rhsp) |
100 |
fprintf (stderr, " %s", symbols[*rhsp]->tag); |
fprintf (stderr, " %s", symbols[*rhsp]->tag); |
101 |
fputc ('\n', stderr); |
fputc ('\n', stderr); |
102 |
} |
} |
173 |
for (i = ntokens; i < nsyms; i++) |
for (i = ntokens; i < nsyms; i++) |
174 |
for (j = 0; derives[i][j] >= 0; ++j) |
for (j = 0; derives[i][j] >= 0; ++j) |
175 |
{ |
{ |
176 |
int symbol = ritem[rules[derives[i][j]].rhs]; |
int symbol = rules[derives[i][j]].rhs[0]; |
177 |
if (ISVAR (symbol)) |
if (ISVAR (symbol)) |
178 |
bitset_set (FIRSTS (i), symbol - ntokens); |
bitset_set (FIRSTS (i), symbol - ntokens); |
179 |
} |
} |
262 |
for (ruleno = 0; ruleno < nrules + 1; ++ruleno) |
for (ruleno = 0; ruleno < nrules + 1; ++ruleno) |
263 |
if (bitset_test (ruleset, ruleno)) |
if (bitset_test (ruleset, ruleno)) |
264 |
{ |
{ |
265 |
int itemno = rules[ruleno].rhs; |
int itemno = rules[ruleno].rhs - ritem; |
266 |
while (c < n && core[c] < itemno) |
while (c < n && core[c] < itemno) |
267 |
{ |
{ |
268 |
itemset[nitemset] = core[c]; |
itemset[nitemset] = core[c]; |