X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/89cab50df11c5f02d719db0239eabc0fb6095ec8..ee006e3a4c1e6e8e9f4a1826845d6e27b51d01fb:/src/reduce.c diff --git a/src/reduce.c b/src/reduce.c index 60c7c2e8..b2299b33 100644 --- a/src/reduce.c +++ b/src/reduce.c @@ -1,5 +1,5 @@ /* Grammar reduction for Bison. - Copyright (C) 1988, 1989, 2000 Free Software Foundation, Inc. + Copyright 1988, 1989, 2000 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. @@ -29,7 +29,6 @@ #include "getargs.h" #include "files.h" #include "gram.h" -#include "xalloc.h" #include "complain.h" #include "reduce.h" #include "reader.h" @@ -117,7 +116,7 @@ static void useless_nonterminals (void) { BSet Np, Ns; - int i, n; + int i; /* N is set as built. Np is set being built this iteration. P is set of all productions which have a RHS all in N. */ @@ -140,7 +139,6 @@ useless_nonterminals (void) saved to be used when finding useful productions: only productions in this set will appear in the final grammar. */ - n = 0; while (1) { for (i = WORDSIZE (nvars) - 1; i >= 0; i--) @@ -171,7 +169,7 @@ static void inaccessable_symbols (void) { BSet Vp, Vs, Pp; - int i, n; + int i; short t; rule r; @@ -207,7 +205,6 @@ inaccessable_symbols (void) SETBIT (V, start_symbol); - n = 0; while (1) { for (i = WORDSIZE (nsyms) - 1; i >= 0; i--) @@ -401,10 +398,11 @@ print_results (void) if (nuseless_nonterminals > 0) { - fprintf (foutput, _("Useless nonterminals:\n\n")); + obstack_sgrow (&output_obstack, _("Useless nonterminals:")); + obstack_sgrow (&output_obstack, "\n\n"); for (i = ntokens; i < nsyms; i++) if (!BITISSET (V, i)) - fprintf (foutput, " %s\n", tags[i]); + obstack_fgrow1 (&output_obstack, " %s\n", tags[i]); } b = FALSE; for (i = 0; i < ntokens; i++) @@ -413,32 +411,35 @@ print_results (void) { if (!b) { - fprintf (foutput, _("\n\nTerminals which are not used:\n\n")); + obstack_sgrow (&output_obstack, "\n\n"); + obstack_sgrow (&output_obstack, + _("Terminals which are not used:")); + obstack_sgrow (&output_obstack, "\n\n"); b = TRUE; } - fprintf (foutput, " %s\n", tags[i]); + obstack_fgrow1 (&output_obstack, " %s\n", tags[i]); } } if (nuseless_productions > 0) { - fprintf (foutput, _("\n\nUseless rules:\n\n")); + obstack_sgrow (&output_obstack, "\n\n"); + obstack_sgrow (&output_obstack, _("Useless rules:")); + obstack_sgrow (&output_obstack, "\n\n"); for (i = 1; i <= nrules; i++) { if (!BITISSET (P, i)) { - fprintf (foutput, "#%-4d ", i); - fprintf (foutput, "%s :\t", tags[rlhs[i]]); + obstack_fgrow1 (&output_obstack, "#%-4d ", i); + obstack_fgrow1 (&output_obstack, "%s :\t", tags[rlhs[i]]); for (r = &ritem[rrhs[i]]; *r >= 0; r++) - { - fprintf (foutput, " %s", tags[*r]); - } - fprintf (foutput, ";\n"); + obstack_fgrow1 (&output_obstack, " %s", tags[*r]); + obstack_sgrow (&output_obstack, ";\n"); } } } if (nuseless_nonterminals > 0 || nuseless_productions > 0 || b) - fprintf (foutput, "\n\n"); + obstack_sgrow (&output_obstack, "\n\n"); } #if 0 /* XXX currently unused. */ @@ -448,35 +449,38 @@ dump_grammar (void) int i; rule r; - fprintf (foutput, - "ntokens = %d, nvars = %d, nsyms = %d, nrules = %d, nitems = %d\n\n", - ntokens, nvars, nsyms, nrules, nitems); - fprintf (foutput, _("Variables\n---------\n\n")); - fprintf (foutput, _("Value Sprec Sassoc Tag\n")); + obstack_fgrow5 (&output_obstack, + "ntokens = %d, nvars = %d, nsyms = %d, nrules = %d, nitems = %d\n\n", + ntokens, nvars, nsyms, nrules, nitems); + obstack_sgrow (&output_obstack, + _("Variables\n---------\n\n")); + obstack_sgrow (&output_obstack, + _("Value Sprec Sassoc Tag\n")); for (i = ntokens; i < nsyms; i++) - fprintf (foutput, "%5d %5d %5d %s\n", i, sprec[i], sassoc[i], tags[i]); - fprintf (foutput, "\n\n"); - fprintf (foutput, _("Rules\n-----\n\n")); + obstack_fgrow4 (&output_obstack, + "%5d %5d %5d %s\n", i, sprec[i], sassoc[i], tags[i]); + obstack_sgrow (&output_obstack, "\n\n"); + obstack_sgrow (&output_obstack, _("Rules\n-----\n\n")); for (i = 1; i <= nrules; i++) { - fprintf (foutput, "%-5d(%5d%5d)%5d : (@%-5d)", - i, rprec[i], rassoc[i], rlhs[i], rrhs[i]); + obstack_fgrow5 (&output_obstack, "%-5d(%5d%5d)%5d : (@%-5d)", + i, rprec[i], rassoc[i], rlhs[i], rrhs[i]); for (r = &ritem[rrhs[i]]; *r > 0; r++) - fprintf (foutput, "%5d", *r); - fprintf (foutput, " [%d]\n", -(*r)); + obstack_fgrow1 (&output_obstack, "%5d", *r); + obstack_fgrow1 (&output_obstack, " [%d]\n", -(*r)); } - fprintf (foutput, "\n\n"); - fprintf (foutput, _("Rules interpreted\n-----------------\n\n")); + obstack_sgrow (&output_obstack, "\n\n"); + obstack_sgrow (&output_obstack, + _("Rules interpreted\n-----------------\n\n")); for (i = 1; i <= nrules; i++) { - fprintf (foutput, "%-5d %s :", i, tags[rlhs[i]]); + obstack_fgrow2 (&output_obstack, "%-5d %s :", i, tags[rlhs[i]]); for (r = &ritem[rrhs[i]]; *r > 0; r++) - fprintf (foutput, " %s", tags[*r]); - fprintf (foutput, "\n"); + obstack_fgrow1 (&output_obstack, " %s", tags[*r]); + obstack_grow1 (&output_obstack, '\n'); } - fprintf (foutput, "\n\n"); + obstack_sgrow (&output_obstack, "\n\n"); } - #endif @@ -539,7 +543,7 @@ reduce_grammar (void) #if 0 if (verbose_flag) { - fprintf (foutput, "REDUCED GRAMMAR\n\n"); + obstack_fgrow1 (&output_obstack, "REDUCED GRAMMAR\n\n"); dump_grammar (); } #endif