Files
bison/tests/report.at
Akim Demaille 51861998c7 report: clean up its format
The format is inconsistent.  For instance most sections are
indented (including "Terminals unused in grammar" for instance), but
the sections "Terminals, with rules where they appear" and
"Nonterminals, with rules where they appear" are not.  Let's indent
them.  Also, these two sections try to wrap the output to avoid lines
too long.  Yet we don't do that in the rest of the file, for instance
when listing the lookaheads of an item.

For instance in the case of Bison's parse-gram.output we go from:

    Terminals, with rules where they appear

    "end of file" (0) 0
    error (256) 28 88
    "string" <char*> (258) 9 13 16 17 20 23 24 109 116
    [...]

    Nonterminals, with rules where they appear

    $accept (58)
        on left: 0
    input (59)
        on left: 1, on right: 0
    prologue_declarations (60)
        on left: 2 3, on right: 1 3
    prologue_declaration (61)
        on left: 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24
        25 26 27 28 29, on right: 3
    [...]

to

    Terminals, with rules where they appear

    "end of file" (0) 0
    error (256) 28 88
    "string" <char*> (258) 9 13 16 17 20 23 24 109 116
    [...]

    Nonterminals, with rules where they appear

        $accept (58)
            on left: 0
        input (59)
            on left: 1
            on right: 0
        prologue_declarations (60)
            on left: 2 3
            on right: 1 3
        prologue_declaration (61)
            on left: 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25 26 27 28 29
            on right: 3
    [...]

* src/print.c (END_TEST): Remove.
(print_terminal_symbols): Don't try to wrap the output.
(print_nonterminal_symbols): Likewise.
Make two different lines for occurrences on the left, and occurrence
on the rhs of the rules.
Indent by 4 and 8, not 3.
* src/reduce.c (reduce_output): Indent by 4, not 3.

* tests/conflicts.at, tests/existing.at, tests/reduce.at,
* tests/regression.at, tests/report.at:
Adjust.
2019-02-09 08:23:50 +01:00

1143 lines
28 KiB
Plaintext

# 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