mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-10 12:53:03 +00:00
cex: fix traces: fix display of disabled items
The display of disabled state items is incorrect. The item is
stuttered, and lacks on end-of-line.
From
State 7:
1 exp: exp • "⊕" exp
-> 1 exp: exp "⊕" • exp
<- 1 exp: • exp "⊕" exp
2 exp: exp • "+" exp 2 exp: exp • "+" exp DISABLED
2 exp: exp "+" exp •
<- 2 exp: exp "+" • exp
3 exp: exp • "+" exp 3 exp: exp • "+" exp DISABLED
3 exp: exp "+" exp •
<- 3 exp: exp "+" • exp
to
State 7:
1 exp: exp • "⊕" exp
-> 1 exp: exp "⊕" • exp
<- 1 exp: • exp "⊕" exp
2 exp: exp • "+" exp DISABLED
2 exp: exp "+" exp •
<- 2 exp: exp "+" • exp
3 exp: exp • "+" exp DISABLED
3 exp: exp "+" exp •
<- 3 exp: exp "+" • exp
* src/state-item.c (state_items_report): Don't issue disabled items
twice, and issue two '\n' at their end.
* tests/conflicts.at: Check it.
This commit is contained in:
@@ -494,34 +494,33 @@ state_items_report (FILE *out)
|
||||
fprintf (out, "State %d:\n", i);
|
||||
for (state_item_number j = state_item_map[i]; j < state_item_map[i + 1]; ++j)
|
||||
{
|
||||
state_item *si = &state_items[j];
|
||||
const state_item *si = &state_items[j];
|
||||
item_print (si->item, NULL, out);
|
||||
if (SI_DISABLED (j))
|
||||
fputs (" DISABLED\n", out);
|
||||
else
|
||||
{
|
||||
item_print (si->item, NULL, out);
|
||||
fputs (" DISABLED\n", out);
|
||||
continue;
|
||||
}
|
||||
putc ('\n', out);
|
||||
if (si->trans >= 0)
|
||||
{
|
||||
fputs (" -> ", out);
|
||||
state_item_print (&state_items[si->trans], out, "");
|
||||
}
|
||||
|
||||
bitset sets[2] = { si->prods, si->revs };
|
||||
const char *txt[2] = { " => ", " <- " };
|
||||
for (int seti = 0; seti < 2; ++seti)
|
||||
{
|
||||
bitset b = sets[seti];
|
||||
if (b)
|
||||
putc ('\n', out);
|
||||
if (si->trans >= 0)
|
||||
{
|
||||
bitset_iterator biter;
|
||||
state_item_number sin;
|
||||
BITSET_FOR_EACH (biter, b, sin, 0)
|
||||
fputs (" -> ", out);
|
||||
state_item_print (&state_items[si->trans], out, "");
|
||||
}
|
||||
|
||||
bitset sets[2] = { si->prods, si->revs };
|
||||
const char *txt[2] = { " => ", " <- " };
|
||||
for (int seti = 0; seti < 2; ++seti)
|
||||
{
|
||||
bitset b = sets[seti];
|
||||
if (b)
|
||||
{
|
||||
fputs (txt[seti], out);
|
||||
state_item_print (&state_items[sin], out, "");
|
||||
bitset_iterator biter;
|
||||
state_item_number sin;
|
||||
BITSET_FOR_EACH (biter, b, sin, 0)
|
||||
{
|
||||
fputs (txt[seti], out);
|
||||
state_item_print (&state_items[sin], out, "");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user