mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-17 08:13:02 +00:00
Stop storing rules from 1 to nrules + 1.
* src/LR0.c, src/closure.c, src/derives.c, src/gram.c, src/lalr.c * src/nullable.c, src/output.c, src/print.c, src/reader.c * src/reduce.c: Allocate and free from &rules[0], not &rules[1]. Iterate from 0 to nrules. Use rule_number_as_item_number and item_number_as_rule_number. Adjust to `derive' now containing possibly 0. * src/gram.h (rule_number_as_item_number, item_number_as_rule_number): Handle the `- 1' part in rule numbers from/to item numbers. * src/conflicts.c (log_resolution): Fix the message which reversed shift and reduce. * src/output.c (action_row): Initialize default_rule to -1. (token_actions): Adjust. * tests/sets.at (Nullable, Firsts): Fix the previously bogus expected output. * tests/conflicts.at (Resolved SR Conflicts): Likewise.
This commit is contained in:
18
src/print.c
18
src/print.c
@@ -97,7 +97,7 @@ print_core (FILE *out, state_t *state)
|
||||
while (*sp >= 0)
|
||||
sp++;
|
||||
|
||||
rule = -(*sp);
|
||||
rule = item_number_as_rule_number (*sp);
|
||||
|
||||
rule_lhs_print (&rules[rule], previous_lhs, out);
|
||||
previous_lhs = rules[rule].lhs;
|
||||
@@ -288,7 +288,7 @@ print_reduction (FILE *out, size_t width,
|
||||
if (!enabled)
|
||||
fputc ('[', out);
|
||||
fprintf (out, _("reduce using rule %d (%s)"),
|
||||
rule->number - 1, rule->lhs->tag);
|
||||
rule->number, rule->lhs->tag);
|
||||
if (!enabled)
|
||||
fputc (']', out);
|
||||
fputc ('\n', out);
|
||||
@@ -473,12 +473,12 @@ print_grammar (FILE *out)
|
||||
END_TEST (50);
|
||||
sprintf (buffer, " (%d)", i);
|
||||
|
||||
for (r = 1; r < nrules + 1; r++)
|
||||
for (r = 0; r < nrules; r++)
|
||||
for (rhsp = rules[r].rhs; *rhsp >= 0; rhsp++)
|
||||
if (item_number_as_symbol_number (*rhsp) == token_translations[i])
|
||||
{
|
||||
END_TEST (65);
|
||||
sprintf (buffer + strlen (buffer), " %d", r - 1);
|
||||
sprintf (buffer + strlen (buffer), " %d", r);
|
||||
break;
|
||||
}
|
||||
fprintf (out, "%s\n", buffer);
|
||||
@@ -493,7 +493,7 @@ print_grammar (FILE *out)
|
||||
rule_number_t r;
|
||||
const char *tag = symbols[i]->tag;
|
||||
|
||||
for (r = 1; r < nrules + 1; r++)
|
||||
for (r = 0; r < nrules; r++)
|
||||
{
|
||||
item_number_t *rhsp;
|
||||
if (rules[r].lhs->number == i)
|
||||
@@ -517,11 +517,11 @@ print_grammar (FILE *out)
|
||||
END_TEST (50);
|
||||
sprintf (buffer + strlen (buffer), _(" on left:"));
|
||||
|
||||
for (r = 1; r < nrules + 1; r++)
|
||||
for (r = 0; r < nrules; r++)
|
||||
{
|
||||
END_TEST (65);
|
||||
if (rules[r].lhs->number == i)
|
||||
sprintf (buffer + strlen (buffer), " %d", r - 1);
|
||||
sprintf (buffer + strlen (buffer), " %d", r);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -531,14 +531,14 @@ print_grammar (FILE *out)
|
||||
sprintf (buffer + strlen (buffer), ",");
|
||||
END_TEST (50);
|
||||
sprintf (buffer + strlen (buffer), _(" on right:"));
|
||||
for (r = 1; r < nrules + 1; r++)
|
||||
for (r = 0; r < nrules; r++)
|
||||
{
|
||||
item_number_t *rhsp;
|
||||
for (rhsp = rules[r].rhs; *rhsp >= 0; rhsp++)
|
||||
if (item_number_as_symbol_number (*rhsp) == i)
|
||||
{
|
||||
END_TEST (65);
|
||||
sprintf (buffer + strlen (buffer), " %d", r - 1);
|
||||
sprintf (buffer + strlen (buffer), " %d", r);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user