- obstack_sgrow (node_obstack, "\n ");
- obstack_fgrow1 (node_obstack, " %s -> ",
- tags[rule_table[rule].lhs]);
-
- for (sp = ritem + rule_table[rule].rhs; sp < sp1; sp++)
- obstack_fgrow1 (node_obstack, "%s ", tags[*sp]);
-
- obstack_1grow (node_obstack, '.');
-
- for (/* Nothing */; *sp > 0; ++sp)
- obstack_fgrow1 (node_obstack, " %s", tags[*sp]);
+ obstack_1grow (oout, '\n');
+ obstack_fgrow1 (oout, " %s -> ",
+ rules[rule].lhs->tag);
+
+ for (sp = rules[rule].rhs; sp < sp1; sp++)
+ obstack_fgrow1 (oout, "%s ", symbols[*sp]->tag);
+
+ obstack_1grow (oout, '.');
+
+ for (/* Nothing */; *sp >= 0; ++sp)
+ obstack_fgrow1 (oout, " %s", symbols[*sp]->tag);
+
+ /* Experimental feature: display the lookaheads. */
+ if (report_flag & report_lookaheads)
+ {
+ /* Find the reduction we are handling. */
+ reductions_t *reds = state->reductions;
+ int redno = state_reduction_find (state, &rules[rule]);
+
+ /* Print them if there are. */
+ if (reds->lookaheads && redno != -1)
+ {
+ bitset_iterator biter;
+ int k;
+ int not_first = 0;
+ obstack_sgrow (oout, "[");
+ BITSET_FOR_EACH (biter, reds->lookaheads[redno], k, 0)
+ obstack_fgrow2 (oout, "%s%s",
+ not_first++ ? ", " : "",
+ symbols[k]->tag);
+ obstack_sgrow (oout, "]");
+ }
+ }