diff --git a/src/counterexample.c b/src/counterexample.c
index 06ebcd6c..7df75d64 100644
--- a/src/counterexample.c
+++ b/src/counterexample.c
@@ -116,9 +116,9 @@ static void
print_counterexample (const counterexample *cex, FILE *out, const char *prefix)
{
const bool flat = getenv ("YYFLAT");
- fprintf (out, " %s%-20s ",
+ fprintf (out, flat ? " %s%-20s " : " %s%s: ",
prefix, cex->unifying ? _("Example") : _("First example"));
- derivation_print_leaves (cex->d1, out, prefix);
+ derivation_print_leaves (cex->d1, out);
fprintf (out, flat ? " %s%-20s " : " %s%s",
prefix, cex->shift_reduce ? _("Shift derivation") : _("First derivation"));
derivation_print (cex->d1, out, prefix);
@@ -128,9 +128,9 @@ print_counterexample (const counterexample *cex, FILE *out, const char *prefix)
// to see the differences.
if (!cex->unifying || is_styled (stderr))
{
- fprintf (out, " %s%-20s ",
+ fprintf (out, flat ? " %s%-20s " : " %s%s: ",
prefix, cex->unifying ? _("Example") : _("Second example"));
- derivation_print_leaves (cex->d2, out, prefix);
+ derivation_print_leaves (cex->d2, out);
}
fprintf (out, flat ? " %s%-20s " : " %s%s",
prefix, cex->shift_reduce ? _("Reduce derivation") : _("Second derivation"));
diff --git a/src/derivation.c b/src/derivation.c
index 5ad5a1c8..1e0ff4b7 100644
--- a/src/derivation.c
+++ b/src/derivation.c
@@ -428,10 +428,9 @@ derivation_print_flat (const derivation *deriv, FILE *out, const char *prefix)
}
void
-derivation_print_leaves (const derivation *deriv, FILE *out, const char *prefix)
+derivation_print_leaves (const derivation *deriv, FILE *out)
{
int counter = 0;
- fputs (prefix, out);
derivation_print_flat_impl ((derivation *)deriv, out, true, &counter, "");
fputc ('\n', out);
}
diff --git a/src/derivation.h b/src/derivation.h
index 62676368..4dfba945 100644
--- a/src/derivation.h
+++ b/src/derivation.h
@@ -64,7 +64,7 @@ static inline derivation *derivation_new_leaf (symbol_number sym)
// Number of symbols.
size_t derivation_size (const derivation *deriv);
void derivation_print (const derivation *deriv, FILE *out, const char *prefix);
-void derivation_print_leaves (const derivation *deriv, FILE *out, const char *prefix);
+void derivation_print_leaves (const derivation *deriv, FILE *out);
void derivation_free (derivation *deriv);
void derivation_retain (derivation *deriv);
diff --git a/tests/conflicts.at b/tests/conflicts.at
index 187085c3..1cfae5b1 100644
--- a/tests/conflicts.at
+++ b/tests/conflicts.at
@@ -864,7 +864,7 @@ State 5
shift/reduce conflict on token OP:
1 exp: exp OP exp .
1 exp: exp . OP exp
- Example exp OP exp . OP exp
+ Example: exp OP exp . OP exp
Shift derivation
exp
`-> exp OP exp
@@ -1212,7 +1212,7 @@ State 1
reduce/reduce conflict on token $end:
3 num: '0' .
4 id: '0' .
- Example '0' .
+ Example: '0' .
First derivation
exp
`-> num
@@ -1767,12 +1767,12 @@ State 4
shift/reduce conflict on token 'a':
10 reported_conflicts: . %empty
8 reported_conflicts: . 'a'
- First example resolved_conflict . 'a' 'a'
+ First example: resolved_conflict . 'a' 'a'
Shift derivation
start
`-> resolved_conflict reported_conflicts 'a'
`-> . 'a'
- Second example resolved_conflict . 'a'
+ Second example: resolved_conflict . 'a'
Reduce derivation
start
`-> resolved_conflict reported_conflicts 'a'
@@ -1781,12 +1781,12 @@ State 4
shift/reduce conflict on token 'a':
10 reported_conflicts: . %empty
9 reported_conflicts: . 'a'
- First example resolved_conflict . 'a' 'a'
+ First example: resolved_conflict . 'a' 'a'
Shift derivation
start
`-> resolved_conflict reported_conflicts 'a'
`-> . 'a'
- Second example resolved_conflict . 'a'
+ Second example: resolved_conflict . 'a'
Reduce derivation
start
`-> resolved_conflict reported_conflicts 'a'
@@ -1806,7 +1806,7 @@ State 5
reduce/reduce conflict on token 'a':
8 reported_conflicts: 'a' .
9 reported_conflicts: 'a' .
- Example 'a' .
+ Example: 'a' .
First derivation
reported_conflicts
`-> 'a' .
@@ -1996,7 +1996,7 @@ AT_CHECK([[cat input.output | sed -n '/^State 0$/,/^State 1$/p']], 0,
reduce/reduce conflict on token 'c':
12 empty_c2: . %empty
13 empty_c3: . %empty
- Example . 'c'
+ Example: . 'c'
First derivation
start
`-> empty_c2 'c'
diff --git a/tests/counterexample.at b/tests/counterexample.at
index f371ad14..97c72401 100644
--- a/tests/counterexample.at
+++ b/tests/counterexample.at
@@ -55,7 +55,7 @@ y: A | A B;
AT_BISON_CHECK_CEX(
[[input.y: warning: 1 shift/reduce conflict [-Wconflicts-sr]
input.y: warning: shift/reduce conflict on token B [-Wcounterexamples]
- Example A . B C
+ Example: A . B C
Shift derivation
s
`-> y c
@@ -95,7 +95,7 @@ bc: B bc C | B C;
AT_BISON_CHECK_CEX(
[[input.y: warning: 1 shift/reduce conflict [-Wconflicts-sr]
input.y: warning: shift/reduce conflict on token B [-Wcounterexamples]
- Example A . B C
+ Example: A . B C
Shift derivation
s
`-> ac
@@ -107,7 +107,7 @@ input.y: warning: shift/reduce conflict on token B [-Wcounterexamples]
`-> a bc
`-> A . `-> B C
input.y: warning: shift/reduce conflict on token B [-Wcounterexamples]
- Example A A . B B C C
+ Example: A A . B B C C
Shift derivation
s
`-> ac
@@ -157,7 +157,7 @@ xby: B | X xby Y;
AT_BISON_CHECK_CEX(
[[input.y: warning: 2 shift/reduce conflicts [-Wconflicts-sr]
input.y: warning: shift/reduce conflict on token B [-Wcounterexamples]
- Example A . B
+ Example: A . B
Shift derivation
s
`-> A xby
@@ -168,14 +168,14 @@ input.y: warning: shift/reduce conflict on token B [-Wcounterexamples]
`-> A x `-> B y
`-> . `-> %empty
input.y: warning: shift/reduce conflict on token B [-Wcounterexamples]
- First example A X . B Y $end
+ First example: A X . B Y $end
Shift derivation
$accept
`-> s $end
`-> A xby
`-> X xby Y
`-> . B
- Second example A X . B y $end
+ Second example: A X . B y $end
Reduce derivation
$accept
`-> s $end
@@ -220,14 +220,14 @@ bc: B C;
AT_BISON_CHECK_CEX(
[[input.y: warning: 1 shift/reduce conflict [-Wconflicts-sr]
input.y: warning: shift/reduce conflict on token C [-Wcounterexamples]
- First example B . C $end
+ First example: B . C $end
Shift derivation
$accept
`-> g $end
`-> x
`-> bc
`-> B . C
- Second example B . C D $end
+ Second example: B . C D $end
Reduce derivation
$accept
`-> g $end
@@ -265,14 +265,14 @@ y: A A B;
AT_BISON_CHECK_CEX(
[[input.y: warning: 1 shift/reduce conflict [-Wconflicts-sr]
input.y: warning: shift/reduce conflict on token A [-Wcounterexamples]
- First example A . A B $end
+ First example: A . A B $end
Shift derivation
$accept
`-> s $end
`-> t
`-> y
`-> A . A B
- Second example A . A $end
+ Second example: A . A $end
Reduce derivation
$accept
`-> s $end
@@ -314,7 +314,7 @@ y: Y;
AT_BISON_CHECK_CEX(
[[input.y: warning: 2 shift/reduce conflicts [-Wconflicts-sr]
input.y: warning: shift/reduce conflict on token A [-Wcounterexamples]
- Example b . A X X Y
+ Example: b . A X X Y
Shift derivation
a
`-> s
@@ -326,13 +326,13 @@ input.y: warning: shift/reduce conflict on token A [-Wcounterexamples]
`-> b . `-> A x xy
`-> X `-> X Y
input.y: warning: shift/reduce conflict on token X [-Wcounterexamples]
- First example A X . X
+ First example: A X . X
Shift derivation
a
`-> t
`-> A xx
`-> X . X
- Second example X . X xy
+ Second example: X . X xy
Reduce derivation
a
`-> x t
@@ -372,7 +372,7 @@ b : A | b;
AT_BISON_CHECK_CEX(
[[input.y: warning: 1 reduce/reduce conflict [-Wconflicts-rr]
input.y: warning: reduce/reduce conflict on token $end [-Wcounterexamples]
- Example A b .
+ Example: A b .
First derivation
a
`-> A b .
@@ -409,13 +409,13 @@ b: D;
AT_BISON_CHECK_CEX(
[[input.y: warning: 2 reduce/reduce conflicts [-Wconflicts-rr]
input.y: warning: reduce/reduce conflict on tokens A, C [-Wcounterexamples]
- First example D . A $end
+ First example: D . A $end
First derivation
$accept
`-> s $end
`-> a A
`-> D .
- Second example B D . A $end
+ Second example: B D . A $end
Second derivation
$accept
`-> s $end
@@ -452,13 +452,13 @@ AT_BISON_CHECK_CEX(
[[input.y: warning: 1 shift/reduce conflict [-Wconflicts-sr]
input.y: warning: shift/reduce conflict on token J [-Wcounterexamples]
time limit exceeded: XXX
- First example H i . J K $end
+ First example: H i . J K $end
Shift derivation
$accept
`-> a $end
`-> H i
`-> i . J K
- Second example H i . J $end
+ Second example: H i . J $end
Reduce derivation
$accept
`-> s $end
@@ -499,7 +499,7 @@ b: A B C | A B D;
AT_BISON_CHECK_CEX(
[[input.y: warning: 1 shift/reduce conflict [-Wconflicts-sr]
input.y: warning: shift/reduce conflict on token B [-Wcounterexamples]
- Example N A . B C
+ Example: N A . B C
Shift derivation
s
`-> n
@@ -511,7 +511,7 @@ input.y: warning: shift/reduce conflict on token B [-Wcounterexamples]
`-> N a B
`-> A .
input.y: warning: shift/reduce conflict on token B [-Wcounterexamples]
- Example N N A . B D C
+ Example: N N A . B D C
Shift derivation
s
`-> n
@@ -562,7 +562,7 @@ C : A c A;
AT_BISON_CHECK_CEX(
[[input.y: warning: 4 reduce/reduce conflicts [-Wconflicts-rr]
input.y: warning: reduce/reduce conflict on tokens b, c [-Wcounterexamples]
- Example B . b c
+ Example: B . b c
First derivation
S
`-> B C
@@ -576,7 +576,7 @@ input.y: warning: reduce/reduce conflict on tokens b, c [-Wcounterexamples]
`-> A b A
`-> . `-> %empty
input.y: warning: reduce/reduce conflict on tokens b, c [-Wcounterexamples]
- Example C . c b
+ Example: C . c b
First derivation
S
`-> C B
@@ -622,13 +622,13 @@ AT_BISON_CHECK_CEX(
[[input.y: warning: 1 shift/reduce conflict [-Wconflicts-sr]
input.y: warning: 6 reduce/reduce conflicts [-Wconflicts-rr]
input.y: warning: reduce/reduce conflict on token A [-Wcounterexamples]
- First example . c A A $end
+ First example: . c A A $end
First derivation
$accept
`-> a $end
`-> b d
`-> . `-> c A A
- Second example . c A A $end
+ Second example: . c A A $end
Second derivation
$accept
`-> a $end
@@ -636,7 +636,7 @@ input.y: warning: reduce/reduce conflict on token A [-Wcounterexamples]
`-> . `-> c A A
input.y: warning: reduce/reduce conflict on token A [-Wcounterexamples]
time limit exceeded: XXX
- First example b . c A A $end
+ First example: b . c A A $end
First derivation
$accept
`-> a $end
@@ -644,7 +644,7 @@ time limit exceeded: XXX
`-> a
`-> b d
`-> . `-> c A A
- Second example b . A $end
+ Second example: b . A $end
Second derivation
$accept
`-> a $end
@@ -653,7 +653,7 @@ time limit exceeded: XXX
`-> .
input.y: warning: reduce/reduce conflict on token A [-Wcounterexamples]
time limit exceeded: XXX
- First example c . c A A $end
+ First example: c . c A A $end
First derivation
$accept
`-> a $end
@@ -661,7 +661,7 @@ time limit exceeded: XXX
`-> a
`-> b d
`-> . `-> c A A
- Second example c . A $end
+ Second example: c . A $end
Second derivation
$accept
`-> a $end
@@ -670,12 +670,12 @@ time limit exceeded: XXX
`-> .
input.y: warning: shift/reduce conflict on token A [-Wcounterexamples]
time limit exceeded: XXX
- First example b c . A
+ First example: b c . A
Shift derivation
a
`-> b d
`-> c . A
- Second example b c . c A A $end
+ Second example: b c . c A A $end
Reduce derivation
$accept
`-> a $end
@@ -686,7 +686,7 @@ time limit exceeded: XXX
`-> b d
`-> . `-> c A A
input.y: warning: reduce/reduce conflict on token A [-Wcounterexamples]
- First example b c . c A A $end
+ First example: b c . c A A $end
First derivation
$accept
`-> a $end
@@ -696,7 +696,7 @@ input.y: warning: reduce/reduce conflict on token A [-Wcounterexamples]
`-> a
`-> b d
`-> . `-> c A A
- Second example b c . A $end
+ Second example: b c . A $end
Second derivation
$accept
`-> a $end
@@ -706,12 +706,12 @@ input.y: warning: reduce/reduce conflict on token A [-Wcounterexamples]
`-> c A
`-> .
input.y: warning: shift/reduce conflict on token A [-Wcounterexamples]
- First example b c . A
+ First example: b c . A
Shift derivation
a
`-> b d
`-> c . A
- Second example b c . A $end
+ Second example: b c . A $end
Reduce derivation
$accept
`-> a $end
@@ -721,7 +721,7 @@ input.y: warning: shift/reduce conflict on token A [-Wcounterexamples]
`-> c A
`-> .
input.y: warning: reduce/reduce conflict on token $end [-Wcounterexamples]
- Example b d .
+ Example: b d .
First derivation
a
`-> b d .
@@ -730,7 +730,7 @@ input.y: warning: reduce/reduce conflict on token $end [-Wcounterexamples]
`-> b d
`-> d .
input.y: warning: reduce/reduce conflict on token $end [-Wcounterexamples]
- Example c d .
+ Example: c d .
First derivation
a
`-> c d .
@@ -810,7 +810,7 @@ i: %empty | i J;
AT_BISON_CHECK_CEX(
[[input.y: warning: 1 shift/reduce conflict [-Wconflicts-sr]
input.y: warning: shift/reduce conflict on token J [-Wcounterexamples]
- Example H i J . J J
+ Example: H i J . J J
Shift derivation
s
`-> a J
@@ -854,7 +854,7 @@ d: D;
AT_BISON_CHECK_CEX(
[[input.y: warning: 1 shift/reduce conflict [-Wconflicts-sr]
input.y: warning: shift/reduce conflict on token D [-Wcounterexamples]
- Example A a . D
+ Example: A a . D
Shift derivation
s
`-> A a d
@@ -896,13 +896,13 @@ d: D;
AT_BISON_CHECK_CEX(
[[input.y: warning: 1 shift/reduce conflict [-Wconflicts-sr]
input.y: warning: shift/reduce conflict on token D [-Wcounterexamples]
- First example A a . D $end
+ First example: A a . D $end
Shift derivation
$accept
`-> s $end
`-> A a d
`-> . D
- Second example A a . D E $end
+ Second example: A a . D E $end
Reduce derivation
$accept
`-> s $end
diff --git a/tests/diagnostics.at b/tests/diagnostics.at
index ffec2928..d92e8bf4 100644
--- a/tests/diagnostics.at
+++ b/tests/diagnostics.at
@@ -536,45 +536,45 @@ exp
[1],
[[input.y: error: shift/reduce conflicts: 4 found, 0 expected
input.y: warning: shift/reduce conflict on token "+" [-Wcounterexamples]
- Example exp "+" exp • "+" exp
+ Example: exp "+" exp • "+" exp
Shift derivation
exp
↳ exp "+" exp
↳ exp • "+" exp
- Example exp "+" exp • "+" exp
+ Example: exp "+" exp • "+" exp
Reduce derivation
exp
↳ exp "+" exp
↳ exp "+" exp •
input.y: warning: shift/reduce conflict on token "else" [-Wcounterexamples]
- Example "if" exp "then" "if" exp "then" exp • "else" exp
+ Example: "if" exp "then" "if" exp "then" exp • "else" exp
Shift derivation
exp
↳ "if" exp "then" exp
↳ "if" exp "then" exp • "else" exp
- Example "if" exp "then" "if" exp "then" exp • "else" exp
+ Example: "if" exp "then" "if" exp "then" exp • "else" exp
Reduce derivation
exp
↳ "if" exp "then" exp "else" exp
↳ "if" exp "then" exp •
input.y: warning: shift/reduce conflict on token "+" [-Wcounterexamples]
- Example "if" exp "then" exp • "+" exp
+ Example: "if" exp "then" exp • "+" exp
Shift derivation
exp
↳ "if" exp "then" exp
↳ exp • "+" exp
- Example "if" exp "then" exp • "+" exp
+ Example: "if" exp "then" exp • "+" exp
Reduce derivation
exp
↳ exp "+" exp
↳ "if" exp "then" exp •
input.y: warning: shift/reduce conflict on token "+" [-Wcounterexamples]
- Example "if" exp "then" exp "else" exp • "+" exp
+ Example: "if" exp "then" exp "else" exp • "+" exp
Shift derivation
exp
↳ "if" exp "then" exp "else" exp
↳ exp • "+" exp
- Example "if" exp "then" exp "else" exp • "+" exp
+ Example: "if" exp "then" exp "else" exp • "+" exp
Reduce derivation
exp
↳ exp "+" exp
@@ -618,7 +618,7 @@ input.y:31.4: warning: empty rule without %empty [-W
| %empty
input.y: error: reduce/reduce conflicts: 1 found, 0 expected
input.y: warning: reduce/reduce conflict on token "X" [-Wcounterexamples]
- Example "X" • "X" "quuux" "X"
+ Example: "X" • "X" "quuux" "X"
First derivation
exp
↳ x1 e1 foo1 x1
@@ -628,7 +628,7 @@ input.y: warning: reduce/reduce conflict on token "X" [ ↳ x2 ↳ "quuux"
↳ x3
↳ "X"
- Example "X" • "X" "quuux" "X"
+ Example: "X" • "X" "quuux" "X"
Second derivation
exp
↳ y1 e2 bar1 y1
diff --git a/tests/report.at b/tests/report.at
index 645c3b57..8d0a210b 100644
--- a/tests/report.at
+++ b/tests/report.at
@@ -1538,7 +1538,7 @@ AT_CHECK([LC_ALL="$locale" bison -fno-caret -o input.cc -rall -Wcex --graph=inpu
[[input.y: warning: 3 shift/reduce conflicts [-Wconflicts-sr]
input.y: warning: 3 reduce/reduce conflicts [-Wconflicts-rr]
input.y: warning: shift/reduce conflict on token "⊕" [-Wcounterexamples]
- Example exp "+" exp • "⊕" exp
+ Example: exp "+" exp • "⊕" exp
Shift derivation
exp
↳ exp "+" exp
@@ -1548,7 +1548,7 @@ input.y: warning: shift/reduce conflict on token "⊕" [-Wcounterexamples]
↳ exp "⊕" exp
↳ exp "+" exp •
input.y: warning: reduce/reduce conflict on tokens $end, "+", "⊕" [-Wcounterexamples]
- Example exp "+" exp •
+ Example: exp "+" exp •
First derivation
exp
↳ exp "+" exp •
@@ -1556,7 +1556,7 @@ input.y: warning: reduce/reduce conflict on tokens $end, "+", "⊕" [-Wcounterex
exp
↳ exp "+" exp •
input.y: warning: shift/reduce conflict on token "⊕" [-Wcounterexamples]
- Example exp "+" exp • "⊕" exp
+ Example: exp "+" exp • "⊕" exp
Shift derivation
exp
↳ exp "+" exp
@@ -1566,7 +1566,7 @@ input.y: warning: shift/reduce conflict on token "⊕" [-Wcounterexamples]
↳ exp "⊕" exp
↳ exp "+" exp •
input.y: warning: shift/reduce conflict on token "⊕" [-Wcounterexamples]
- Example exp "⊕" exp • "⊕" exp
+ Example: exp "⊕" exp • "⊕" exp
Shift derivation
exp
↳ exp "⊕" exp
@@ -1576,7 +1576,7 @@ input.y: warning: shift/reduce conflict on token "⊕" [-Wcounterexamples]
↳ exp "⊕" exp
↳ exp "⊕" exp •
input.y: warning: shift/reduce conflict on token "+" [-Wcounterexamples]
- Example exp "⊕" exp • "+" exp
+ Example: exp "⊕" exp • "+" exp
Shift derivation
exp
↳ exp "⊕" exp
@@ -1586,7 +1586,7 @@ input.y: warning: shift/reduce conflict on token "+" [-Wcounterexamples]
↳ exp "+" exp
↳ exp "⊕" exp •
input.y: warning: shift/reduce conflict on token "+" [-Wcounterexamples]
- Example exp "⊕" exp • "+" exp
+ Example: exp "⊕" exp • "+" exp
Shift derivation
exp
↳ exp "⊕" exp
@@ -1742,7 +1742,7 @@ State 7
shift/reduce conflict on token "⊕":
2 exp: exp "+" exp •
1 exp: exp • "⊕" exp
- Example exp "+" exp • "⊕" exp
+ Example: exp "+" exp • "⊕" exp
Shift derivation
exp
↳ exp "+" exp
@@ -1755,7 +1755,7 @@ State 7
reduce/reduce conflict on tokens $end, "+", "⊕":
2 exp: exp "+" exp •
3 exp: exp "+" exp •
- Example exp "+" exp •
+ Example: exp "+" exp •
First derivation
exp
↳ exp "+" exp •
@@ -1766,7 +1766,7 @@ State 7
shift/reduce conflict on token "⊕":
3 exp: exp "+" exp •
1 exp: exp • "⊕" exp
- Example exp "+" exp • "⊕" exp
+ Example: exp "+" exp • "⊕" exp
Shift derivation
exp
↳ exp "+" exp
@@ -1795,7 +1795,7 @@ State 8
shift/reduce conflict on token "⊕":
1 exp: exp "⊕" exp •
1 exp: exp • "⊕" exp
- Example exp "⊕" exp • "⊕" exp
+ Example: exp "⊕" exp • "⊕" exp
Shift derivation
exp
↳ exp "⊕" exp
@@ -1808,7 +1808,7 @@ State 8
shift/reduce conflict on token "+":
1 exp: exp "⊕" exp •
2 exp: exp • "+" exp
- Example exp "⊕" exp • "+" exp
+ Example: exp "⊕" exp • "+" exp
Shift derivation
exp
↳ exp "⊕" exp
@@ -1821,7 +1821,7 @@ State 8
shift/reduce conflict on token "+":
1 exp: exp "⊕" exp •
3 exp: exp • "+" exp
- Example exp "⊕" exp • "+" exp
+ Example: exp "⊕" exp • "+" exp
Shift derivation
exp
↳ exp "⊕" exp