1 # Bison Reports. -*- Autotest -*-
3 # Copyright (C) 2018-2021 Free Software Foundation, Inc.
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation, either version 3 of the License, or
8 # (at your option) any later version.
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with this program. If not, see <https://www.gnu.org/licenses/>.
18 AT_BANNER([[Test reports.]])
28 AT_BISON_OPTION_PUSHDEFS
36 %token <std::string> IDENTIFIER "identifier"
37 %type <std::string> id
38 %token <int> NUMBER "number"
43 unit: assignments exp { driver.result = $2; };
47 | assignments assignment {};
50 id ":=" exp { driver.variables[$id] = $exp; };
56 "incr" exp <int>{ $$ = 1; } <int>{ $$ = 10; } exp { $$ = $2 + $3 + $4 + $5; }
57 | "(" exp ")" { std::swap ($$, $2); }
58 | "identifier" { $$ = driver.variables[$1]; }
59 | "number" { std::swap ($$, $1); };
62 AT_SKIP_IF([[test x"$XSLTPROC" = x]])
63 AT_BISON_CHECK([-o input.cc -v --graph=input.gv --html --xml input.yy])
65 # Check the contents of the report.
66 AT_CHECK([cat input.output], [],
69 0 $accept: unit "end of file"
71 1 unit: assignments exp
74 3 | assignments assignment
76 4 assignment: id ":=" exp
84 8 exp: "incr" exp @1 @2 exp
90 Terminals, with rules where they appear
96 "identifier" <std::string> (260) 5 10
97 "number" <int> (261) 11
102 Nonterminals, with rules where they appear
115 id <std::string> (13)
131 0 $accept: . unit "end of file"
133 $default reduce using rule 2 (assignments)
136 assignments go to state 2
141 0 $accept: unit . "end of file"
143 "end of file" shift, and go to state 3
148 1 unit: assignments . exp
149 3 assignments: assignments . assignment
151 "incr" shift, and go to state 4
152 "identifier" shift, and go to state 5
153 "number" shift, and go to state 6
154 "(" shift, and go to state 7
156 assignment go to state 8
163 0 $accept: unit "end of file" .
170 8 exp: "incr" . exp @1 @2 exp
172 "incr" shift, and go to state 4
173 "identifier" shift, and go to state 11
174 "number" shift, and go to state 6
175 "(" shift, and go to state 7
183 10 exp: "identifier" .
185 "end of file" reduce using rule 10 (exp)
186 $default reduce using rule 5 (id)
193 $default reduce using rule 11 (exp)
200 "incr" shift, and go to state 4
201 "identifier" shift, and go to state 11
202 "number" shift, and go to state 6
203 "(" shift, and go to state 7
210 3 assignments: assignments assignment .
212 $default reduce using rule 3 (assignments)
217 4 assignment: id . ":=" exp
219 ":=" shift, and go to state 14
224 1 unit: assignments exp .
226 $default reduce using rule 1 (unit)
231 10 exp: "identifier" .
233 $default reduce using rule 10 (exp)
238 8 exp: "incr" exp . @1 @2 exp
240 $default reduce using rule 6 (@1)
249 ")" shift, and go to state 16
254 4 assignment: id ":=" . exp
256 "incr" shift, and go to state 4
257 "identifier" shift, and go to state 11
258 "number" shift, and go to state 6
259 "(" shift, and go to state 7
266 8 exp: "incr" exp @1 . @2 exp
268 $default reduce using rule 7 (@2)
277 $default reduce using rule 9 (exp)
282 4 assignment: id ":=" exp .
284 $default reduce using rule 4 (assignment)
289 8 exp: "incr" exp @1 @2 . exp
291 "incr" shift, and go to state 4
292 "identifier" shift, and go to state 11
293 "number" shift, and go to state 6
294 "(" shift, and go to state 7
301 8 exp: "incr" exp @1 @2 exp .
303 $default reduce using rule 8 (exp)
307 # Now generate verbose reports.
308 AT_SKIP_IF([[test x"$XSLTPROC" = x]])
309 AT_BISON_CHECK([-o input.cc -rall --graph=input.gv --html --xml input.yy])
311 # Check the contents of the report.
312 AT_CHECK([cat input.output], [],
315 0 $accept: unit "end of file"
317 1 unit: assignments exp
319 2 assignments: %empty
320 3 | assignments assignment
322 4 assignment: id ":=" exp
330 8 exp: "incr" exp @1 @2 exp
336 Terminals, with rules where they appear
342 "identifier" <std::string> (260) 5 10
343 "number" <int> (261) 11
348 Nonterminals, with rules where they appear
361 id <std::string> (13)
377 0 $accept: . unit "end of file"
378 1 unit: . assignments exp
379 2 assignments: %empty .
380 3 | . assignments assignment
382 $default reduce using rule 2 (assignments)
385 assignments go to state 2
390 0 $accept: unit . "end of file"
392 "end of file" shift, and go to state 3
397 1 unit: assignments . exp
398 3 assignments: assignments . assignment
399 4 assignment: . id ":=" exp
401 8 exp: . "incr" exp @1 @2 exp
406 "incr" shift, and go to state 4
407 "identifier" shift, and go to state 5
408 "number" shift, and go to state 6
409 "(" shift, and go to state 7
411 assignment go to state 8
418 0 $accept: unit "end of file" .
425 8 exp: . "incr" exp @1 @2 exp
426 8 | "incr" . exp @1 @2 exp
431 "incr" shift, and go to state 4
432 "identifier" shift, and go to state 11
433 "number" shift, and go to state 6
434 "(" shift, and go to state 7
441 5 id: "identifier" . [":="]
442 10 exp: "identifier" . ["end of file"]
444 "end of file" reduce using rule 10 (exp)
445 $default reduce using rule 5 (id)
452 $default reduce using rule 11 (exp)
457 8 exp: . "incr" exp @1 @2 exp
463 "incr" shift, and go to state 4
464 "identifier" shift, and go to state 11
465 "number" shift, and go to state 6
466 "(" shift, and go to state 7
473 3 assignments: assignments assignment .
475 $default reduce using rule 3 (assignments)
480 4 assignment: id . ":=" exp
482 ":=" shift, and go to state 14
487 1 unit: assignments exp .
489 $default reduce using rule 1 (unit)
494 10 exp: "identifier" .
496 $default reduce using rule 10 (exp)
502 8 exp: "incr" exp . @1 @2 exp
504 $default reduce using rule 6 (@1)
513 ")" shift, and go to state 16
518 4 assignment: id ":=" . exp
519 8 exp: . "incr" exp @1 @2 exp
524 "incr" shift, and go to state 4
525 "identifier" shift, and go to state 11
526 "number" shift, and go to state 6
527 "(" shift, and go to state 7
535 8 exp: "incr" exp @1 . @2 exp
537 $default reduce using rule 7 (@2)
546 $default reduce using rule 9 (exp)
551 4 assignment: id ":=" exp .
553 $default reduce using rule 4 (assignment)
558 8 exp: . "incr" exp @1 @2 exp
559 8 | "incr" exp @1 @2 . exp
564 "incr" shift, and go to state 4
565 "identifier" shift, and go to state 11
566 "number" shift, and go to state 6
567 "(" shift, and go to state 7
574 8 exp: "incr" exp @1 @2 exp .
576 $default reduce using rule 8 (exp)
581 AT_CHECK([cat input.gv], [],
582 [[// Generated by GNU Bison ]AT_PACKAGE_VERSION[.
583 // Report bugs to <bug-bison@gnu.org>.
584 // Home page: <https://www.gnu.org/software/bison/>.
588 node [fontname = courier, shape = box, colorscheme = paired6]
589 edge [fontname = courier]
591 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"]
592 0 -> 1 [style=dashed label="unit"]
593 0 -> 2 [style=dashed label="assignments"]
594 0 -> "0R2" [style=solid]
595 "0R2" [label="R2", fillcolor=3, shape=diamond, style=filled]
596 1 [label="State 1\n\l 0 $accept: unit • \"end of file\"\l"]
597 1 -> 3 [style=solid label="\"end of file\""]
598 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"]
599 2 -> 4 [style=solid label="\"incr\""]
600 2 -> 5 [style=solid label="\"identifier\""]
601 2 -> 6 [style=solid label="\"number\""]
602 2 -> 7 [style=solid label="\"(\""]
603 2 -> 8 [style=dashed label="assignment"]
604 2 -> 9 [style=dashed label="id"]
605 2 -> 10 [style=dashed label="exp"]
606 3 [label="State 3\n\l 0 $accept: unit \"end of file\" •\l"]
607 3 -> "3R0" [style=solid]
608 "3R0" [label="Acc", fillcolor=1, shape=diamond, style=filled]
609 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"]
610 4 -> 4 [style=solid label="\"incr\""]
611 4 -> 11 [style=solid label="\"identifier\""]
612 4 -> 6 [style=solid label="\"number\""]
613 4 -> 7 [style=solid label="\"(\""]
614 4 -> 12 [style=dashed label="exp"]
615 5 [label="State 5\n\l 5 id: \"identifier\" • [\":=\"]\l 10 exp: \"identifier\" • [\"end of file\"]\l"]
616 5 -> "5R5" [style=solid]
617 "5R5" [label="R5", fillcolor=3, shape=diamond, style=filled]
618 5 -> "5R10" [label="[\"end of file\"]", style=solid]
619 "5R10" [label="R10", fillcolor=3, shape=diamond, style=filled]
620 6 [label="State 6\n\l 11 exp: \"number\" •\l"]
621 6 -> "6R11" [style=solid]
622 "6R11" [label="R11", fillcolor=3, shape=diamond, style=filled]
623 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"]
624 7 -> 4 [style=solid label="\"incr\""]
625 7 -> 11 [style=solid label="\"identifier\""]
626 7 -> 6 [style=solid label="\"number\""]
627 7 -> 7 [style=solid label="\"(\""]
628 7 -> 13 [style=dashed label="exp"]
629 8 [label="State 8\n\l 3 assignments: assignments assignment •\l"]
630 8 -> "8R3" [style=solid]
631 "8R3" [label="R3", fillcolor=3, shape=diamond, style=filled]
632 9 [label="State 9\n\l 4 assignment: id • \":=\" exp\l"]
633 9 -> 14 [style=solid label="\":=\""]
634 10 [label="State 10\n\l 1 unit: assignments exp •\l"]
635 10 -> "10R1" [style=solid]
636 "10R1" [label="R1", fillcolor=3, shape=diamond, style=filled]
637 11 [label="State 11\n\l 10 exp: \"identifier\" •\l"]
638 11 -> "11R10" [style=solid]
639 "11R10" [label="R10", fillcolor=3, shape=diamond, style=filled]
640 12 [label="State 12\n\l 6 @1: • %empty\l 8 exp: \"incr\" exp • @1 @2 exp\l"]
641 12 -> 15 [style=dashed label="@1"]
642 12 -> "12R6" [style=solid]
643 "12R6" [label="R6", fillcolor=3, shape=diamond, style=filled]
644 13 [label="State 13\n\l 9 exp: \"(\" exp • \")\"\l"]
645 13 -> 16 [style=solid label="\")\""]
646 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"]
647 14 -> 4 [style=solid label="\"incr\""]
648 14 -> 11 [style=solid label="\"identifier\""]
649 14 -> 6 [style=solid label="\"number\""]
650 14 -> 7 [style=solid label="\"(\""]
651 14 -> 17 [style=dashed label="exp"]
652 15 [label="State 15\n\l 7 @2: • %empty\l 8 exp: \"incr\" exp @1 • @2 exp\l"]
653 15 -> 18 [style=dashed label="@2"]
654 15 -> "15R7" [style=solid]
655 "15R7" [label="R7", fillcolor=3, shape=diamond, style=filled]
656 16 [label="State 16\n\l 9 exp: \"(\" exp \")\" •\l"]
657 16 -> "16R9" [style=solid]
658 "16R9" [label="R9", fillcolor=3, shape=diamond, style=filled]
659 17 [label="State 17\n\l 4 assignment: id \":=\" exp •\l"]
660 17 -> "17R4" [style=solid]
661 "17R4" [label="R4", fillcolor=3, shape=diamond, style=filled]
662 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"]
663 18 -> 4 [style=solid label="\"incr\""]
664 18 -> 11 [style=solid label="\"identifier\""]
665 18 -> 6 [style=solid label="\"number\""]
666 18 -> 7 [style=solid label="\"(\""]
667 18 -> 19 [style=dashed label="exp"]
668 19 [label="State 19\n\l 8 exp: \"incr\" exp @1 @2 exp •\l"]
669 19 -> "19R8" [style=solid]
670 "19R8" [label="R8", fillcolor=3, shape=diamond, style=filled]
675 AT_CHECK([[cat input.xml]], [],
676 [[<?xml version="1.0"?>
678 <bison-xml-report version="]AT_PACKAGE_VERSION[" bug-report="bug-bison@gnu.org" url="https://www.gnu.org/software/bison/">
680 <filename>input.yy</filename>
684 <rule number="0" usefulness="useful">
687 <symbol>unit</symbol>
688 <symbol>"end of file"</symbol>
691 <rule number="1" usefulness="useful">
694 <symbol>assignments</symbol>
698 <rule number="2" usefulness="useful">
699 <lhs>assignments</lhs>
704 <rule number="3" usefulness="useful">
705 <lhs>assignments</lhs>
707 <symbol>assignments</symbol>
708 <symbol>assignment</symbol>
711 <rule number="4" usefulness="useful">
712 <lhs>assignment</lhs>
715 <symbol>":="</symbol>
719 <rule number="5" usefulness="useful">
722 <symbol>"identifier"</symbol>
725 <rule number="6" usefulness="useful">
731 <rule number="7" usefulness="useful">
737 <rule number="8" usefulness="useful">
740 <symbol>"incr"</symbol>
747 <rule number="9" usefulness="useful">
750 <symbol>"("</symbol>
752 <symbol>")"</symbol>
755 <rule number="10" usefulness="useful">
758 <symbol>"identifier"</symbol>
761 <rule number="11" usefulness="useful">
764 <symbol>"number"</symbol>
769 <terminal symbol-number="0" token-number="0" name=""end of file"" type="" usefulness="useful"/>
770 <terminal symbol-number="1" token-number="256" name="error" type="" usefulness="useful"/>
771 <terminal symbol-number="3" token-number="258" name="":="" type="" usefulness="useful"/>
772 <terminal symbol-number="4" token-number="259" name=""incr"" type="" usefulness="useful"/>
773 <terminal symbol-number="5" token-number="260" name=""identifier"" type="std::string" usefulness="useful"/>
774 <terminal symbol-number="6" token-number="261" name=""number"" type="int" usefulness="useful"/>
775 <terminal symbol-number="7" token-number="262" name=""("" type="" usefulness="useful"/>
776 <terminal symbol-number="8" token-number="263" name="")"" type="" usefulness="useful"/>
779 <nonterminal symbol-number="9" name="$accept" type="" usefulness="useful"/>
780 <nonterminal symbol-number="10" name="unit" type="" usefulness="useful"/>
781 <nonterminal symbol-number="11" name="assignments" type="" usefulness="useful"/>
782 <nonterminal symbol-number="12" name="assignment" type="" usefulness="useful"/>
783 <nonterminal symbol-number="13" name="id" type="std::string" usefulness="useful"/>
784 <nonterminal symbol-number="14" name="exp" type="int" usefulness="useful"/>
785 <nonterminal symbol-number="15" name="@1" type="int" usefulness="useful"/>
786 <nonterminal symbol-number="16" name="@2" type="int" usefulness="useful"/>
794 <item rule-number="0" dot="0"/>
795 <item rule-number="1" dot="0"/>
796 <item rule-number="2" dot="0"/>
797 <item rule-number="3" dot="0"/>
801 <transition type="goto" symbol="unit" state="1"/>
802 <transition type="goto" symbol="assignments" state="2"/>
806 <reduction symbol="$default" rule="2" enabled="true"/>
814 <item rule-number="0" dot="1"/>
818 <transition type="shift" symbol=""end of file"" state="3"/>
828 <item rule-number="1" dot="1"/>
829 <item rule-number="3" dot="1"/>
830 <item rule-number="4" dot="0"/>
831 <item rule-number="5" dot="0"/>
832 <item rule-number="8" dot="0"/>
833 <item rule-number="9" dot="0"/>
834 <item rule-number="10" dot="0"/>
835 <item rule-number="11" dot="0"/>
839 <transition type="shift" symbol=""incr"" state="4"/>
840 <transition type="shift" symbol=""identifier"" state="5"/>
841 <transition type="shift" symbol=""number"" state="6"/>
842 <transition type="shift" symbol=""("" state="7"/>
843 <transition type="goto" symbol="assignment" state="8"/>
844 <transition type="goto" symbol="id" state="9"/>
845 <transition type="goto" symbol="exp" state="10"/>
855 <item rule-number="0" dot="2"/>
861 <reduction symbol="$default" rule="accept" enabled="true"/>
869 <item rule-number="8" dot="0"/>
870 <item rule-number="8" dot="1"/>
871 <item rule-number="9" dot="0"/>
872 <item rule-number="10" dot="0"/>
873 <item rule-number="11" dot="0"/>
877 <transition type="shift" symbol=""incr"" state="4"/>
878 <transition type="shift" symbol=""identifier"" state="11"/>
879 <transition type="shift" symbol=""number"" state="6"/>
880 <transition type="shift" symbol=""("" state="7"/>
881 <transition type="goto" symbol="exp" state="12"/>
891 <item rule-number="5" dot="1">
893 <symbol>":="</symbol>
896 <item rule-number="10" dot="1">
898 <symbol>"end of file"</symbol>
906 <reduction symbol=""end of file"" rule="10" enabled="true"/>
907 <reduction symbol="$default" rule="5" enabled="true"/>
915 <item rule-number="11" dot="1"/>
921 <reduction symbol="$default" rule="11" enabled="true"/>
929 <item rule-number="8" dot="0"/>
930 <item rule-number="9" dot="0"/>
931 <item rule-number="9" dot="1"/>
932 <item rule-number="10" dot="0"/>
933 <item rule-number="11" dot="0"/>
937 <transition type="shift" symbol=""incr"" state="4"/>
938 <transition type="shift" symbol=""identifier"" state="11"/>
939 <transition type="shift" symbol=""number"" state="6"/>
940 <transition type="shift" symbol=""("" state="7"/>
941 <transition type="goto" symbol="exp" state="13"/>
951 <item rule-number="3" dot="2"/>
957 <reduction symbol="$default" rule="3" enabled="true"/>
965 <item rule-number="4" dot="1"/>
969 <transition type="shift" symbol="":="" state="14"/>
979 <item rule-number="1" dot="2"/>
985 <reduction symbol="$default" rule="1" enabled="true"/>
993 <item rule-number="10" dot="1"/>
999 <reduction symbol="$default" rule="10" enabled="true"/>
1007 <item rule-number="6" dot="0"/>
1008 <item rule-number="8" dot="2"/>
1012 <transition type="goto" symbol="@1" state="15"/>
1016 <reduction symbol="$default" rule="6" enabled="true"/>
1024 <item rule-number="9" dot="2"/>
1028 <transition type="shift" symbol="")"" state="16"/>
1038 <item rule-number="4" dot="2"/>
1039 <item rule-number="8" dot="0"/>
1040 <item rule-number="9" dot="0"/>
1041 <item rule-number="10" dot="0"/>
1042 <item rule-number="11" dot="0"/>
1046 <transition type="shift" symbol=""incr"" state="4"/>
1047 <transition type="shift" symbol=""identifier"" state="11"/>
1048 <transition type="shift" symbol=""number"" state="6"/>
1049 <transition type="shift" symbol=""("" state="7"/>
1050 <transition type="goto" symbol="exp" state="17"/>
1060 <item rule-number="7" dot="0"/>
1061 <item rule-number="8" dot="3"/>
1065 <transition type="goto" symbol="@2" state="18"/>
1069 <reduction symbol="$default" rule="7" enabled="true"/>
1077 <item rule-number="9" dot="3"/>
1083 <reduction symbol="$default" rule="9" enabled="true"/>
1091 <item rule-number="4" dot="3"/>
1097 <reduction symbol="$default" rule="4" enabled="true"/>
1105 <item rule-number="8" dot="0"/>
1106 <item rule-number="8" dot="4"/>
1107 <item rule-number="9" dot="0"/>
1108 <item rule-number="10" dot="0"/>
1109 <item rule-number="11" dot="0"/>
1113 <transition type="shift" symbol=""incr"" state="4"/>
1114 <transition type="shift" symbol=""identifier"" state="11"/>
1115 <transition type="shift" symbol=""number"" state="6"/>
1116 <transition type="shift" symbol=""("" state="7"/>
1117 <transition type="goto" symbol="exp" state="19"/>
1127 <item rule-number="8" dot="5"/>
1133 <reduction symbol="$default" rule="8" enabled="true"/>
1142 # Check HTML output.
1143 AT_CHECK([[cat input.html]], [],
1144 [[<?xml version="1.0" encoding="UTF-8"?>
1145 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
1146 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:bison="https://www.gnu.org/software/bison/">
1148 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
1149 <title>input.yy - GNU Bison XML Automaton Report</title>
1150 <style type="text/css">
1152 font-family: "Nimbus Sans L", Arial, sans-serif;
1157 text-decoration: none;
1161 text-decoration: none;
1167 text-decoration: underline;
1173 font-family: monospace;
1177 list-style-type: decimal;
1180 list-style-type: lower-alpha;
1191 <body><h1>GNU Bison XML Automaton Report</h1><p>
1192 input grammar: <span class="i">input.yy</span></p>
1194 <h3>Table of Contents</h3><ul id="menu"><li><a href="#reductions">Reductions</a><ul class="lower-alpha"><li><a href="#nonterminals_useless_in_grammar">Nonterminals useless in grammar</a></li><li><a href="#terminals_unused_in_grammar">Terminals unused in grammar</a></li><li><a href="#rules_useless_in_grammar">Rules useless in grammar</a></li></ul></li><li><a href="#conflicts">Conflicts</a></li><li><a href="#grammar">Grammar</a><ul class="lower-alpha"><li><a href="#grammar">Itemset</a></li><li><a href="#terminals">Terminal symbols</a></li><li><a href="#nonterminals">Nonterminal symbols</a></li></ul></li><li><a href="#automaton">Automaton</a></li></ul><h2><a name="reductions" id="reductions"></a> Reductions</h2><h3><a name="nonterminals_useless_in_grammar" id="nonterminals_useless_in_grammar"></a> Nonterminals useless in grammar</h3>
1196 <h3><a name="terminals_unused_in_grammar" id="terminals_unused_in_grammar"></a> Terminals unused in grammar</h3>
1198 <h3><a name="rules_useless_in_grammar" id="rules_useless_in_grammar"></a> Rules useless in grammar</h3>
1199 <h2><a name="conflicts" id="conflicts"></a> Conflicts</h2>
1201 <h2><a name="grammar" id="grammar"></a> Grammar</h2>
1203 <a name="rule_0" id="rule_0"> 0</a> <span class="i">$accept</span> → <span class="i">unit</span> <b>"end of file"</b>
1205 <a name="rule_1" id="rule_1"> 1</a> <span class="i">unit</span> → <span class="i">assignments</span> <span class="i">exp</span>
1207 <a name="rule_2" id="rule_2"> 2</a> <span class="i">assignments</span> → %empty
1208 <a name="rule_3" id="rule_3"> 3</a> | <span class="i">assignments</span> <span class="i">assignment</span>
1210 <a name="rule_4" id="rule_4"> 4</a> <span class="i">assignment</span> → <span class="i">id</span> <b>":="</b> <span class="i">exp</span>
1212 <a name="rule_5" id="rule_5"> 5</a> <span class="i">id</span> → <b>"identifier"</b>
1214 <a name="rule_6" id="rule_6"> 6</a> <span class="i">@1</span> → %empty
1216 <a name="rule_7" id="rule_7"> 7</a> <span class="i">@2</span> → %empty
1218 <a name="rule_8" id="rule_8"> 8</a> <span class="i">exp</span> → <b>"incr"</b> <span class="i">exp</span> <span class="i">@1</span> <span class="i">@2</span> <span class="i">exp</span>
1219 <a name="rule_9" id="rule_9"> 9</a> | <b>"("</b> <span class="i">exp</span> <b>")"</b>
1220 <a name="rule_10" id="rule_10"> 10</a> | <b>"identifier"</b>
1221 <a name="rule_11" id="rule_11"> 11</a> | <b>"number"</b>
1224 <h3><a name="terminals" id="terminals"></a> Terminals, with rules where they appear</h3>
1227 <li><b>"end of file"</b> (0) <a href="#rule_0">0</a></li>
1228 <li><b>error</b> (256)</li>
1229 <li><b>":="</b> (258) <a href="#rule_4">4</a></li>
1230 <li><b>"incr"</b> (259) <a href="#rule_8">8</a></li>
1231 <li><b>"identifier"</b> <std::string> (260) <a href="#rule_5">5</a> <a href="#rule_10">10</a></li>
1232 <li><b>"number"</b> <int> (261) <a href="#rule_11">11</a></li>
1233 <li><b>"("</b> (262) <a href="#rule_9">9</a></li>
1234 <li><b>")"</b> (263) <a href="#rule_9">9</a></li>
1237 <h3><a name="nonterminals" id="nonterminals"></a> Nonterminals, with rules where they appear</h3>
1240 <li><b>$accept</b> (9)
1242 <li>on left: <a href="#rule_0">0</a></li>
1245 <li><b>unit</b> (10)
1247 <li>on left: <a href="#rule_1">1</a></li>
1248 <li>on right: <a href="#rule_0">0</a></li>
1251 <li><b>assignments</b> (11)
1253 <li>on left: <a href="#rule_2">2</a> <a href="#rule_3">3</a></li>
1254 <li>on right: <a href="#rule_1">1</a> <a href="#rule_3">3</a></li>
1257 <li><b>assignment</b> (12)
1259 <li>on left: <a href="#rule_4">4</a></li>
1260 <li>on right: <a href="#rule_3">3</a></li>
1263 <li><b>id</b> <std::string> (13)
1265 <li>on left: <a href="#rule_5">5</a></li>
1266 <li>on right: <a href="#rule_4">4</a></li>
1269 <li><b>exp</b> <int> (14)
1271 <li>on left: <a href="#rule_8">8</a> <a href="#rule_9">9</a> <a href="#rule_10">10</a> <a href="#rule_11">11</a></li>
1272 <li>on right: <a href="#rule_1">1</a> <a href="#rule_4">4</a> <a href="#rule_8">8</a> <a href="#rule_9">9</a></li>
1275 <li><b>@1</b> <int> (15)
1277 <li>on left: <a href="#rule_6">6</a></li>
1278 <li>on right: <a href="#rule_8">8</a></li>
1281 <li><b>@2</b> <int> (16)
1283 <li>on left: <a href="#rule_7">7</a></li>
1284 <li>on right: <a href="#rule_8">8</a></li>
1287 </ul><h2><a name="automaton" id="automaton"></a> Automaton</h2>
1289 <h3><a name="state_0" id="state_0"></a>State 0</h3>
1291 <p class="pre"> <a href="#rule_0"> 0</a> <span class="i">$accept</span> → <span class="dot">•</span> <span class="i">unit</span> <b>"end of file"</b>
1292 <a href="#rule_1"> 1</a> <span class="i">unit</span> → <span class="dot">•</span> <span class="i">assignments</span> <span class="i">exp</span>
1293 <a href="#rule_2"> 2</a> <span class="i">assignments</span> → <span class="dot">•</span> %empty
1294 <a href="#rule_3"> 3</a> | <span class="dot">•</span> <span class="i">assignments</span> <span class="i">assignment</span>
1296 $default <a href="#rule_2">reduce using rule 2</a> (assignments)
1298 unit <a href="#state_1">go to state 1</a>
1299 assignments <a href="#state_2">go to state 2</a>
1302 <h3><a name="state_1" id="state_1"></a>State 1</h3>
1304 <p class="pre"> <a href="#rule_0"> 0</a> <span class="i">$accept</span> → <span class="i">unit</span> <span class="dot">•</span> <b>"end of file"</b>
1306 "end of file" <a href="#state_3">shift, and go to state 3</a>
1309 <h3><a name="state_2" id="state_2"></a>State 2</h3>
1311 <p class="pre"> <a href="#rule_1"> 1</a> <span class="i">unit</span> → <span class="i">assignments</span> <span class="dot">•</span> <span class="i">exp</span>
1312 <a href="#rule_3"> 3</a> <span class="i">assignments</span> → <span class="i">assignments</span> <span class="dot">•</span> <span class="i">assignment</span>
1313 <a href="#rule_4"> 4</a> <span class="i">assignment</span> → <span class="dot">•</span> <span class="i">id</span> <b>":="</b> <span class="i">exp</span>
1314 <a href="#rule_5"> 5</a> <span class="i">id</span> → <span class="dot">•</span> <b>"identifier"</b>
1315 <a href="#rule_8"> 8</a> <span class="i">exp</span> → <span class="dot">•</span> <b>"incr"</b> <span class="i">exp</span> <span class="i">@1</span> <span class="i">@2</span> <span class="i">exp</span>
1316 <a href="#rule_9"> 9</a> | <span class="dot">•</span> <b>"("</b> <span class="i">exp</span> <b>")"</b>
1317 <a href="#rule_10"> 10</a> | <span class="dot">•</span> <b>"identifier"</b>
1318 <a href="#rule_11"> 11</a> | <span class="dot">•</span> <b>"number"</b>
1320 "incr" <a href="#state_4">shift, and go to state 4</a>
1321 "identifier" <a href="#state_5">shift, and go to state 5</a>
1322 "number" <a href="#state_6">shift, and go to state 6</a>
1323 "(" <a href="#state_7">shift, and go to state 7</a>
1325 assignment <a href="#state_8">go to state 8</a>
1326 id <a href="#state_9">go to state 9</a>
1327 exp <a href="#state_10">go to state 10</a>
1330 <h3><a name="state_3" id="state_3"></a>State 3</h3>
1332 <p class="pre"> <a href="#rule_0"> 0</a> <span class="i">$accept</span> → <span class="i">unit</span> <b>"end of file"</b> <span class="dot">•</span>
1337 <h3><a name="state_4" id="state_4"></a>State 4</h3>
1339 <p class="pre"> <a href="#rule_8"> 8</a> <span class="i">exp</span> → <span class="dot">•</span> <b>"incr"</b> <span class="i">exp</span> <span class="i">@1</span> <span class="i">@2</span> <span class="i">exp</span>
1340 <a href="#rule_8"> 8</a> | <b>"incr"</b> <span class="dot">•</span> <span class="i">exp</span> <span class="i">@1</span> <span class="i">@2</span> <span class="i">exp</span>
1341 <a href="#rule_9"> 9</a> | <span class="dot">•</span> <b>"("</b> <span class="i">exp</span> <b>")"</b>
1342 <a href="#rule_10"> 10</a> | <span class="dot">•</span> <b>"identifier"</b>
1343 <a href="#rule_11"> 11</a> | <span class="dot">•</span> <b>"number"</b>
1345 "incr" <a href="#state_4">shift, and go to state 4</a>
1346 "identifier" <a href="#state_11">shift, and go to state 11</a>
1347 "number" <a href="#state_6">shift, and go to state 6</a>
1348 "(" <a href="#state_7">shift, and go to state 7</a>
1350 exp <a href="#state_12">go to state 12</a>
1353 <h3><a name="state_5" id="state_5"></a>State 5</h3>
1355 <p class="pre"> <a href="#rule_5"> 5</a> <span class="i">id</span> → <b>"identifier"</b> <span class="dot">•</span> [":="]
1356 <a href="#rule_10"> 10</a> <span class="i">exp</span> → <b>"identifier"</b> <span class="dot">•</span> ["end of file"]
1358 "end of file" <a href="#rule_10">reduce using rule 10</a> (exp)
1359 $default <a href="#rule_5">reduce using rule 5</a> (id)
1362 <h3><a name="state_6" id="state_6"></a>State 6</h3>
1364 <p class="pre"> <a href="#rule_11"> 11</a> <span class="i">exp</span> → <b>"number"</b> <span class="dot">•</span>
1366 $default <a href="#rule_11">reduce using rule 11</a> (exp)
1369 <h3><a name="state_7" id="state_7"></a>State 7</h3>
1371 <p class="pre"> <a href="#rule_8"> 8</a> <span class="i">exp</span> → <span class="dot">•</span> <b>"incr"</b> <span class="i">exp</span> <span class="i">@1</span> <span class="i">@2</span> <span class="i">exp</span>
1372 <a href="#rule_9"> 9</a> | <span class="dot">•</span> <b>"("</b> <span class="i">exp</span> <b>")"</b>
1373 <a href="#rule_9"> 9</a> | <b>"("</b> <span class="dot">•</span> <span class="i">exp</span> <b>")"</b>
1374 <a href="#rule_10"> 10</a> | <span class="dot">•</span> <b>"identifier"</b>
1375 <a href="#rule_11"> 11</a> | <span class="dot">•</span> <b>"number"</b>
1377 "incr" <a href="#state_4">shift, and go to state 4</a>
1378 "identifier" <a href="#state_11">shift, and go to state 11</a>
1379 "number" <a href="#state_6">shift, and go to state 6</a>
1380 "(" <a href="#state_7">shift, and go to state 7</a>
1382 exp <a href="#state_13">go to state 13</a>
1385 <h3><a name="state_8" id="state_8"></a>State 8</h3>
1387 <p class="pre"> <a href="#rule_3"> 3</a> <span class="i">assignments</span> → <span class="i">assignments</span> <span class="i">assignment</span> <span class="dot">•</span>
1389 $default <a href="#rule_3">reduce using rule 3</a> (assignments)
1392 <h3><a name="state_9" id="state_9"></a>State 9</h3>
1394 <p class="pre"> <a href="#rule_4"> 4</a> <span class="i">assignment</span> → <span class="i">id</span> <span class="dot">•</span> <b>":="</b> <span class="i">exp</span>
1396 ":=" <a href="#state_14">shift, and go to state 14</a>
1399 <h3><a name="state_10" id="state_10"></a>State 10</h3>
1401 <p class="pre"> <a href="#rule_1"> 1</a> <span class="i">unit</span> → <span class="i">assignments</span> <span class="i">exp</span> <span class="dot">•</span>
1403 $default <a href="#rule_1">reduce using rule 1</a> (unit)
1406 <h3><a name="state_11" id="state_11"></a>State 11</h3>
1408 <p class="pre"> <a href="#rule_10"> 10</a> <span class="i">exp</span> → <b>"identifier"</b> <span class="dot">•</span>
1410 $default <a href="#rule_10">reduce using rule 10</a> (exp)
1413 <h3><a name="state_12" id="state_12"></a>State 12</h3>
1415 <p class="pre"> <a href="#rule_6"> 6</a> <span class="i">@1</span> → <span class="dot">•</span> %empty
1416 <a href="#rule_8"> 8</a> <span class="i">exp</span> → <b>"incr"</b> <span class="i">exp</span> <span class="dot">•</span> <span class="i">@1</span> <span class="i">@2</span> <span class="i">exp</span>
1418 $default <a href="#rule_6">reduce using rule 6</a> (@1)
1420 @1 <a href="#state_15">go to state 15</a>
1423 <h3><a name="state_13" id="state_13"></a>State 13</h3>
1425 <p class="pre"> <a href="#rule_9"> 9</a> <span class="i">exp</span> → <b>"("</b> <span class="i">exp</span> <span class="dot">•</span> <b>")"</b>
1427 ")" <a href="#state_16">shift, and go to state 16</a>
1430 <h3><a name="state_14" id="state_14"></a>State 14</h3>
1432 <p class="pre"> <a href="#rule_4"> 4</a> <span class="i">assignment</span> → <span class="i">id</span> <b>":="</b> <span class="dot">•</span> <span class="i">exp</span>
1433 <a href="#rule_8"> 8</a> <span class="i">exp</span> → <span class="dot">•</span> <b>"incr"</b> <span class="i">exp</span> <span class="i">@1</span> <span class="i">@2</span> <span class="i">exp</span>
1434 <a href="#rule_9"> 9</a> | <span class="dot">•</span> <b>"("</b> <span class="i">exp</span> <b>")"</b>
1435 <a href="#rule_10"> 10</a> | <span class="dot">•</span> <b>"identifier"</b>
1436 <a href="#rule_11"> 11</a> | <span class="dot">•</span> <b>"number"</b>
1438 "incr" <a href="#state_4">shift, and go to state 4</a>
1439 "identifier" <a href="#state_11">shift, and go to state 11</a>
1440 "number" <a href="#state_6">shift, and go to state 6</a>
1441 "(" <a href="#state_7">shift, and go to state 7</a>
1443 exp <a href="#state_17">go to state 17</a>
1446 <h3><a name="state_15" id="state_15"></a>State 15</h3>
1448 <p class="pre"> <a href="#rule_7"> 7</a> <span class="i">@2</span> → <span class="dot">•</span> %empty
1449 <a href="#rule_8"> 8</a> <span class="i">exp</span> → <b>"incr"</b> <span class="i">exp</span> <span class="i">@1</span> <span class="dot">•</span> <span class="i">@2</span> <span class="i">exp</span>
1451 $default <a href="#rule_7">reduce using rule 7</a> (@2)
1453 @2 <a href="#state_18">go to state 18</a>
1456 <h3><a name="state_16" id="state_16"></a>State 16</h3>
1458 <p class="pre"> <a href="#rule_9"> 9</a> <span class="i">exp</span> → <b>"("</b> <span class="i">exp</span> <b>")"</b> <span class="dot">•</span>
1460 $default <a href="#rule_9">reduce using rule 9</a> (exp)
1463 <h3><a name="state_17" id="state_17"></a>State 17</h3>
1465 <p class="pre"> <a href="#rule_4"> 4</a> <span class="i">assignment</span> → <span class="i">id</span> <b>":="</b> <span class="i">exp</span> <span class="dot">•</span>
1467 $default <a href="#rule_4">reduce using rule 4</a> (assignment)
1470 <h3><a name="state_18" id="state_18"></a>State 18</h3>
1472 <p class="pre"> <a href="#rule_8"> 8</a> <span class="i">exp</span> → <span class="dot">•</span> <b>"incr"</b> <span class="i">exp</span> <span class="i">@1</span> <span class="i">@2</span> <span class="i">exp</span>
1473 <a href="#rule_8"> 8</a> | <b>"incr"</b> <span class="i">exp</span> <span class="i">@1</span> <span class="i">@2</span> <span class="dot">•</span> <span class="i">exp</span>
1474 <a href="#rule_9"> 9</a> | <span class="dot">•</span> <b>"("</b> <span class="i">exp</span> <b>")"</b>
1475 <a href="#rule_10"> 10</a> | <span class="dot">•</span> <b>"identifier"</b>
1476 <a href="#rule_11"> 11</a> | <span class="dot">•</span> <b>"number"</b>
1478 "incr" <a href="#state_4">shift, and go to state 4</a>
1479 "identifier" <a href="#state_11">shift, and go to state 11</a>
1480 "number" <a href="#state_6">shift, and go to state 6</a>
1481 "(" <a href="#state_7">shift, and go to state 7</a>
1483 exp <a href="#state_19">go to state 19</a>
1486 <h3><a name="state_19" id="state_19"></a>State 19</h3>
1488 <p class="pre"> <a href="#rule_8"> 8</a> <span class="i">exp</span> → <b>"incr"</b> <span class="i">exp</span> <span class="i">@1</span> <span class="i">@2</span> <span class="i">exp</span> <span class="dot">•</span>
1490 $default <a href="#rule_8">reduce using rule 8</a> (exp)
1493 <div id="footer"><hr />This document was generated using
1494 <a href="https://www.gnu.org/software/bison/" title="GNU Bison">
1495 GNU Bison ]AT_PACKAGE_VERSION[</a>
1496 XML Automaton Report.<br />
1497 Verbatim copying and distribution of this entire page is
1498 permitted in any medium, provided this notice is preserved.</div></body>
1502 AT_BISON_OPTION_POPDEFS
1506 ## -------------------- ##
1507 ## Multistart reports. ##
1508 ## -------------------- ##
1510 AT_SETUP([Multistart reports])
1512 AT_KEYWORDS([multistart report])
1514 AT_BISON_OPTION_PUSHDEFS
1522 %token <std::string> IDENTIFIER "identifier"
1523 %type <std::string> id
1524 %token <int> NUMBER "number"
1528 %start unit assignments exp;
1529 unit: assignments exp { driver.result = $2; };
1533 | assignments assignment {};
1536 id ":=" exp { driver.variables[$id] = $exp; };
1542 "incr" exp <int>{ $$ = 1; } <int>{ $$ = 10; } exp { $$ = $2 + $3 + $4 + $5; }
1543 | "(" exp ")" { std::swap ($$, $2); }
1544 | "identifier" { $$ = driver.variables[$1]; }
1545 | "number" { std::swap ($$, $1); };
1548 AT_BISON_CHECK([-o input.cc -rall --graph=input.gv --xml input.yy])
1550 # Check the contents of the report.
1551 AT_CHECK([cat input.output], [],
1554 0 $accept: YY_PARSE_unit unit "end of file"
1555 1 | YY_PARSE_assignments assignments "end of file"
1556 2 | YY_PARSE_exp exp "end of file"
1558 3 unit: assignments exp
1560 4 assignments: %empty
1561 5 | assignments assignment
1563 6 assignment: id ":=" exp
1571 10 exp: "incr" exp @1 @2 exp
1577 Terminals, with rules where they appear
1579 "end of file" (0) 0 1 2
1583 "identifier" <std::string> (260) 7 12
1584 "number" <int> (261) 13
1585 YY_PARSE_unit (262) 0
1586 YY_PARSE_assignments (263) 1
1587 YY_PARSE_exp (264) 2
1592 Nonterminals, with rules where they appear
1605 id <std::string> (16)
1609 on left: 10 11 12 13
1610 on right: 2 3 6 10 11
1621 0 $accept: . YY_PARSE_unit unit "end of file"
1622 1 | . YY_PARSE_assignments assignments "end of file"
1623 2 | . YY_PARSE_exp exp "end of file"
1625 YY_PARSE_unit shift, and go to state 1
1626 YY_PARSE_assignments shift, and go to state 2
1627 YY_PARSE_exp shift, and go to state 3
1632 0 $accept: YY_PARSE_unit . unit "end of file"
1633 3 unit: . assignments exp
1634 4 assignments: %empty .
1635 5 | . assignments assignment
1637 $default reduce using rule 4 (assignments)
1640 assignments go to state 5
1645 1 $accept: YY_PARSE_assignments . assignments "end of file"
1646 4 assignments: %empty .
1647 5 | . assignments assignment
1649 $default reduce using rule 4 (assignments)
1651 assignments go to state 6
1656 2 $accept: YY_PARSE_exp . exp "end of file"
1657 10 exp: . "incr" exp @1 @2 exp
1662 "incr" shift, and go to state 7
1663 "identifier" shift, and go to state 8
1664 "number" shift, and go to state 9
1665 "(" shift, and go to state 10
1672 0 $accept: YY_PARSE_unit unit . "end of file"
1674 "end of file" shift, and go to state 12
1679 3 unit: assignments . exp
1680 5 assignments: assignments . assignment
1681 6 assignment: . id ":=" exp
1682 7 id: . "identifier"
1683 10 exp: . "incr" exp @1 @2 exp
1688 "incr" shift, and go to state 7
1689 "identifier" shift, and go to state 13
1690 "number" shift, and go to state 9
1691 "(" shift, and go to state 10
1693 assignment go to state 14
1700 1 $accept: YY_PARSE_assignments assignments . "end of file"
1701 5 assignments: assignments . assignment
1702 6 assignment: . id ":=" exp
1703 7 id: . "identifier"
1705 "end of file" shift, and go to state 17
1706 "identifier" shift, and go to state 18
1708 assignment go to state 14
1714 10 exp: . "incr" exp @1 @2 exp
1715 10 | "incr" . exp @1 @2 exp
1720 "incr" shift, and go to state 7
1721 "identifier" shift, and go to state 8
1722 "number" shift, and go to state 9
1723 "(" shift, and go to state 10
1730 12 exp: "identifier" .
1732 $default reduce using rule 12 (exp)
1739 $default reduce using rule 13 (exp)
1744 10 exp: . "incr" exp @1 @2 exp
1750 "incr" shift, and go to state 7
1751 "identifier" shift, and go to state 8
1752 "number" shift, and go to state 9
1753 "(" shift, and go to state 10
1760 2 $accept: YY_PARSE_exp exp . "end of file"
1762 "end of file" shift, and go to state 21
1767 0 $accept: YY_PARSE_unit unit "end of file" .
1774 7 id: "identifier" . [":="]
1775 12 exp: "identifier" . ["end of file"]
1777 "end of file" reduce using rule 12 (exp)
1778 $default reduce using rule 7 (id)
1783 5 assignments: assignments assignment .
1785 $default reduce using rule 5 (assignments)
1790 6 assignment: id . ":=" exp
1792 ":=" shift, and go to state 22
1797 3 unit: assignments exp .
1799 $default reduce using rule 3 (unit)
1804 1 $accept: YY_PARSE_assignments assignments "end of file" .
1811 7 id: "identifier" .
1813 $default reduce using rule 7 (id)
1819 10 exp: "incr" exp . @1 @2 exp
1821 $default reduce using rule 8 (@1)
1828 11 exp: "(" exp . ")"
1830 ")" shift, and go to state 24
1835 2 $accept: YY_PARSE_exp exp "end of file" .
1842 6 assignment: id ":=" . exp
1843 10 exp: . "incr" exp @1 @2 exp
1848 "incr" shift, and go to state 7
1849 "identifier" shift, and go to state 8
1850 "number" shift, and go to state 9
1851 "(" shift, and go to state 10
1859 10 exp: "incr" exp @1 . @2 exp
1861 $default reduce using rule 9 (@2)
1868 11 exp: "(" exp ")" .
1870 $default reduce using rule 11 (exp)
1875 6 assignment: id ":=" exp .
1877 $default reduce using rule 6 (assignment)
1882 10 exp: . "incr" exp @1 @2 exp
1883 10 | "incr" exp @1 @2 . exp
1888 "incr" shift, and go to state 7
1889 "identifier" shift, and go to state 8
1890 "number" shift, and go to state 9
1891 "(" shift, and go to state 10
1898 10 exp: "incr" exp @1 @2 exp .
1900 $default reduce using rule 10 (exp)
1905 AT_CHECK([cat input.gv], [],
1906 [[// Generated by GNU Bison ]AT_PACKAGE_VERSION[.
1907 // Report bugs to <bug-bison@gnu.org>.
1908 // Home page: <https://www.gnu.org/software/bison/>.
1912 node [fontname = courier, shape = box, colorscheme = paired6]
1913 edge [fontname = courier]
1915 0 [label="State 0\n\l 0 $accept: • YY_PARSE_unit unit \"end of file\"\l 1 | • YY_PARSE_assignments assignments \"end of file\"\l 2 | • YY_PARSE_exp exp \"end of file\"\l"]
1916 0 -> 1 [style=solid label="YY_PARSE_unit"]
1917 0 -> 2 [style=solid label="YY_PARSE_assignments"]
1918 0 -> 3 [style=solid label="YY_PARSE_exp"]
1919 1 [label="State 1\n\l 0 $accept: YY_PARSE_unit • unit \"end of file\"\l 3 unit: • assignments exp\l 4 assignments: • %empty\l 5 | • assignments assignment\l"]
1920 1 -> 4 [style=dashed label="unit"]
1921 1 -> 5 [style=dashed label="assignments"]
1922 1 -> "1R4" [style=solid]
1923 "1R4" [label="R4", fillcolor=3, shape=diamond, style=filled]
1924 2 [label="State 2\n\l 1 $accept: YY_PARSE_assignments • assignments \"end of file\"\l 4 assignments: • %empty\l 5 | • assignments assignment\l"]
1925 2 -> 6 [style=dashed label="assignments"]
1926 2 -> "2R4" [style=solid]
1927 "2R4" [label="R4", fillcolor=3, shape=diamond, style=filled]
1928 3 [label="State 3\n\l 2 $accept: YY_PARSE_exp • exp \"end of file\"\l 10 exp: • \"incr\" exp @1 @2 exp\l 11 | • \"(\" exp \")\"\l 12 | • \"identifier\"\l 13 | • \"number\"\l"]
1929 3 -> 7 [style=solid label="\"incr\""]
1930 3 -> 8 [style=solid label="\"identifier\""]
1931 3 -> 9 [style=solid label="\"number\""]
1932 3 -> 10 [style=solid label="\"(\""]
1933 3 -> 11 [style=dashed label="exp"]
1934 4 [label="State 4\n\l 0 $accept: YY_PARSE_unit unit • \"end of file\"\l"]
1935 4 -> 12 [style=solid label="\"end of file\""]
1936 5 [label="State 5\n\l 3 unit: assignments • exp\l 5 assignments: assignments • assignment\l 6 assignment: • id \":=\" exp\l 7 id: • \"identifier\"\l 10 exp: • \"incr\" exp @1 @2 exp\l 11 | • \"(\" exp \")\"\l 12 | • \"identifier\"\l 13 | • \"number\"\l"]
1937 5 -> 7 [style=solid label="\"incr\""]
1938 5 -> 13 [style=solid label="\"identifier\""]
1939 5 -> 9 [style=solid label="\"number\""]
1940 5 -> 10 [style=solid label="\"(\""]
1941 5 -> 14 [style=dashed label="assignment"]
1942 5 -> 15 [style=dashed label="id"]
1943 5 -> 16 [style=dashed label="exp"]
1944 6 [label="State 6\n\l 1 $accept: YY_PARSE_assignments assignments • \"end of file\"\l 5 assignments: assignments • assignment\l 6 assignment: • id \":=\" exp\l 7 id: • \"identifier\"\l"]
1945 6 -> 17 [style=solid label="\"end of file\""]
1946 6 -> 18 [style=solid label="\"identifier\""]
1947 6 -> 14 [style=dashed label="assignment"]
1948 6 -> 15 [style=dashed label="id"]
1949 7 [label="State 7\n\l 10 exp: • \"incr\" exp @1 @2 exp\l 10 | \"incr\" • exp @1 @2 exp\l 11 | • \"(\" exp \")\"\l 12 | • \"identifier\"\l 13 | • \"number\"\l"]
1950 7 -> 7 [style=solid label="\"incr\""]
1951 7 -> 8 [style=solid label="\"identifier\""]
1952 7 -> 9 [style=solid label="\"number\""]
1953 7 -> 10 [style=solid label="\"(\""]
1954 7 -> 19 [style=dashed label="exp"]
1955 8 [label="State 8\n\l 12 exp: \"identifier\" •\l"]
1956 8 -> "8R12" [style=solid]
1957 "8R12" [label="R12", fillcolor=3, shape=diamond, style=filled]
1958 9 [label="State 9\n\l 13 exp: \"number\" •\l"]
1959 9 -> "9R13" [style=solid]
1960 "9R13" [label="R13", fillcolor=3, shape=diamond, style=filled]
1961 10 [label="State 10\n\l 10 exp: • \"incr\" exp @1 @2 exp\l 11 | • \"(\" exp \")\"\l 11 | \"(\" • exp \")\"\l 12 | • \"identifier\"\l 13 | • \"number\"\l"]
1962 10 -> 7 [style=solid label="\"incr\""]
1963 10 -> 8 [style=solid label="\"identifier\""]
1964 10 -> 9 [style=solid label="\"number\""]
1965 10 -> 10 [style=solid label="\"(\""]
1966 10 -> 20 [style=dashed label="exp"]
1967 11 [label="State 11\n\l 2 $accept: YY_PARSE_exp exp • \"end of file\"\l"]
1968 11 -> 21 [style=solid label="\"end of file\""]
1969 12 [label="State 12\n\l 0 $accept: YY_PARSE_unit unit \"end of file\" •\l"]
1970 12 -> "12R0" [style=solid]
1971 "12R0" [label="Acc", fillcolor=1, shape=diamond, style=filled]
1972 13 [label="State 13\n\l 7 id: \"identifier\" • [\":=\"]\l 12 exp: \"identifier\" • [\"end of file\"]\l"]
1973 13 -> "13R7" [style=solid]
1974 "13R7" [label="R7", fillcolor=3, shape=diamond, style=filled]
1975 13 -> "13R12" [label="[\"end of file\"]", style=solid]
1976 "13R12" [label="R12", fillcolor=3, shape=diamond, style=filled]
1977 14 [label="State 14\n\l 5 assignments: assignments assignment •\l"]
1978 14 -> "14R5" [style=solid]
1979 "14R5" [label="R5", fillcolor=3, shape=diamond, style=filled]
1980 15 [label="State 15\n\l 6 assignment: id • \":=\" exp\l"]
1981 15 -> 22 [style=solid label="\":=\""]
1982 16 [label="State 16\n\l 3 unit: assignments exp •\l"]
1983 16 -> "16R3" [style=solid]
1984 "16R3" [label="R3", fillcolor=3, shape=diamond, style=filled]
1985 17 [label="State 17\n\l 1 $accept: YY_PARSE_assignments assignments \"end of file\" •\l"]
1986 17 -> "17R1" [style=solid]
1987 "17R1" [label="Acc", fillcolor=1, shape=diamond, style=filled]
1988 18 [label="State 18\n\l 7 id: \"identifier\" •\l"]
1989 18 -> "18R7" [style=solid]
1990 "18R7" [label="R7", fillcolor=3, shape=diamond, style=filled]
1991 19 [label="State 19\n\l 8 @1: • %empty\l 10 exp: \"incr\" exp • @1 @2 exp\l"]
1992 19 -> 23 [style=dashed label="@1"]
1993 19 -> "19R8" [style=solid]
1994 "19R8" [label="R8", fillcolor=3, shape=diamond, style=filled]
1995 20 [label="State 20\n\l 11 exp: \"(\" exp • \")\"\l"]
1996 20 -> 24 [style=solid label="\")\""]
1997 21 [label="State 21\n\l 2 $accept: YY_PARSE_exp exp \"end of file\" •\l"]
1998 21 -> "21R2" [style=solid]
1999 "21R2" [label="Acc", fillcolor=1, shape=diamond, style=filled]
2000 22 [label="State 22\n\l 6 assignment: id \":=\" • exp\l 10 exp: • \"incr\" exp @1 @2 exp\l 11 | • \"(\" exp \")\"\l 12 | • \"identifier\"\l 13 | • \"number\"\l"]
2001 22 -> 7 [style=solid label="\"incr\""]
2002 22 -> 8 [style=solid label="\"identifier\""]
2003 22 -> 9 [style=solid label="\"number\""]
2004 22 -> 10 [style=solid label="\"(\""]
2005 22 -> 25 [style=dashed label="exp"]
2006 23 [label="State 23\n\l 9 @2: • %empty\l 10 exp: \"incr\" exp @1 • @2 exp\l"]
2007 23 -> 26 [style=dashed label="@2"]
2008 23 -> "23R9" [style=solid]
2009 "23R9" [label="R9", fillcolor=3, shape=diamond, style=filled]
2010 24 [label="State 24\n\l 11 exp: \"(\" exp \")\" •\l"]
2011 24 -> "24R11" [style=solid]
2012 "24R11" [label="R11", fillcolor=3, shape=diamond, style=filled]
2013 25 [label="State 25\n\l 6 assignment: id \":=\" exp •\l"]
2014 25 -> "25R6" [style=solid]
2015 "25R6" [label="R6", fillcolor=3, shape=diamond, style=filled]
2016 26 [label="State 26\n\l 10 exp: • \"incr\" exp @1 @2 exp\l 10 | \"incr\" exp @1 @2 • exp\l 11 | • \"(\" exp \")\"\l 12 | • \"identifier\"\l 13 | • \"number\"\l"]
2017 26 -> 7 [style=solid label="\"incr\""]
2018 26 -> 8 [style=solid label="\"identifier\""]
2019 26 -> 9 [style=solid label="\"number\""]
2020 26 -> 10 [style=solid label="\"(\""]
2021 26 -> 27 [style=dashed label="exp"]
2022 27 [label="State 27\n\l 10 exp: \"incr\" exp @1 @2 exp •\l"]
2023 27 -> "27R10" [style=solid]
2024 "27R10" [label="R10", fillcolor=3, shape=diamond, style=filled]
2029 AT_CHECK([[cat input.xml]], [],
2030 [[<?xml version="1.0"?>
2032 <bison-xml-report version="]AT_PACKAGE_VERSION[" bug-report="bug-bison@gnu.org" url="https://www.gnu.org/software/bison/">
2034 <filename>input.yy</filename>
2038 <rule number="0" usefulness="useful">
2041 <symbol>YY_PARSE_unit</symbol>
2042 <symbol>unit</symbol>
2043 <symbol>"end of file"</symbol>
2046 <rule number="1" usefulness="useful">
2049 <symbol>YY_PARSE_assignments</symbol>
2050 <symbol>assignments</symbol>
2051 <symbol>"end of file"</symbol>
2054 <rule number="2" usefulness="useful">
2057 <symbol>YY_PARSE_exp</symbol>
2058 <symbol>exp</symbol>
2059 <symbol>"end of file"</symbol>
2062 <rule number="3" usefulness="useful">
2065 <symbol>assignments</symbol>
2066 <symbol>exp</symbol>
2069 <rule number="4" usefulness="useful">
2070 <lhs>assignments</lhs>
2075 <rule number="5" usefulness="useful">
2076 <lhs>assignments</lhs>
2078 <symbol>assignments</symbol>
2079 <symbol>assignment</symbol>
2082 <rule number="6" usefulness="useful">
2083 <lhs>assignment</lhs>
2086 <symbol>":="</symbol>
2087 <symbol>exp</symbol>
2090 <rule number="7" usefulness="useful">
2093 <symbol>"identifier"</symbol>
2096 <rule number="8" usefulness="useful">
2102 <rule number="9" usefulness="useful">
2108 <rule number="10" usefulness="useful">
2111 <symbol>"incr"</symbol>
2112 <symbol>exp</symbol>
2115 <symbol>exp</symbol>
2118 <rule number="11" usefulness="useful">
2121 <symbol>"("</symbol>
2122 <symbol>exp</symbol>
2123 <symbol>")"</symbol>
2126 <rule number="12" usefulness="useful">
2129 <symbol>"identifier"</symbol>
2132 <rule number="13" usefulness="useful">
2135 <symbol>"number"</symbol>
2140 <terminal symbol-number="0" token-number="0" name=""end of file"" type="" usefulness="useful"/>
2141 <terminal symbol-number="1" token-number="256" name="error" type="" usefulness="useful"/>
2142 <terminal symbol-number="3" token-number="258" name="":="" type="" usefulness="useful"/>
2143 <terminal symbol-number="4" token-number="259" name=""incr"" type="" usefulness="useful"/>
2144 <terminal symbol-number="5" token-number="260" name=""identifier"" type="std::string" usefulness="useful"/>
2145 <terminal symbol-number="6" token-number="261" name=""number"" type="int" usefulness="useful"/>
2146 <terminal symbol-number="7" token-number="262" name="YY_PARSE_unit" type="" usefulness="useful"/>
2147 <terminal symbol-number="8" token-number="263" name="YY_PARSE_assignments" type="" usefulness="useful"/>
2148 <terminal symbol-number="9" token-number="264" name="YY_PARSE_exp" type="" usefulness="useful"/>
2149 <terminal symbol-number="10" token-number="265" name=""("" type="" usefulness="useful"/>
2150 <terminal symbol-number="11" token-number="266" name="")"" type="" usefulness="useful"/>
2153 <nonterminal symbol-number="12" name="$accept" type="" usefulness="useful"/>
2154 <nonterminal symbol-number="13" name="unit" type="" usefulness="useful"/>
2155 <nonterminal symbol-number="14" name="assignments" type="" usefulness="useful"/>
2156 <nonterminal symbol-number="15" name="assignment" type="" usefulness="useful"/>
2157 <nonterminal symbol-number="16" name="id" type="std::string" usefulness="useful"/>
2158 <nonterminal symbol-number="17" name="exp" type="int" usefulness="useful"/>
2159 <nonterminal symbol-number="18" name="@1" type="int" usefulness="useful"/>
2160 <nonterminal symbol-number="19" name="@2" type="int" usefulness="useful"/>
2168 <item rule-number="0" dot="0"/>
2169 <item rule-number="1" dot="0"/>
2170 <item rule-number="2" dot="0"/>
2174 <transition type="shift" symbol="YY_PARSE_unit" state="1"/>
2175 <transition type="shift" symbol="YY_PARSE_assignments" state="2"/>
2176 <transition type="shift" symbol="YY_PARSE_exp" state="3"/>
2186 <item rule-number="0" dot="1"/>
2187 <item rule-number="3" dot="0"/>
2188 <item rule-number="4" dot="0"/>
2189 <item rule-number="5" dot="0"/>
2193 <transition type="goto" symbol="unit" state="4"/>
2194 <transition type="goto" symbol="assignments" state="5"/>
2198 <reduction symbol="$default" rule="4" enabled="true"/>
2206 <item rule-number="1" dot="1"/>
2207 <item rule-number="4" dot="0"/>
2208 <item rule-number="5" dot="0"/>
2212 <transition type="goto" symbol="assignments" state="6"/>
2216 <reduction symbol="$default" rule="4" enabled="true"/>
2224 <item rule-number="2" dot="1"/>
2225 <item rule-number="10" dot="0"/>
2226 <item rule-number="11" dot="0"/>
2227 <item rule-number="12" dot="0"/>
2228 <item rule-number="13" dot="0"/>
2232 <transition type="shift" symbol=""incr"" state="7"/>
2233 <transition type="shift" symbol=""identifier"" state="8"/>
2234 <transition type="shift" symbol=""number"" state="9"/>
2235 <transition type="shift" symbol=""("" state="10"/>
2236 <transition type="goto" symbol="exp" state="11"/>
2246 <item rule-number="0" dot="2"/>
2250 <transition type="shift" symbol=""end of file"" state="12"/>
2260 <item rule-number="3" dot="1"/>
2261 <item rule-number="5" dot="1"/>
2262 <item rule-number="6" dot="0"/>
2263 <item rule-number="7" dot="0"/>
2264 <item rule-number="10" dot="0"/>
2265 <item rule-number="11" dot="0"/>
2266 <item rule-number="12" dot="0"/>
2267 <item rule-number="13" dot="0"/>
2271 <transition type="shift" symbol=""incr"" state="7"/>
2272 <transition type="shift" symbol=""identifier"" state="13"/>
2273 <transition type="shift" symbol=""number"" state="9"/>
2274 <transition type="shift" symbol=""("" state="10"/>
2275 <transition type="goto" symbol="assignment" state="14"/>
2276 <transition type="goto" symbol="id" state="15"/>
2277 <transition type="goto" symbol="exp" state="16"/>
2287 <item rule-number="1" dot="2"/>
2288 <item rule-number="5" dot="1"/>
2289 <item rule-number="6" dot="0"/>
2290 <item rule-number="7" dot="0"/>
2294 <transition type="shift" symbol=""end of file"" state="17"/>
2295 <transition type="shift" symbol=""identifier"" state="18"/>
2296 <transition type="goto" symbol="assignment" state="14"/>
2297 <transition type="goto" symbol="id" state="15"/>
2307 <item rule-number="10" dot="0"/>
2308 <item rule-number="10" dot="1"/>
2309 <item rule-number="11" dot="0"/>
2310 <item rule-number="12" dot="0"/>
2311 <item rule-number="13" dot="0"/>
2315 <transition type="shift" symbol=""incr"" state="7"/>
2316 <transition type="shift" symbol=""identifier"" state="8"/>
2317 <transition type="shift" symbol=""number"" state="9"/>
2318 <transition type="shift" symbol=""("" state="10"/>
2319 <transition type="goto" symbol="exp" state="19"/>
2329 <item rule-number="12" dot="1"/>
2335 <reduction symbol="$default" rule="12" enabled="true"/>
2343 <item rule-number="13" dot="1"/>
2349 <reduction symbol="$default" rule="13" enabled="true"/>
2357 <item rule-number="10" dot="0"/>
2358 <item rule-number="11" dot="0"/>
2359 <item rule-number="11" dot="1"/>
2360 <item rule-number="12" dot="0"/>
2361 <item rule-number="13" dot="0"/>
2365 <transition type="shift" symbol=""incr"" state="7"/>
2366 <transition type="shift" symbol=""identifier"" state="8"/>
2367 <transition type="shift" symbol=""number"" state="9"/>
2368 <transition type="shift" symbol=""("" state="10"/>
2369 <transition type="goto" symbol="exp" state="20"/>
2379 <item rule-number="2" dot="2"/>
2383 <transition type="shift" symbol=""end of file"" state="21"/>
2393 <item rule-number="0" dot="3"/>
2399 <reduction symbol="$default" rule="accept" enabled="true"/>
2407 <item rule-number="7" dot="1">
2409 <symbol>":="</symbol>
2412 <item rule-number="12" dot="1">
2414 <symbol>"end of file"</symbol>
2422 <reduction symbol=""end of file"" rule="12" enabled="true"/>
2423 <reduction symbol="$default" rule="7" enabled="true"/>
2431 <item rule-number="5" dot="2"/>
2437 <reduction symbol="$default" rule="5" enabled="true"/>
2445 <item rule-number="6" dot="1"/>
2449 <transition type="shift" symbol="":="" state="22"/>
2459 <item rule-number="3" dot="2"/>
2465 <reduction symbol="$default" rule="3" enabled="true"/>
2473 <item rule-number="1" dot="3"/>
2479 <reduction symbol="$default" rule="accept" enabled="true"/>
2487 <item rule-number="7" dot="1"/>
2493 <reduction symbol="$default" rule="7" enabled="true"/>
2501 <item rule-number="8" dot="0"/>
2502 <item rule-number="10" dot="2"/>
2506 <transition type="goto" symbol="@1" state="23"/>
2510 <reduction symbol="$default" rule="8" enabled="true"/>
2518 <item rule-number="11" dot="2"/>
2522 <transition type="shift" symbol="")"" state="24"/>
2532 <item rule-number="2" dot="3"/>
2538 <reduction symbol="$default" rule="accept" enabled="true"/>
2546 <item rule-number="6" dot="2"/>
2547 <item rule-number="10" dot="0"/>
2548 <item rule-number="11" dot="0"/>
2549 <item rule-number="12" dot="0"/>
2550 <item rule-number="13" dot="0"/>
2554 <transition type="shift" symbol=""incr"" state="7"/>
2555 <transition type="shift" symbol=""identifier"" state="8"/>
2556 <transition type="shift" symbol=""number"" state="9"/>
2557 <transition type="shift" symbol=""("" state="10"/>
2558 <transition type="goto" symbol="exp" state="25"/>
2568 <item rule-number="9" dot="0"/>
2569 <item rule-number="10" dot="3"/>
2573 <transition type="goto" symbol="@2" state="26"/>
2577 <reduction symbol="$default" rule="9" enabled="true"/>
2585 <item rule-number="11" dot="3"/>
2591 <reduction symbol="$default" rule="11" enabled="true"/>
2599 <item rule-number="6" dot="3"/>
2605 <reduction symbol="$default" rule="6" enabled="true"/>
2613 <item rule-number="10" dot="0"/>
2614 <item rule-number="10" dot="4"/>
2615 <item rule-number="11" dot="0"/>
2616 <item rule-number="12" dot="0"/>
2617 <item rule-number="13" dot="0"/>
2621 <transition type="shift" symbol=""incr"" state="7"/>
2622 <transition type="shift" symbol=""identifier"" state="8"/>
2623 <transition type="shift" symbol=""number"" state="9"/>
2624 <transition type="shift" symbol=""("" state="10"/>
2625 <transition type="goto" symbol="exp" state="27"/>
2635 <item rule-number="10" dot="5"/>
2641 <reduction symbol="$default" rule="10" enabled="true"/>
2650 if test x"$XSLTPROC" != x""; then
2651 AT_CHECK([[$XSLTPROC \
2652 `]]AT_SET_ENV[[ bison --print-datadir`/xslt/xml2xhtml.xsl \
2653 input.xml >input.html]])
2654 AT_CHECK([cat input.html], [],
2655 [[<?xml version="1.0" encoding="UTF-8"?>
2656 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2657 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:bison="https://www.gnu.org/software/bison/">
2659 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
2660 <title>input.yy - GNU Bison XML Automaton Report</title>
2661 <style type="text/css">
2663 font-family: "Nimbus Sans L", Arial, sans-serif;
2668 text-decoration: none;
2672 text-decoration: none;
2678 text-decoration: underline;
2684 font-family: monospace;
2688 list-style-type: decimal;
2691 list-style-type: lower-alpha;
2702 <body><h1>GNU Bison XML Automaton Report</h1><p>
2703 input grammar: <span class="i">input.yy</span></p>
2705 <h3>Table of Contents</h3><ul id="menu"><li><a href="#reductions">Reductions</a><ul class="lower-alpha"><li><a href="#nonterminals_useless_in_grammar">Nonterminals useless in grammar</a></li><li><a href="#terminals_unused_in_grammar">Terminals unused in grammar</a></li><li><a href="#rules_useless_in_grammar">Rules useless in grammar</a></li></ul></li><li><a href="#conflicts">Conflicts</a></li><li><a href="#grammar">Grammar</a><ul class="lower-alpha"><li><a href="#grammar">Itemset</a></li><li><a href="#terminals">Terminal symbols</a></li><li><a href="#nonterminals">Nonterminal symbols</a></li></ul></li><li><a href="#automaton">Automaton</a></li></ul><h2><a name="reductions" id="reductions"></a> Reductions</h2><h3><a name="nonterminals_useless_in_grammar" id="nonterminals_useless_in_grammar"></a> Nonterminals useless in grammar</h3>
2707 <h3><a name="terminals_unused_in_grammar" id="terminals_unused_in_grammar"></a> Terminals unused in grammar</h3>
2709 <h3><a name="rules_useless_in_grammar" id="rules_useless_in_grammar"></a> Rules useless in grammar</h3>
2710 <h2><a name="conflicts" id="conflicts"></a> Conflicts</h2>
2712 <h2><a name="grammar" id="grammar"></a> Grammar</h2>
2714 <a name="rule_0" id="rule_0"> 0</a> <span class="i">$accept</span> → <b>YY_PARSE_unit</b> <span class="i">unit</span> <b>"end of file"</b>
2715 <a name="rule_1" id="rule_1"> 1</a> | <b>YY_PARSE_assignments</b> <span class="i">assignments</span> <b>"end of file"</b>
2716 <a name="rule_2" id="rule_2"> 2</a> | <b>YY_PARSE_exp</b> <span class="i">exp</span> <b>"end of file"</b>
2718 <a name="rule_3" id="rule_3"> 3</a> <span class="i">unit</span> → <span class="i">assignments</span> <span class="i">exp</span>
2720 <a name="rule_4" id="rule_4"> 4</a> <span class="i">assignments</span> → %empty
2721 <a name="rule_5" id="rule_5"> 5</a> | <span class="i">assignments</span> <span class="i">assignment</span>
2723 <a name="rule_6" id="rule_6"> 6</a> <span class="i">assignment</span> → <span class="i">id</span> <b>":="</b> <span class="i">exp</span>
2725 <a name="rule_7" id="rule_7"> 7</a> <span class="i">id</span> → <b>"identifier"</b>
2727 <a name="rule_8" id="rule_8"> 8</a> <span class="i">@1</span> → %empty
2729 <a name="rule_9" id="rule_9"> 9</a> <span class="i">@2</span> → %empty
2731 <a name="rule_10" id="rule_10"> 10</a> <span class="i">exp</span> → <b>"incr"</b> <span class="i">exp</span> <span class="i">@1</span> <span class="i">@2</span> <span class="i">exp</span>
2732 <a name="rule_11" id="rule_11"> 11</a> | <b>"("</b> <span class="i">exp</span> <b>")"</b>
2733 <a name="rule_12" id="rule_12"> 12</a> | <b>"identifier"</b>
2734 <a name="rule_13" id="rule_13"> 13</a> | <b>"number"</b>
2737 <h3><a name="terminals" id="terminals"></a> Terminals, with rules where they appear</h3>
2740 <li><b>"end of file"</b> (0) <a href="#rule_0">0</a> <a href="#rule_1">1</a> <a href="#rule_2">2</a></li>
2741 <li><b>error</b> (256)</li>
2742 <li><b>":="</b> (258) <a href="#rule_6">6</a></li>
2743 <li><b>"incr"</b> (259) <a href="#rule_10">10</a></li>
2744 <li><b>"identifier"</b> <std::string> (260) <a href="#rule_7">7</a> <a href="#rule_12">12</a></li>
2745 <li><b>"number"</b> <int> (261) <a href="#rule_13">13</a></li>
2746 <li><b>YY_PARSE_unit</b> (262) <a href="#rule_0">0</a></li>
2747 <li><b>YY_PARSE_assignments</b> (263) <a href="#rule_1">1</a></li>
2748 <li><b>YY_PARSE_exp</b> (264) <a href="#rule_2">2</a></li>
2749 <li><b>"("</b> (265) <a href="#rule_11">11</a></li>
2750 <li><b>")"</b> (266) <a href="#rule_11">11</a></li>
2753 <h3><a name="nonterminals" id="nonterminals"></a> Nonterminals, with rules where they appear</h3>
2756 <li><b>$accept</b> (12)
2758 <li>on left: <a href="#rule_0">0</a> <a href="#rule_1">1</a> <a href="#rule_2">2</a></li>
2761 <li><b>unit</b> (13)
2763 <li>on left: <a href="#rule_3">3</a></li>
2764 <li>on right: <a href="#rule_0">0</a></li>
2767 <li><b>assignments</b> (14)
2769 <li>on left: <a href="#rule_4">4</a> <a href="#rule_5">5</a></li>
2770 <li>on right: <a href="#rule_1">1</a> <a href="#rule_3">3</a> <a href="#rule_5">5</a></li>
2773 <li><b>assignment</b> (15)
2775 <li>on left: <a href="#rule_6">6</a></li>
2776 <li>on right: <a href="#rule_5">5</a></li>
2779 <li><b>id</b> <std::string> (16)
2781 <li>on left: <a href="#rule_7">7</a></li>
2782 <li>on right: <a href="#rule_6">6</a></li>
2785 <li><b>exp</b> <int> (17)
2787 <li>on left: <a href="#rule_10">10</a> <a href="#rule_11">11</a> <a href="#rule_12">12</a> <a href="#rule_13">13</a></li>
2788 <li>on right: <a href="#rule_2">2</a> <a href="#rule_3">3</a> <a href="#rule_6">6</a> <a href="#rule_10">10</a> <a href="#rule_11">11</a></li>
2791 <li><b>@1</b> <int> (18)
2793 <li>on left: <a href="#rule_8">8</a></li>
2794 <li>on right: <a href="#rule_10">10</a></li>
2797 <li><b>@2</b> <int> (19)
2799 <li>on left: <a href="#rule_9">9</a></li>
2800 <li>on right: <a href="#rule_10">10</a></li>
2803 </ul><h2><a name="automaton" id="automaton"></a> Automaton</h2>
2805 <h3><a name="state_0" id="state_0"></a>State 0</h3>
2807 <p class="pre"> <a href="#rule_0"> 0</a> <span class="i">$accept</span> → <span class="dot">•</span> <b>YY_PARSE_unit</b> <span class="i">unit</span> <b>"end of file"</b>
2808 <a href="#rule_1"> 1</a> | <span class="dot">•</span> <b>YY_PARSE_assignments</b> <span class="i">assignments</span> <b>"end of file"</b>
2809 <a href="#rule_2"> 2</a> | <span class="dot">•</span> <b>YY_PARSE_exp</b> <span class="i">exp</span> <b>"end of file"</b>
2811 YY_PARSE_unit <a href="#state_1">shift, and go to state 1</a>
2812 YY_PARSE_assignments <a href="#state_2">shift, and go to state 2</a>
2813 YY_PARSE_exp <a href="#state_3">shift, and go to state 3</a>
2816 <h3><a name="state_1" id="state_1"></a>State 1</h3>
2818 <p class="pre"> <a href="#rule_0"> 0</a> <span class="i">$accept</span> → <b>YY_PARSE_unit</b> <span class="dot">•</span> <span class="i">unit</span> <b>"end of file"</b>
2819 <a href="#rule_3"> 3</a> <span class="i">unit</span> → <span class="dot">•</span> <span class="i">assignments</span> <span class="i">exp</span>
2820 <a href="#rule_4"> 4</a> <span class="i">assignments</span> → <span class="dot">•</span> %empty
2821 <a href="#rule_5"> 5</a> | <span class="dot">•</span> <span class="i">assignments</span> <span class="i">assignment</span>
2823 $default <a href="#rule_4">reduce using rule 4</a> (assignments)
2825 unit <a href="#state_4">go to state 4</a>
2826 assignments <a href="#state_5">go to state 5</a>
2829 <h3><a name="state_2" id="state_2"></a>State 2</h3>
2831 <p class="pre"> <a href="#rule_1"> 1</a> <span class="i">$accept</span> → <b>YY_PARSE_assignments</b> <span class="dot">•</span> <span class="i">assignments</span> <b>"end of file"</b>
2832 <a href="#rule_4"> 4</a> <span class="i">assignments</span> → <span class="dot">•</span> %empty
2833 <a href="#rule_5"> 5</a> | <span class="dot">•</span> <span class="i">assignments</span> <span class="i">assignment</span>
2835 $default <a href="#rule_4">reduce using rule 4</a> (assignments)
2837 assignments <a href="#state_6">go to state 6</a>
2840 <h3><a name="state_3" id="state_3"></a>State 3</h3>
2842 <p class="pre"> <a href="#rule_2"> 2</a> <span class="i">$accept</span> → <b>YY_PARSE_exp</b> <span class="dot">•</span> <span class="i">exp</span> <b>"end of file"</b>
2843 <a href="#rule_10"> 10</a> <span class="i">exp</span> → <span class="dot">•</span> <b>"incr"</b> <span class="i">exp</span> <span class="i">@1</span> <span class="i">@2</span> <span class="i">exp</span>
2844 <a href="#rule_11"> 11</a> | <span class="dot">•</span> <b>"("</b> <span class="i">exp</span> <b>")"</b>
2845 <a href="#rule_12"> 12</a> | <span class="dot">•</span> <b>"identifier"</b>
2846 <a href="#rule_13"> 13</a> | <span class="dot">•</span> <b>"number"</b>
2848 "incr" <a href="#state_7">shift, and go to state 7</a>
2849 "identifier" <a href="#state_8">shift, and go to state 8</a>
2850 "number" <a href="#state_9">shift, and go to state 9</a>
2851 "(" <a href="#state_10">shift, and go to state 10</a>
2853 exp <a href="#state_11">go to state 11</a>
2856 <h3><a name="state_4" id="state_4"></a>State 4</h3>
2858 <p class="pre"> <a href="#rule_0"> 0</a> <span class="i">$accept</span> → <b>YY_PARSE_unit</b> <span class="i">unit</span> <span class="dot">•</span> <b>"end of file"</b>
2860 "end of file" <a href="#state_12">shift, and go to state 12</a>
2863 <h3><a name="state_5" id="state_5"></a>State 5</h3>
2865 <p class="pre"> <a href="#rule_3"> 3</a> <span class="i">unit</span> → <span class="i">assignments</span> <span class="dot">•</span> <span class="i">exp</span>
2866 <a href="#rule_5"> 5</a> <span class="i">assignments</span> → <span class="i">assignments</span> <span class="dot">•</span> <span class="i">assignment</span>
2867 <a href="#rule_6"> 6</a> <span class="i">assignment</span> → <span class="dot">•</span> <span class="i">id</span> <b>":="</b> <span class="i">exp</span>
2868 <a href="#rule_7"> 7</a> <span class="i">id</span> → <span class="dot">•</span> <b>"identifier"</b>
2869 <a href="#rule_10"> 10</a> <span class="i">exp</span> → <span class="dot">•</span> <b>"incr"</b> <span class="i">exp</span> <span class="i">@1</span> <span class="i">@2</span> <span class="i">exp</span>
2870 <a href="#rule_11"> 11</a> | <span class="dot">•</span> <b>"("</b> <span class="i">exp</span> <b>")"</b>
2871 <a href="#rule_12"> 12</a> | <span class="dot">•</span> <b>"identifier"</b>
2872 <a href="#rule_13"> 13</a> | <span class="dot">•</span> <b>"number"</b>
2874 "incr" <a href="#state_7">shift, and go to state 7</a>
2875 "identifier" <a href="#state_13">shift, and go to state 13</a>
2876 "number" <a href="#state_9">shift, and go to state 9</a>
2877 "(" <a href="#state_10">shift, and go to state 10</a>
2879 assignment <a href="#state_14">go to state 14</a>
2880 id <a href="#state_15">go to state 15</a>
2881 exp <a href="#state_16">go to state 16</a>
2884 <h3><a name="state_6" id="state_6"></a>State 6</h3>
2886 <p class="pre"> <a href="#rule_1"> 1</a> <span class="i">$accept</span> → <b>YY_PARSE_assignments</b> <span class="i">assignments</span> <span class="dot">•</span> <b>"end of file"</b>
2887 <a href="#rule_5"> 5</a> <span class="i">assignments</span> → <span class="i">assignments</span> <span class="dot">•</span> <span class="i">assignment</span>
2888 <a href="#rule_6"> 6</a> <span class="i">assignment</span> → <span class="dot">•</span> <span class="i">id</span> <b>":="</b> <span class="i">exp</span>
2889 <a href="#rule_7"> 7</a> <span class="i">id</span> → <span class="dot">•</span> <b>"identifier"</b>
2891 "end of file" <a href="#state_17">shift, and go to state 17</a>
2892 "identifier" <a href="#state_18">shift, and go to state 18</a>
2894 assignment <a href="#state_14">go to state 14</a>
2895 id <a href="#state_15">go to state 15</a>
2898 <h3><a name="state_7" id="state_7"></a>State 7</h3>
2900 <p class="pre"> <a href="#rule_10"> 10</a> <span class="i">exp</span> → <span class="dot">•</span> <b>"incr"</b> <span class="i">exp</span> <span class="i">@1</span> <span class="i">@2</span> <span class="i">exp</span>
2901 <a href="#rule_10"> 10</a> | <b>"incr"</b> <span class="dot">•</span> <span class="i">exp</span> <span class="i">@1</span> <span class="i">@2</span> <span class="i">exp</span>
2902 <a href="#rule_11"> 11</a> | <span class="dot">•</span> <b>"("</b> <span class="i">exp</span> <b>")"</b>
2903 <a href="#rule_12"> 12</a> | <span class="dot">•</span> <b>"identifier"</b>
2904 <a href="#rule_13"> 13</a> | <span class="dot">•</span> <b>"number"</b>
2906 "incr" <a href="#state_7">shift, and go to state 7</a>
2907 "identifier" <a href="#state_8">shift, and go to state 8</a>
2908 "number" <a href="#state_9">shift, and go to state 9</a>
2909 "(" <a href="#state_10">shift, and go to state 10</a>
2911 exp <a href="#state_19">go to state 19</a>
2914 <h3><a name="state_8" id="state_8"></a>State 8</h3>
2916 <p class="pre"> <a href="#rule_12"> 12</a> <span class="i">exp</span> → <b>"identifier"</b> <span class="dot">•</span>
2918 $default <a href="#rule_12">reduce using rule 12</a> (exp)
2921 <h3><a name="state_9" id="state_9"></a>State 9</h3>
2923 <p class="pre"> <a href="#rule_13"> 13</a> <span class="i">exp</span> → <b>"number"</b> <span class="dot">•</span>
2925 $default <a href="#rule_13">reduce using rule 13</a> (exp)
2928 <h3><a name="state_10" id="state_10"></a>State 10</h3>
2930 <p class="pre"> <a href="#rule_10"> 10</a> <span class="i">exp</span> → <span class="dot">•</span> <b>"incr"</b> <span class="i">exp</span> <span class="i">@1</span> <span class="i">@2</span> <span class="i">exp</span>
2931 <a href="#rule_11"> 11</a> | <span class="dot">•</span> <b>"("</b> <span class="i">exp</span> <b>")"</b>
2932 <a href="#rule_11"> 11</a> | <b>"("</b> <span class="dot">•</span> <span class="i">exp</span> <b>")"</b>
2933 <a href="#rule_12"> 12</a> | <span class="dot">•</span> <b>"identifier"</b>
2934 <a href="#rule_13"> 13</a> | <span class="dot">•</span> <b>"number"</b>
2936 "incr" <a href="#state_7">shift, and go to state 7</a>
2937 "identifier" <a href="#state_8">shift, and go to state 8</a>
2938 "number" <a href="#state_9">shift, and go to state 9</a>
2939 "(" <a href="#state_10">shift, and go to state 10</a>
2941 exp <a href="#state_20">go to state 20</a>
2944 <h3><a name="state_11" id="state_11"></a>State 11</h3>
2946 <p class="pre"> <a href="#rule_2"> 2</a> <span class="i">$accept</span> → <b>YY_PARSE_exp</b> <span class="i">exp</span> <span class="dot">•</span> <b>"end of file"</b>
2948 "end of file" <a href="#state_21">shift, and go to state 21</a>
2951 <h3><a name="state_12" id="state_12"></a>State 12</h3>
2953 <p class="pre"> <a href="#rule_0"> 0</a> <span class="i">$accept</span> → <b>YY_PARSE_unit</b> <span class="i">unit</span> <b>"end of file"</b> <span class="dot">•</span>
2958 <h3><a name="state_13" id="state_13"></a>State 13</h3>
2960 <p class="pre"> <a href="#rule_7"> 7</a> <span class="i">id</span> → <b>"identifier"</b> <span class="dot">•</span> [":="]
2961 <a href="#rule_12"> 12</a> <span class="i">exp</span> → <b>"identifier"</b> <span class="dot">•</span> ["end of file"]
2963 "end of file" <a href="#rule_12">reduce using rule 12</a> (exp)
2964 $default <a href="#rule_7">reduce using rule 7</a> (id)
2967 <h3><a name="state_14" id="state_14"></a>State 14</h3>
2969 <p class="pre"> <a href="#rule_5"> 5</a> <span class="i">assignments</span> → <span class="i">assignments</span> <span class="i">assignment</span> <span class="dot">•</span>
2971 $default <a href="#rule_5">reduce using rule 5</a> (assignments)
2974 <h3><a name="state_15" id="state_15"></a>State 15</h3>
2976 <p class="pre"> <a href="#rule_6"> 6</a> <span class="i">assignment</span> → <span class="i">id</span> <span class="dot">•</span> <b>":="</b> <span class="i">exp</span>
2978 ":=" <a href="#state_22">shift, and go to state 22</a>
2981 <h3><a name="state_16" id="state_16"></a>State 16</h3>
2983 <p class="pre"> <a href="#rule_3"> 3</a> <span class="i">unit</span> → <span class="i">assignments</span> <span class="i">exp</span> <span class="dot">•</span>
2985 $default <a href="#rule_3">reduce using rule 3</a> (unit)
2988 <h3><a name="state_17" id="state_17"></a>State 17</h3>
2990 <p class="pre"> <a href="#rule_1"> 1</a> <span class="i">$accept</span> → <b>YY_PARSE_assignments</b> <span class="i">assignments</span> <b>"end of file"</b> <span class="dot">•</span>
2995 <h3><a name="state_18" id="state_18"></a>State 18</h3>
2997 <p class="pre"> <a href="#rule_7"> 7</a> <span class="i">id</span> → <b>"identifier"</b> <span class="dot">•</span>
2999 $default <a href="#rule_7">reduce using rule 7</a> (id)
3002 <h3><a name="state_19" id="state_19"></a>State 19</h3>
3004 <p class="pre"> <a href="#rule_8"> 8</a> <span class="i">@1</span> → <span class="dot">•</span> %empty
3005 <a href="#rule_10"> 10</a> <span class="i">exp</span> → <b>"incr"</b> <span class="i">exp</span> <span class="dot">•</span> <span class="i">@1</span> <span class="i">@2</span> <span class="i">exp</span>
3007 $default <a href="#rule_8">reduce using rule 8</a> (@1)
3009 @1 <a href="#state_23">go to state 23</a>
3012 <h3><a name="state_20" id="state_20"></a>State 20</h3>
3014 <p class="pre"> <a href="#rule_11"> 11</a> <span class="i">exp</span> → <b>"("</b> <span class="i">exp</span> <span class="dot">•</span> <b>")"</b>
3016 ")" <a href="#state_24">shift, and go to state 24</a>
3019 <h3><a name="state_21" id="state_21"></a>State 21</h3>
3021 <p class="pre"> <a href="#rule_2"> 2</a> <span class="i">$accept</span> → <b>YY_PARSE_exp</b> <span class="i">exp</span> <b>"end of file"</b> <span class="dot">•</span>
3026 <h3><a name="state_22" id="state_22"></a>State 22</h3>
3028 <p class="pre"> <a href="#rule_6"> 6</a> <span class="i">assignment</span> → <span class="i">id</span> <b>":="</b> <span class="dot">•</span> <span class="i">exp</span>
3029 <a href="#rule_10"> 10</a> <span class="i">exp</span> → <span class="dot">•</span> <b>"incr"</b> <span class="i">exp</span> <span class="i">@1</span> <span class="i">@2</span> <span class="i">exp</span>
3030 <a href="#rule_11"> 11</a> | <span class="dot">•</span> <b>"("</b> <span class="i">exp</span> <b>")"</b>
3031 <a href="#rule_12"> 12</a> | <span class="dot">•</span> <b>"identifier"</b>
3032 <a href="#rule_13"> 13</a> | <span class="dot">•</span> <b>"number"</b>
3034 "incr" <a href="#state_7">shift, and go to state 7</a>
3035 "identifier" <a href="#state_8">shift, and go to state 8</a>
3036 "number" <a href="#state_9">shift, and go to state 9</a>
3037 "(" <a href="#state_10">shift, and go to state 10</a>
3039 exp <a href="#state_25">go to state 25</a>
3042 <h3><a name="state_23" id="state_23"></a>State 23</h3>
3044 <p class="pre"> <a href="#rule_9"> 9</a> <span class="i">@2</span> → <span class="dot">•</span> %empty
3045 <a href="#rule_10"> 10</a> <span class="i">exp</span> → <b>"incr"</b> <span class="i">exp</span> <span class="i">@1</span> <span class="dot">•</span> <span class="i">@2</span> <span class="i">exp</span>
3047 $default <a href="#rule_9">reduce using rule 9</a> (@2)
3049 @2 <a href="#state_26">go to state 26</a>
3052 <h3><a name="state_24" id="state_24"></a>State 24</h3>
3054 <p class="pre"> <a href="#rule_11"> 11</a> <span class="i">exp</span> → <b>"("</b> <span class="i">exp</span> <b>")"</b> <span class="dot">•</span>
3056 $default <a href="#rule_11">reduce using rule 11</a> (exp)
3059 <h3><a name="state_25" id="state_25"></a>State 25</h3>
3061 <p class="pre"> <a href="#rule_6"> 6</a> <span class="i">assignment</span> → <span class="i">id</span> <b>":="</b> <span class="i">exp</span> <span class="dot">•</span>
3063 $default <a href="#rule_6">reduce using rule 6</a> (assignment)
3066 <h3><a name="state_26" id="state_26"></a>State 26</h3>
3068 <p class="pre"> <a href="#rule_10"> 10</a> <span class="i">exp</span> → <span class="dot">•</span> <b>"incr"</b> <span class="i">exp</span> <span class="i">@1</span> <span class="i">@2</span> <span class="i">exp</span>
3069 <a href="#rule_10"> 10</a> | <b>"incr"</b> <span class="i">exp</span> <span class="i">@1</span> <span class="i">@2</span> <span class="dot">•</span> <span class="i">exp</span>
3070 <a href="#rule_11"> 11</a> | <span class="dot">•</span> <b>"("</b> <span class="i">exp</span> <b>")"</b>
3071 <a href="#rule_12"> 12</a> | <span class="dot">•</span> <b>"identifier"</b>
3072 <a href="#rule_13"> 13</a> | <span class="dot">•</span> <b>"number"</b>
3074 "incr" <a href="#state_7">shift, and go to state 7</a>
3075 "identifier" <a href="#state_8">shift, and go to state 8</a>
3076 "number" <a href="#state_9">shift, and go to state 9</a>
3077 "(" <a href="#state_10">shift, and go to state 10</a>
3079 exp <a href="#state_27">go to state 27</a>
3082 <h3><a name="state_27" id="state_27"></a>State 27</h3>
3084 <p class="pre"> <a href="#rule_10"> 10</a> <span class="i">exp</span> → <b>"incr"</b> <span class="i">exp</span> <span class="i">@1</span> <span class="i">@2</span> <span class="i">exp</span> <span class="dot">•</span>
3086 $default <a href="#rule_10">reduce using rule 10</a> (exp)
3089 <div id="footer"><hr />This document was generated using
3090 <a href="https://www.gnu.org/software/bison/" title="GNU Bison">
3091 GNU Bison ]AT_PACKAGE_VERSION[</a>
3092 XML Automaton Report.<br />
3093 Verbatim copying and distribution of this entire page is
3094 permitted in any medium, provided this notice is preserved.</div></body>
3099 AT_BISON_OPTION_POPDEFS
3103 ## ------------------------ ##
3104 ## Reports with conflicts. ##
3105 ## ------------------------ ##
3107 AT_SETUP([Reports with conflicts])
3109 AT_KEYWORDS([cex report])
3111 # We need UTF-8 support for correct screen-width computation of UTF-8
3112 # characters. Skip the test if not available.
3113 locale=`locale -a | $EGREP '^en_US\.(UTF-8|utf8)$' | sed 1q`
3114 AT_SKIP_IF([[test x = x"$locale"]])
3116 AT_SKIP_IF([[test x"$XSLTPROC" = x]])
3118 AT_BISON_OPTION_PUSHDEFS
3130 AT_CHECK([LC_ALL="$locale" bison -fno-caret -o input.cc -rall -Wcex --graph=input.gv --html --xml input.y], [], [],
3131 [[input.y: warning: 3 shift/reduce conflicts [-Wconflicts-sr]
3132 input.y: warning: 3 reduce/reduce conflicts [-Wconflicts-rr]
3133 input.y: warning: shift/reduce conflict on token "⊕" [-Wcounterexamples]
3134 Example: exp "+" exp • "⊕" exp
3143 input.y: warning: reduce/reduce conflict on tokens $end, "+", "⊕" [-Wcounterexamples]
3144 Example: exp "+" exp •
3145 First reduce derivation
3148 Second reduce derivation
3151 input.y: warning: shift/reduce conflict on token "⊕" [-Wcounterexamples]
3152 Example: exp "+" exp • "⊕" exp
3161 input.y: warning: shift/reduce conflict on token "⊕" [-Wcounterexamples]
3162 Example: exp "⊕" exp • "⊕" exp
3171 input.y: warning: shift/reduce conflict on token "+" [-Wcounterexamples]
3172 Example: exp "⊕" exp • "+" exp
3181 input.y: warning: shift/reduce conflict on token "+" [-Wcounterexamples]
3182 Example: exp "⊕" exp • "+" exp
3191 input.y:6.3-13: warning: rule useless in parser due to conflicts [-Wother]
3194 # Check the contents of the report.
3195 # FIXME: Avoid trailing white spaces.
3196 AT_CHECK([sed -e 's/ *$//' input.output], [],
3197 [[Rules useless in parser due to conflicts
3202 State 7 conflicts: 1 shift/reduce, 3 reduce/reduce
3203 State 8 conflicts: 2 shift/reduce
3217 Terminals, with rules where they appear
3227 Nonterminals, with rules where they appear
3238 0 $accept: • exp $end
3239 1 exp: • exp "⊕" exp
3245 "number" shift, and go to state 1
3246 "Ñùṃéℝô" shift, and go to state 2
3255 $default reduce using rule 4 (exp)
3262 $default reduce using rule 5 (exp)
3267 0 $accept: exp • $end
3268 1 exp: exp • "⊕" exp
3272 $end shift, and go to state 4
3273 "+" shift, and go to state 5
3274 "⊕" shift, and go to state 6
3279 0 $accept: exp $end •
3286 1 exp: • exp "⊕" exp
3294 "number" shift, and go to state 1
3295 "Ñùṃéℝô" shift, and go to state 2
3302 1 exp: • exp "⊕" exp
3309 "number" shift, and go to state 1
3310 "Ñùṃéℝô" shift, and go to state 2
3317 1 exp: exp • "⊕" exp
3319 2 | exp "+" exp • [$end, "+", "⊕"]
3321 3 | exp "+" exp • [$end, "+", "⊕"]
3323 "⊕" shift, and go to state 6
3325 $end reduce using rule 2 (exp)
3326 $end [reduce using rule 3 (exp)]
3327 "+" reduce using rule 2 (exp)
3328 "+" [reduce using rule 3 (exp)]
3329 "⊕" [reduce using rule 2 (exp)]
3330 "⊕" [reduce using rule 3 (exp)]
3331 $default reduce using rule 2 (exp)
3333 Conflict between rule 2 and token "+" resolved as reduce (%left "+").
3335 shift/reduce conflict on token "⊕":
3336 2 exp: exp "+" exp •
3337 1 exp: exp • "⊕" exp
3338 Example: exp "+" exp • "⊕" exp
3348 reduce/reduce conflict on tokens $end, "+", "⊕":
3349 2 exp: exp "+" exp •
3350 3 exp: exp "+" exp •
3351 Example: exp "+" exp •
3352 First reduce derivation
3355 Second reduce derivation
3359 shift/reduce conflict on token "⊕":
3360 3 exp: exp "+" exp •
3361 1 exp: exp • "⊕" exp
3362 Example: exp "+" exp • "⊕" exp
3376 1 exp: exp • "⊕" exp
3377 1 | exp "⊕" exp • [$end, "+", "⊕"]
3381 "+" shift, and go to state 5
3382 "⊕" shift, and go to state 6
3384 "+" [reduce using rule 1 (exp)]
3385 "⊕" [reduce using rule 1 (exp)]
3386 $default reduce using rule 1 (exp)
3388 shift/reduce conflict on token "⊕":
3389 1 exp: exp "⊕" exp •
3390 1 exp: exp • "⊕" exp
3391 Example: exp "⊕" exp • "⊕" exp
3401 shift/reduce conflict on token "+":
3402 1 exp: exp "⊕" exp •
3403 2 exp: exp • "+" exp
3404 Example: exp "⊕" exp • "+" exp
3414 shift/reduce conflict on token "+":
3415 1 exp: exp "⊕" exp •
3416 3 exp: exp • "+" exp
3417 Example: exp "⊕" exp • "+" exp
3432 AT_CHECK([cat input.gv], [],
3433 [[// Generated by GNU Bison ]AT_PACKAGE_VERSION[.
3434 // Report bugs to <bug-bison@gnu.org>.
3435 // Home page: <https://www.gnu.org/software/bison/>.
3439 node [fontname = courier, shape = box, colorscheme = paired6]
3440 edge [fontname = courier]
3442 0 [label="State 0\n\l 0 $accept: • exp $end\l 1 exp: • exp \"⊕\" exp\l 2 | • exp \"+\" exp\l 3 | • exp \"+\" exp\l 4 | • \"number\"\l 5 | • \"Ñùṃéℝô\"\l"]
3443 0 -> 1 [style=solid label="\"number\""]
3444 0 -> 2 [style=solid label="\"Ñùṃéℝô\""]
3445 0 -> 3 [style=dashed label="exp"]
3446 1 [label="State 1\n\l 4 exp: \"number\" •\l"]
3447 1 -> "1R4" [style=solid]
3448 "1R4" [label="R4", fillcolor=3, shape=diamond, style=filled]
3449 2 [label="State 2\n\l 5 exp: \"Ñùṃéℝô\" •\l"]
3450 2 -> "2R5" [style=solid]
3451 "2R5" [label="R5", fillcolor=3, shape=diamond, style=filled]
3452 3 [label="State 3\n\l 0 $accept: exp • $end\l 1 exp: exp • \"⊕\" exp\l 2 | exp • \"+\" exp\l 3 | exp • \"+\" exp\l"]
3453 3 -> 4 [style=solid label="$end"]
3454 3 -> 5 [style=solid label="\"+\""]
3455 3 -> 6 [style=solid label="\"⊕\""]
3456 4 [label="State 4\n\l 0 $accept: exp $end •\l"]
3457 4 -> "4R0" [style=solid]
3458 "4R0" [label="Acc", fillcolor=1, shape=diamond, style=filled]
3459 5 [label="State 5\n\l 1 exp: • exp \"⊕\" exp\l 2 | • exp \"+\" exp\l 2 | exp \"+\" • exp\l 3 | • exp \"+\" exp\l 3 | exp \"+\" • exp\l 4 | • \"number\"\l 5 | • \"Ñùṃéℝô\"\l"]
3460 5 -> 1 [style=solid label="\"number\""]
3461 5 -> 2 [style=solid label="\"Ñùṃéℝô\""]
3462 5 -> 7 [style=dashed label="exp"]
3463 6 [label="State 6\n\l 1 exp: • exp \"⊕\" exp\l 1 | exp \"⊕\" • exp\l 2 | • exp \"+\" exp\l 3 | • exp \"+\" exp\l 4 | • \"number\"\l 5 | • \"Ñùṃéℝô\"\l"]
3464 6 -> 1 [style=solid label="\"number\""]
3465 6 -> 2 [style=solid label="\"Ñùṃéℝô\""]
3466 6 -> 8 [style=dashed label="exp"]
3467 7 [label="State 7\n\l 1 exp: exp • \"⊕\" exp\l 2 | exp • \"+\" exp\l 2 | exp \"+\" exp • [$end, \"+\", \"⊕\"]\l 3 | exp • \"+\" exp\l 3 | exp \"+\" exp • [$end, \"+\", \"⊕\"]\l"]
3468 7 -> 6 [style=solid label="\"⊕\""]
3469 7 -> "7R2d" [label="[\"⊕\"]", style=solid]
3470 "7R2d" [label="R2", fillcolor=5, shape=diamond, style=filled]
3471 7 -> "7R2" [style=solid]
3472 "7R2" [label="R2", fillcolor=3, shape=diamond, style=filled]
3473 7 -> "7R3d" [label="[$end, \"+\", \"⊕\"]", style=solid]
3474 "7R3d" [label="R3", fillcolor=5, shape=diamond, style=filled]
3475 8 [label="State 8\n\l 1 exp: exp • \"⊕\" exp\l 1 | exp \"⊕\" exp • [$end, \"+\", \"⊕\"]\l 2 | exp • \"+\" exp\l 3 | exp • \"+\" exp\l"]
3476 8 -> 5 [style=solid label="\"+\""]
3477 8 -> 6 [style=solid label="\"⊕\""]
3478 8 -> "8R1d" [label="[\"+\", \"⊕\"]", style=solid]
3479 "8R1d" [label="R1", fillcolor=5, shape=diamond, style=filled]
3480 8 -> "8R1" [style=solid]
3481 "8R1" [label="R1", fillcolor=3, shape=diamond, style=filled]
3486 AT_CHECK([[cat input.xml]], [],
3487 [[<?xml version="1.0"?>
3489 <bison-xml-report version="]AT_PACKAGE_VERSION[" bug-report="bug-bison@gnu.org" url="https://www.gnu.org/software/bison/">
3491 <filename>input.y</filename>
3495 <rule number="0" usefulness="useful">
3498 <symbol>exp</symbol>
3499 <symbol>$end</symbol>
3502 <rule number="1" usefulness="useful">
3505 <symbol>exp</symbol>
3506 <symbol>"⊕"</symbol>
3507 <symbol>exp</symbol>
3510 <rule number="2" usefulness="useful">
3513 <symbol>exp</symbol>
3514 <symbol>"+"</symbol>
3515 <symbol>exp</symbol>
3518 <rule number="3" usefulness="useless-in-parser">
3521 <symbol>exp</symbol>
3522 <symbol>"+"</symbol>
3523 <symbol>exp</symbol>
3526 <rule number="4" usefulness="useful">
3529 <symbol>"number"</symbol>
3532 <rule number="5" usefulness="useful">
3535 <symbol>"Ñùṃéℝô"</symbol>
3540 <terminal symbol-number="0" token-number="0" name="$end" type="" usefulness="useful"/>
3541 <terminal symbol-number="1" token-number="256" name="error" type="" usefulness="useful"/>
3542 <terminal symbol-number="3" token-number="258" name=""+"" type="" usefulness="useful" prec="1" assoc="left"/>
3543 <terminal symbol-number="4" token-number="259" name=""⊕"" type="" usefulness="useful"/>
3544 <terminal symbol-number="5" token-number="260" name=""number"" type="" usefulness="useful"/>
3545 <terminal symbol-number="6" token-number="261" name=""Ñùṃéℝô"" type="" usefulness="useful"/>
3548 <nonterminal symbol-number="7" name="$accept" type="" usefulness="useful"/>
3549 <nonterminal symbol-number="8" name="exp" type="" usefulness="useful"/>
3557 <item rule-number="0" dot="0"/>
3558 <item rule-number="1" dot="0"/>
3559 <item rule-number="2" dot="0"/>
3560 <item rule-number="3" dot="0"/>
3561 <item rule-number="4" dot="0"/>
3562 <item rule-number="5" dot="0"/>
3566 <transition type="shift" symbol=""number"" state="1"/>
3567 <transition type="shift" symbol=""Ñùṃéℝô"" state="2"/>
3568 <transition type="goto" symbol="exp" state="3"/>
3578 <item rule-number="4" dot="1"/>
3584 <reduction symbol="$default" rule="4" enabled="true"/>
3592 <item rule-number="5" dot="1"/>
3598 <reduction symbol="$default" rule="5" enabled="true"/>
3606 <item rule-number="0" dot="1"/>
3607 <item rule-number="1" dot="1"/>
3608 <item rule-number="2" dot="1"/>
3609 <item rule-number="3" dot="1"/>
3613 <transition type="shift" symbol="$end" state="4"/>
3614 <transition type="shift" symbol=""+"" state="5"/>
3615 <transition type="shift" symbol=""⊕"" state="6"/>
3625 <item rule-number="0" dot="2"/>
3631 <reduction symbol="$default" rule="accept" enabled="true"/>
3639 <item rule-number="1" dot="0"/>
3640 <item rule-number="2" dot="0"/>
3641 <item rule-number="2" dot="2"/>
3642 <item rule-number="3" dot="0"/>
3643 <item rule-number="3" dot="2"/>
3644 <item rule-number="4" dot="0"/>
3645 <item rule-number="5" dot="0"/>
3649 <transition type="shift" symbol=""number"" state="1"/>
3650 <transition type="shift" symbol=""Ñùṃéℝô"" state="2"/>
3651 <transition type="goto" symbol="exp" state="7"/>
3661 <item rule-number="1" dot="0"/>
3662 <item rule-number="1" dot="2"/>
3663 <item rule-number="2" dot="0"/>
3664 <item rule-number="3" dot="0"/>
3665 <item rule-number="4" dot="0"/>
3666 <item rule-number="5" dot="0"/>
3670 <transition type="shift" symbol=""number"" state="1"/>
3671 <transition type="shift" symbol=""Ñùṃéℝô"" state="2"/>
3672 <transition type="goto" symbol="exp" state="8"/>
3682 <item rule-number="1" dot="1"/>
3683 <item rule-number="2" dot="1"/>
3684 <item rule-number="2" dot="3">
3686 <symbol>$end</symbol>
3687 <symbol>"+"</symbol>
3688 <symbol>"⊕"</symbol>
3691 <item rule-number="3" dot="1"/>
3692 <item rule-number="3" dot="3">
3694 <symbol>$end</symbol>
3695 <symbol>"+"</symbol>
3696 <symbol>"⊕"</symbol>
3702 <transition type="shift" symbol=""⊕"" state="6"/>
3706 <reduction symbol="$end" rule="2" enabled="true"/>
3707 <reduction symbol="$end" rule="3" enabled="false"/>
3708 <reduction symbol=""+"" rule="2" enabled="true"/>
3709 <reduction symbol=""+"" rule="3" enabled="false"/>
3710 <reduction symbol=""⊕"" rule="2" enabled="false"/>
3711 <reduction symbol=""⊕"" rule="3" enabled="false"/>
3712 <reduction symbol="$default" rule="2" enabled="true"/>
3716 <resolution rule="2" symbol=""+"" type="reduce">%left "+"</resolution>
3722 <item rule-number="1" dot="1"/>
3723 <item rule-number="1" dot="3">
3725 <symbol>$end</symbol>
3726 <symbol>"+"</symbol>
3727 <symbol>"⊕"</symbol>
3730 <item rule-number="2" dot="1"/>
3731 <item rule-number="3" dot="1"/>
3735 <transition type="shift" symbol=""+"" state="5"/>
3736 <transition type="shift" symbol=""⊕"" state="6"/>
3740 <reduction symbol=""+"" rule="1" enabled="false"/>
3741 <reduction symbol=""⊕"" rule="1" enabled="false"/>
3742 <reduction symbol="$default" rule="1" enabled="true"/>
3752 AT_CHECK([[cat input.html]], [],
3753 [[<?xml version="1.0" encoding="UTF-8"?>
3754 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3755 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:bison="https://www.gnu.org/software/bison/">
3757 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
3758 <title>input.y - GNU Bison XML Automaton Report</title>
3759 <style type="text/css">
3761 font-family: "Nimbus Sans L", Arial, sans-serif;
3766 text-decoration: none;
3770 text-decoration: none;
3776 text-decoration: underline;
3782 font-family: monospace;
3786 list-style-type: decimal;
3789 list-style-type: lower-alpha;
3800 <body><h1>GNU Bison XML Automaton Report</h1><p>
3801 input grammar: <span class="i">input.y</span></p>
3803 <h3>Table of Contents</h3><ul id="menu"><li><a href="#reductions">Reductions</a><ul class="lower-alpha"><li><a href="#nonterminals_useless_in_grammar">Nonterminals useless in grammar</a></li><li><a href="#terminals_unused_in_grammar">Terminals unused in grammar</a></li><li><a href="#rules_useless_in_grammar">Rules useless in grammar</a></li><li><a href="#rules_useless_in_parser">Rules useless in parser due to conflicts</a></li></ul></li><li><a href="#conflicts">Conflicts</a></li><li><a href="#grammar">Grammar</a><ul class="lower-alpha"><li><a href="#grammar">Itemset</a></li><li><a href="#terminals">Terminal symbols</a></li><li><a href="#nonterminals">Nonterminal symbols</a></li></ul></li><li><a href="#automaton">Automaton</a></li></ul><h2><a name="reductions" id="reductions"></a> Reductions</h2><h3><a name="nonterminals_useless_in_grammar" id="nonterminals_useless_in_grammar"></a> Nonterminals useless in grammar</h3>
3805 <h3><a name="terminals_unused_in_grammar" id="terminals_unused_in_grammar"></a> Terminals unused in grammar</h3>
3807 <h3><a name="rules_useless_in_grammar" id="rules_useless_in_grammar"></a> Rules useless in grammar</h3>
3808 <h2><a name="rules_useless_in_parser" id="rules_useless_in_parser"></a> Rules useless in parser due to conflicts</h2>
3810 <a href="#rule_3"> 3</a> <span class="i">exp</span> → <span class="i">exp</span> <b>"+"</b> <span class="i">exp</span>
3813 <h2><a name="conflicts" id="conflicts"></a> Conflicts</h2>
3815 <p class="pre"><a href="#state_7">State 7</a> conflicts: 1 shift/reduce, 3 reduce/reduce
3816 <a href="#state_8">State 8</a> conflicts: 2 shift/reduce
3819 </p><h2><a name="grammar" id="grammar"></a> Grammar</h2>
3821 <a name="rule_0" id="rule_0"> 0</a> <span class="i">$accept</span> → <span class="i">exp</span> <b>$end</b>
3823 <a name="rule_1" id="rule_1"> 1</a> <span class="i">exp</span> → <span class="i">exp</span> <b>"⊕"</b> <span class="i">exp</span>
3824 <a name="rule_2" id="rule_2"> 2</a> | <span class="i">exp</span> <b>"+"</b> <span class="i">exp</span>
3825 <a name="rule_3" id="rule_3"> 3</a> | <span class="i">exp</span> <b>"+"</b> <span class="i">exp</span>
3826 <a name="rule_4" id="rule_4"> 4</a> | <b>"number"</b>
3827 <a name="rule_5" id="rule_5"> 5</a> | <b>"Ñùṃéℝô"</b>
3830 <h3><a name="terminals" id="terminals"></a> Terminals, with rules where they appear</h3>
3833 <li><b>$end</b> (0) <a href="#rule_0">0</a></li>
3834 <li><b>error</b> (256)</li>
3835 <li><b>"+"</b> (258) <a href="#rule_2">2</a> <a href="#rule_3">3</a></li>
3836 <li><b>"⊕"</b> (259) <a href="#rule_1">1</a></li>
3837 <li><b>"number"</b> (260) <a href="#rule_4">4</a></li>
3838 <li><b>"Ñùṃéℝô"</b> (261) <a href="#rule_5">5</a></li>
3841 <h3><a name="nonterminals" id="nonterminals"></a> Nonterminals, with rules where they appear</h3>
3844 <li><b>$accept</b> (7)
3846 <li>on left: <a href="#rule_0">0</a></li>
3851 <li>on left: <a href="#rule_1">1</a> <a href="#rule_2">2</a> <a href="#rule_3">3</a> <a href="#rule_4">4</a> <a href="#rule_5">5</a></li>
3852 <li>on right: <a href="#rule_0">0</a> <a href="#rule_1">1</a> <a href="#rule_2">2</a> <a href="#rule_3">3</a></li>
3855 </ul><h2><a name="automaton" id="automaton"></a> Automaton</h2>
3857 <h3><a name="state_0" id="state_0"></a>State 0</h3>
3859 <p class="pre"> <a href="#rule_0"> 0</a> <span class="i">$accept</span> → <span class="dot">•</span> <span class="i">exp</span> <b>$end</b>
3860 <a href="#rule_1"> 1</a> <span class="i">exp</span> → <span class="dot">•</span> <span class="i">exp</span> <b>"⊕"</b> <span class="i">exp</span>
3861 <a href="#rule_2"> 2</a> | <span class="dot">•</span> <span class="i">exp</span> <b>"+"</b> <span class="i">exp</span>
3862 <a href="#rule_3"> 3</a> | <span class="dot">•</span> <span class="i">exp</span> <b>"+"</b> <span class="i">exp</span>
3863 <a href="#rule_4"> 4</a> | <span class="dot">•</span> <b>"number"</b>
3864 <a href="#rule_5"> 5</a> | <span class="dot">•</span> <b>"Ñùṃéℝô"</b>
3866 "number" <a href="#state_1">shift, and go to state 1</a>
3867 "Ñùṃéℝô" <a href="#state_2">shift, and go to state 2</a>
3869 exp <a href="#state_3">go to state 3</a>
3872 <h3><a name="state_1" id="state_1"></a>State 1</h3>
3874 <p class="pre"> <a href="#rule_4"> 4</a> <span class="i">exp</span> → <b>"number"</b> <span class="dot">•</span>
3876 $default <a href="#rule_4">reduce using rule 4</a> (exp)
3879 <h3><a name="state_2" id="state_2"></a>State 2</h3>
3881 <p class="pre"> <a href="#rule_5"> 5</a> <span class="i">exp</span> → <b>"Ñùṃéℝô"</b> <span class="dot">•</span>
3883 $default <a href="#rule_5">reduce using rule 5</a> (exp)
3886 <h3><a name="state_3" id="state_3"></a>State 3</h3>
3888 <p class="pre"> <a href="#rule_0"> 0</a> <span class="i">$accept</span> → <span class="i">exp</span> <span class="dot">•</span> <b>$end</b>
3889 <a href="#rule_1"> 1</a> <span class="i">exp</span> → <span class="i">exp</span> <span class="dot">•</span> <b>"⊕"</b> <span class="i">exp</span>
3890 <a href="#rule_2"> 2</a> | <span class="i">exp</span> <span class="dot">•</span> <b>"+"</b> <span class="i">exp</span>
3891 <a href="#rule_3"> 3</a> | <span class="i">exp</span> <span class="dot">•</span> <b>"+"</b> <span class="i">exp</span>
3893 $end <a href="#state_4">shift, and go to state 4</a>
3894 "+" <a href="#state_5">shift, and go to state 5</a>
3895 "⊕" <a href="#state_6">shift, and go to state 6</a>
3898 <h3><a name="state_4" id="state_4"></a>State 4</h3>
3900 <p class="pre"> <a href="#rule_0"> 0</a> <span class="i">$accept</span> → <span class="i">exp</span> <b>$end</b> <span class="dot">•</span>
3905 <h3><a name="state_5" id="state_5"></a>State 5</h3>
3907 <p class="pre"> <a href="#rule_1"> 1</a> <span class="i">exp</span> → <span class="dot">•</span> <span class="i">exp</span> <b>"⊕"</b> <span class="i">exp</span>
3908 <a href="#rule_2"> 2</a> | <span class="dot">•</span> <span class="i">exp</span> <b>"+"</b> <span class="i">exp</span>
3909 <a href="#rule_2"> 2</a> | <span class="i">exp</span> <b>"+"</b> <span class="dot">•</span> <span class="i">exp</span>
3910 <a href="#rule_3"> 3</a> | <span class="dot">•</span> <span class="i">exp</span> <b>"+"</b> <span class="i">exp</span>
3911 <a href="#rule_3"> 3</a> | <span class="i">exp</span> <b>"+"</b> <span class="dot">•</span> <span class="i">exp</span>
3912 <a href="#rule_4"> 4</a> | <span class="dot">•</span> <b>"number"</b>
3913 <a href="#rule_5"> 5</a> | <span class="dot">•</span> <b>"Ñùṃéℝô"</b>
3915 "number" <a href="#state_1">shift, and go to state 1</a>
3916 "Ñùṃéℝô" <a href="#state_2">shift, and go to state 2</a>
3918 exp <a href="#state_7">go to state 7</a>
3921 <h3><a name="state_6" id="state_6"></a>State 6</h3>
3923 <p class="pre"> <a href="#rule_1"> 1</a> <span class="i">exp</span> → <span class="dot">•</span> <span class="i">exp</span> <b>"⊕"</b> <span class="i">exp</span>
3924 <a href="#rule_1"> 1</a> | <span class="i">exp</span> <b>"⊕"</b> <span class="dot">•</span> <span class="i">exp</span>
3925 <a href="#rule_2"> 2</a> | <span class="dot">•</span> <span class="i">exp</span> <b>"+"</b> <span class="i">exp</span>
3926 <a href="#rule_3"> 3</a> | <span class="dot">•</span> <span class="i">exp</span> <b>"+"</b> <span class="i">exp</span>
3927 <a href="#rule_4"> 4</a> | <span class="dot">•</span> <b>"number"</b>
3928 <a href="#rule_5"> 5</a> | <span class="dot">•</span> <b>"Ñùṃéℝô"</b>
3930 "number" <a href="#state_1">shift, and go to state 1</a>
3931 "Ñùṃéℝô" <a href="#state_2">shift, and go to state 2</a>
3933 exp <a href="#state_8">go to state 8</a>
3936 <h3><a name="state_7" id="state_7"></a>State 7</h3>
3938 <p class="pre"> <a href="#rule_1"> 1</a> <span class="i">exp</span> → <span class="i">exp</span> <span class="dot">•</span> <b>"⊕"</b> <span class="i">exp</span>
3939 <a href="#rule_2"> 2</a> | <span class="i">exp</span> <span class="dot">•</span> <b>"+"</b> <span class="i">exp</span>
3940 <a href="#rule_2"> 2</a> | <span class="i">exp</span> <b>"+"</b> <span class="i">exp</span> <span class="dot">•</span> [$end, "+", "⊕"]
3941 <a href="#rule_3"> 3</a> | <span class="i">exp</span> <span class="dot">•</span> <b>"+"</b> <span class="i">exp</span>
3942 <a href="#rule_3"> 3</a> | <span class="i">exp</span> <b>"+"</b> <span class="i">exp</span> <span class="dot">•</span> [$end, "+", "⊕"]
3944 "⊕" <a href="#state_6">shift, and go to state 6</a>
3946 $end <a href="#rule_2">reduce using rule 2</a> (exp)
3947 $end [<a href="#rule_3">reduce using rule 3</a> (exp)]
3948 "+" <a href="#rule_2">reduce using rule 2</a> (exp)
3949 "+" [<a href="#rule_3">reduce using rule 3</a> (exp)]
3950 "⊕" [<a href="#rule_2">reduce using rule 2</a> (exp)]
3951 "⊕" [<a href="#rule_3">reduce using rule 3</a> (exp)]
3952 $default <a href="#rule_2">reduce using rule 2</a> (exp)
3954 Conflict between <a href="#rule_2">rule 2</a> and token "+" resolved as reduce (%left "+").
3957 <h3><a name="state_8" id="state_8"></a>State 8</h3>
3959 <p class="pre"> <a href="#rule_1"> 1</a> <span class="i">exp</span> → <span class="i">exp</span> <span class="dot">•</span> <b>"⊕"</b> <span class="i">exp</span>
3960 <a href="#rule_1"> 1</a> | <span class="i">exp</span> <b>"⊕"</b> <span class="i">exp</span> <span class="dot">•</span> [$end, "+", "⊕"]
3961 <a href="#rule_2"> 2</a> | <span class="i">exp</span> <span class="dot">•</span> <b>"+"</b> <span class="i">exp</span>
3962 <a href="#rule_3"> 3</a> | <span class="i">exp</span> <span class="dot">•</span> <b>"+"</b> <span class="i">exp</span>
3964 "+" <a href="#state_5">shift, and go to state 5</a>
3965 "⊕" <a href="#state_6">shift, and go to state 6</a>
3967 "+" [<a href="#rule_1">reduce using rule 1</a> (exp)]
3968 "⊕" [<a href="#rule_1">reduce using rule 1</a> (exp)]
3969 $default <a href="#rule_1">reduce using rule 1</a> (exp)
3972 <div id="footer"><hr />This document was generated using
3973 <a href="https://www.gnu.org/software/bison/" title="GNU Bison">
3974 GNU Bison ]AT_PACKAGE_VERSION[</a>
3975 XML Automaton Report.<br />
3976 Verbatim copying and distribution of this entire page is
3977 permitted in any medium, provided this notice is preserved.</div></body>
3981 AT_BISON_OPTION_POPDEFS