# Exercising Bison Grammar Reduction. -*- Autotest -*-
-# Copyright (C) 2001-2002, 2007-2011 Free Software Foundation, Inc.
+# Copyright (C) 2001-2002, 2007-2012 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
[],
dnl TABLES
-[[state 0
+[[State 0
0 $accept: . S $end
1 S: . 'a' A 'a'
S go to state 4
-state 1
+State 1
1 S: 'a' . A 'a'
4 A: . 'a' 'a'
A go to state 6
-state 2
+State 2
2 S: 'b' . A 'b'
4 A: . 'a' 'a'
A go to state 7
-state 3
+State 3
3 S: 'c' . c
4 A: . 'a' 'a'
c go to state 10
-state 4
+State 4
0 $accept: S . $end
$end shift, and go to state 11
-state 5
+State 5
4 A: 'a' . 'a'
5 | 'a' . ]AT_COND_CASE([[LALR]], [[['a', 'b']]], [[['a']]])[
Conflict between rule 5 and token 'a' resolved as reduce (%left 'a').
-state 6
+State 6
1 S: 'a' A . 'a'
'a' shift, and go to state 13
-state 7
+State 7
2 S: 'b' A . 'b'
'b' shift, and go to state 14
-state 8
+State 8
4 A: 'a' . 'a'
5 | 'a' . [$end]
[[$default]])[ reduce using rule 5 (A)
-state 9
+State 9
7 c: A .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[
[[$default]])[ reduce using rule 7 (c)
-state 10
+State 10
3 S: 'c' c .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[
[[$default]])[ reduce using rule 3 (S)
-state 11
+State 11
0 $accept: S $end .
$default accept
-state 12
+State 12
4 A: 'a' 'a' .]AT_COND_CASE([[canonical LR]], [[ ['a']]])[
[[$default]])[ reduce using rule 4 (A)
-state 13
+State 13
1 S: 'a' A 'a' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[
[[$default]])[ reduce using rule 1 (S)
-state 14
+State 14
2 S: 'b' A 'b' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[
[[$default]])[ reduce using rule 2 (S)
-state 15
+State 15
6 c: 'a' 'b' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[
[[]], [[
-state 16
+State 16
4 A: 'a' . 'a'
5 | 'a' . ['b']
[[$default]])[ reduce using rule 5 (A)]AT_COND_CASE([[canonical LR]], [[
-state 17
+State 17
4 A: 'a' 'a' . [$end]
$end reduce using rule 4 (A)
-state 18
+State 18
4 A: 'a' 'a' . ['b']
[],
dnl TABLES
-[[state 0
+[[State 0
0 $accept: . S $end
1 S: . 'a' A 'a'
S go to state 4
-state 1
+State 1
1 S: 'a' . A 'a'
4 A: . 'a' 'a' 'a'
A go to state 6
-state 2
+State 2
2 S: 'b' . A 'b'
4 A: . 'a' 'a' 'a'
A go to state 7
-state 3
+State 3
3 S: 'c' . c
4 A: . 'a' 'a' 'a'
c go to state 10
-state 4
+State 4
0 $accept: S . $end
$end shift, and go to state 11
-state 5
+State 5
4 A: 'a' . 'a' 'a'
5 | 'a' . 'a'
'a' shift, and go to state 12
-state 6
+State 6
1 S: 'a' A . 'a'
'a' shift, and go to state 13
-state 7
+State 7
2 S: 'b' A . 'b'
'b' shift, and go to state 14
-state 8
+State 8
4 A: 'a' . 'a' 'a'
5 | 'a' . 'a'
'a' shift, and go to state 15
-state 9
+State 9
7 c: A .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[
[[$default]])[ reduce using rule 7 (c)
-state 10
+State 10
3 S: 'c' c .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[
[[$default]])[ reduce using rule 3 (S)
-state 11
+State 11
0 $accept: S $end .
$default accept
-state 12
+State 12
4 A: 'a' 'a' . 'a'
5 | 'a' 'a' . ]AT_COND_CASE([[LALR]], [[['a', 'b']]], [[['a']]])[
Conflict between rule 5 and token 'a' resolved as reduce (%left 'a').
-state 13
+State 13
1 S: 'a' A 'a' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[
[[$default]])[ reduce using rule 1 (S)
-state 14
+State 14
2 S: 'b' A 'b' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[
[[$default]])[ reduce using rule 2 (S)
-state 15
+State 15
4 A: 'a' 'a' . 'a'
5 | 'a' 'a' . [$end]
[[$default]])[ reduce using rule 5 (A)
-state 16
+State 16
4 A: 'a' 'a' 'a' .]AT_COND_CASE([[canonical LR]], [[ ['a']]])[
[[$default]])[ reduce using rule 4 (A)
-state 17
+State 17
6 c: 'a' 'a' 'b' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[
[[]], [[
-state 18
+State 18
4 A: 'a' . 'a' 'a'
5 | 'a' . 'a'
[[19]])[
-state 19]AT_COND_CASE([[canonical LR]], [[
+State 19]AT_COND_CASE([[canonical LR]], [[
4 A: 'a' 'a' 'a' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[
[[$default]])[ reduce using rule 4 (A)
-state 20]])[
+State 20]])[
4 A: 'a' 'a' . 'a'
5 | 'a' 'a' . ['b']
[[$default]])[ reduce using rule 5 (A)]AT_COND_CASE([[canonical LR]], [[
-state 21
+State 21
4 A: 'a' 'a' 'a' .]AT_COND_CASE([[canonical LR]], [[ ['b']]])[
[],
dnl TABLES
-[[state 0
+[[State 0
0 $accept: . S $end
1 S: . 'a' A 'a'
S go to state 4
-state 1
+State 1
1 S: 'a' . A 'a'
4 A: . 'a' 'a' B
A go to state 6
-state 2
+State 2
2 S: 'b' . A 'b'
4 A: . 'a' 'a' B
A go to state 7
-state 3
+State 3
3 S: 'c' . c
4 A: . 'a' 'a' B
c go to state 10
-state 4
+State 4
0 $accept: S . $end
$end shift, and go to state 11
-state 5
+State 5
4 A: 'a' . 'a' B
'a' shift, and go to state 12
-state 6
+State 6
1 S: 'a' A . 'a'
'a' shift, and go to state 13
-state 7
+State 7
2 S: 'b' A . 'b'
'b' shift, and go to state 14
-state 8
+State 8
4 A: 'a' . 'a' B
7 c: 'a' . 'a' 'b'
'a' shift, and go to state 15
-state 9
+State 9
8 c: A .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[
[[$default]])[ reduce using rule 8 (c)
-state 10
+State 10
3 S: 'c' c .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[
[[$default]])[ reduce using rule 3 (S)
-state 11
+State 11
0 $accept: S $end .
$default accept
-state 12
+State 12
4 A: 'a' 'a' . B
5 B: . 'a'
Conflict between rule 6 and token 'a' resolved as reduce (%left 'a').
-state 13
+State 13
1 S: 'a' A 'a' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[
[[$default]])[ reduce using rule 1 (S)
-state 14
+State 14
2 S: 'b' A 'b' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[
[[$default]])[ reduce using rule 2 (S)
-state 15
+State 15
4 A: 'a' 'a' . B
5 B: . 'a'
B go to state ]AT_COND_CASE([[canonical LR]], [[21]], [[17]])[
-state 16
+State 16
5 B: 'a' .]AT_COND_CASE([[canonical LR]], [[ ['a']]])[
[[$default]])[ reduce using rule 5 (B)
-state 17
+State 17
4 A: 'a' 'a' B .]AT_COND_CASE([[canonical LR]], [[ ['a']]])[
[[$default]])[ reduce using rule 4 (A)
-state 18
+State 18
7 c: 'a' 'a' 'b' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[
[[$default]])[ reduce using rule 7 (c)]AT_COND_CASE([[LALR]], [], [[
-state 19
+State 19
4 A: 'a' . 'a' B
[[20]])[
-state 20]AT_COND_CASE([[canonical LR]], [[
+State 20]AT_COND_CASE([[canonical LR]], [[
5 B: 'a' . [$end]
$end reduce using rule 5 (B)
-state 21
+State 21
4 A: 'a' 'a' B . [$end]
$end reduce using rule 4 (A)
-state 22]])[
+State 22]])[
4 A: 'a' 'a' . B
5 B: . 'a'
B go to state ]AT_COND_CASE([[canonical LR]], [[24
-state 23
+State 23
5 B: 'a' . ['b']
'b' reduce using rule 5 (B)
-state 24
+State 24
4 A: 'a' 'a' B . ['b']
]], [])],
dnl TABLES
-[[state 0
+[[State 0
0 $accept: . S $end
1 S: . 'a' A 'f'
S go to state 4
-state 1
+State 1
1 S: 'a' . A 'f'
2 | 'a' . B
B go to state 7
-state 2
+State 2
3 S: 'b' . A 'f'
4 | 'b' . B 'g'
B go to state 10
-state 3
+State 3
6 S: 'c' . 'c' A 'g'
7 | 'c' . 'c' B
'c' shift, and go to state 11
-state 4
+State 4
0 $accept: S . $end
$end shift, and go to state 12
-state 5
+State 5
8 A: 'd' . 'e'
9 B: 'd' . 'e'
[[20]])[
-state 6
+State 6
1 S: 'a' A . 'f'
'f' shift, and go to state 14
-state 7
+State 7
2 S: 'a' B .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[
[[$default]])[ reduce using rule 2 (S)
-state 8
+State 8
5 S: 'b' 'd' . [$end]
8 A: 'd' . 'e'
[[$default]])[ reduce using rule 5 (S)
-state 9
+State 9
3 S: 'b' A . 'f'
'f' shift, and go to state 15
-state 10
+State 10
4 S: 'b' B . 'g'
'g' shift, and go to state 16
-state 11
+State 11
6 S: 'c' 'c' . A 'g'
7 | 'c' 'c' . B
B go to state 18
-state 12
+State 12
0 $accept: S $end .
$default accept]AT_COND_CASE([[LALR]], [[
-state 13
+State 13
8 A: 'd' 'e' . ['f', 'g']
9 B: 'd' 'e' . [$end, 'g']
$default reduce using rule 8 (A)]], [[
-state 13
+State 13
8 A: 'd' 'e' . ['f']
9 B: 'd' 'e' . ]AT_COND_CASE([[canonical LR]], [[[$end]]], [[['g']]])[
[[$default]])[ reduce using rule 8 (A)]])[
-state 14
+State 14
1 S: 'a' A 'f' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[
[[$default]])[ reduce using rule 1 (S)
-state 15
+State 15
3 S: 'b' A 'f' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[
[[$default]])[ reduce using rule 3 (S)
-state 16
+State 16
4 S: 'b' B 'g' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[
[[$default]])[ reduce using rule 4 (S)
-state 17
+State 17
6 S: 'c' 'c' A . 'g'
'g' shift, and go to state 19
-state 18
+State 18
7 S: 'c' 'c' B .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[
[[$default]])[ reduce using rule 7 (S)
-state 19
+State 19
6 S: 'c' 'c' A 'g' .]AT_COND_CASE([[canonical LR]], [[ [$end]]])[
[[]], [[
-state 20]AT_COND_CASE([[canonical LR]], [[
+State 20]AT_COND_CASE([[canonical LR]], [[
8 A: 'd' 'e' . ['f']
9 B: 'd' 'e' . ['g']
'g' reduce using rule 9 (B)
-state 21
+State 21
8 A: 'd' . 'e'
9 B: 'd' . 'e'
'e' shift, and go to state 22
-state 22
+State 22
8 A: 'd' 'e' . ['g']
9 B: 'd' 'e' . [$end]
m4_define([AT_TEST_LR_DEFAULT_REDUCTIONS],
[
AT_TEST_TABLES_AND_PARSE([[no %define lr.default-reductions]],
- [[full]], [[]],
+ [[most]], [[]],
[[]],
[$1], [$2], [[]], [$3])
-AT_TEST_TABLES_AND_PARSE([[%define lr.default-reductions full]],
- [[full]], [[]],
- [[%define lr.default-reductions full]],
+AT_TEST_TABLES_AND_PARSE([[%define lr.default-reductions most]],
+ [[most]], [[]],
+ [[%define lr.default-reductions most]],
[$1], [$2], [[]], [$3])
AT_TEST_TABLES_AND_PARSE([[%define lr.default-reductions consistent]],
[[consistent]], [[]],
]],
dnl Visit each state mentioned above.
[['a', 'a']],
-[[state 0
+[[State 0
0 $accept: . start $end
1 start: . a b
a go to state 3
-state 1
+State 1
4 a: 'a' .]AT_COND_CASE([[accepting]], [[ [$end, 'a', 'b']
$default reduce using rule 4 (a)]])[
-state 2
+State 2
0 $accept: start . $end
$end shift, and go to state 4
-state 3
+State 3
1 start: a . b
2 | a . b 'a'
3 | a . c 'b'
5 b: . [$end, 'a']
- 6 c: . ['b']]AT_COND_CASE([[full]], [[
+ 6 c: . ['b']]AT_COND_CASE([[most]], [[
'b' reduce using rule 6 (c)
$default reduce using rule 5 (b)]], [[
c go to state 6
-state 4
+State 4
0 $accept: start $end .
$default accept
-state 5
+State 5
1 start: a b . [$end]
2 | a b . 'a'
'a' shift, and go to state 7
- ]AT_COND_CASE([[full]], [[$default]],
+ ]AT_COND_CASE([[most]], [[$default]],
[[$end]])[ reduce using rule 1 (start)
-state 6
+State 6
3 start: a c . 'b'
'b' shift, and go to state 8
-state 7
+State 7
2 start: a b 'a' .]AT_COND_CASE([[accepting]], [[ [$end]
$default reduce using rule 2 (start)]])[
-state 8
+State 8
3 start: a c 'b' .]AT_COND_CASE([[accepting]], [[ [$end]