1cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Exercising Bison Grammar Reduction.                      -*- Autotest -*-
2cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# Copyright (C) 2001-2002, 2007-2012 Free Software Foundation, Inc.
4cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# This program is free software: you can redistribute it and/or modify
605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# it under the terms of the GNU General Public License as published by
705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# the Free Software Foundation, either version 3 of the License, or
805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# (at your option) any later version.
905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#
10cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# This program is distributed in the hope that it will be useful,
11cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# but WITHOUT ANY WARRANTY; without even the implied warranty of
12cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# GNU General Public License for more details.
1405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#
15cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# You should have received a copy of the GNU General Public License
1605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# along with this program.  If not, see <http://www.gnu.org/licenses/>.
17cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
18cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_BANNER([[Grammar Reduction.]])
19cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
20cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
21cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ------------------- ##
22cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Useless Terminals.  ##
23cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ------------------- ##
24cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
25cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_SETUP([Useless Terminals])
26cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
27cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_DATA([[input.y]],
28cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[[%verbose
2905436638acc7c010349a69c3395f1a57c642dc62Ying Wang%output "input.c"
30cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
31cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%token useless1
32cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%token useless2
33cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%token useless3
34cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%token useless4
35cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%token useless5
36cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%token useless6
37cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%token useless7
38cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%token useless8
39cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%token useless9
40cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
41cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%token useful
42cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%%
43cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectexp: useful;
44cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]])
45cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
4605436638acc7c010349a69c3395f1a57c642dc62Ying WangAT_BISON_CHECK([[input.y]])
47cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
48cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_CHECK([[sed -n '/^Grammar/q;/^$/!p' input.output]], 0,
4905436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[Terminals unused in grammar
50cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless1
51cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless2
52cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless3
53cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless4
54cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless5
55cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless6
56cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless7
57cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless8
58cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless9
59cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]])
60cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
61cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_CLEANUP
62cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
63cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
64cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
65cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ---------------------- ##
66cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Useless Nonterminals.  ##
67cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ---------------------- ##
68cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
69cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_SETUP([Useless Nonterminals])
70cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
71cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_DATA([[input.y]],
72cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[[%verbose
7305436638acc7c010349a69c3395f1a57c642dc62Ying Wang%output "input.c"
74cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
75cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%nterm useless1
76cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%nterm useless2
77cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%nterm useless3
78cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%nterm useless4
79cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%nterm useless5
80cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%nterm useless6
81cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%nterm useless7
82cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%nterm useless8
83cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%nterm useless9
84cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
85cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%token useful
86cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%%
87cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectexp: useful;
88cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]])
89cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
9005436638acc7c010349a69c3395f1a57c642dc62Ying WangAT_BISON_CHECK([[input.y]], 0, [],
9105436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[input.y: warning: 9 nonterminals useless in grammar
9205436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:4.8-15: warning: nonterminal useless in grammar: useless1
9305436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:5.8-15: warning: nonterminal useless in grammar: useless2
9405436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:6.8-15: warning: nonterminal useless in grammar: useless3
9505436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:7.8-15: warning: nonterminal useless in grammar: useless4
9605436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:8.8-15: warning: nonterminal useless in grammar: useless5
9705436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:9.8-15: warning: nonterminal useless in grammar: useless6
9805436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:10.8-15: warning: nonterminal useless in grammar: useless7
9905436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:11.8-15: warning: nonterminal useless in grammar: useless8
10005436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:12.8-15: warning: nonterminal useless in grammar: useless9
101cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]])
102cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
103cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_CHECK([[sed -n '/^Grammar/q;/^$/!p' input.output]], 0,
10405436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[Nonterminals useless in grammar
105cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless1
106cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless2
107cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless3
108cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless4
109cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless5
110cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless6
111cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless7
112cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless8
113cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless9
114cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]])
115cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
116cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_CLEANUP
117cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
118cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
119cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
120cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## --------------- ##
121cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Useless Rules.  ##
122cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## --------------- ##
123cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
124cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_SETUP([Useless Rules])
125cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
126cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_KEYWORDS([report])
127cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
128cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_DATA([[input.y]],
129cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[[%verbose
13005436638acc7c010349a69c3395f1a57c642dc62Ying Wang%output "input.c"
131cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%token useful
132cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%%
133cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectexp: useful;
134cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectuseless1: '1';
135cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectuseless2: '2';
136cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectuseless3: '3';
137cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectuseless4: '4';
138cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectuseless5: '5';
139cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectuseless6: '6';
140cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectuseless7: '7';
141cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectuseless8: '8';
142cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectuseless9: '9';
143cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]])
144cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
14505436638acc7c010349a69c3395f1a57c642dc62Ying WangAT_BISON_CHECK([[-fcaret input.y]], 0, [],
14605436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[input.y: warning: 9 nonterminals useless in grammar
14705436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y: warning: 9 rules useless in grammar
14805436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:6.1-8: warning: nonterminal useless in grammar: useless1
14905436638acc7c010349a69c3395f1a57c642dc62Ying Wang useless1: '1';
15005436638acc7c010349a69c3395f1a57c642dc62Ying Wang ^^^^^^^^
15105436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:7.1-8: warning: nonterminal useless in grammar: useless2
15205436638acc7c010349a69c3395f1a57c642dc62Ying Wang useless2: '2';
15305436638acc7c010349a69c3395f1a57c642dc62Ying Wang ^^^^^^^^
15405436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:8.1-8: warning: nonterminal useless in grammar: useless3
15505436638acc7c010349a69c3395f1a57c642dc62Ying Wang useless3: '3';
15605436638acc7c010349a69c3395f1a57c642dc62Ying Wang ^^^^^^^^
15705436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:9.1-8: warning: nonterminal useless in grammar: useless4
15805436638acc7c010349a69c3395f1a57c642dc62Ying Wang useless4: '4';
15905436638acc7c010349a69c3395f1a57c642dc62Ying Wang ^^^^^^^^
16005436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:10.1-8: warning: nonterminal useless in grammar: useless5
16105436638acc7c010349a69c3395f1a57c642dc62Ying Wang useless5: '5';
16205436638acc7c010349a69c3395f1a57c642dc62Ying Wang ^^^^^^^^
16305436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:11.1-8: warning: nonterminal useless in grammar: useless6
16405436638acc7c010349a69c3395f1a57c642dc62Ying Wang useless6: '6';
16505436638acc7c010349a69c3395f1a57c642dc62Ying Wang ^^^^^^^^
16605436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:12.1-8: warning: nonterminal useless in grammar: useless7
16705436638acc7c010349a69c3395f1a57c642dc62Ying Wang useless7: '7';
16805436638acc7c010349a69c3395f1a57c642dc62Ying Wang ^^^^^^^^
16905436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:13.1-8: warning: nonterminal useless in grammar: useless8
17005436638acc7c010349a69c3395f1a57c642dc62Ying Wang useless8: '8';
17105436638acc7c010349a69c3395f1a57c642dc62Ying Wang ^^^^^^^^
17205436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:14.1-8: warning: nonterminal useless in grammar: useless9
17305436638acc7c010349a69c3395f1a57c642dc62Ying Wang useless9: '9';
17405436638acc7c010349a69c3395f1a57c642dc62Ying Wang ^^^^^^^^
17505436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:6.11-13: warning: rule useless in grammar
17605436638acc7c010349a69c3395f1a57c642dc62Ying Wang useless1: '1';
17705436638acc7c010349a69c3395f1a57c642dc62Ying Wang           ^^^
17805436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:7.11-13: warning: rule useless in grammar
17905436638acc7c010349a69c3395f1a57c642dc62Ying Wang useless2: '2';
18005436638acc7c010349a69c3395f1a57c642dc62Ying Wang           ^^^
18105436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:8.11-13: warning: rule useless in grammar
18205436638acc7c010349a69c3395f1a57c642dc62Ying Wang useless3: '3';
18305436638acc7c010349a69c3395f1a57c642dc62Ying Wang           ^^^
18405436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:9.11-13: warning: rule useless in grammar
18505436638acc7c010349a69c3395f1a57c642dc62Ying Wang useless4: '4';
18605436638acc7c010349a69c3395f1a57c642dc62Ying Wang           ^^^
18705436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:10.11-13: warning: rule useless in grammar
18805436638acc7c010349a69c3395f1a57c642dc62Ying Wang useless5: '5';
18905436638acc7c010349a69c3395f1a57c642dc62Ying Wang           ^^^
19005436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:11.11-13: warning: rule useless in grammar
19105436638acc7c010349a69c3395f1a57c642dc62Ying Wang useless6: '6';
19205436638acc7c010349a69c3395f1a57c642dc62Ying Wang           ^^^
19305436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:12.11-13: warning: rule useless in grammar
19405436638acc7c010349a69c3395f1a57c642dc62Ying Wang useless7: '7';
19505436638acc7c010349a69c3395f1a57c642dc62Ying Wang           ^^^
19605436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:13.11-13: warning: rule useless in grammar
19705436638acc7c010349a69c3395f1a57c642dc62Ying Wang useless8: '8';
19805436638acc7c010349a69c3395f1a57c642dc62Ying Wang           ^^^
19905436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:14.11-13: warning: rule useless in grammar
20005436638acc7c010349a69c3395f1a57c642dc62Ying Wang useless9: '9';
20105436638acc7c010349a69c3395f1a57c642dc62Ying Wang           ^^^
20205436638acc7c010349a69c3395f1a57c642dc62Ying Wang]])
20305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
20405436638acc7c010349a69c3395f1a57c642dc62Ying WangAT_BISON_CHECK([[input.y]], 0, [],
20505436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[input.y: warning: 9 nonterminals useless in grammar
20605436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y: warning: 9 rules useless in grammar
20705436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:6.1-8: warning: nonterminal useless in grammar: useless1
20805436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:7.1-8: warning: nonterminal useless in grammar: useless2
20905436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:8.1-8: warning: nonterminal useless in grammar: useless3
21005436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:9.1-8: warning: nonterminal useless in grammar: useless4
21105436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:10.1-8: warning: nonterminal useless in grammar: useless5
21205436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:11.1-8: warning: nonterminal useless in grammar: useless6
21305436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:12.1-8: warning: nonterminal useless in grammar: useless7
21405436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:13.1-8: warning: nonterminal useless in grammar: useless8
21505436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:14.1-8: warning: nonterminal useless in grammar: useless9
21605436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:6.11-13: warning: rule useless in grammar: useless1: '1'
21705436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:7.11-13: warning: rule useless in grammar: useless2: '2'
21805436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:8.11-13: warning: rule useless in grammar: useless3: '3'
21905436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:9.11-13: warning: rule useless in grammar: useless4: '4'
22005436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:10.11-13: warning: rule useless in grammar: useless5: '5'
22105436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:11.11-13: warning: rule useless in grammar: useless6: '6'
22205436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:12.11-13: warning: rule useless in grammar: useless7: '7'
22305436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:13.11-13: warning: rule useless in grammar: useless8: '8'
22405436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:14.11-13: warning: rule useless in grammar: useless9: '9'
225cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]])
226cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
227cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_CHECK([[sed -n '/^Grammar/q;/^$/!p' input.output]], 0,
22805436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[Nonterminals useless in grammar
229cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless1
230cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless2
231cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless3
232cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless4
233cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless5
234cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless6
235cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless7
236cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless8
237cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless9
23805436638acc7c010349a69c3395f1a57c642dc62Ying WangTerminals unused in grammar
239cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   '1'
240cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   '2'
241cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   '3'
242cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   '4'
243cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   '5'
244cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   '6'
245cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   '7'
246cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   '8'
247cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   '9'
24805436638acc7c010349a69c3395f1a57c642dc62Ying WangRules useless in grammar
249cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    2 useless1: '1'
250cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    3 useless2: '2'
251cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    4 useless3: '3'
252cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    5 useless4: '4'
253cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    6 useless5: '5'
254cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    7 useless6: '6'
255cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    8 useless7: '7'
256cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    9 useless8: '8'
257cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   10 useless9: '9'
258cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]])
259cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
260cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_CLEANUP
261cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
262cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
263cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
264cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ------------------- ##
265cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Reduced Automaton.  ##
266cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ------------------- ##
267cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
268cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Check that the automaton is that as the for the grammar reduced by
269cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# hand.
270cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
271cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_SETUP([Reduced Automaton])
272cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
273cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_KEYWORDS([report])
274cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
275cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# The non reduced grammar.
276cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# ------------------------
277cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_DATA([[not-reduced.y]],
278cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[[/* A useless token. */
279cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%token useless_token
280cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* A useful one. */
281cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%token useful
282cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%verbose
28305436638acc7c010349a69c3395f1a57c642dc62Ying Wang%output "not-reduced.c"
284cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
285cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%%
286cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
287cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectexp: useful            { /* A useful action. */ }
288cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   | non_productive    { /* A non productive action. */ }
289cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   ;
290cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
291cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectnot_reachable: useful  { /* A not reachable action. */ }
292cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project             ;
293cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
294cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectnon_productive: non_productive useless_token
295cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project                       { /* Another non productive action. */ }
296cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project              ;
297cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%%
298cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]])
299cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
30005436638acc7c010349a69c3395f1a57c642dc62Ying WangAT_BISON_CHECK([[-fcaret not-reduced.y]], 0, [],
30105436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[not-reduced.y: warning: 2 nonterminals useless in grammar
30205436638acc7c010349a69c3395f1a57c642dc62Ying Wangnot-reduced.y: warning: 3 rules useless in grammar
30305436638acc7c010349a69c3395f1a57c642dc62Ying Wangnot-reduced.y:14.1-13: warning: nonterminal useless in grammar: not_reachable
30405436638acc7c010349a69c3395f1a57c642dc62Ying Wang not_reachable: useful  { /* A not reachable action. */ }
30505436638acc7c010349a69c3395f1a57c642dc62Ying Wang ^^^^^^^^^^^^^
30605436638acc7c010349a69c3395f1a57c642dc62Ying Wangnot-reduced.y:11.6-19: warning: nonterminal useless in grammar: non_productive
30705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    | non_productive    { /* A non productive action. */ }
30805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      ^^^^^^^^^^^^^^
30905436638acc7c010349a69c3395f1a57c642dc62Ying Wangnot-reduced.y:11.6-57: warning: rule useless in grammar
31005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    | non_productive    { /* A non productive action. */ }
31105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
31205436638acc7c010349a69c3395f1a57c642dc62Ying Wangnot-reduced.y:14.16-56: warning: rule useless in grammar
31305436638acc7c010349a69c3395f1a57c642dc62Ying Wang not_reachable: useful  { /* A not reachable action. */ }
31405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
31505436638acc7c010349a69c3395f1a57c642dc62Ying Wangnot-reduced.y:17.17-18.63: warning: rule useless in grammar
31605436638acc7c010349a69c3395f1a57c642dc62Ying Wang non_productive: non_productive useless_token
31705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
31805436638acc7c010349a69c3395f1a57c642dc62Ying Wang]])
31905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
32005436638acc7c010349a69c3395f1a57c642dc62Ying WangAT_BISON_CHECK([[not-reduced.y]], 0, [],
32105436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[not-reduced.y: warning: 2 nonterminals useless in grammar
32205436638acc7c010349a69c3395f1a57c642dc62Ying Wangnot-reduced.y: warning: 3 rules useless in grammar
32305436638acc7c010349a69c3395f1a57c642dc62Ying Wangnot-reduced.y:14.1-13: warning: nonterminal useless in grammar: not_reachable
32405436638acc7c010349a69c3395f1a57c642dc62Ying Wangnot-reduced.y:11.6-19: warning: nonterminal useless in grammar: non_productive
32505436638acc7c010349a69c3395f1a57c642dc62Ying Wangnot-reduced.y:11.6-57: warning: rule useless in grammar: exp: non_productive
32605436638acc7c010349a69c3395f1a57c642dc62Ying Wangnot-reduced.y:14.16-56: warning: rule useless in grammar: not_reachable: useful
32705436638acc7c010349a69c3395f1a57c642dc62Ying Wangnot-reduced.y:17.17-18.63: warning: rule useless in grammar: non_productive: non_productive useless_token
328cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]])
329cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
330cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_CHECK([[sed -n '/^Grammar/q;/^$/!p' not-reduced.output]], 0,
33105436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[Nonterminals useless in grammar
332cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   not_reachable
333cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   non_productive
33405436638acc7c010349a69c3395f1a57c642dc62Ying WangTerminals unused in grammar
335cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   useless_token
33605436638acc7c010349a69c3395f1a57c642dc62Ying WangRules useless in grammar
337cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    2 exp: non_productive
338cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    3 not_reachable: useful
339cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    4 non_productive: non_productive useless_token
340cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]])
341cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
342cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# The reduced grammar.
343cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# --------------------
344cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_DATA([[reduced.y]],
345cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[[/* A useless token. */
346cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%token useless_token
347cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* A useful one. */
348cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%token useful
349cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%verbose
35005436638acc7c010349a69c3395f1a57c642dc62Ying Wang%output "reduced.c"
351cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
352cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%%
353cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
354cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectexp: useful            { /* A useful action. */ }
355cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project//   | non_productive    { /* A non productive action. */ } */
356cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   ;
357cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
358cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project//not_reachable: useful  { /* A not reachable action. */ }
359cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project//             ;
360cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
361cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project//non_productive: non_productive useless_token
362cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project//                       { /* Another non productive action. */ }
363cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project//              ;
364cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%%
365cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]])
366cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
36705436638acc7c010349a69c3395f1a57c642dc62Ying WangAT_BISON_CHECK([[reduced.y]])
368cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
369cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# Comparing the parsers.
370cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectcp reduced.c expout
371cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_CHECK([sed 's/not-reduced/reduced/g' not-reduced.c], 0, [expout])
372cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
373cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_CLEANUP
374cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
375cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
376cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
377cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ------------------- ##
378cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Underivable Rules.  ##
379cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ------------------- ##
380cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
381cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_SETUP([Underivable Rules])
382cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
383cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_KEYWORDS([report])
384cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
385cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_DATA([[input.y]],
386cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project[[%verbose
38705436638acc7c010349a69c3395f1a57c642dc62Ying Wang%output "input.c"
388cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%token useful
389cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%%
390cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectexp: useful | underivable;
391cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectunderivable: indirection;
392cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectindirection: underivable;
393cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]])
394cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
39505436638acc7c010349a69c3395f1a57c642dc62Ying WangAT_BISON_CHECK([[input.y]], 0, [],
39605436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[input.y: warning: 2 nonterminals useless in grammar
39705436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y: warning: 3 rules useless in grammar
39805436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:5.15-25: warning: nonterminal useless in grammar: underivable
39905436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:6.14-24: warning: nonterminal useless in grammar: indirection
40005436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:5.15-25: warning: rule useless in grammar: exp: underivable
40105436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:6.14-24: warning: rule useless in grammar: underivable: indirection
40205436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y:7.14-24: warning: rule useless in grammar: indirection: underivable
403cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]])
404cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
405cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_CHECK([[sed -n '/^Grammar/q;/^$/!p' input.output]], 0,
40605436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[Nonterminals useless in grammar
407cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   underivable
408cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   indirection
40905436638acc7c010349a69c3395f1a57c642dc62Ying WangRules useless in grammar
410cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    2 exp: underivable
411cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    3 underivable: indirection
412cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project    4 indirection: underivable
413cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]])
414cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
415cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_CLEANUP
416cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
417cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
418cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
419cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ---------------- ##
420cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## Empty Language.  ##
421cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project## ---------------- ##
422cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
423cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_SETUP([Empty Language])
424cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
425cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_DATA([[input.y]],
42605436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[%output "input.c"
427cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project%%
428cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectexp: exp;
429cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]])
430cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
43105436638acc7c010349a69c3395f1a57c642dc62Ying WangAT_BISON_CHECK([[input.y]], 1, [],
43205436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[input.y: warning: 2 nonterminals useless in grammar
43305436638acc7c010349a69c3395f1a57c642dc62Ying Wanginput.y: warning: 2 rules useless in grammar
434cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectinput.y:3.1-3: fatal error: start symbol exp does not derive any sentence
435cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project]])
436cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
437cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectAT_CLEANUP
43805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
43905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
44005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
44105436638acc7c010349a69c3395f1a57c642dc62Ying Wang## ----------------- ##
44205436638acc7c010349a69c3395f1a57c642dc62Ying Wang## %define lr.type.  ##
44305436638acc7c010349a69c3395f1a57c642dc62Ying Wang## ----------------- ##
44405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
44505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# AT_TEST_LR_TYPE(DESCRIPTION,
44605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#                 DECLS, GRAMMAR, INPUT,
44705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#                 BISON-STDERR, TABLES,
44805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#                 [OTHER-CHECKS],
44905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#                 [PARSER-EXIT-VALUE],
45005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#                 [PARSER-STDOUT], [PARSER-STDERR])
45105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# -------------------------------------------------
45205436638acc7c010349a69c3395f1a57c642dc62Ying Wangm4_define([AT_TEST_LR_TYPE],
45305436638acc7c010349a69c3395f1a57c642dc62Ying Wang[
45405436638acc7c010349a69c3395f1a57c642dc62Ying WangAT_TEST_TABLES_AND_PARSE([[no %define lr.type: ]$1],
45505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         [[LALR]], [[]],
45605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         [$2], m4_shiftn(2, $@))
45705436638acc7c010349a69c3395f1a57c642dc62Ying WangAT_TEST_TABLES_AND_PARSE([[%define lr.type lalr: ]$1],
45805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         [[LALR]], [[]],
45905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         [[%define lr.type lalr
46005436638acc7c010349a69c3395f1a57c642dc62Ying Wang]$2],
46105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         m4_shiftn(2, $@))
46205436638acc7c010349a69c3395f1a57c642dc62Ying WangAT_TEST_TABLES_AND_PARSE([[%define lr.type ielr: ]$1],
46305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         [[IELR]], [[]],
46405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         [[%define lr.type ielr
46505436638acc7c010349a69c3395f1a57c642dc62Ying Wang]$2],
46605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         m4_shiftn(2, $@))
46705436638acc7c010349a69c3395f1a57c642dc62Ying WangAT_TEST_TABLES_AND_PARSE([[%define lr.type canonical-lr: ]$1],
46805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         [[canonical LR]], [[]],
46905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         [[%define lr.type canonical-lr
47005436638acc7c010349a69c3395f1a57c642dc62Ying Wang]$2],
47105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         m4_shiftn(2, $@))
47205436638acc7c010349a69c3395f1a57c642dc62Ying Wang])
47305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
47405436638acc7c010349a69c3395f1a57c642dc62Ying WangAT_TEST_LR_TYPE([[Single State Split]],
47505436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[%left 'a'
47605436638acc7c010349a69c3395f1a57c642dc62Ying Wang// Conflict resolution renders state 12 unreachable for canonical LR(1).  We
47705436638acc7c010349a69c3395f1a57c642dc62Ying Wang// keep it so that the paser table diff is easier to code.
47805436638acc7c010349a69c3395f1a57c642dc62Ying Wang%define lr.keep-unreachable-states]],
47905436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[
48005436638acc7c010349a69c3395f1a57c642dc62Ying WangS: 'a' A 'a' /* rule 1 */
48105436638acc7c010349a69c3395f1a57c642dc62Ying Wang | 'b' A 'b' /* rule 2 */
48205436638acc7c010349a69c3395f1a57c642dc62Ying Wang | 'c' c     /* rule 3 */
48305436638acc7c010349a69c3395f1a57c642dc62Ying Wang ;
48405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
48505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* A conflict should appear after the first 'a' in rules 4 and 5 but only after
48605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   having shifted the first 'a' in rule 1.  However, when LALR(1) merging is
48705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   chosen, the state containing that conflict is reused after having seen the
48805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   first 'b' in rule 2 and then the first 'a' in rules 4 and 5.  In both cases,
48905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   because of the merged state, if the next token is an 'a', the %left forces a
49005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   reduction action with rule 5.  In the latter case, only a shift is actually
49105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   grammatically correct.  Thus, the parser would report a syntax error for the
49205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   grammatically correct sentence "baab" because it would encounter a syntax
49305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   error after that incorrect reduction.
49405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
49505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Despite not being LALR(1), Menhir version 20070322 suffers from this problem
49605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   as well.  It uses David Pager's weak compatibility test for merging states.
49705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Bison and Menhir accept non-LR(1) grammars with conflict resolution.  Pager
49805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   designed his algorithm only for LR(1) grammars.  */
49905436638acc7c010349a69c3395f1a57c642dc62Ying WangA: 'a' 'a' /* rule 4 */
50005436638acc7c010349a69c3395f1a57c642dc62Ying Wang | 'a'     /* rule 5 */
50105436638acc7c010349a69c3395f1a57c642dc62Ying Wang ;
50205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
50305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Rule 3, rule 6, and rule 7 ensure that Bison does not report rule 4 as
50405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   useless after conflict resolution.  This proves that, even though LALR(1)
50505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   generates incorrect parser tables sometimes, Bison will not necessarily
50605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   produce any warning to help the user realize it.  */
50705436638acc7c010349a69c3395f1a57c642dc62Ying Wangc: 'a' 'b' /* rule 6 */
50805436638acc7c010349a69c3395f1a57c642dc62Ying Wang | A       /* rule 7 */
50905436638acc7c010349a69c3395f1a57c642dc62Ying Wang ;
51005436638acc7c010349a69c3395f1a57c642dc62Ying Wang]],
51105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
51205436638acc7c010349a69c3395f1a57c642dc62Ying Wangdnl INPUT
51305436638acc7c010349a69c3395f1a57c642dc62Ying Wang[['b', 'a', 'a', 'b']],
51405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
51505436638acc7c010349a69c3395f1a57c642dc62Ying Wangdnl BISON-STDERR
51605436638acc7c010349a69c3395f1a57c642dc62Ying Wang[],
51705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
51805436638acc7c010349a69c3395f1a57c642dc62Ying Wangdnl TABLES
51905436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[State 0
52005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
52105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    0 $accept: . S $end
52205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    1 S: . 'a' A 'a'
52305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    2  | . 'b' A 'b'
52405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    3  | . 'c' c
52505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
52605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state 1
52705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'b'  shift, and go to state 2
52805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'c'  shift, and go to state 3
52905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
53005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    S  go to state 4
53105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
53205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
53305436638acc7c010349a69c3395f1a57c642dc62Ying WangState 1
53405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
53505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    1 S: 'a' . A 'a'
53605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: . 'a' 'a'
53705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5  | . 'a'
53805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
53905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state 5
54005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
54105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    A  go to state 6
54205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
54305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
54405436638acc7c010349a69c3395f1a57c642dc62Ying WangState 2
54505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
54605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    2 S: 'b' . A 'b'
54705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: . 'a' 'a'
54805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5  | . 'a'
54905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
55005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state ]AT_COND_CASE([[LALR]], [[5]], [[16]])[
55105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
55205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    A  go to state 7
55305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
55405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
55505436638acc7c010349a69c3395f1a57c642dc62Ying WangState 3
55605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
55705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    3 S: 'c' . c
55805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: . 'a' 'a'
55905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5  | . 'a'
56005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    6 c: . 'a' 'b'
56105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    7  | . A
56205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
56305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state 8
56405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
56505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    A  go to state 9
56605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    c  go to state 10
56705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
56805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
56905436638acc7c010349a69c3395f1a57c642dc62Ying WangState 4
57005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
57105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    0 $accept: S . $end
57205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
57305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $end  shift, and go to state 11
57405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
57505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
57605436638acc7c010349a69c3395f1a57c642dc62Ying WangState 5
57705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
57805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: 'a' . 'a'
57905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5  | 'a' .  ]AT_COND_CASE([[LALR]], [[['a', 'b']]], [[['a']]])[
58005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
58105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [['a']],
58205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 5 (A)
58305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
58405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    Conflict between rule 5 and token 'a' resolved as reduce (%left 'a').
58505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
58605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
58705436638acc7c010349a69c3395f1a57c642dc62Ying WangState 6
58805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
58905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    1 S: 'a' A . 'a'
59005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
59105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state 13
59205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
59305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
59405436638acc7c010349a69c3395f1a57c642dc62Ying WangState 7
59505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
59605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    2 S: 'b' A . 'b'
59705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
59805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'b'  shift, and go to state 14
59905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
60005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
60105436638acc7c010349a69c3395f1a57c642dc62Ying WangState 8
60205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
60305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: 'a' . 'a'
60405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5  | 'a' .  [$end]
60505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    6 c: 'a' . 'b'
60605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
60705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state ]AT_COND_CASE([[canonical LR]], [[17]],
60805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                              [[12]])[
60905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'b'  shift, and go to state 15
61005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
61105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
61205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 5 (A)
61305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
61405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
61505436638acc7c010349a69c3395f1a57c642dc62Ying WangState 9
61605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
61705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    7 c: A .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
61805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
61905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
62005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 7 (c)
62105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
62205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
62305436638acc7c010349a69c3395f1a57c642dc62Ying WangState 10
62405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
62505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    3 S: 'c' c .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
62605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
62705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
62805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 3 (S)
62905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
63005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
63105436638acc7c010349a69c3395f1a57c642dc62Ying WangState 11
63205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
63305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    0 $accept: S $end .
63405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
63505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $default  accept
63605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
63705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
63805436638acc7c010349a69c3395f1a57c642dc62Ying WangState 12
63905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
64005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: 'a' 'a' .]AT_COND_CASE([[canonical LR]], [[  ['a']]])[
64105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
64205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [['a']],
64305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 4 (A)
64405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
64505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
64605436638acc7c010349a69c3395f1a57c642dc62Ying WangState 13
64705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
64805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    1 S: 'a' A 'a' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
64905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
65005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
65105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 1 (S)
65205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
65305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
65405436638acc7c010349a69c3395f1a57c642dc62Ying WangState 14
65505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
65605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    2 S: 'b' A 'b' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
65705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
65805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
65905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 2 (S)
66005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
66105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
66205436638acc7c010349a69c3395f1a57c642dc62Ying WangState 15
66305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
66405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    6 c: 'a' 'b' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
66505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
66605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
66705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 6 (c)]AT_COND_CASE([[LALR]],
66805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                                                       [[]], [[
66905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
67005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
67105436638acc7c010349a69c3395f1a57c642dc62Ying WangState 16
67205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
67305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: 'a' . 'a'
67405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5  | 'a' .  ['b']
67505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
67605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state ]AT_COND_CASE([[canonical LR]], [[18]],
67705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                              [[12]])[
67805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
67905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [['b']],
68005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 5 (A)]AT_COND_CASE([[canonical LR]], [[
68105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
68205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
68305436638acc7c010349a69c3395f1a57c642dc62Ying WangState 17
68405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
68505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: 'a' 'a' .  [$end]
68605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
68705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $end  reduce using rule 4 (A)
68805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
68905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
69005436638acc7c010349a69c3395f1a57c642dc62Ying WangState 18
69105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
69205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: 'a' 'a' .  ['b']
69305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
69405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'b'  reduce using rule 4 (A)]])])[
69505436638acc7c010349a69c3395f1a57c642dc62Ying Wang]],
69605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
69705436638acc7c010349a69c3395f1a57c642dc62Ying Wangdnl OTHER-CHECKS
69805436638acc7c010349a69c3395f1a57c642dc62Ying Wang[],
69905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
70005436638acc7c010349a69c3395f1a57c642dc62Ying Wangdnl PARSER-EXIT-VALUE, PARSER-STDOUT, PARSER-STDERR
70105436638acc7c010349a69c3395f1a57c642dc62Ying Wang[AT_COND_CASE([[LALR]], [[1]], [[0]])],
70205436638acc7c010349a69c3395f1a57c642dc62Ying Wang[],
70305436638acc7c010349a69c3395f1a57c642dc62Ying Wang[AT_COND_CASE([[LALR]],
70405436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[syntax error
70505436638acc7c010349a69c3395f1a57c642dc62Ying Wang]])])
70605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
70705436638acc7c010349a69c3395f1a57c642dc62Ying WangAT_TEST_LR_TYPE([[Lane Split]],
70805436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[%left 'a'
70905436638acc7c010349a69c3395f1a57c642dc62Ying Wang// Conflict resolution renders state 16 unreachable for canonical LR(1).  We
71005436638acc7c010349a69c3395f1a57c642dc62Ying Wang// keep it so that the paser table diff is easier to code.
71105436638acc7c010349a69c3395f1a57c642dc62Ying Wang%define lr.keep-unreachable-states]],
71205436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[
71305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Similar to the last test case set but two states must be split.  */
71405436638acc7c010349a69c3395f1a57c642dc62Ying WangS: 'a' A 'a' /* rule 1 */
71505436638acc7c010349a69c3395f1a57c642dc62Ying Wang | 'b' A 'b' /* rule 2 */
71605436638acc7c010349a69c3395f1a57c642dc62Ying Wang | 'c' c     /* rule 3 */
71705436638acc7c010349a69c3395f1a57c642dc62Ying Wang ;
71805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
71905436638acc7c010349a69c3395f1a57c642dc62Ying WangA: 'a' 'a' 'a' /* rule 4 */
72005436638acc7c010349a69c3395f1a57c642dc62Ying Wang | 'a' 'a'     /* rule 5 */
72105436638acc7c010349a69c3395f1a57c642dc62Ying Wang ;
72205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
72305436638acc7c010349a69c3395f1a57c642dc62Ying Wangc: 'a' 'a' 'b' /* rule 6 */
72405436638acc7c010349a69c3395f1a57c642dc62Ying Wang | A           /* rule 7 */
72505436638acc7c010349a69c3395f1a57c642dc62Ying Wang ;
72605436638acc7c010349a69c3395f1a57c642dc62Ying Wang]],
72705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
72805436638acc7c010349a69c3395f1a57c642dc62Ying Wangdnl INPUT
72905436638acc7c010349a69c3395f1a57c642dc62Ying Wang[['b', 'a', 'a', 'a', 'b']],
73005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
73105436638acc7c010349a69c3395f1a57c642dc62Ying Wangdnl BISON-STDERR
73205436638acc7c010349a69c3395f1a57c642dc62Ying Wang[],
73305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
73405436638acc7c010349a69c3395f1a57c642dc62Ying Wangdnl TABLES
73505436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[State 0
73605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
73705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    0 $accept: . S $end
73805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    1 S: . 'a' A 'a'
73905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    2  | . 'b' A 'b'
74005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    3  | . 'c' c
74105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
74205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state 1
74305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'b'  shift, and go to state 2
74405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'c'  shift, and go to state 3
74505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
74605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    S  go to state 4
74705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
74805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
74905436638acc7c010349a69c3395f1a57c642dc62Ying WangState 1
75005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
75105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    1 S: 'a' . A 'a'
75205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: . 'a' 'a' 'a'
75305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5  | . 'a' 'a'
75405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
75505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state 5
75605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
75705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    A  go to state 6
75805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
75905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
76005436638acc7c010349a69c3395f1a57c642dc62Ying WangState 2
76105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
76205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    2 S: 'b' . A 'b'
76305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: . 'a' 'a' 'a'
76405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5  | . 'a' 'a'
76505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
76605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state ]AT_COND_CASE([[LALR]], [[5]], [[18]])[
76705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
76805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    A  go to state 7
76905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
77005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
77105436638acc7c010349a69c3395f1a57c642dc62Ying WangState 3
77205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
77305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    3 S: 'c' . c
77405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: . 'a' 'a' 'a'
77505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5  | . 'a' 'a'
77605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    6 c: . 'a' 'a' 'b'
77705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    7  | . A
77805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
77905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state 8
78005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
78105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    A  go to state 9
78205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    c  go to state 10
78305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
78405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
78505436638acc7c010349a69c3395f1a57c642dc62Ying WangState 4
78605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
78705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    0 $accept: S . $end
78805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
78905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $end  shift, and go to state 11
79005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
79105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
79205436638acc7c010349a69c3395f1a57c642dc62Ying WangState 5
79305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
79405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: 'a' . 'a' 'a'
79505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5  | 'a' . 'a'
79605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
79705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state 12
79805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
79905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
80005436638acc7c010349a69c3395f1a57c642dc62Ying WangState 6
80105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
80205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    1 S: 'a' A . 'a'
80305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
80405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state 13
80505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
80605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
80705436638acc7c010349a69c3395f1a57c642dc62Ying WangState 7
80805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
80905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    2 S: 'b' A . 'b'
81005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
81105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'b'  shift, and go to state 14
81205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
81305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
81405436638acc7c010349a69c3395f1a57c642dc62Ying WangState 8
81505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
81605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: 'a' . 'a' 'a'
81705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5  | 'a' . 'a'
81805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    6 c: 'a' . 'a' 'b'
81905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
82005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state 15
82105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
82205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
82305436638acc7c010349a69c3395f1a57c642dc62Ying WangState 9
82405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
82505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    7 c: A .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
82605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
82705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
82805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 7 (c)
82905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
83005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
83105436638acc7c010349a69c3395f1a57c642dc62Ying WangState 10
83205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
83305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    3 S: 'c' c .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
83405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
83505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
83605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 3 (S)
83705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
83805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
83905436638acc7c010349a69c3395f1a57c642dc62Ying WangState 11
84005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
84105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    0 $accept: S $end .
84205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
84305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $default  accept
84405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
84505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
84605436638acc7c010349a69c3395f1a57c642dc62Ying WangState 12
84705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
84805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: 'a' 'a' . 'a'
84905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5  | 'a' 'a' .  ]AT_COND_CASE([[LALR]], [[['a', 'b']]], [[['a']]])[
85005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
85105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [['a']],
85205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 5 (A)
85305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
85405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    Conflict between rule 5 and token 'a' resolved as reduce (%left 'a').
85505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
85605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
85705436638acc7c010349a69c3395f1a57c642dc62Ying WangState 13
85805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
85905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    1 S: 'a' A 'a' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
86005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
86105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
86205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 1 (S)
86305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
86405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
86505436638acc7c010349a69c3395f1a57c642dc62Ying WangState 14
86605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
86705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    2 S: 'b' A 'b' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
86805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
86905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
87005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 2 (S)
87105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
87205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
87305436638acc7c010349a69c3395f1a57c642dc62Ying WangState 15
87405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
87505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: 'a' 'a' . 'a'
87605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5  | 'a' 'a' .  [$end]
87705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    6 c: 'a' 'a' . 'b'
87805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
87905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state ]AT_COND_CASE([[canonical LR]], [[19]],
88005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                              [[16]])[
88105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'b'  shift, and go to state 17
88205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
88305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
88405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 5 (A)
88505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
88605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
88705436638acc7c010349a69c3395f1a57c642dc62Ying WangState 16
88805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
88905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: 'a' 'a' 'a' .]AT_COND_CASE([[canonical LR]], [[  ['a']]])[
89005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
89105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [['a']],
89205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 4 (A)
89305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
89405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
89505436638acc7c010349a69c3395f1a57c642dc62Ying WangState 17
89605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
89705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    6 c: 'a' 'a' 'b' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
89805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
89905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
90005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 6 (c)]AT_COND_CASE([[LALR]],
90105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                                                       [[]], [[
90205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
90305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
90405436638acc7c010349a69c3395f1a57c642dc62Ying WangState 18
90505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
90605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: 'a' . 'a' 'a'
90705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5  | 'a' . 'a'
90805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
90905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state ]AT_COND_CASE([[canonical LR]], [[20]],
91005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                              [[19]])[
91105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
91205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
91305436638acc7c010349a69c3395f1a57c642dc62Ying WangState 19]AT_COND_CASE([[canonical LR]], [[
91405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
91505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: 'a' 'a' 'a' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
91605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
91705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
91805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 4 (A)
91905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
92005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
92105436638acc7c010349a69c3395f1a57c642dc62Ying WangState 20]])[
92205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
92305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: 'a' 'a' . 'a'
92405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5  | 'a' 'a' .  ['b']
92505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
92605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state ]AT_COND_CASE([[canonical LR]], [[21]],
92705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                              [[16]])[
92805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
92905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [['b']],
93005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 5 (A)]AT_COND_CASE([[canonical LR]], [[
93105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
93205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
93305436638acc7c010349a69c3395f1a57c642dc62Ying WangState 21
93405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
93505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: 'a' 'a' 'a' .]AT_COND_CASE([[canonical LR]], [[  ['b']]])[
93605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
93705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [['b']],
93805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 4 (A)]])])[
93905436638acc7c010349a69c3395f1a57c642dc62Ying Wang]],
94005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
94105436638acc7c010349a69c3395f1a57c642dc62Ying Wangdnl OTHER-CHECKS
94205436638acc7c010349a69c3395f1a57c642dc62Ying Wang[],
94305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
94405436638acc7c010349a69c3395f1a57c642dc62Ying Wangdnl PARSER-EXIT-VALUE, PARSER-STDOUT, PARSER-STDERR
94505436638acc7c010349a69c3395f1a57c642dc62Ying Wang[AT_COND_CASE([[LALR]], [[1]], [[0]])],
94605436638acc7c010349a69c3395f1a57c642dc62Ying Wang[],
94705436638acc7c010349a69c3395f1a57c642dc62Ying Wang[AT_COND_CASE([[LALR]],
94805436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[syntax error
94905436638acc7c010349a69c3395f1a57c642dc62Ying Wang]])])
95005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
95105436638acc7c010349a69c3395f1a57c642dc62Ying WangAT_TEST_LR_TYPE([[Complex Lane Split]],
95205436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[%left 'a'
95305436638acc7c010349a69c3395f1a57c642dc62Ying Wang// Conflict resolution renders state 16 unreachable for canonical LR(1).  We
95405436638acc7c010349a69c3395f1a57c642dc62Ying Wang// keep it so that the paser table diff is easier to code.
95505436638acc7c010349a69c3395f1a57c642dc62Ying Wang%define lr.keep-unreachable-states]],
95605436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[
95705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Similar to the last test case set but forseeing the S/R conflict from the
95805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   first state that must be split is becoming difficult.  Imagine if B were
95905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   even more complex.  Imagine if A had other RHS's ending in other
96005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   nonterminals.  */
96105436638acc7c010349a69c3395f1a57c642dc62Ying WangS: 'a' A 'a'
96205436638acc7c010349a69c3395f1a57c642dc62Ying Wang | 'b' A 'b'
96305436638acc7c010349a69c3395f1a57c642dc62Ying Wang | 'c' c
96405436638acc7c010349a69c3395f1a57c642dc62Ying Wang ;
96505436638acc7c010349a69c3395f1a57c642dc62Ying WangA: 'a' 'a' B
96605436638acc7c010349a69c3395f1a57c642dc62Ying Wang ;
96705436638acc7c010349a69c3395f1a57c642dc62Ying WangB: 'a'
96805436638acc7c010349a69c3395f1a57c642dc62Ying Wang | %prec 'a'
96905436638acc7c010349a69c3395f1a57c642dc62Ying Wang ;
97005436638acc7c010349a69c3395f1a57c642dc62Ying Wangc: 'a' 'a' 'b'
97105436638acc7c010349a69c3395f1a57c642dc62Ying Wang | A
97205436638acc7c010349a69c3395f1a57c642dc62Ying Wang ;
97305436638acc7c010349a69c3395f1a57c642dc62Ying Wang]],
97405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
97505436638acc7c010349a69c3395f1a57c642dc62Ying Wangdnl INPUT
97605436638acc7c010349a69c3395f1a57c642dc62Ying Wang[['b', 'a', 'a', 'a', 'b']],
97705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
97805436638acc7c010349a69c3395f1a57c642dc62Ying Wangdnl BISON-STDERR
97905436638acc7c010349a69c3395f1a57c642dc62Ying Wang[],
98005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
98105436638acc7c010349a69c3395f1a57c642dc62Ying Wangdnl TABLES
98205436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[State 0
98305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
98405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    0 $accept: . S $end
98505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    1 S: . 'a' A 'a'
98605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    2  | . 'b' A 'b'
98705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    3  | . 'c' c
98805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
98905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state 1
99005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'b'  shift, and go to state 2
99105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'c'  shift, and go to state 3
99205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
99305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    S  go to state 4
99405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
99505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
99605436638acc7c010349a69c3395f1a57c642dc62Ying WangState 1
99705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
99805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    1 S: 'a' . A 'a'
99905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: . 'a' 'a' B
100005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
100105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state 5
100205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
100305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    A  go to state 6
100405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
100505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
100605436638acc7c010349a69c3395f1a57c642dc62Ying WangState 2
100705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
100805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    2 S: 'b' . A 'b'
100905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: . 'a' 'a' B
101005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
101105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state ]AT_COND_CASE([[LALR]], [[5]], [[19]])[
101205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
101305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    A  go to state 7
101405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
101505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
101605436638acc7c010349a69c3395f1a57c642dc62Ying WangState 3
101705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
101805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    3 S: 'c' . c
101905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: . 'a' 'a' B
102005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    7 c: . 'a' 'a' 'b'
102105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    8  | . A
102205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
102305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state 8
102405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
102505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    A  go to state 9
102605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    c  go to state 10
102705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
102805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
102905436638acc7c010349a69c3395f1a57c642dc62Ying WangState 4
103005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
103105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    0 $accept: S . $end
103205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
103305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $end  shift, and go to state 11
103405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
103505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
103605436638acc7c010349a69c3395f1a57c642dc62Ying WangState 5
103705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
103805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: 'a' . 'a' B
103905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
104005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state 12
104105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
104205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
104305436638acc7c010349a69c3395f1a57c642dc62Ying WangState 6
104405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
104505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    1 S: 'a' A . 'a'
104605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
104705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state 13
104805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
104905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
105005436638acc7c010349a69c3395f1a57c642dc62Ying WangState 7
105105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
105205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    2 S: 'b' A . 'b'
105305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
105405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'b'  shift, and go to state 14
105505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
105605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
105705436638acc7c010349a69c3395f1a57c642dc62Ying WangState 8
105805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
105905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: 'a' . 'a' B
106005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    7 c: 'a' . 'a' 'b'
106105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
106205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state 15
106305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
106405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
106505436638acc7c010349a69c3395f1a57c642dc62Ying WangState 9
106605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
106705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    8 c: A .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
106805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
106905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
107005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 8 (c)
107105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
107205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
107305436638acc7c010349a69c3395f1a57c642dc62Ying WangState 10
107405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
107505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    3 S: 'c' c .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
107605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
107705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
107805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 3 (S)
107905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
108005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
108105436638acc7c010349a69c3395f1a57c642dc62Ying WangState 11
108205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
108305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    0 $accept: S $end .
108405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
108505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $default  accept
108605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
108705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
108805436638acc7c010349a69c3395f1a57c642dc62Ying WangState 12
108905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
109005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: 'a' 'a' . B
109105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5 B: . 'a'
109205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    6  | .  ]AT_COND_CASE([[LALR]], [[['a', 'b']]], [[['a']]])[
109305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
109405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [['a']],
109505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 6 (B)
109605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
109705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    B  go to state 17
109805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
109905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    Conflict between rule 6 and token 'a' resolved as reduce (%left 'a').
110005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
110105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
110205436638acc7c010349a69c3395f1a57c642dc62Ying WangState 13
110305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
110405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    1 S: 'a' A 'a' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
110505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
110605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
110705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 1 (S)
110805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
110905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
111005436638acc7c010349a69c3395f1a57c642dc62Ying WangState 14
111105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
111205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    2 S: 'b' A 'b' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
111305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
111405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
111505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 2 (S)
111605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
111705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
111805436638acc7c010349a69c3395f1a57c642dc62Ying WangState 15
111905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
112005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: 'a' 'a' . B
112105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5 B: . 'a'
112205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    6  | .  [$end]
112305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    7 c: 'a' 'a' . 'b'
112405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
112505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state ]AT_COND_CASE([[canonical LR]], [[20]],
112605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                              [[16]])[
112705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'b'  shift, and go to state 18
112805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
112905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
113005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 6 (B)
113105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
113205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    B  go to state ]AT_COND_CASE([[canonical LR]], [[21]], [[17]])[
113305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
113405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
113505436638acc7c010349a69c3395f1a57c642dc62Ying WangState 16
113605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
113705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5 B: 'a' .]AT_COND_CASE([[canonical LR]], [[  ['a']]])[
113805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
113905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [['a']],
114005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 5 (B)
114105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
114205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
114305436638acc7c010349a69c3395f1a57c642dc62Ying WangState 17
114405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
114505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: 'a' 'a' B .]AT_COND_CASE([[canonical LR]], [[  ['a']]])[
114605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
114705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [['a']],
114805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 4 (A)
114905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
115005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
115105436638acc7c010349a69c3395f1a57c642dc62Ying WangState 18
115205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
115305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    7 c: 'a' 'a' 'b' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
115405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
115505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
115605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 7 (c)]AT_COND_CASE([[LALR]], [], [[
115705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
115805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
115905436638acc7c010349a69c3395f1a57c642dc62Ying WangState 19
116005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
116105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: 'a' . 'a' B
116205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
116305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state ]AT_COND_CASE([[canonical LR]], [[22]],
116405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                              [[20]])[
116505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
116605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
116705436638acc7c010349a69c3395f1a57c642dc62Ying WangState 20]AT_COND_CASE([[canonical LR]], [[
116805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
116905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5 B: 'a' .  [$end]
117005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
117105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $end  reduce using rule 5 (B)
117205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
117305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
117405436638acc7c010349a69c3395f1a57c642dc62Ying WangState 21
117505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
117605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: 'a' 'a' B .  [$end]
117705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
117805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $end  reduce using rule 4 (A)
117905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
118005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
118105436638acc7c010349a69c3395f1a57c642dc62Ying WangState 22]])[
118205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
118305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: 'a' 'a' . B
118405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5 B: . 'a'
118505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    6  | .  ['b']
118605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
118705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state ]AT_COND_CASE([[canonical LR]], [[23]],
118805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                              [[16]])[
118905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
119005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [['b']],
119105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 6 (B)
119205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
119305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    B  go to state ]AT_COND_CASE([[canonical LR]], [[24
119405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
119505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
119605436638acc7c010349a69c3395f1a57c642dc62Ying WangState 23
119705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
119805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5 B: 'a' .  ['b']
119905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
120005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'b'  reduce using rule 5 (B)
120105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
120205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
120305436638acc7c010349a69c3395f1a57c642dc62Ying WangState 24
120405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
120505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 A: 'a' 'a' B .  ['b']
120605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
120705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'b'  reduce using rule 4 (A)]], [[17]])])[
120805436638acc7c010349a69c3395f1a57c642dc62Ying Wang]],
120905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
121005436638acc7c010349a69c3395f1a57c642dc62Ying Wangdnl OTHER-CHECKS
121105436638acc7c010349a69c3395f1a57c642dc62Ying Wang[],
121205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
121305436638acc7c010349a69c3395f1a57c642dc62Ying Wangdnl PARSER-EXIT-VALUE, PARSER-STDOUT, PARSER-STDERR
121405436638acc7c010349a69c3395f1a57c642dc62Ying Wang[AT_COND_CASE([[LALR]], [[1]], [[0]])],
121505436638acc7c010349a69c3395f1a57c642dc62Ying Wang[],
121605436638acc7c010349a69c3395f1a57c642dc62Ying Wang[AT_COND_CASE([[LALR]],
121705436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[syntax error
121805436638acc7c010349a69c3395f1a57c642dc62Ying Wang]])])
121905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
122005436638acc7c010349a69c3395f1a57c642dc62Ying WangAT_TEST_LR_TYPE([[Split During Added Lookahead Propagation]],
122105436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[%define lr.keep-unreachable-states]],
122205436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[
122305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The partial state chart diagram below is for LALR(1).  State 0 is the start
122405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   state.  States are iterated for successor construction in numerical order.
122505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Transitions are downwards.
122605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
122705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   State 13 has a R/R conflict that cannot be predicted by Bison's LR(1)
122805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   algorithm using annotations alone.  That is, when state 11's successor on
122905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   'd' is merged with state 5 (which is originally just state 1's successor on
123005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   'd'), state 5's successor on 'e' must then be changed because the resulting
123105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   lookaheads that propagate to it now make it incompatible with state 8's
123205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   successor on 'e'.  In other words, state 13 must be split to avoid the
123305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   conflict.
123405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
123505436638acc7c010349a69c3395f1a57c642dc62Ying Wang          0
123605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        / | \
123705436638acc7c010349a69c3395f1a57c642dc62Ying Wang     a / c|  \ b
123805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      1   3   2
123905436638acc7c010349a69c3395f1a57c642dc62Ying Wang      |   |   |
124005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     d|   |c  | d
124105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      |  11   |
124205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      |   |   |
124305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       \ /d   |
124405436638acc7c010349a69c3395f1a57c642dc62Ying Wang        5     8
124505436638acc7c010349a69c3395f1a57c642dc62Ying Wang         \    |
124605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        e \  / e
124705436638acc7c010349a69c3395f1a57c642dc62Ying Wang           13
124805436638acc7c010349a69c3395f1a57c642dc62Ying Wang           R/R
124905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
125005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This grammar is designed carefully to make sure that, despite Bison's LR(1)
125105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   algorithm's bread-first iteration of transitions to reconstruct states,
125205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   state 11's successors are constructed after state 5's and state 8's.
125305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Otherwise (for example, if you remove the first 'c' in each of rules 6 and
125405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   7), state 5's successor on 'e' would never be merged with state 8's, so the
125505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   split of the resulting state 13 would never need to be performed.  */
125605436638acc7c010349a69c3395f1a57c642dc62Ying WangS: 'a' A 'f'
125705436638acc7c010349a69c3395f1a57c642dc62Ying Wang | 'a' B
125805436638acc7c010349a69c3395f1a57c642dc62Ying Wang | 'b' A 'f'
125905436638acc7c010349a69c3395f1a57c642dc62Ying Wang | 'b' B 'g'
126005436638acc7c010349a69c3395f1a57c642dc62Ying Wang | 'b' 'd'
126105436638acc7c010349a69c3395f1a57c642dc62Ying Wang | 'c' 'c' A 'g'
126205436638acc7c010349a69c3395f1a57c642dc62Ying Wang | 'c' 'c' B
126305436638acc7c010349a69c3395f1a57c642dc62Ying Wang ;
126405436638acc7c010349a69c3395f1a57c642dc62Ying WangA: 'd' 'e' ;
126505436638acc7c010349a69c3395f1a57c642dc62Ying WangB: 'd' 'e' ;
126605436638acc7c010349a69c3395f1a57c642dc62Ying Wang]],
126705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
126805436638acc7c010349a69c3395f1a57c642dc62Ying Wangdnl INPUT
126905436638acc7c010349a69c3395f1a57c642dc62Ying Wang[['b', 'd', 'e', 'g']],
127005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
127105436638acc7c010349a69c3395f1a57c642dc62Ying Wangdnl BISON-STDERR
127205436638acc7c010349a69c3395f1a57c642dc62Ying Wang[AT_COND_CASE([[LALR]],
127305436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[input.y: conflicts: 1 reduce/reduce
127405436638acc7c010349a69c3395f1a57c642dc62Ying Wang]], [])],
127505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
127605436638acc7c010349a69c3395f1a57c642dc62Ying Wangdnl TABLES
127705436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[State 0
127805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
127905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    0 $accept: . S $end
128005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    1 S: . 'a' A 'f'
128105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    2  | . 'a' B
128205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    3  | . 'b' A 'f'
128305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4  | . 'b' B 'g'
128405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5  | . 'b' 'd'
128505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    6  | . 'c' 'c' A 'g'
128605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    7  | . 'c' 'c' B
128705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
128805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state 1
128905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'b'  shift, and go to state 2
129005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'c'  shift, and go to state 3
129105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
129205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    S  go to state 4
129305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
129405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
129505436638acc7c010349a69c3395f1a57c642dc62Ying WangState 1
129605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
129705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    1 S: 'a' . A 'f'
129805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    2  | 'a' . B
129905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    8 A: . 'd' 'e'
130005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    9 B: . 'd' 'e'
130105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
130205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'd'  shift, and go to state 5
130305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
130405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    A  go to state 6
130505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    B  go to state 7
130605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
130705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
130805436638acc7c010349a69c3395f1a57c642dc62Ying WangState 2
130905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
131005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    3 S: 'b' . A 'f'
131105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4  | 'b' . B 'g'
131205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5  | 'b' . 'd'
131305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    8 A: . 'd' 'e'
131405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    9 B: . 'd' 'e'
131505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
131605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'd'  shift, and go to state 8
131705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
131805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    A  go to state 9
131905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    B  go to state 10
132005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
132105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
132205436638acc7c010349a69c3395f1a57c642dc62Ying WangState 3
132305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
132405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    6 S: 'c' . 'c' A 'g'
132505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    7  | 'c' . 'c' B
132605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
132705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'c'  shift, and go to state 11
132805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
132905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
133005436638acc7c010349a69c3395f1a57c642dc62Ying WangState 4
133105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
133205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    0 $accept: S . $end
133305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
133405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $end  shift, and go to state 12
133505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
133605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
133705436638acc7c010349a69c3395f1a57c642dc62Ying WangState 5
133805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
133905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    8 A: 'd' . 'e'
134005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    9 B: 'd' . 'e'
134105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
134205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'e'  shift, and go to state ]AT_COND_CASE([[LALR]], [[13]],
134305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                               [[canonical LR]], [[13]],
134405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                               [[20]])[
134505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
134605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
134705436638acc7c010349a69c3395f1a57c642dc62Ying WangState 6
134805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
134905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    1 S: 'a' A . 'f'
135005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
135105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'f'  shift, and go to state 14
135205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
135305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
135405436638acc7c010349a69c3395f1a57c642dc62Ying WangState 7
135505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
135605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    2 S: 'a' B .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
135705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
135805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
135905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 2 (S)
136005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
136105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
136205436638acc7c010349a69c3395f1a57c642dc62Ying WangState 8
136305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
136405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5 S: 'b' 'd' .  [$end]
136505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    8 A: 'd' . 'e'
136605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    9 B: 'd' . 'e'
136705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
136805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'e'  shift, and go to state ]AT_COND_CASE([[canonical LR]], [[20]],
136905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                              [[13]])[
137005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
137105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
137205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 5 (S)
137305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
137405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
137505436638acc7c010349a69c3395f1a57c642dc62Ying WangState 9
137605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
137705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    3 S: 'b' A . 'f'
137805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
137905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'f'  shift, and go to state 15
138005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
138105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
138205436638acc7c010349a69c3395f1a57c642dc62Ying WangState 10
138305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
138405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 S: 'b' B . 'g'
138505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
138605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'g'  shift, and go to state 16
138705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
138805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
138905436638acc7c010349a69c3395f1a57c642dc62Ying WangState 11
139005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
139105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    6 S: 'c' 'c' . A 'g'
139205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    7  | 'c' 'c' . B
139305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    8 A: . 'd' 'e'
139405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    9 B: . 'd' 'e'
139505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
139605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'd'  shift, and go to state ]AT_COND_CASE([[canonical LR]], [[21]],
139705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                              [[5]])[
139805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
139905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    A  go to state 17
140005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    B  go to state 18
140105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
140205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
140305436638acc7c010349a69c3395f1a57c642dc62Ying WangState 12
140405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
140505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    0 $accept: S $end .
140605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
140705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $default  accept]AT_COND_CASE([[LALR]], [[
140805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
140905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
141005436638acc7c010349a69c3395f1a57c642dc62Ying WangState 13
141105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
141205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    8 A: 'd' 'e' .  ['f', 'g']
141305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    9 B: 'd' 'e' .  [$end, 'g']
141405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
141505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $end      reduce using rule 9 (B)
141605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'g'       reduce using rule 8 (A)
141705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'g'       [reduce using rule 9 (B)]
141805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $default  reduce using rule 8 (A)]], [[
141905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
142005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
142105436638acc7c010349a69c3395f1a57c642dc62Ying WangState 13
142205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
142305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    8 A: 'd' 'e' .  ['f']
142405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    9 B: 'd' 'e' .  ]AT_COND_CASE([[canonical LR]], [[[$end]]], [[['g']]])[
142505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
142605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
142705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [['g'     ]])[  reduce using rule 9 (B)
142805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [['f' ]],
142905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 8 (A)]])[
143005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
143105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
143205436638acc7c010349a69c3395f1a57c642dc62Ying WangState 14
143305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
143405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    1 S: 'a' A 'f' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
143505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
143605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
143705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 1 (S)
143805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
143905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
144005436638acc7c010349a69c3395f1a57c642dc62Ying WangState 15
144105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
144205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    3 S: 'b' A 'f' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
144305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
144405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
144505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 3 (S)
144605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
144705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
144805436638acc7c010349a69c3395f1a57c642dc62Ying WangState 16
144905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
145005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 S: 'b' B 'g' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
145105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
145205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
145305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 4 (S)
145405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
145505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
145605436638acc7c010349a69c3395f1a57c642dc62Ying WangState 17
145705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
145805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    6 S: 'c' 'c' A . 'g'
145905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
146005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'g'  shift, and go to state 19
146105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
146205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
146305436638acc7c010349a69c3395f1a57c642dc62Ying WangState 18
146405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
146505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    7 S: 'c' 'c' B .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
146605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
146705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
146805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 7 (S)
146905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
147005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
147105436638acc7c010349a69c3395f1a57c642dc62Ying WangState 19
147205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
147305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    6 S: 'c' 'c' A 'g' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
147405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
147505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[canonical LR]], [[$end]],
147605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$default]])[  reduce using rule 6 (S)]AT_COND_CASE([[LALR]],
147705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                                                       [[]], [[
147805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
147905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
148005436638acc7c010349a69c3395f1a57c642dc62Ying WangState 20]AT_COND_CASE([[canonical LR]], [[
148105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
148205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    8 A: 'd' 'e' .  ['f']
148305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    9 B: 'd' 'e' .  ['g']
148405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
148505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'f'  reduce using rule 8 (A)
148605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'g'  reduce using rule 9 (B)
148705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
148805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
148905436638acc7c010349a69c3395f1a57c642dc62Ying WangState 21
149005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
149105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    8 A: 'd' . 'e'
149205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    9 B: 'd' . 'e'
149305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
149405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'e'  shift, and go to state 22
149505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
149605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
149705436638acc7c010349a69c3395f1a57c642dc62Ying WangState 22
149805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
149905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    8 A: 'd' 'e' .  ['g']
150005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    9 B: 'd' 'e' .  [$end]
150105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
150205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $end  reduce using rule 9 (B)
150305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'g'   reduce using rule 8 (A)]], [[
150405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
150505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    8 A: 'd' 'e' .  ['f', 'g']
150605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    9 B: 'd' 'e' .  [$end]
150705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
150805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $end      reduce using rule 9 (B)
150905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $default  reduce using rule 8 (A)]])])[
151005436638acc7c010349a69c3395f1a57c642dc62Ying Wang]],
151105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
151205436638acc7c010349a69c3395f1a57c642dc62Ying Wangdnl OTHER-CHECKS
151305436638acc7c010349a69c3395f1a57c642dc62Ying Wang[],
151405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
151505436638acc7c010349a69c3395f1a57c642dc62Ying Wangdnl PARSER-EXIT-VALUE, PARSER-STDOUT, PARSER-STDERR
151605436638acc7c010349a69c3395f1a57c642dc62Ying Wang[AT_COND_CASE([[LALR]], [[1]], [[0]])],
151705436638acc7c010349a69c3395f1a57c642dc62Ying Wang[],
151805436638acc7c010349a69c3395f1a57c642dc62Ying Wang[AT_COND_CASE([[LALR]],
151905436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[syntax error
152005436638acc7c010349a69c3395f1a57c642dc62Ying Wang]])])
152105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
152205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
152305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
152405436638acc7c010349a69c3395f1a57c642dc62Ying Wang## ------------------------------- ##
152505436638acc7c010349a69c3395f1a57c642dc62Ying Wang## %define lr.default-reductions.  ##
152605436638acc7c010349a69c3395f1a57c642dc62Ying Wang## ------------------------------- ##
152705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
152805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# AT_TEST_LR_DEFAULT_REDUCTIONS(GRAMMAR, INPUT, TABLES)
152905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# -----------------------------------------------------
153005436638acc7c010349a69c3395f1a57c642dc62Ying Wangm4_define([AT_TEST_LR_DEFAULT_REDUCTIONS],
153105436638acc7c010349a69c3395f1a57c642dc62Ying Wang[
153205436638acc7c010349a69c3395f1a57c642dc62Ying WangAT_TEST_TABLES_AND_PARSE([[no %define lr.default-reductions]],
153305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         [[most]], [[]],
153405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         [[]],
153505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         [$1], [$2], [[]], [$3])
153605436638acc7c010349a69c3395f1a57c642dc62Ying WangAT_TEST_TABLES_AND_PARSE([[%define lr.default-reductions most]],
153705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         [[most]], [[]],
153805436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         [[%define lr.default-reductions most]],
153905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         [$1], [$2], [[]], [$3])
154005436638acc7c010349a69c3395f1a57c642dc62Ying WangAT_TEST_TABLES_AND_PARSE([[%define lr.default-reductions consistent]],
154105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         [[consistent]], [[]],
154205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         [[%define lr.default-reductions consistent]],
154305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         [$1], [$2], [[]], [$3])
154405436638acc7c010349a69c3395f1a57c642dc62Ying WangAT_TEST_TABLES_AND_PARSE([[%define lr.default-reductions accepting]],
154505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         [[accepting]], [[]],
154605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         [[%define lr.default-reductions accepting]],
154705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         [$1], [$2], [[]], [$3])
154805436638acc7c010349a69c3395f1a57c642dc62Ying Wang])
154905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
155005436638acc7c010349a69c3395f1a57c642dc62Ying WangAT_TEST_LR_DEFAULT_REDUCTIONS([[
155105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The start state is consistent and has a shift on 'a' and no reductions.
155205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   After pushing the b below, enter an inconsistent state that has a shift and
155305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   one reduction with one lookahead.  */
155405436638acc7c010349a69c3395f1a57c642dc62Ying Wangstart:
155505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    a b
155605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  | a b 'a'
155705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  | a c 'b'
155805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  ;
155905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
156005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* After shifting this 'a', enter a consistent state that has no shift and 1
156105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   reduction with multiple lookaheads.  */
156205436638acc7c010349a69c3395f1a57c642dc62Ying Wanga: 'a' ;
156305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
156405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* After the previous reduction, enter an inconsistent state that has no shift
156505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   and multiple reductions.  The first reduction has more lookaheads than the
156605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   second, so the first should always be preferred as the default reduction if
156705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   enabled.  The second reduction has one lookahead.  */
156805436638acc7c010349a69c3395f1a57c642dc62Ying Wangb: ;
156905436638acc7c010349a69c3395f1a57c642dc62Ying Wangc: ;
157005436638acc7c010349a69c3395f1a57c642dc62Ying Wang]],
157105436638acc7c010349a69c3395f1a57c642dc62Ying Wangdnl Visit each state mentioned above.
157205436638acc7c010349a69c3395f1a57c642dc62Ying Wang[['a', 'a']],
157305436638acc7c010349a69c3395f1a57c642dc62Ying Wang[[State 0
157405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
157505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    0 $accept: . start $end
157605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    1 start: . a b
157705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    2      | . a b 'a'
157805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    3      | . a c 'b'
157905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 a: . 'a'
158005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
158105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state 1
158205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
158305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    start  go to state 2
158405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    a      go to state 3
158505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
158605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
158705436638acc7c010349a69c3395f1a57c642dc62Ying WangState 1
158805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
158905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    4 a: 'a' .]AT_COND_CASE([[accepting]], [[  [$end, 'a', 'b']
159005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
159105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $end  reduce using rule 4 (a)
159205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'   reduce using rule 4 (a)
159305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'b'   reduce using rule 4 (a)]], [[
159405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
159505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $default  reduce using rule 4 (a)]])[
159605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
159705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
159805436638acc7c010349a69c3395f1a57c642dc62Ying WangState 2
159905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
160005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    0 $accept: start . $end
160105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
160205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $end  shift, and go to state 4
160305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
160405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
160505436638acc7c010349a69c3395f1a57c642dc62Ying WangState 3
160605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
160705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    1 start: a . b
160805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    2      | a . b 'a'
160905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    3      | a . c 'b'
161005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    5 b: .  [$end, 'a']
161105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    6 c: .  ['b']]AT_COND_CASE([[most]], [[
161205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
161305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'b'       reduce using rule 6 (c)
161405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $default  reduce using rule 5 (b)]], [[
161505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
161605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $end  reduce using rule 5 (b)
161705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'   reduce using rule 5 (b)
161805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'b'   reduce using rule 6 (c)]])[
161905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
162005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    b  go to state 5
162105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    c  go to state 6
162205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
162305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
162405436638acc7c010349a69c3395f1a57c642dc62Ying WangState 4
162505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
162605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    0 $accept: start $end .
162705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
162805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $default  accept
162905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
163005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
163105436638acc7c010349a69c3395f1a57c642dc62Ying WangState 5
163205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
163305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    1 start: a b .  [$end]
163405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    2      | a b . 'a'
163505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
163605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'a'  shift, and go to state 7
163705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
163805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    ]AT_COND_CASE([[most]], [[$default]],
163905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                  [[$end]])[  reduce using rule 1 (start)
164005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
164105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
164205436638acc7c010349a69c3395f1a57c642dc62Ying WangState 6
164305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
164405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    3 start: a c . 'b'
164505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
164605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    'b'  shift, and go to state 8
164705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
164805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
164905436638acc7c010349a69c3395f1a57c642dc62Ying WangState 7
165005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
165105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    2 start: a b 'a' .]AT_COND_CASE([[accepting]], [[  [$end]
165205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
165305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $end  reduce using rule 2 (start)]], [[
165405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
165505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $default  reduce using rule 2 (start)]])[
165605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
165705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
165805436638acc7c010349a69c3395f1a57c642dc62Ying WangState 8
165905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
166005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    3 start: a c 'b' .]AT_COND_CASE([[accepting]], [[  [$end]
166105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
166205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $end  reduce using rule 3 (start)]], [[
166305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
166405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    $default  reduce using rule 3 (start)]])[
166505436638acc7c010349a69c3395f1a57c642dc62Ying Wang]])
1666