blob: ebc80e1850bed34cc265cbe50500c20f0d358624 [file] [log] [blame]
# Bison Reports. -*- Autotest -*-
# Copyright (C) 2018-2019 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
AT_BANNER([[Test reports.]])
## --------- ##
## Reports. ##
## --------- ##
AT_SETUP([Reports])
AT_KEYWORDS([report])
AT_BISON_OPTION_PUSHDEFS
AT_DATA([input.yy],
[[%token
END 0 "end of file"
ASSIGN ":="
INCR "incr"
;
%token <std::string> IDENTIFIER "identifier"
%type <std::string> id
%token <int> NUMBER "number"
%type <int> exp
%%
%start unit;
unit: assignments exp { driver.result = $2; };
assignments:
%empty {}
| assignments assignment {};
assignment:
id ":=" exp { driver.variables[$id] = $exp; };
id:
"identifier";
exp:
"incr" exp <int>{ $$ = 1; } <int>{ $$ = 10; } exp { $$ = $2 + $3 + $4 + $5; }
| "(" exp ")" { std::swap ($$, $2); }
| "identifier" { $$ = driver.variables[$1]; }
| "number" { std::swap ($$, $1); };
]])
AT_BISON_CHECK([-o input.cc -v --graph=input.gv --xml input.yy])
# Check the contents of the report.
AT_CHECK([cat input.output], [],
[[Grammar
0 $accept: unit "end of file"
1 unit: assignments exp
2 assignments: %empty
3 | assignments assignment
4 assignment: id ":=" exp
5 id: "identifier"
6 @1: %empty
7 @2: %empty
8 exp: "incr" exp @1 @2 exp
9 | "(" exp ")"
10 | "identifier"
11 | "number"
Terminals, with rules where they appear
"end of file" (0) 0
error (256)
":=" (258) 4
"incr" (259) 8
"identifier" <std::string> (260) 5 10
"number" <int> (261) 11
"(" (262) 9
")" (263) 9
Nonterminals, with rules where they appear
$accept (9)
on left: 0
unit (10)
on left: 1
on right: 0
assignments (11)
on left: 2 3
on right: 1 3
assignment (12)
on left: 4
on right: 3
id <std::string> (13)
on left: 5
on right: 4
exp <int> (14)
on left: 8 9 10 11
on right: 1 4 8 9
@1 <int> (15)
on left: 6
on right: 8
@2 <int> (16)
on left: 7
on right: 8
State 0
0 $accept: . unit "end of file"
$default reduce using rule 2 (assignments)
unit go to state 1
assignments go to state 2
State 1
0 $accept: unit . "end of file"
"end of file" shift, and go to state 3
State 2
1 unit: assignments . exp
3 assignments: assignments . assignment
"incr" shift, and go to state 4
"identifier" shift, and go to state 5
"number" shift, and go to state 6
"(" shift, and go to state 7
assignment go to state 8
id go to state 9
exp go to state 10
State 3
0 $accept: unit "end of file" .
$default accept
State 4
8 exp: "incr" . exp @1 @2 exp
"incr" shift, and go to state 4
"identifier" shift, and go to state 11
"number" shift, and go to state 6
"(" shift, and go to state 7
exp go to state 12
State 5
5 id: "identifier" .
10 exp: "identifier" .
"end of file" reduce using rule 10 (exp)
$default reduce using rule 5 (id)
State 6
11 exp: "number" .
$default reduce using rule 11 (exp)
State 7
9 exp: "(" . exp ")"
"incr" shift, and go to state 4
"identifier" shift, and go to state 11
"number" shift, and go to state 6
"(" shift, and go to state 7
exp go to state 13
State 8
3 assignments: assignments assignment .
$default reduce using rule 3 (assignments)
State 9
4 assignment: id . ":=" exp
":=" shift, and go to state 14
State 10
1 unit: assignments exp .
$default reduce using rule 1 (unit)
State 11
10 exp: "identifier" .
$default reduce using rule 10 (exp)
State 12
8 exp: "incr" exp . @1 @2 exp
$default reduce using rule 6 (@1)
@1 go to state 15
State 13
9 exp: "(" exp . ")"
")" shift, and go to state 16
State 14
4 assignment: id ":=" . exp
"incr" shift, and go to state 4
"identifier" shift, and go to state 11
"number" shift, and go to state 6
"(" shift, and go to state 7
exp go to state 17
State 15
8 exp: "incr" exp @1 . @2 exp
$default reduce using rule 7 (@2)
@2 go to state 18
State 16
9 exp: "(" exp ")" .
$default reduce using rule 9 (exp)
State 17
4 assignment: id ":=" exp .
$default reduce using rule 4 (assignment)
State 18
8 exp: "incr" exp @1 @2 . exp
"incr" shift, and go to state 4
"identifier" shift, and go to state 11
"number" shift, and go to state 6
"(" shift, and go to state 7
exp go to state 19
State 19
8 exp: "incr" exp @1 @2 exp .
$default reduce using rule 8 (exp)
]])
# Now generate verbose reports.
AT_BISON_CHECK([-o input.cc -rall --graph=input.gv --xml input.yy])
# Check the contents of the report.
AT_CHECK([cat input.output], [],
[[Grammar
0 $accept: unit "end of file"
1 unit: assignments exp
2 assignments: %empty
3 | assignments assignment
4 assignment: id ":=" exp
5 id: "identifier"
6 @1: %empty
7 @2: %empty
8 exp: "incr" exp @1 @2 exp
9 | "(" exp ")"
10 | "identifier"
11 | "number"
Terminals, with rules where they appear
"end of file" (0) 0
error (256)
":=" (258) 4
"incr" (259) 8
"identifier" <std::string> (260) 5 10
"number" <int> (261) 11
"(" (262) 9
")" (263) 9
Nonterminals, with rules where they appear
$accept (9)
on left: 0
unit (10)
on left: 1
on right: 0
assignments (11)
on left: 2 3
on right: 1 3
assignment (12)
on left: 4
on right: 3
id <std::string> (13)
on left: 5
on right: 4
exp <int> (14)
on left: 8 9 10 11
on right: 1 4 8 9
@1 <int> (15)
on left: 6
on right: 8
@2 <int> (16)
on left: 7
on right: 8
State 0
0 $accept: . unit "end of file"
1 unit: . assignments exp
2 assignments: . %empty
3 | . assignments assignment
$default reduce using rule 2 (assignments)
unit go to state 1
assignments go to state 2
State 1
0 $accept: unit . "end of file"
"end of file" shift, and go to state 3
State 2
1 unit: assignments . exp
3 assignments: assignments . assignment
4 assignment: . id ":=" exp
5 id: . "identifier"
8 exp: . "incr" exp @1 @2 exp
9 | . "(" exp ")"
10 | . "identifier"
11 | . "number"
"incr" shift, and go to state 4
"identifier" shift, and go to state 5
"number" shift, and go to state 6
"(" shift, and go to state 7
assignment go to state 8
id go to state 9
exp go to state 10
State 3
0 $accept: unit "end of file" .
$default accept
State 4
8 exp: . "incr" exp @1 @2 exp
8 | "incr" . exp @1 @2 exp
9 | . "(" exp ")"
10 | . "identifier"
11 | . "number"
"incr" shift, and go to state 4
"identifier" shift, and go to state 11
"number" shift, and go to state 6
"(" shift, and go to state 7
exp go to state 12
State 5
5 id: "identifier" . [":="]
10 exp: "identifier" . ["end of file"]
"end of file" reduce using rule 10 (exp)
$default reduce using rule 5 (id)
State 6
11 exp: "number" .
$default reduce using rule 11 (exp)
State 7
8 exp: . "incr" exp @1 @2 exp
9 | . "(" exp ")"
9 | "(" . exp ")"
10 | . "identifier"
11 | . "number"
"incr" shift, and go to state 4
"identifier" shift, and go to state 11
"number" shift, and go to state 6
"(" shift, and go to state 7
exp go to state 13
State 8
3 assignments: assignments assignment .
$default reduce using rule 3 (assignments)
State 9
4 assignment: id . ":=" exp
":=" shift, and go to state 14
State 10
1 unit: assignments exp .
$default reduce using rule 1 (unit)
State 11
10 exp: "identifier" .
$default reduce using rule 10 (exp)
State 12
6 @1: . %empty
8 exp: "incr" exp . @1 @2 exp
$default reduce using rule 6 (@1)
@1 go to state 15
State 13
9 exp: "(" exp . ")"
")" shift, and go to state 16
State 14
4 assignment: id ":=" . exp
8 exp: . "incr" exp @1 @2 exp
9 | . "(" exp ")"
10 | . "identifier"
11 | . "number"
"incr" shift, and go to state 4
"identifier" shift, and go to state 11
"number" shift, and go to state 6
"(" shift, and go to state 7
exp go to state 17
State 15
7 @2: . %empty
8 exp: "incr" exp @1 . @2 exp
$default reduce using rule 7 (@2)
@2 go to state 18
State 16
9 exp: "(" exp ")" .
$default reduce using rule 9 (exp)
State 17
4 assignment: id ":=" exp .
$default reduce using rule 4 (assignment)
State 18
8 exp: . "incr" exp @1 @2 exp
8 | "incr" exp @1 @2 . exp
9 | . "(" exp ")"
10 | . "identifier"
11 | . "number"
"incr" shift, and go to state 4
"identifier" shift, and go to state 11
"number" shift, and go to state 6
"(" shift, and go to state 7
exp go to state 19
State 19
8 exp: "incr" exp @1 @2 exp .
$default reduce using rule 8 (exp)
]])
AT_CHECK([sed -e '1s/GNU Bison .*\.$/GNU Bison VERSION./' input.gv], [],
[[// Generated by GNU Bison VERSION.
// Report bugs to <bug-bison@gnu.org>.
// Home page: <http://www.gnu.org/software/bison/>.
digraph "input.yy"
{
node [fontname = courier, shape = box, colorscheme = paired6]
edge [fontname = courier]
0 [label="State 0\n\l 0 $accept: . unit \"end of file\"\l 1 unit: . assignments exp\l 2 assignments: . %empty\l 3 | . assignments assignment\l"]
0 -> 1 [style=dashed label="unit"]
0 -> 2 [style=dashed label="assignments"]
0 -> "0R2" [style=solid]
"0R2" [label="R2", fillcolor=3, shape=diamond, style=filled]
1 [label="State 1\n\l 0 $accept: unit . \"end of file\"\l"]
1 -> 3 [style=solid label="\"end of file\""]
2 [label="State 2\n\l 1 unit: assignments . exp\l 3 assignments: assignments . assignment\l 4 assignment: . id \":=\" exp\l 5 id: . \"identifier\"\l 8 exp: . \"incr\" exp @1 @2 exp\l 9 | . \"(\" exp \")\"\l 10 | . \"identifier\"\l 11 | . \"number\"\l"]
2 -> 4 [style=solid label="\"incr\""]
2 -> 5 [style=solid label="\"identifier\""]
2 -> 6 [style=solid label="\"number\""]
2 -> 7 [style=solid label="\"(\""]
2 -> 8 [style=dashed label="assignment"]
2 -> 9 [style=dashed label="id"]
2 -> 10 [style=dashed label="exp"]
3 [label="State 3\n\l 0 $accept: unit \"end of file\" .\l"]
3 -> "3R0" [style=solid]
"3R0" [label="Acc", fillcolor=1, shape=diamond, style=filled]
4 [label="State 4\n\l 8 exp: . \"incr\" exp @1 @2 exp\l 8 | \"incr\" . exp @1 @2 exp\l 9 | . \"(\" exp \")\"\l 10 | . \"identifier\"\l 11 | . \"number\"\l"]
4 -> 4 [style=solid label="\"incr\""]
4 -> 11 [style=solid label="\"identifier\""]
4 -> 6 [style=solid label="\"number\""]
4 -> 7 [style=solid label="\"(\""]
4 -> 12 [style=dashed label="exp"]
5 [label="State 5\n\l 5 id: \"identifier\" . [\":=\"]\l 10 exp: \"identifier\" . [\"end of file\"]\l"]
5 -> "5R5" [style=solid]
"5R5" [label="R5", fillcolor=3, shape=diamond, style=filled]
5 -> "5R10" [label="[\"end of file\"]", style=solid]
"5R10" [label="R10", fillcolor=3, shape=diamond, style=filled]
6 [label="State 6\n\l 11 exp: \"number\" .\l"]
6 -> "6R11" [style=solid]
"6R11" [label="R11", fillcolor=3, shape=diamond, style=filled]
7 [label="State 7\n\l 8 exp: . \"incr\" exp @1 @2 exp\l 9 | . \"(\" exp \")\"\l 9 | \"(\" . exp \")\"\l 10 | . \"identifier\"\l 11 | . \"number\"\l"]
7 -> 4 [style=solid label="\"incr\""]
7 -> 11 [style=solid label="\"identifier\""]
7 -> 6 [style=solid label="\"number\""]
7 -> 7 [style=solid label="\"(\""]
7 -> 13 [style=dashed label="exp"]
8 [label="State 8\n\l 3 assignments: assignments assignment .\l"]
8 -> "8R3" [style=solid]
"8R3" [label="R3", fillcolor=3, shape=diamond, style=filled]
9 [label="State 9\n\l 4 assignment: id . \":=\" exp\l"]
9 -> 14 [style=solid label="\":=\""]
10 [label="State 10\n\l 1 unit: assignments exp .\l"]
10 -> "10R1" [style=solid]
"10R1" [label="R1", fillcolor=3, shape=diamond, style=filled]
11 [label="State 11\n\l 10 exp: \"identifier\" .\l"]
11 -> "11R10" [style=solid]
"11R10" [label="R10", fillcolor=3, shape=diamond, style=filled]
12 [label="State 12\n\l 6 @1: . %empty\l 8 exp: \"incr\" exp . @1 @2 exp\l"]
12 -> 15 [style=dashed label="@1"]
12 -> "12R6" [style=solid]
"12R6" [label="R6", fillcolor=3, shape=diamond, style=filled]
13 [label="State 13\n\l 9 exp: \"(\" exp . \")\"\l"]
13 -> 16 [style=solid label="\")\""]
14 [label="State 14\n\l 4 assignment: id \":=\" . exp\l 8 exp: . \"incr\" exp @1 @2 exp\l 9 | . \"(\" exp \")\"\l 10 | . \"identifier\"\l 11 | . \"number\"\l"]
14 -> 4 [style=solid label="\"incr\""]
14 -> 11 [style=solid label="\"identifier\""]
14 -> 6 [style=solid label="\"number\""]
14 -> 7 [style=solid label="\"(\""]
14 -> 17 [style=dashed label="exp"]
15 [label="State 15\n\l 7 @2: . %empty\l 8 exp: \"incr\" exp @1 . @2 exp\l"]
15 -> 18 [style=dashed label="@2"]
15 -> "15R7" [style=solid]
"15R7" [label="R7", fillcolor=3, shape=diamond, style=filled]
16 [label="State 16\n\l 9 exp: \"(\" exp \")\" .\l"]
16 -> "16R9" [style=solid]
"16R9" [label="R9", fillcolor=3, shape=diamond, style=filled]
17 [label="State 17\n\l 4 assignment: id \":=\" exp .\l"]
17 -> "17R4" [style=solid]
"17R4" [label="R4", fillcolor=3, shape=diamond, style=filled]
18 [label="State 18\n\l 8 exp: . \"incr\" exp @1 @2 exp\l 8 | \"incr\" exp @1 @2 . exp\l 9 | . \"(\" exp \")\"\l 10 | . \"identifier\"\l 11 | . \"number\"\l"]
18 -> 4 [style=solid label="\"incr\""]
18 -> 11 [style=solid label="\"identifier\""]
18 -> 6 [style=solid label="\"number\""]
18 -> 7 [style=solid label="\"(\""]
18 -> 19 [style=dashed label="exp"]
19 [label="State 19\n\l 8 exp: \"incr\" exp @1 @2 exp .\l"]
19 -> "19R8" [style=solid]
"19R8" [label="R8", fillcolor=3, shape=diamond, style=filled]
}
]])
AT_CHECK([[sed -e 's/bison-xml-report version="[^"]*"/bison-xml-report version="VERSION"/g' input.xml]], [],
[[<?xml version="1.0"?>
<bison-xml-report version="VERSION" bug-report="bug-bison@gnu.org" url="http://www.gnu.org/software/bison/">
<filename>input.yy</filename>
<grammar>
<rules>
<rule number="0" usefulness="useful">
<lhs>$accept</lhs>
<rhs>
<symbol>unit</symbol>
<symbol>&quot;end of file&quot;</symbol>
</rhs>
</rule>
<rule number="1" usefulness="useful">
<lhs>unit</lhs>
<rhs>
<symbol>assignments</symbol>
<symbol>exp</symbol>
</rhs>
</rule>
<rule number="2" usefulness="useful">
<lhs>assignments</lhs>
<rhs>
<empty/>
</rhs>
</rule>
<rule number="3" usefulness="useful">
<lhs>assignments</lhs>
<rhs>
<symbol>assignments</symbol>
<symbol>assignment</symbol>
</rhs>
</rule>
<rule number="4" usefulness="useful">
<lhs>assignment</lhs>
<rhs>
<symbol>id</symbol>
<symbol>&quot;:=&quot;</symbol>
<symbol>exp</symbol>
</rhs>
</rule>
<rule number="5" usefulness="useful">
<lhs>id</lhs>
<rhs>
<symbol>&quot;identifier&quot;</symbol>
</rhs>
</rule>
<rule number="6" usefulness="useful">
<lhs>@1</lhs>
<rhs>
<empty/>
</rhs>
</rule>
<rule number="7" usefulness="useful">
<lhs>@2</lhs>
<rhs>
<empty/>
</rhs>
</rule>
<rule number="8" usefulness="useful">
<lhs>exp</lhs>
<rhs>
<symbol>&quot;incr&quot;</symbol>
<symbol>exp</symbol>
<symbol>@1</symbol>
<symbol>@2</symbol>
<symbol>exp</symbol>
</rhs>
</rule>
<rule number="9" usefulness="useful">
<lhs>exp</lhs>
<rhs>
<symbol>&quot;(&quot;</symbol>
<symbol>exp</symbol>
<symbol>&quot;)&quot;</symbol>
</rhs>
</rule>
<rule number="10" usefulness="useful">
<lhs>exp</lhs>
<rhs>
<symbol>&quot;identifier&quot;</symbol>
</rhs>
</rule>
<rule number="11" usefulness="useful">
<lhs>exp</lhs>
<rhs>
<symbol>&quot;number&quot;</symbol>
</rhs>
</rule>
</rules>
<terminals>
<terminal symbol-number="0" token-number="0" name="&quot;end of file&quot;" usefulness="useful"/>
<terminal symbol-number="1" token-number="256" name="error" usefulness="useful"/>
<terminal symbol-number="3" token-number="258" name="&quot;:=&quot;" usefulness="useful"/>
<terminal symbol-number="4" token-number="259" name="&quot;incr&quot;" usefulness="useful"/>
<terminal symbol-number="5" token-number="260" name="&quot;identifier&quot;" usefulness="useful"/>
<terminal symbol-number="6" token-number="261" name="&quot;number&quot;" usefulness="useful"/>
<terminal symbol-number="7" token-number="262" name="&quot;(&quot;" usefulness="useful"/>
<terminal symbol-number="8" token-number="263" name="&quot;)&quot;" usefulness="useful"/>
</terminals>
<nonterminals>
<nonterminal symbol-number="9" name="$accept" usefulness="useful"/>
<nonterminal symbol-number="10" name="unit" usefulness="useful"/>
<nonterminal symbol-number="11" name="assignments" usefulness="useful"/>
<nonterminal symbol-number="12" name="assignment" usefulness="useful"/>
<nonterminal symbol-number="13" name="id" usefulness="useful"/>
<nonterminal symbol-number="14" name="exp" usefulness="useful"/>
<nonterminal symbol-number="15" name="@1" usefulness="useful"/>
<nonterminal symbol-number="16" name="@2" usefulness="useful"/>
</nonterminals>
</grammar>
<automaton>
<state number="0">
<itemset>
<item rule-number="0" point="0"/>
<item rule-number="1" point="0"/>
<item rule-number="2" point="0"/>
<item rule-number="3" point="0"/>
</itemset>
<actions>
<transitions>
<transition type="goto" symbol="unit" state="1"/>
<transition type="goto" symbol="assignments" state="2"/>
</transitions>
<errors/>
<reductions>
<reduction symbol="$default" rule="2" enabled="true"/>
</reductions>
</actions>
<solved-conflicts/>
</state>
<state number="1">
<itemset>
<item rule-number="0" point="1"/>
</itemset>
<actions>
<transitions>
<transition type="shift" symbol="&quot;end of file&quot;" state="3"/>
</transitions>
<errors/>
<reductions/>
</actions>
<solved-conflicts/>
</state>
<state number="2">
<itemset>
<item rule-number="1" point="1"/>
<item rule-number="3" point="1"/>
<item rule-number="4" point="0"/>
<item rule-number="5" point="0"/>
<item rule-number="8" point="0"/>
<item rule-number="9" point="0"/>
<item rule-number="10" point="0"/>
<item rule-number="11" point="0"/>
</itemset>
<actions>
<transitions>
<transition type="shift" symbol="&quot;incr&quot;" state="4"/>
<transition type="shift" symbol="&quot;identifier&quot;" state="5"/>
<transition type="shift" symbol="&quot;number&quot;" state="6"/>
<transition type="shift" symbol="&quot;(&quot;" state="7"/>
<transition type="goto" symbol="assignment" state="8"/>
<transition type="goto" symbol="id" state="9"/>
<transition type="goto" symbol="exp" state="10"/>
</transitions>
<errors/>
<reductions/>
</actions>
<solved-conflicts/>
</state>
<state number="3">
<itemset>
<item rule-number="0" point="2"/>
</itemset>
<actions>
<transitions/>
<errors/>
<reductions>
<reduction symbol="$default" rule="accept" enabled="true"/>
</reductions>
</actions>
<solved-conflicts/>
</state>
<state number="4">
<itemset>
<item rule-number="8" point="0"/>
<item rule-number="8" point="1"/>
<item rule-number="9" point="0"/>
<item rule-number="10" point="0"/>
<item rule-number="11" point="0"/>
</itemset>
<actions>
<transitions>
<transition type="shift" symbol="&quot;incr&quot;" state="4"/>
<transition type="shift" symbol="&quot;identifier&quot;" state="11"/>
<transition type="shift" symbol="&quot;number&quot;" state="6"/>
<transition type="shift" symbol="&quot;(&quot;" state="7"/>
<transition type="goto" symbol="exp" state="12"/>
</transitions>
<errors/>
<reductions/>
</actions>
<solved-conflicts/>
</state>
<state number="5">
<itemset>
<item rule-number="5" point="1">
<lookaheads>
<symbol>&quot;:=&quot;</symbol>
</lookaheads>
</item>
<item rule-number="10" point="1">
<lookaheads>
<symbol>&quot;end of file&quot;</symbol>
</lookaheads>
</item>
</itemset>
<actions>
<transitions/>
<errors/>
<reductions>
<reduction symbol="&quot;end of file&quot;" rule="10" enabled="true"/>
<reduction symbol="$default" rule="5" enabled="true"/>
</reductions>
</actions>
<solved-conflicts/>
</state>
<state number="6">
<itemset>
<item rule-number="11" point="1"/>
</itemset>
<actions>
<transitions/>
<errors/>
<reductions>
<reduction symbol="$default" rule="11" enabled="true"/>
</reductions>
</actions>
<solved-conflicts/>
</state>
<state number="7">
<itemset>
<item rule-number="8" point="0"/>
<item rule-number="9" point="0"/>
<item rule-number="9" point="1"/>
<item rule-number="10" point="0"/>
<item rule-number="11" point="0"/>
</itemset>
<actions>
<transitions>
<transition type="shift" symbol="&quot;incr&quot;" state="4"/>
<transition type="shift" symbol="&quot;identifier&quot;" state="11"/>
<transition type="shift" symbol="&quot;number&quot;" state="6"/>
<transition type="shift" symbol="&quot;(&quot;" state="7"/>
<transition type="goto" symbol="exp" state="13"/>
</transitions>
<errors/>
<reductions/>
</actions>
<solved-conflicts/>
</state>
<state number="8">
<itemset>
<item rule-number="3" point="2"/>
</itemset>
<actions>
<transitions/>
<errors/>
<reductions>
<reduction symbol="$default" rule="3" enabled="true"/>
</reductions>
</actions>
<solved-conflicts/>
</state>
<state number="9">
<itemset>
<item rule-number="4" point="1"/>
</itemset>
<actions>
<transitions>
<transition type="shift" symbol="&quot;:=&quot;" state="14"/>
</transitions>
<errors/>
<reductions/>
</actions>
<solved-conflicts/>
</state>
<state number="10">
<itemset>
<item rule-number="1" point="2"/>
</itemset>
<actions>
<transitions/>
<errors/>
<reductions>
<reduction symbol="$default" rule="1" enabled="true"/>
</reductions>
</actions>
<solved-conflicts/>
</state>
<state number="11">
<itemset>
<item rule-number="10" point="1"/>
</itemset>
<actions>
<transitions/>
<errors/>
<reductions>
<reduction symbol="$default" rule="10" enabled="true"/>
</reductions>
</actions>
<solved-conflicts/>
</state>
<state number="12">
<itemset>
<item rule-number="6" point="0"/>
<item rule-number="8" point="2"/>
</itemset>
<actions>
<transitions>
<transition type="goto" symbol="@1" state="15"/>
</transitions>
<errors/>
<reductions>
<reduction symbol="$default" rule="6" enabled="true"/>
</reductions>
</actions>
<solved-conflicts/>
</state>
<state number="13">
<itemset>
<item rule-number="9" point="2"/>
</itemset>
<actions>
<transitions>
<transition type="shift" symbol="&quot;)&quot;" state="16"/>
</transitions>
<errors/>
<reductions/>
</actions>
<solved-conflicts/>
</state>
<state number="14">
<itemset>
<item rule-number="4" point="2"/>
<item rule-number="8" point="0"/>
<item rule-number="9" point="0"/>
<item rule-number="10" point="0"/>
<item rule-number="11" point="0"/>
</itemset>
<actions>
<transitions>
<transition type="shift" symbol="&quot;incr&quot;" state="4"/>
<transition type="shift" symbol="&quot;identifier&quot;" state="11"/>
<transition type="shift" symbol="&quot;number&quot;" state="6"/>
<transition type="shift" symbol="&quot;(&quot;" state="7"/>
<transition type="goto" symbol="exp" state="17"/>
</transitions>
<errors/>
<reductions/>
</actions>
<solved-conflicts/>
</state>
<state number="15">
<itemset>
<item rule-number="7" point="0"/>
<item rule-number="8" point="3"/>
</itemset>
<actions>
<transitions>
<transition type="goto" symbol="@2" state="18"/>
</transitions>
<errors/>
<reductions>
<reduction symbol="$default" rule="7" enabled="true"/>
</reductions>
</actions>
<solved-conflicts/>
</state>
<state number="16">
<itemset>
<item rule-number="9" point="3"/>
</itemset>
<actions>
<transitions/>
<errors/>
<reductions>
<reduction symbol="$default" rule="9" enabled="true"/>
</reductions>
</actions>
<solved-conflicts/>
</state>
<state number="17">
<itemset>
<item rule-number="4" point="3"/>
</itemset>
<actions>
<transitions/>
<errors/>
<reductions>
<reduction symbol="$default" rule="4" enabled="true"/>
</reductions>
</actions>
<solved-conflicts/>
</state>
<state number="18">
<itemset>
<item rule-number="8" point="0"/>
<item rule-number="8" point="4"/>
<item rule-number="9" point="0"/>
<item rule-number="10" point="0"/>
<item rule-number="11" point="0"/>
</itemset>
<actions>
<transitions>
<transition type="shift" symbol="&quot;incr&quot;" state="4"/>
<transition type="shift" symbol="&quot;identifier&quot;" state="11"/>
<transition type="shift" symbol="&quot;number&quot;" state="6"/>
<transition type="shift" symbol="&quot;(&quot;" state="7"/>
<transition type="goto" symbol="exp" state="19"/>
</transitions>
<errors/>
<reductions/>
</actions>
<solved-conflicts/>
</state>
<state number="19">
<itemset>
<item rule-number="8" point="5"/>
</itemset>
<actions>
<transitions/>
<errors/>
<reductions>
<reduction symbol="$default" rule="8" enabled="true"/>
</reductions>
</actions>
<solved-conflicts/>
</state>
</automaton>
</bison-xml-report>
]])
AT_BISON_OPTION_POPDEFS
AT_CLEANUP