* src/gram.c (ritem_print): Be sure to subtract 1 when displaying

rule line numbers.
* src/closure.c (print_closure): Likewise.
* src/derives.c (print_derives): Likewise.
* tests/sets.at (Nullable): Adjust: the rule numbers are correct
now.
This commit is contained in:
Akim Demaille
2001-12-29 14:16:46 +00:00
parent 7c6b64d023
commit 29d29c8fff
5 changed files with 31 additions and 22 deletions

View File

@@ -1,3 +1,12 @@
2001-12-29 Akim Demaille <akim@epita.fr>
* src/gram.c (ritem_print): Be sure to subtract 1 when displaying
rule line numbers.
* src/closure.c (print_closure): Likewise.
* src/derives.c (print_derives): Likewise.
* tests/sets.at (Nullable): Adjust: the rule numbers are correct
now.
2001-12-29 Akim Demaille <akim@epita.fr> 2001-12-29 Akim Demaille <akim@epita.fr>
* src/lalr.c (lookaheads_print): New. * src/lalr.c (lookaheads_print): New.

View File

@@ -62,7 +62,7 @@ print_closure (const char *title, short *array, size_t size)
fprintf (stderr, " %2d: .", array[i]); fprintf (stderr, " %2d: .", array[i]);
for (rp = &ritem[array[i]]; *rp >= 0; ++rp) for (rp = &ritem[array[i]]; *rp >= 0; ++rp)
fprintf (stderr, " %s", tags[*rp]); fprintf (stderr, " %s", tags[*rp]);
fprintf (stderr, " (rule %d)\n", -*rp); fprintf (stderr, " (rule %d)\n", -*rp - 1);
} }
fputs ("\n\n", stderr); fputs ("\n\n", stderr);
} }
@@ -100,8 +100,8 @@ print_fderives (void)
if (BITISSET (FDERIVES (i), j)) if (BITISSET (FDERIVES (i), j))
{ {
short *rhsp; short *rhsp;
fprintf (stderr, "\t\t%d:", j); fprintf (stderr, "\t\t%d:", j - 1);
for (rhsp = ritem + rule_table[j].rhs; *rhsp >= 0; ++rhsp) for (rhsp = &ritem[rule_table[j].rhs]; *rhsp >= 0; ++rhsp)
fprintf (stderr, " %s", tags[*rhsp]); fprintf (stderr, " %s", tags[*rhsp]);
fputc ('\n', stderr); fputc ('\n', stderr);
} }

View File

@@ -43,7 +43,7 @@ print_derives (void)
{ {
short *rhsp; short *rhsp;
fprintf (stderr, "\t\t%d:", *sp); fprintf (stderr, "\t\t%d:", *sp);
for (rhsp = ritem + rule_table[*sp].rhs; *rhsp >= 0; ++rhsp) for (rhsp = &ritem[rule_table[*sp].rhs]; *rhsp >= 0; ++rhsp)
fprintf (stderr, " %s", tags[*rhsp]); fprintf (stderr, " %s", tags[*rhsp]);
fprintf (stderr, " (rule %d)\n", -*rhsp - 1); fprintf (stderr, " (rule %d)\n", -*rhsp - 1);
} }

View File

@@ -66,7 +66,7 @@ ritem_print (FILE *out)
if (ritem[i] >= 0) if (ritem[i] >= 0)
fprintf (out, " %s", tags[ritem[i]]); fprintf (out, " %s", tags[ritem[i]]);
else else
fprintf (out, " (rule %d)\n", -ritem[i]); fprintf (out, " (rule %d)\n", -ritem[i] - 1);
fputs ("\n\n", out); fputs ("\n\n", out);
} }

View File

@@ -42,9 +42,9 @@ AT_CHECK([[bison --trace input.y]], [], [], [stderr])
AT_CHECK([[sed 's/[ ]*$//' stderr]], [], AT_CHECK([[sed 's/[ ]*$//' stderr]], [],
[[RITEM [[RITEM
e $ (rule 1) e $ (rule 0)
'e' (rule 2) 'e' (rule 1)
(rule 3) (rule 2)
DERIVES DERIVES
@@ -89,12 +89,12 @@ FIRSTS
FDERIVES FDERIVES
$axiom derives $axiom derives
1: e $ 0: e $
2: 'e' 1: 'e'
3: 2:
e derives e derives
2: 'e' 1: 'e'
3: 2:
Processing state 0 (reached by $) Processing state 0 (reached by $)
@@ -102,9 +102,9 @@ Closure: input
Closure: output Closure: output
0: . e $ (rule 1) 0: . e $ (rule 0)
3: . 'e' (rule 2) 3: . 'e' (rule 1)
5: . (rule 3) 5: . (rule 2)
Entering new_itemsets, state = 0 Entering new_itemsets, state = 0
@@ -117,22 +117,22 @@ Entering new_state, state = 0, symbol = 5 (e)
Exiting get_state => 2 Exiting get_state => 2
Processing state 1 (reached by 'e') Processing state 1 (reached by 'e')
Closure: input Closure: input
4: . (rule 2) 4: . (rule 1)
Closure: output Closure: output
4: . (rule 2) 4: . (rule 1)
Entering new_itemsets, state = 1 Entering new_itemsets, state = 1
Entering append_states, state = 1 Entering append_states, state = 1
Processing state 2 (reached by e) Processing state 2 (reached by e)
Closure: input Closure: input
1: . $ (rule 1) 1: . $ (rule 0)
Closure: output Closure: output
1: . $ (rule 1) 1: . $ (rule 0)
Entering new_itemsets, state = 2 Entering new_itemsets, state = 2
@@ -142,11 +142,11 @@ Entering new_state, state = 2, symbol = 0 ($)
Exiting get_state => 3 Exiting get_state => 3
Processing state 3 (reached by $) Processing state 3 (reached by $)
Closure: input Closure: input
2: . (rule 1) 2: . (rule 0)
Closure: output Closure: output
2: . (rule 1) 2: . (rule 0)
Entering new_itemsets, state = 3 Entering new_itemsets, state = 3