+static void
+print_derives (void)
+{
+ int i;
+
+ fputs ("DERIVES\n", stderr);
+
+ for (i = ntokens; i < nsyms; i++)
+ {
+ short *sp;
+ fprintf (stderr, "\t%s derives\n", symbols[i]->tag);
+ for (sp = derives[i]; *sp > 0; sp++)
+ {
+ short *rhsp;
+ fprintf (stderr, "\t\t%d:", *sp);
+ for (rhsp = &ritem[rules[*sp].rhs]; *rhsp >= 0; ++rhsp)
+ fprintf (stderr, " %s", symbols[*rhsp]->tag);
+ fprintf (stderr, " (rule %d)\n", -*rhsp - 1);
+ }
+ }
+
+ fputs ("\n\n", stderr);
+}