* src/closure.c, src/print.c, src/reader.c, src/reduce.c:

Normalize loops to using `< nrules + 1', not `<= nrules'.
This commit is contained in:
Akim Demaille
2002-04-07 15:30:20 +00:00
parent fa770c8662
commit 18bcecb07d
5 changed files with 23 additions and 17 deletions

View File

@@ -1,3 +1,9 @@
2002-04-07 Akim Demaille <akim@epita.fr>
* src/closure.c, src/print.c, src/reader.c, src/reduce.c:
Normalize loops to using `< nrules + 1', not `<= nrules'.
2002-04-07 Akim Demaille <akim@epita.fr> 2002-04-07 Akim Demaille <akim@epita.fr>
* TODO: Update. * TODO: Update.

View File

@@ -91,7 +91,7 @@ print_fderives (void)
for (i = ntokens; i < nsyms; i++) for (i = ntokens; i < nsyms; i++)
{ {
fprintf (stderr, "\t%s derives\n", symbols[i]->tag); fprintf (stderr, "\t%s derives\n", symbols[i]->tag);
for (j = 0; j <= nrules; j++) for (j = 0; j < nrules + 1; j++)
if (bitset_test (FDERIVES (i), j)) if (bitset_test (FDERIVES (i), j))
{ {
short *rhsp; short *rhsp;

View File

@@ -365,7 +365,7 @@ print_grammar (FILE *out)
/* rule # : LHS -> RHS */ /* rule # : LHS -> RHS */
fprintf (out, "%s\n\n", _("Grammar")); fprintf (out, "%s\n\n", _("Grammar"));
fprintf (out, " %s\n", _("Number, Line, Rule")); fprintf (out, " %s\n", _("Number, Line, Rule"));
for (i = 1; i <= nrules; i++) for (i = 1; i < nrules + 1; i++)
/* Don't print rules disabled in reduce_grammar_tables. */ /* Don't print rules disabled in reduce_grammar_tables. */
if (rules[i].useful) if (rules[i].useful)
{ {
@@ -384,7 +384,7 @@ print_grammar (FILE *out)
/* TERMINAL (type #) : rule #s terminal is on RHS */ /* TERMINAL (type #) : rule #s terminal is on RHS */
fprintf (out, "%s\n\n", _("Terminals, with rules where they appear")); fprintf (out, "%s\n\n", _("Terminals, with rules where they appear"));
for (i = 0; i <= max_user_token_number; i++) for (i = 0; i < max_user_token_number + 1; i++)
if (token_translations[i] != 2) if (token_translations[i] != 2)
{ {
buffer[0] = 0; buffer[0] = 0;
@@ -393,7 +393,7 @@ print_grammar (FILE *out)
END_TEST (50); END_TEST (50);
sprintf (buffer, " (%d)", i); sprintf (buffer, " (%d)", i);
for (j = 1; j <= nrules; j++) for (j = 1; j < nrules + 1; j++)
for (rule = rules[j].rhs; *rule >= 0; rule++) for (rule = rules[j].rhs; *rule >= 0; rule++)
if (*rule == token_translations[i]) if (*rule == token_translations[i])
{ {
@@ -407,11 +407,11 @@ print_grammar (FILE *out)
fprintf (out, "%s\n\n", _("Nonterminals, with rules where they appear")); fprintf (out, "%s\n\n", _("Nonterminals, with rules where they appear"));
for (i = ntokens; i <= nsyms - 1; i++) for (i = ntokens; i < nsyms; i++)
{ {
int left_count = 0, right_count = 0; int left_count = 0, right_count = 0;
for (j = 1; j <= nrules; j++) for (j = 1; j < nrules + 1; j++)
{ {
if (rules[j].lhs == i) if (rules[j].lhs == i)
left_count++; left_count++;
@@ -434,7 +434,7 @@ print_grammar (FILE *out)
END_TEST (50); END_TEST (50);
sprintf (buffer + strlen (buffer), _(" on left:")); sprintf (buffer + strlen (buffer), _(" on left:"));
for (j = 1; j <= nrules; j++) for (j = 1; j < nrules + 1; j++)
{ {
END_TEST (65); END_TEST (65);
if (rules[j].lhs == i) if (rules[j].lhs == i)
@@ -448,7 +448,7 @@ print_grammar (FILE *out)
sprintf (buffer + strlen (buffer), ","); sprintf (buffer + strlen (buffer), ",");
END_TEST (50); END_TEST (50);
sprintf (buffer + strlen (buffer), _(" on right:")); sprintf (buffer + strlen (buffer), _(" on right:"));
for (j = 1; j <= nrules; j++) for (j = 1; j < nrules + 1; j++)
{ {
for (rule = rules[j].rhs; *rule >= 0; rule++) for (rule = rules[j].rhs; *rule >= 0; rule++)
if (*rule == i) if (*rule == i)

View File

@@ -1538,7 +1538,7 @@ token_translations_init (void)
/* Initialize all entries for literal tokens to 2, the internal /* Initialize all entries for literal tokens to 2, the internal
token number for $undefined., which represents all invalid token number for $undefined., which represents all invalid
inputs. */ inputs. */
for (i = 0; i <= max_user_token_number; i++) for (i = 0; i < max_user_token_number + 1; i++)
token_translations[i] = 2; token_translations[i] = 2;
for (bp = firstsymbol; bp; bp = bp->next) for (bp = firstsymbol; bp; bp = bp->next)

View File

@@ -114,7 +114,7 @@ useless_nonterminals (void)
while (1) while (1)
{ {
bitset_copy (Np, N); bitset_copy (Np, N);
for (i = 1; i <= nrules; i++) for (i = 1; i < nrules + 1; i++)
if (!bitset_test (P, i) if (!bitset_test (P, i)
&& useful_production (i, N)) && useful_production (i, N))
{ {
@@ -174,7 +174,7 @@ inaccessable_symbols (void)
while (1) while (1)
{ {
bitset_copy (Vp, V); bitset_copy (Vp, V);
for (i = 1; i <= nrules; i++) for (i = 1; i < nrules + 1; i++)
{ {
if (!bitset_test (Pp, i) if (!bitset_test (Pp, i)
&& bitset_test (P, i) && bitset_test (P, i)
@@ -241,7 +241,7 @@ reduce_grammar_tables (void)
np = 0; np = 0;
ni = 0; ni = 0;
for (pn = 1; pn <= nrules; pn++) for (pn = 1; pn < nrules + 1; pn++)
if (bitset_test (P, pn)) if (bitset_test (P, pn))
{ {
np++; np++;
@@ -281,7 +281,7 @@ reduce_grammar_tables (void)
if (nuseless_productions > 0) if (nuseless_productions > 0)
{ {
int pn; int pn;
for (pn = 1; pn <= nrules; pn++) for (pn = 1; pn < nrules + 1; pn++)
rules[pn].useful = bitset_test (P, pn); rules[pn].useful = bitset_test (P, pn);
} }
} }
@@ -322,7 +322,7 @@ nonterminals_reduce (void)
/* Replace all symbol numbers in valid data structures. */ /* Replace all symbol numbers in valid data structures. */
for (i = 1; i <= nrules; i++) for (i = 1; i < nrules + 1; i++)
{ {
rules[i].lhs = nontermmap[rules[i].lhs]; rules[i].lhs = nontermmap[rules[i].lhs];
if (ISVAR (rules[i].precsym)) if (ISVAR (rules[i].precsym))
@@ -378,7 +378,7 @@ reduce_output (FILE *out)
{ {
int i; int i;
fprintf (out, "%s\n\n", _("Useless rules:")); fprintf (out, "%s\n\n", _("Useless rules:"));
for (i = 1; i <= nrules; i++) for (i = 1; i < nrules + 1; i++)
if (!rules[i].useful) if (!rules[i].useful)
{ {
rule r; rule r;
@@ -411,7 +411,7 @@ dump_grammar (FILE *out)
fprintf (out, "\n\n"); fprintf (out, "\n\n");
fprintf (out, "Rules\n-----\n\n"); fprintf (out, "Rules\n-----\n\n");
fprintf (out, "Num (Prec, Assoc, Useful, Ritem Range) Lhs -> Rhs (Ritem range) [Num]\n"); fprintf (out, "Num (Prec, Assoc, Useful, Ritem Range) Lhs -> Rhs (Ritem range) [Num]\n");
for (i = 1; i <= nrules; i++) for (i = 1; i < nrules + 1; i++)
{ {
int rhs_count = 0; int rhs_count = 0;
/* Find the last RHS index in ritems. */ /* Find the last RHS index in ritems. */
@@ -429,7 +429,7 @@ dump_grammar (FILE *out)
} }
fprintf (out, "\n\n"); fprintf (out, "\n\n");
fprintf (out, "Rules interpreted\n-----------------\n\n"); fprintf (out, "Rules interpreted\n-----------------\n\n");
for (i = 1; i <= nrules; i++) for (i = 1; i < nrules + 1; i++)
{ {
fprintf (out, "%-5d %s :", i, symbols[rules[i].lhs]->tag); fprintf (out, "%-5d %s :", i, symbols[rules[i].lhs]->tag);
for (r = rules[i].rhs; *r >= 0; r++) for (r = rules[i].rhs; *r >= 0; r++)