void print_results (void) { state_number i; /* We used to use just .out if SPEC_NAME_PREFIX (-p) was used, but that conflicts with Posix. */ FILE *out = xfopen (spec_verbose_file, "w"); reduce_output (out); grammar_rules_partial_print (out, _("Rules never reduced"), rule_never_reduced_p); conflicts_output (out); print_grammar (out); /* If the whole state item sets, not only the kernels, are wanted, `closure' will be run, which needs memory allocation/deallocation. */ if (report_flag & report_itemsets) new_closure (nritems); /* Storage for print_reductions. */ shift_set = bitset_create (ntokens, BITSET_FIXED); look_ahead_set = bitset_create (ntokens, BITSET_FIXED); for (i = 0; i < nstates; i++) print_state (out, states[i]); bitset_free (shift_set); bitset_free (look_ahead_set); if (report_flag & report_itemsets) free_closure (); xfclose (out); }
void reduce_output (FILE *out) { if (nuseless_nonterminals > 0) { int i; fprintf (out, "%s\n\n", _("Nonterminals useless in grammar")); for (i = 0; i < nuseless_nonterminals; ++i) fprintf (out, " %s\n", symbols[nsyms + i]->tag); fputs ("\n\n", out); } { bool b = false; int i; for (i = 0; i < ntokens; i++) if (reduce_token_unused_in_grammar (i)) { if (!b) fprintf (out, "%s\n\n", _("Terminals unused in grammar")); b = true; fprintf (out, " %s\n", symbols[i]->tag); } if (b) fputs ("\n\n", out); } if (nuseless_productions > 0) grammar_rules_partial_print (out, _("Rules useless in grammar"), rule_useless_in_grammar_p); }
void grammar_rules_print (FILE *out) { grammar_rules_partial_print (out, _("Grammar"), rule_useful_p); }