- rrow = FDERIVES (ntokens);
-
- for (i = ntokens; i < nsyms; i++)
- {
- vrow = FIRSTS (i - ntokens);
- cword = *vrow++;
- b = 0;
- for (j = ntokens; j < nsyms; j++)
- {
- if (cword & (1 << b))
- {
- rp = derives[j];
- while ((ruleno = *rp++) > 0)
- SETBIT (rrow, ruleno);
- }
-
- b++;
- if (b >= BITS_PER_WORD && j + 1 < nsyms)
- {
- cword = *vrow++;
- b = 0;
- }
- }
-
- rrow += rulesetsize;
- }
+ for (i = ntokens; i < nsyms; ++i)
+ for (j = ntokens; j < nsyms; ++j)
+ if (BITISSET (FIRSTS (i - ntokens), j - ntokens))
+ for (k = 0; derives[j][k] > 0; ++k)
+ SETBIT (FDERIVES (i), derives[j][k]);