- int symbol;
- int state1 = shiftp->shifts[i];
- if (!state1)
- continue;
- symbol = state_table[state1].accessing_symbol;
- fprintf (out, _(" %-4s\tgo to state %d\n"),
- tags[symbol], state1);
+ int j;
+ int defaulted = 0;
+ int count = bitset_test (shiftset, i);
+
+ for (j = 0; j < state->nlookaheads; ++j)
+ if (bitset_test (LA[state->lookaheadsp + j], i))
+ {
+ if (count == 0)
+ {
+ if (state->lookaheadsp + j != default_LA)
+ fprintf (out,
+ _(" %-4s\treduce using rule %d (%s)\n"),
+ symbol_tag_get (symbols[i]),
+ LArule[state->lookaheadsp + j]->number - 1,
+ symbol_tag_get_n (LArule[state->lookaheadsp + j]->lhs, 1));
+ else
+ defaulted = 1;
+
+ count++;
+ }
+ else
+ {
+ if (defaulted)
+ fprintf (out,
+ _(" %-4s\treduce using rule %d (%s)\n"),
+ symbol_tag_get (symbols[i]),
+ LArule[default_LA]->number - 1,
+ symbol_tag_get_n (LArule[default_LA]->lhs, 1));
+ defaulted = 0;
+ fprintf (out,
+ _(" %-4s\t[reduce using rule %d (%s)]\n"),
+ symbol_tag_get (symbols[i]),
+ LArule[state->lookaheadsp + j]->number - 1,
+ symbol_tag_get_n (LArule[state->lookaheadsp + j]->lhs, 1));
+ }
+ }