[[input.y:4.9: warning: rule useless in parser due to conflicts: e: /* empty */ [-Wother]
]])
+AT_BISON_CHECK([-fcaret -o input.c input.y], 0, [],
+[[input.y:4.9: warning: rule useless in parser due to conflicts [-Wother]
+ e: 'e' | /* Nothing. */;
+ ^
+]])
+
AT_CLEANUP
# We must disable default reductions in inconsistent states in order to
# have an explicit list of all expected tokens.
-AT_NONASSOC_AND_EOF_CHECK([[-Dlr.default-reductions=consistent]],
+AT_NONASSOC_AND_EOF_CHECK([[-Dlr.default-reduction=consistent]],
[[correct]])
-# lr.default-reductions=consistent happens to work for this test case.
+# lr.default-reduction=consistent happens to work for this test case.
# However, for other grammars, lookahead sets can be merged for
# different left contexts, so it is still possible to have an incorrect
# expected list. Canonical LR is almost a general solution (that is, it
# Even canonical LR doesn't foresee the error for 'a'!
AT_CONSISTENT_ERRORS_CHECK([[%define lr.type ielr
- %define lr.default-reductions consistent]],
+ %define lr.default-reduction consistent]],
[AT_PREVIOUS_STATE_GRAMMAR],
[AT_PREVIOUS_STATE_INPUT],
[[$end]], [[ab]])
AT_CONSISTENT_ERRORS_CHECK([[%define lr.type ielr
- %define lr.default-reductions accepting]],
+ %define lr.default-reduction accepting]],
[AT_PREVIOUS_STATE_GRAMMAR],
[AT_PREVIOUS_STATE_INPUT],
[[$end]], [[ab]])
[['b']], [[none]])
# No C++ or Java test because yychar cannot be manipulated by users.
-AT_CONSISTENT_ERRORS_CHECK([[%define lr.default-reductions consistent]],
+AT_CONSISTENT_ERRORS_CHECK([[%define lr.default-reduction consistent]],
[AT_USER_ACTION_GRAMMAR],
[AT_USER_ACTION_INPUT],
[['b']], [[none]])
# Canonical LR doesn't foresee the error for 'a'!
-AT_CONSISTENT_ERRORS_CHECK([[%define lr.default-reductions accepting]],
+AT_CONSISTENT_ERRORS_CHECK([[%define lr.default-reduction accepting]],
[AT_USER_ACTION_GRAMMAR],
[AT_USER_ACTION_INPUT],
[[$end]], [[a]])
[AT_USER_ACTION_INPUT],
[['b']], [[none]])
AT_CONSISTENT_ERRORS_CHECK([[%define parse.lac full
- %define lr.default-reductions accepting]],
+ %define lr.default-reduction accepting]],
[AT_USER_ACTION_GRAMMAR],
[AT_USER_ACTION_INPUT],
[[$end]], [[none]])
on left: 1 2, on right: 0 1
-state 0
+State 0
0 $accept: . exp $end
1 exp: . exp OP exp
exp go to state 2
-state 1
+State 1
2 exp: NUM .
$default reduce using rule 2 (exp)
-state 2
+State 2
0 $accept: exp . $end
1 exp: exp . OP exp
OP shift, and go to state 4
-state 3
+State 3
0 $accept: exp $end .
$default accept
-state 4
+State 4
1 exp: . exp OP exp
1 | exp OP . exp
exp go to state 5
-state 5
+State 5
1 exp: exp . OP exp
1 | exp OP exp . [$end, OP]
on left: 1 2, on right: 0 1
-state 0
+State 0
0 $accept: . exp $end
1 exp: . exp OP exp
exp go to state 2
-state 1
+State 1
2 exp: NUM .
$default reduce using rule 2 (exp)
-state 2
+State 2
0 $accept: exp . $end
1 exp: exp . OP exp
OP shift, and go to state 4
-state 3
+State 3
0 $accept: exp $end .
$default accept
-state 4
+State 4
1 exp: . exp OP exp
1 | exp OP . exp
exp go to state 5
-state 5
+State 5
1 exp: exp . OP exp
1 | exp OP exp . [$end, OP]
on left: 4, on right: 2
-state 0
+State 0
0 $accept: . exp $end
1 exp: . num
id go to state 4
-state 1
+State 1
3 num: '0' . [$end]
4 id: '0' . [$end]
$default reduce using rule 3 (num)
-state 2
+State 2
0 $accept: exp . $end
$end shift, and go to state 5
-state 3
+State 3
1 exp: num .
$default reduce using rule 1 (exp)
-state 4
+State 4
2 exp: id .
$default reduce using rule 2 (exp)
-state 5
+State 5
0 $accept: exp $end .
]])
AT_BISON_CHECK([-o input.c input.y], 1, [],
-[[input.y: shift/reduce conflicts: 1 found, 0 expected
+[[input.y: error: shift/reduce conflicts: 1 found, 0 expected
]])
AT_CLEANUP
]])
AT_BISON_CHECK([-o input.c input.y], 1, [],
-[[input.y: shift/reduce conflicts: 1 found, 2 expected
+[[input.y: error: shift/reduce conflicts: 1 found, 2 expected
]])
AT_CLEANUP
]])
AT_BISON_CHECK([-o input.c input.y], 1, [],
-[[input.y: reduce/reduce conflicts: 1 found, 0 expected
+[[input.y: error: reduce/reduce conflicts: 1 found, 0 expected
]])
AT_CLEANUP
on left: 8 9 10, on right: 1
-state 0
+State 0
0 $accept: . start $end
1 start: . resolved_conflict 'a' reported_conflicts 'a'
Conflict between rule 3 and token 'a' resolved as reduce (%left 'a').
-state 1
+State 1
0 $accept: start . $end
$end shift, and go to state 3
-state 2
+State 2
1 start: resolved_conflict . 'a' reported_conflicts 'a'
'a' shift, and go to state 4
-state 3
+State 3
0 $accept: start $end .
$default accept
-state 4
+State 4
1 start: resolved_conflict 'a' . reported_conflicts 'a'
8 reported_conflicts: . 'a'
reported_conflicts go to state 6
-state 5
+State 5
8 reported_conflicts: 'a' . ['a']
9 | 'a' . ['a']
$default reduce using rule 8 (reported_conflicts)
-state 6
+State 6
1 start: resolved_conflict 'a' reported_conflicts . 'a'
'a' shift, and go to state 7
-state 7
+State 7
1 start: resolved_conflict 'a' reported_conflicts 'a' .
]])
AT_DATA([[input-keep.y]],
-[[%define lr.keep-unreachable-states
+[[%define lr.keep-unreachable-state
]])
AT_CHECK([[cat input.y >> input-keep.y]])
empty_c3: %prec 'd' ;
]])
AT_BISON_CHECK([[--report=all -o input.c input.y]], 0, [], [ignore])
-AT_CHECK([[cat input.output | sed -n '/^state 0$/,/^state 1$/p']], 0,
-[[state 0
+AT_CHECK([[cat input.output | sed -n '/^State 0$/,/^State 1$/p']], 0,
+[[State 0
0 $accept: . start $end
1 start: . 'a'
Conflict between rule 13 and token 'c' resolved as reduce ('c' < 'd').
-state 1
+State 1
]])
AT_CLEANUP
]])
AT_BISON_CHECK([[--report=all -o input.c input.y]], 0, [], [ignore])
-AT_CHECK([[cat input.output | sed -n '/^state 0$/,/^state 1$/p']], 0,
-[[state 0
+AT_CHECK([[cat input.output | sed -n '/^State 0$/,/^State 1$/p']], 0,
+[[State 0
0 $accept: . start $end
1 start: . 'a'
Conflict between rule 11 and token 'c' resolved as an error (%nonassoc 'c').
-state 1
+State 1
]])
AT_CLEANUP
if test -z "$sr_exp_i" && test "$sr_count" -ne 0; then
echo "warning: $sr_count shift/reduce conflicts"
elif test "$sr_exp_i" -ne "$sr_count"; then
- echo "shift/reduce conflicts: $sr_count found, $sr_exp_i expected"
+ echo "error: shift/reduce conflicts: $sr_count found, $sr_exp_i expected"
fi
if test -z "$rr_exp_i" && test "$rr_count" -ne 0; then
echo "warning: $rr_count reduce/reduce conflicts"
elif test "$rr_exp_i" -ne "$rr_count"; then
- echo "reduce/reduce conflicts: $rr_count found, $rr_exp_i expected"
+ echo "error: reduce/reduce conflicts: $rr_count found, $rr_exp_i expected"
fi
} | sed -e "s/^/$file: /" > experr
]AT_BISON_CHECK([[-Wnone $file]], [[1]], [[]], [[experr]])[