X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/015acc48342cb75448f918f72463608aa4cb6eba..444c570aad15bb220e7dce3949b38081f17313e8:/src/reduce.c diff --git a/src/reduce.c b/src/reduce.c index d160f9d6..164dc72e 100644 --- a/src/reduce.c +++ b/src/reduce.c @@ -29,13 +29,11 @@ #include "getargs.h" #include "files.h" #include "gram.h" -#include "alloc.h" +#include "xalloc.h" #include "complain.h" #include "reduce.h" - -extern char **tags; /* reader.c */ -static int statisticsflag; /* XXXXXXX */ -extern int fixed_outfiles; +#include "reader.h" +#include "getargs.h" typedef unsigned *BSet; typedef short *rule; @@ -124,7 +122,7 @@ useless_nonterminals (void) /* 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. */ - Np = NEW2 (WORDSIZE (nvars), unsigned); + Np = XCALLOC (unsigned, WORDSIZE (nvars)); /* The set being computed is a set of nonterminals which can derive the empty string or strings consisting of all terminals. At each @@ -164,7 +162,7 @@ useless_nonterminals (void) Np = N; N = Ns; } - FREE (N); + XFREE (N); N = Np; } @@ -200,8 +198,8 @@ inaccessable_symbols (void) terminals are printed (if running in verbose mode) so that the user can know. */ - Vp = NEW2 (WORDSIZE (nsyms), unsigned); - Pp = NEW2 (WORDSIZE (nrules + 1), unsigned); + Vp = XCALLOC (unsigned, WORDSIZE (nsyms)); + Pp = XCALLOC (unsigned, WORDSIZE (nrules + 1)); /* If the start symbol isn't useful, then nothing will be useful. */ if (!BITISSET (N, start_symbol - ntokens)) @@ -238,7 +236,7 @@ inaccessable_symbols (void) } end_iteration: - FREE (V); + XFREE (V); V = Vp; /* Tokens 0, 1, and 2 are internal to Bison. Consider them useful. */ @@ -246,7 +244,7 @@ end_iteration: SETBIT (V, 1); /* error token */ SETBIT (V, 2); /* some undefined token */ - FREE (P); + XFREE (P); P = Pp; nuseful_productions = bits_size (P, WORDSIZE (nrules + 1)); @@ -342,7 +340,7 @@ reduce_grammar_tables (void) number. -1 in the map means it was useless and is being eliminated. */ - nontermmap = NEW2 (nvars, short) - ntokens; + nontermmap = XCALLOC (short, nvars) - ntokens; for (i = ntokens; i < nsyms; i++) nontermmap[i] = -1; @@ -403,7 +401,8 @@ print_results (void) if (nuseless_nonterminals > 0) { - fprintf (foutput, _("Useless nonterminals:\n\n")); + fputs (_("Useless nonterminals:"), foutput); + fputs ("\n\n", foutput); for (i = ntokens; i < nsyms; i++) if (!BITISSET (V, i)) fprintf (foutput, " %s\n", tags[i]); @@ -415,7 +414,9 @@ print_results (void) { if (!b) { - fprintf (foutput, _("\n\nTerminals which are not used:\n\n")); + fputs ("\n\n", foutput); + fprintf (foutput, _("Terminals which are not used:")); + fputs ("\n\n", foutput); b = TRUE; } fprintf (foutput, " %s\n", tags[i]); @@ -424,7 +425,9 @@ print_results (void) if (nuseless_productions > 0) { - fprintf (foutput, _("\n\nUseless rules:\n\n")); + fputs ("\n\n", foutput); + fprintf (foutput, _("Useless rules:")); + fputs ("\n\n", foutput); for (i = 1; i <= nrules; i++) { if (!BITISSET (P, i)) @@ -440,7 +443,7 @@ print_results (void) } } if (nuseless_nonterminals > 0 || nuseless_productions > 0 || b) - fprintf (foutput, "\n\n"); + fputs ("\n\n", foutput); } #if 0 /* XXX currently unused. */ @@ -485,7 +488,7 @@ dump_grammar (void) static void print_notices (void) { - if (fixed_outfiles && nuseless_productions) + if (yacc_flag && nuseless_productions) fprintf (stderr, _("%d rules never reduced\n"), nuseless_productions); fprintf (stderr, _("%s contains "), infile); @@ -515,17 +518,17 @@ reduce_grammar (void) /* Allocate the global sets used to compute the reduced grammar */ - N = NEW2 (WORDSIZE (nvars), unsigned); - P = NEW2 (WORDSIZE (nrules + 1), unsigned); - V = NEW2 (WORDSIZE (nsyms), unsigned); - V1 = NEW2 (WORDSIZE (nsyms), unsigned); + N = XCALLOC (unsigned, WORDSIZE (nvars)); + P = XCALLOC (unsigned, WORDSIZE (nrules + 1)); + V = XCALLOC (unsigned, WORDSIZE (nsyms)); + V1 = XCALLOC (unsigned, WORDSIZE (nsyms)); useless_nonterminals (); inaccessable_symbols (); reduced = (bool) (nuseless_nonterminals + nuseless_productions > 0); - if (verboseflag) + if (verbose_flag) print_results (); if (reduced == FALSE) @@ -539,14 +542,14 @@ reduce_grammar (void) reduce_grammar_tables (); #if 0 - if (verboseflag) + if (verbose_flag) { fprintf (foutput, "REDUCED GRAMMAR\n\n"); dump_grammar (); } #endif - statisticsflag = FALSE; /* someday getopts should handle this */ - if (statisticsflag == TRUE) + + if (statistics_flag) fprintf (stderr, _("reduced %s defines %d terminal%s, %d nonterminal%s\ , and %d production%s.\n"), infile, @@ -560,7 +563,7 @@ reduce_grammar (void) done_reducing: /* Free the global sets used to compute the reduced grammar */ - FREE (N); - FREE (V); - FREE (P); + XFREE (N); + XFREE (V); + XFREE (P); }