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.]])
21 # AT_CHECK_HTML(FILE, EXPECTED-CONTENT)
22 # -------------------------------------
23 # Old versions of xsltproc emit 'content="text/html; charset=UTF-8"'
24 # instead of 'content="text/html;charset=UTF-8"'.
25 # <https://trac.macports.org/raw-attachment/ticket/59927/bison-test-results-20210811-95b72.log.xz>
26 m4_define([AT_CHECK_HTML],
28 AT_CHECK([sed -e 's|content="text/html; charset=UTF-8"|content="text/html;charset=UTF-8"|g' $1],
41 AT_BISON_OPTION_PUSHDEFS
49 %token <std::string> IDENTIFIER "identifier"
50 %type <std::string> id
51 %token <int> NUMBER "number"
56 unit: assignments exp { driver.result = $2; };
60 | assignments assignment {};
63 id ":=" exp { driver.variables[$id] = $exp; };
69 "incr" exp <int>{ $$ = 1; } <int>{ $$ = 10; } exp { $$ = $2 + $3 + $4 + $5; }
70 | "(" exp ")" { std::swap ($$, $2); }
71 | "identifier" { $$ = driver.variables[$1]; }
72 | "number" { std::swap ($$, $1); };
75 AT_SKIP_IF([[test x"$XSLTPROC" = x]])
76 AT_BISON_CHECK([-o input.cc -v --graph=input.gv --html --xml input.yy])
78 # Check the contents of the report.
79 AT_CHECK([cat input.output], [],
82 0 $accept: unit "end of file"
84 1 unit: assignments exp
87 3 | assignments assignment
89 4 assignment: id ":=" exp
97 8 exp: "incr" exp @1 @2 exp
103 Terminals, with rules where they appear
109 "identifier" <std::string> (260) 5 10
110 "number" <int> (261) 11
115 Nonterminals, with rules where they appear
128 id <std::string> (13)
144 0 $accept: . unit "end of file"
146 $default reduce using rule 2 (assignments)
149 assignments go to state 2
154 0 $accept: unit . "end of file"
156 "end of file" shift, and go to state 3
161 1 unit: assignments . exp
162 3 assignments: assignments . assignment
164 "incr" shift, and go to state 4
165 "identifier" shift, and go to state 5
166 "number" shift, and go to state 6
167 "(" shift, and go to state 7
169 assignment go to state 8
176 0 $accept: unit "end of file" .
183 8 exp: "incr" . exp @1 @2 exp
185 "incr" shift, and go to state 4
186 "identifier" shift, and go to state 11
187 "number" shift, and go to state 6
188 "(" shift, and go to state 7
196 10 exp: "identifier" .
198 "end of file" reduce using rule 10 (exp)
199 $default reduce using rule 5 (id)
206 $default reduce using rule 11 (exp)
213 "incr" shift, and go to state 4
214 "identifier" shift, and go to state 11
215 "number" shift, and go to state 6
216 "(" shift, and go to state 7
223 3 assignments: assignments assignment .
225 $default reduce using rule 3 (assignments)
230 4 assignment: id . ":=" exp
232 ":=" shift, and go to state 14
237 1 unit: assignments exp .
239 $default reduce using rule 1 (unit)
244 10 exp: "identifier" .
246 $default reduce using rule 10 (exp)
251 8 exp: "incr" exp . @1 @2 exp
253 $default reduce using rule 6 (@1)
262 ")" shift, and go to state 16
267 4 assignment: id ":=" . exp
269 "incr" shift, and go to state 4
270 "identifier" shift, and go to state 11
271 "number" shift, and go to state 6
272 "(" shift, and go to state 7
279 8 exp: "incr" exp @1 . @2 exp
281 $default reduce using rule 7 (@2)
290 $default reduce using rule 9 (exp)
295 4 assignment: id ":=" exp .
297 $default reduce using rule 4 (assignment)
302 8 exp: "incr" exp @1 @2 . exp
304 "incr" shift, and go to state 4
305 "identifier" shift, and go to state 11
306 "number" shift, and go to state 6
307 "(" shift, and go to state 7
314 8 exp: "incr" exp @1 @2 exp .
316 $default reduce using rule 8 (exp)
320 # Now generate verbose reports.
321 AT_SKIP_IF([[test x"$XSLTPROC" = x]])
322 AT_BISON_CHECK([-o input.cc -rall --graph=input.gv --html --xml input.yy])
324 # Check the contents of the report.
325 AT_CHECK([cat input.output], [],
328 0 $accept: unit "end of file"
330 1 unit: assignments exp
332 2 assignments: %empty
333 3 | assignments assignment
335 4 assignment: id ":=" exp
343 8 exp: "incr" exp @1 @2 exp
349 Terminals, with rules where they appear
355 "identifier" <std::string> (260) 5 10
356 "number" <int> (261) 11
361 Nonterminals, with rules where they appear
374 id <std::string> (13)
390 0 $accept: . unit "end of file"
391 1 unit: . assignments exp
392 2 assignments: %empty .
393 3 | . assignments assignment
395 $default reduce using rule 2 (assignments)
398 assignments go to state 2
403 0 $accept: unit . "end of file"
405 "end of file" shift, and go to state 3
410 1 unit: assignments . exp
411 3 assignments: assignments . assignment
412 4 assignment: . id ":=" exp
414 8 exp: . "incr" exp @1 @2 exp
419 "incr" shift, and go to state 4
420 "identifier" shift, and go to state 5
421 "number" shift, and go to state 6
422 "(" shift, and go to state 7
424 assignment go to state 8
431 0 $accept: unit "end of file" .
438 8 exp: . "incr" exp @1 @2 exp
439 8 | "incr" . exp @1 @2 exp
444 "incr" shift, and go to state 4
445 "identifier" shift, and go to state 11
446 "number" shift, and go to state 6
447 "(" shift, and go to state 7
454 5 id: "identifier" . [":="]
455 10 exp: "identifier" . ["end of file"]
457 "end of file" reduce using rule 10 (exp)
458 $default reduce using rule 5 (id)
465 $default reduce using rule 11 (exp)
470 8 exp: . "incr" exp @1 @2 exp
476 "incr" shift, and go to state 4
477 "identifier" shift, and go to state 11
478 "number" shift, and go to state 6
479 "(" shift, and go to state 7
486 3 assignments: assignments assignment .
488 $default reduce using rule 3 (assignments)
493 4 assignment: id . ":=" exp
495 ":=" shift, and go to state 14
500 1 unit: assignments exp .
502 $default reduce using rule 1 (unit)
507 10 exp: "identifier" .
509 $default reduce using rule 10 (exp)
515 8 exp: "incr" exp . @1 @2 exp
517 $default reduce using rule 6 (@1)
526 ")" shift, and go to state 16
531 4 assignment: id ":=" . exp
532 8 exp: . "incr" exp @1 @2 exp
537 "incr" shift, and go to state 4
538 "identifier" shift, and go to state 11
539 "number" shift, and go to state 6
540 "(" shift, and go to state 7
548 8 exp: "incr" exp @1 . @2 exp
550 $default reduce using rule 7 (@2)
559 $default reduce using rule 9 (exp)
564 4 assignment: id ":=" exp .
566 $default reduce using rule 4 (assignment)
571 8 exp: . "incr" exp @1 @2 exp
572 8 | "incr" exp @1 @2 . exp
577 "incr" shift, and go to state 4
578 "identifier" shift, and go to state 11
579 "number" shift, and go to state 6
580 "(" shift, and go to state 7
587 8 exp: "incr" exp @1 @2 exp .
589 $default reduce using rule 8 (exp)
594 AT_CHECK([cat input.gv], [],
595 [[// Generated by GNU Bison ]AT_PACKAGE_VERSION[.
596 // Report bugs to <bug-bison@gnu.org>.
597 // Home page: <https://www.gnu.org/software/bison/>.
601 node [fontname = courier, shape = box, colorscheme = paired6]
602 edge [fontname = courier]
604 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"]
605 0 -> 1 [style=dashed label="unit"]
606 0 -> 2 [style=dashed label="assignments"]
607 0 -> "0R2" [style=solid]
608 "0R2" [label="R2", fillcolor=3, shape=diamond, style=filled]
609 1 [label="State 1\n\l 0 $accept: unit • \"end of file\"\l"]
610 1 -> 3 [style=solid label="\"end of file\""]
611 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"]
612 2 -> 4 [style=solid label="\"incr\""]
613 2 -> 5 [style=solid label="\"identifier\""]
614 2 -> 6 [style=solid label="\"number\""]
615 2 -> 7 [style=solid label="\"(\""]
616 2 -> 8 [style=dashed label="assignment"]
617 2 -> 9 [style=dashed label="id"]
618 2 -> 10 [style=dashed label="exp"]
619 3 [label="State 3\n\l 0 $accept: unit \"end of file\" •\l"]
620 3 -> "3R0" [style=solid]
621 "3R0" [label="Acc", fillcolor=1, shape=diamond, style=filled]
622 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"]
623 4 -> 4 [style=solid label="\"incr\""]
624 4 -> 11 [style=solid label="\"identifier\""]
625 4 -> 6 [style=solid label="\"number\""]
626 4 -> 7 [style=solid label="\"(\""]
627 4 -> 12 [style=dashed label="exp"]
628 5 [label="State 5\n\l 5 id: \"identifier\" • [\":=\"]\l 10 exp: \"identifier\" • [\"end of file\"]\l"]
629 5 -> "5R5" [style=solid]
630 "5R5" [label="R5", fillcolor=3, shape=diamond, style=filled]
631 5 -> "5R10" [label="[\"end of file\"]", style=solid]
632 "5R10" [label="R10", fillcolor=3, shape=diamond, style=filled]
633 6 [label="State 6\n\l 11 exp: \"number\" •\l"]
634 6 -> "6R11" [style=solid]
635 "6R11" [label="R11", fillcolor=3, shape=diamond, style=filled]
636 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"]
637 7 -> 4 [style=solid label="\"incr\""]
638 7 -> 11 [style=solid label="\"identifier\""]
639 7 -> 6 [style=solid label="\"number\""]
640 7 -> 7 [style=solid label="\"(\""]
641 7 -> 13 [style=dashed label="exp"]
642 8 [label="State 8\n\l 3 assignments: assignments assignment •\l"]
643 8 -> "8R3" [style=solid]
644 "8R3" [label="R3", fillcolor=3, shape=diamond, style=filled]
645 9 [label="State 9\n\l 4 assignment: id • \":=\" exp\l"]
646 9 -> 14 [style=solid label="\":=\""]
647 10 [label="State 10\n\l 1 unit: assignments exp •\l"]
648 10 -> "10R1" [style=solid]
649 "10R1" [label="R1", fillcolor=3, shape=diamond, style=filled]
650 11 [label="State 11\n\l 10 exp: \"identifier\" •\l"]
651 11 -> "11R10" [style=solid]
652 "11R10" [label="R10", fillcolor=3, shape=diamond, style=filled]
653 12 [label="State 12\n\l 6 @1: • %empty\l 8 exp: \"incr\" exp • @1 @2 exp\l"]
654 12 -> 15 [style=dashed label="@1"]
655 12 -> "12R6" [style=solid]
656 "12R6" [label="R6", fillcolor=3, shape=diamond, style=filled]
657 13 [label="State 13\n\l 9 exp: \"(\" exp • \")\"\l"]
658 13 -> 16 [style=solid label="\")\""]
659 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"]
660 14 -> 4 [style=solid label="\"incr\""]
661 14 -> 11 [style=solid label="\"identifier\""]
662 14 -> 6 [style=solid label="\"number\""]
663 14 -> 7 [style=solid label="\"(\""]
664 14 -> 17 [style=dashed label="exp"]
665 15 [label="State 15\n\l 7 @2: • %empty\l 8 exp: \"incr\" exp @1 • @2 exp\l"]
666 15 -> 18 [style=dashed label="@2"]
667 15 -> "15R7" [style=solid]
668 "15R7" [label="R7", fillcolor=3, shape=diamond, style=filled]
669 16 [label="State 16\n\l 9 exp: \"(\" exp \")\" •\l"]
670 16 -> "16R9" [style=solid]
671 "16R9" [label="R9", fillcolor=3, shape=diamond, style=filled]
672 17 [label="State 17\n\l 4 assignment: id \":=\" exp •\l"]
673 17 -> "17R4" [style=solid]
674 "17R4" [label="R4", fillcolor=3, shape=diamond, style=filled]
675 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"]
676 18 -> 4 [style=solid label="\"incr\""]
677 18 -> 11 [style=solid label="\"identifier\""]
678 18 -> 6 [style=solid label="\"number\""]
679 18 -> 7 [style=solid label="\"(\""]
680 18 -> 19 [style=dashed label="exp"]
681 19 [label="State 19\n\l 8 exp: \"incr\" exp @1 @2 exp •\l"]
682 19 -> "19R8" [style=solid]
683 "19R8" [label="R8", fillcolor=3, shape=diamond, style=filled]
688 AT_CHECK([[cat input.xml]], [],
689 [[<?xml version="1.0"?>
691 <bison-xml-report version="]AT_PACKAGE_VERSION[" bug-report="bug-bison@gnu.org" url="https://www.gnu.org/software/bison/">
693 <filename>input.yy</filename>
697 <rule number="0" usefulness="useful">
700 <symbol>unit</symbol>
701 <symbol>"end of file"</symbol>
704 <rule number="1" usefulness="useful">
707 <symbol>assignments</symbol>
711 <rule number="2" usefulness="useful">
712 <lhs>assignments</lhs>
717 <rule number="3" usefulness="useful">
718 <lhs>assignments</lhs>
720 <symbol>assignments</symbol>
721 <symbol>assignment</symbol>
724 <rule number="4" usefulness="useful">
725 <lhs>assignment</lhs>
728 <symbol>":="</symbol>
732 <rule number="5" usefulness="useful">
735 <symbol>"identifier"</symbol>
738 <rule number="6" usefulness="useful">
744 <rule number="7" usefulness="useful">
750 <rule number="8" usefulness="useful">
753 <symbol>"incr"</symbol>
760 <rule number="9" usefulness="useful">
763 <symbol>"("</symbol>
765 <symbol>")"</symbol>
768 <rule number="10" usefulness="useful">
771 <symbol>"identifier"</symbol>
774 <rule number="11" usefulness="useful">
777 <symbol>"number"</symbol>
782 <terminal symbol-number="0" token-number="0" name=""end of file"" type="" usefulness="useful"/>
783 <terminal symbol-number="1" token-number="256" name="error" type="" usefulness="useful"/>
784 <terminal symbol-number="3" token-number="258" name="":="" type="" usefulness="useful"/>
785 <terminal symbol-number="4" token-number="259" name=""incr"" type="" usefulness="useful"/>
786 <terminal symbol-number="5" token-number="260" name=""identifier"" type="std::string" usefulness="useful"/>
787 <terminal symbol-number="6" token-number="261" name=""number"" type="int" usefulness="useful"/>
788 <terminal symbol-number="7" token-number="262" name=""("" type="" usefulness="useful"/>
789 <terminal symbol-number="8" token-number="263" name="")"" type="" usefulness="useful"/>
792 <nonterminal symbol-number="9" name="$accept" type="" usefulness="useful"/>
793 <nonterminal symbol-number="10" name="unit" type="" usefulness="useful"/>
794 <nonterminal symbol-number="11" name="assignments" type="" usefulness="useful"/>
795 <nonterminal symbol-number="12" name="assignment" type="" usefulness="useful"/>
796 <nonterminal symbol-number="13" name="id" type="std::string" usefulness="useful"/>
797 <nonterminal symbol-number="14" name="exp" type="int" usefulness="useful"/>
798 <nonterminal symbol-number="15" name="@1" type="int" usefulness="useful"/>
799 <nonterminal symbol-number="16" name="@2" type="int" usefulness="useful"/>
807 <item rule-number="0" dot="0"/>
808 <item rule-number="1" dot="0"/>
809 <item rule-number="2" dot="0"/>
810 <item rule-number="3" dot="0"/>
814 <transition type="goto" symbol="unit" state="1"/>
815 <transition type="goto" symbol="assignments" state="2"/>
819 <reduction symbol="$default" rule="2" enabled="true"/>
827 <item rule-number="0" dot="1"/>
831 <transition type="shift" symbol=""end of file"" state="3"/>
841 <item rule-number="1" dot="1"/>
842 <item rule-number="3" dot="1"/>
843 <item rule-number="4" dot="0"/>
844 <item rule-number="5" dot="0"/>
845 <item rule-number="8" dot="0"/>
846 <item rule-number="9" dot="0"/>
847 <item rule-number="10" dot="0"/>
848 <item rule-number="11" dot="0"/>
852 <transition type="shift" symbol=""incr"" state="4"/>
853 <transition type="shift" symbol=""identifier"" state="5"/>
854 <transition type="shift" symbol=""number"" state="6"/>
855 <transition type="shift" symbol=""("" state="7"/>
856 <transition type="goto" symbol="assignment" state="8"/>
857 <transition type="goto" symbol="id" state="9"/>
858 <transition type="goto" symbol="exp" state="10"/>
868 <item rule-number="0" dot="2"/>
874 <reduction symbol="$default" rule="accept" enabled="true"/>
882 <item rule-number="8" dot="0"/>
883 <item rule-number="8" dot="1"/>
884 <item rule-number="9" dot="0"/>
885 <item rule-number="10" dot="0"/>
886 <item rule-number="11" dot="0"/>
890 <transition type="shift" symbol=""incr"" state="4"/>
891 <transition type="shift" symbol=""identifier"" state="11"/>
892 <transition type="shift" symbol=""number"" state="6"/>
893 <transition type="shift" symbol=""("" state="7"/>
894 <transition type="goto" symbol="exp" state="12"/>
904 <item rule-number="5" dot="1">
906 <symbol>":="</symbol>
909 <item rule-number="10" dot="1">
911 <symbol>"end of file"</symbol>
919 <reduction symbol=""end of file"" rule="10" enabled="true"/>
920 <reduction symbol="$default" rule="5" enabled="true"/>
928 <item rule-number="11" dot="1"/>
934 <reduction symbol="$default" rule="11" enabled="true"/>
942 <item rule-number="8" dot="0"/>
943 <item rule-number="9" dot="0"/>
944 <item rule-number="9" dot="1"/>
945 <item rule-number="10" dot="0"/>
946 <item rule-number="11" dot="0"/>
950 <transition type="shift" symbol=""incr"" state="4"/>
951 <transition type="shift" symbol=""identifier"" state="11"/>
952 <transition type="shift" symbol=""number"" state="6"/>
953 <transition type="shift" symbol=""("" state="7"/>
954 <transition type="goto" symbol="exp" state="13"/>
964 <item rule-number="3" dot="2"/>
970 <reduction symbol="$default" rule="3" enabled="true"/>
978 <item rule-number="4" dot="1"/>
982 <transition type="shift" symbol="":="" state="14"/>
992 <item rule-number="1" dot="2"/>
998 <reduction symbol="$default" rule="1" enabled="true"/>
1006 <item rule-number="10" dot="1"/>
1012 <reduction symbol="$default" rule="10" enabled="true"/>
1020 <item rule-number="6" dot="0"/>
1021 <item rule-number="8" dot="2"/>
1025 <transition type="goto" symbol="@1" state="15"/>
1029 <reduction symbol="$default" rule="6" enabled="true"/>
1037 <item rule-number="9" dot="2"/>
1041 <transition type="shift" symbol="")"" state="16"/>
1051 <item rule-number="4" dot="2"/>
1052 <item rule-number="8" dot="0"/>
1053 <item rule-number="9" dot="0"/>
1054 <item rule-number="10" dot="0"/>
1055 <item rule-number="11" dot="0"/>
1059 <transition type="shift" symbol=""incr"" state="4"/>
1060 <transition type="shift" symbol=""identifier"" state="11"/>
1061 <transition type="shift" symbol=""number"" state="6"/>
1062 <transition type="shift" symbol=""("" state="7"/>
1063 <transition type="goto" symbol="exp" state="17"/>
1073 <item rule-number="7" dot="0"/>
1074 <item rule-number="8" dot="3"/>
1078 <transition type="goto" symbol="@2" state="18"/>
1082 <reduction symbol="$default" rule="7" enabled="true"/>
1090 <item rule-number="9" dot="3"/>
1096 <reduction symbol="$default" rule="9" enabled="true"/>
1104 <item rule-number="4" dot="3"/>
1110 <reduction symbol="$default" rule="4" enabled="true"/>
1118 <item rule-number="8" dot="0"/>
1119 <item rule-number="8" dot="4"/>
1120 <item rule-number="9" dot="0"/>
1121 <item rule-number="10" dot="0"/>
1122 <item rule-number="11" dot="0"/>
1126 <transition type="shift" symbol=""incr"" state="4"/>
1127 <transition type="shift" symbol=""identifier"" state="11"/>
1128 <transition type="shift" symbol=""number"" state="6"/>
1129 <transition type="shift" symbol=""("" state="7"/>
1130 <transition type="goto" symbol="exp" state="19"/>
1140 <item rule-number="8" dot="5"/>
1146 <reduction symbol="$default" rule="8" enabled="true"/>
1155 # Check HTML output.
1156 AT_CHECK_HTML([input.html],
1157 [[<?xml version="1.0" encoding="UTF-8"?>
1158 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
1159 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:bison="https://www.gnu.org/software/bison/">
1161 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
1162 <title>input.yy - GNU Bison XML Automaton Report</title>
1163 <style type="text/css">
1165 font-family: "Nimbus Sans L", Arial, sans-serif;
1170 text-decoration: none;
1174 text-decoration: none;
1180 text-decoration: underline;
1186 font-family: monospace;
1190 list-style-type: decimal;
1193 list-style-type: lower-alpha;
1204 <body><h1>GNU Bison XML Automaton Report</h1><p>
1205 input grammar: <span class="i">input.yy</span></p>
1207 <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>
1209 <h3><a name="terminals_unused_in_grammar" id="terminals_unused_in_grammar"></a> Terminals unused in grammar</h3>
1211 <h3><a name="rules_useless_in_grammar" id="rules_useless_in_grammar"></a> Rules useless in grammar</h3>
1212 <h2><a name="conflicts" id="conflicts"></a> Conflicts</h2>
1214 <h2><a name="grammar" id="grammar"></a> Grammar</h2>
1216 <a name="rule_0" id="rule_0"> 0</a> <span class="i">$accept</span> → <span class="i">unit</span> <b>"end of file"</b>
1218 <a name="rule_1" id="rule_1"> 1</a> <span class="i">unit</span> → <span class="i">assignments</span> <span class="i">exp</span>
1220 <a name="rule_2" id="rule_2"> 2</a> <span class="i">assignments</span> → %empty
1221 <a name="rule_3" id="rule_3"> 3</a> | <span class="i">assignments</span> <span class="i">assignment</span>
1223 <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>
1225 <a name="rule_5" id="rule_5"> 5</a> <span class="i">id</span> → <b>"identifier"</b>
1227 <a name="rule_6" id="rule_6"> 6</a> <span class="i">@1</span> → %empty
1229 <a name="rule_7" id="rule_7"> 7</a> <span class="i">@2</span> → %empty
1231 <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>
1232 <a name="rule_9" id="rule_9"> 9</a> | <b>"("</b> <span class="i">exp</span> <b>")"</b>
1233 <a name="rule_10" id="rule_10"> 10</a> | <b>"identifier"</b>
1234 <a name="rule_11" id="rule_11"> 11</a> | <b>"number"</b>
1237 <h3><a name="terminals" id="terminals"></a> Terminals, with rules where they appear</h3>
1240 <li><b>"end of file"</b> (0) <a href="#rule_0">0</a></li>
1241 <li><b>error</b> (256)</li>
1242 <li><b>":="</b> (258) <a href="#rule_4">4</a></li>
1243 <li><b>"incr"</b> (259) <a href="#rule_8">8</a></li>
1244 <li><b>"identifier"</b> <std::string> (260) <a href="#rule_5">5</a> <a href="#rule_10">10</a></li>
1245 <li><b>"number"</b> <int> (261) <a href="#rule_11">11</a></li>
1246 <li><b>"("</b> (262) <a href="#rule_9">9</a></li>
1247 <li><b>")"</b> (263) <a href="#rule_9">9</a></li>
1250 <h3><a name="nonterminals" id="nonterminals"></a> Nonterminals, with rules where they appear</h3>
1253 <li><b>$accept</b> (9)
1255 <li>on left: <a href="#rule_0">0</a></li>
1258 <li><b>unit</b> (10)
1260 <li>on left: <a href="#rule_1">1</a></li>
1261 <li>on right: <a href="#rule_0">0</a></li>
1264 <li><b>assignments</b> (11)
1266 <li>on left: <a href="#rule_2">2</a> <a href="#rule_3">3</a></li>
1267 <li>on right: <a href="#rule_1">1</a> <a href="#rule_3">3</a></li>
1270 <li><b>assignment</b> (12)
1272 <li>on left: <a href="#rule_4">4</a></li>
1273 <li>on right: <a href="#rule_3">3</a></li>
1276 <li><b>id</b> <std::string> (13)
1278 <li>on left: <a href="#rule_5">5</a></li>
1279 <li>on right: <a href="#rule_4">4</a></li>
1282 <li><b>exp</b> <int> (14)
1284 <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>
1285 <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>
1288 <li><b>@1</b> <int> (15)
1290 <li>on left: <a href="#rule_6">6</a></li>
1291 <li>on right: <a href="#rule_8">8</a></li>
1294 <li><b>@2</b> <int> (16)
1296 <li>on left: <a href="#rule_7">7</a></li>
1297 <li>on right: <a href="#rule_8">8</a></li>
1300 </ul><h2><a name="automaton" id="automaton"></a> Automaton</h2>
1302 <h3><a name="state_0" id="state_0"></a>State 0</h3>
1304 <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>
1305 <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>
1306 <a href="#rule_2"> 2</a> <span class="i">assignments</span> → <span class="dot">•</span> %empty
1307 <a href="#rule_3"> 3</a> | <span class="dot">•</span> <span class="i">assignments</span> <span class="i">assignment</span>
1309 $default <a href="#rule_2">reduce using rule 2</a> (assignments)
1311 unit <a href="#state_1">go to state 1</a>
1312 assignments <a href="#state_2">go to state 2</a>
1315 <h3><a name="state_1" id="state_1"></a>State 1</h3>
1317 <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>
1319 "end of file" <a href="#state_3">shift, and go to state 3</a>
1322 <h3><a name="state_2" id="state_2"></a>State 2</h3>
1324 <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>
1325 <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>
1326 <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>
1327 <a href="#rule_5"> 5</a> <span class="i">id</span> → <span class="dot">•</span> <b>"identifier"</b>
1328 <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>
1329 <a href="#rule_9"> 9</a> | <span class="dot">•</span> <b>"("</b> <span class="i">exp</span> <b>")"</b>
1330 <a href="#rule_10"> 10</a> | <span class="dot">•</span> <b>"identifier"</b>
1331 <a href="#rule_11"> 11</a> | <span class="dot">•</span> <b>"number"</b>
1333 "incr" <a href="#state_4">shift, and go to state 4</a>
1334 "identifier" <a href="#state_5">shift, and go to state 5</a>
1335 "number" <a href="#state_6">shift, and go to state 6</a>
1336 "(" <a href="#state_7">shift, and go to state 7</a>
1338 assignment <a href="#state_8">go to state 8</a>
1339 id <a href="#state_9">go to state 9</a>
1340 exp <a href="#state_10">go to state 10</a>
1343 <h3><a name="state_3" id="state_3"></a>State 3</h3>
1345 <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>
1350 <h3><a name="state_4" id="state_4"></a>State 4</h3>
1352 <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>
1353 <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>
1354 <a href="#rule_9"> 9</a> | <span class="dot">•</span> <b>"("</b> <span class="i">exp</span> <b>")"</b>
1355 <a href="#rule_10"> 10</a> | <span class="dot">•</span> <b>"identifier"</b>
1356 <a href="#rule_11"> 11</a> | <span class="dot">•</span> <b>"number"</b>
1358 "incr" <a href="#state_4">shift, and go to state 4</a>
1359 "identifier" <a href="#state_11">shift, and go to state 11</a>
1360 "number" <a href="#state_6">shift, and go to state 6</a>
1361 "(" <a href="#state_7">shift, and go to state 7</a>
1363 exp <a href="#state_12">go to state 12</a>
1366 <h3><a name="state_5" id="state_5"></a>State 5</h3>
1368 <p class="pre"> <a href="#rule_5"> 5</a> <span class="i">id</span> → <b>"identifier"</b> <span class="dot">•</span> [":="]
1369 <a href="#rule_10"> 10</a> <span class="i">exp</span> → <b>"identifier"</b> <span class="dot">•</span> ["end of file"]
1371 "end of file" <a href="#rule_10">reduce using rule 10</a> (exp)
1372 $default <a href="#rule_5">reduce using rule 5</a> (id)
1375 <h3><a name="state_6" id="state_6"></a>State 6</h3>
1377 <p class="pre"> <a href="#rule_11"> 11</a> <span class="i">exp</span> → <b>"number"</b> <span class="dot">•</span>
1379 $default <a href="#rule_11">reduce using rule 11</a> (exp)
1382 <h3><a name="state_7" id="state_7"></a>State 7</h3>
1384 <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>
1385 <a href="#rule_9"> 9</a> | <span class="dot">•</span> <b>"("</b> <span class="i">exp</span> <b>")"</b>
1386 <a href="#rule_9"> 9</a> | <b>"("</b> <span class="dot">•</span> <span class="i">exp</span> <b>")"</b>
1387 <a href="#rule_10"> 10</a> | <span class="dot">•</span> <b>"identifier"</b>
1388 <a href="#rule_11"> 11</a> | <span class="dot">•</span> <b>"number"</b>
1390 "incr" <a href="#state_4">shift, and go to state 4</a>
1391 "identifier" <a href="#state_11">shift, and go to state 11</a>
1392 "number" <a href="#state_6">shift, and go to state 6</a>
1393 "(" <a href="#state_7">shift, and go to state 7</a>
1395 exp <a href="#state_13">go to state 13</a>
1398 <h3><a name="state_8" id="state_8"></a>State 8</h3>
1400 <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>
1402 $default <a href="#rule_3">reduce using rule 3</a> (assignments)
1405 <h3><a name="state_9" id="state_9"></a>State 9</h3>
1407 <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>
1409 ":=" <a href="#state_14">shift, and go to state 14</a>
1412 <h3><a name="state_10" id="state_10"></a>State 10</h3>
1414 <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>
1416 $default <a href="#rule_1">reduce using rule 1</a> (unit)
1419 <h3><a name="state_11" id="state_11"></a>State 11</h3>
1421 <p class="pre"> <a href="#rule_10"> 10</a> <span class="i">exp</span> → <b>"identifier"</b> <span class="dot">•</span>
1423 $default <a href="#rule_10">reduce using rule 10</a> (exp)
1426 <h3><a name="state_12" id="state_12"></a>State 12</h3>
1428 <p class="pre"> <a href="#rule_6"> 6</a> <span class="i">@1</span> → <span class="dot">•</span> %empty
1429 <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>
1431 $default <a href="#rule_6">reduce using rule 6</a> (@1)
1433 @1 <a href="#state_15">go to state 15</a>
1436 <h3><a name="state_13" id="state_13"></a>State 13</h3>
1438 <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>
1440 ")" <a href="#state_16">shift, and go to state 16</a>
1443 <h3><a name="state_14" id="state_14"></a>State 14</h3>
1445 <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>
1446 <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>
1447 <a href="#rule_9"> 9</a> | <span class="dot">•</span> <b>"("</b> <span class="i">exp</span> <b>")"</b>
1448 <a href="#rule_10"> 10</a> | <span class="dot">•</span> <b>"identifier"</b>
1449 <a href="#rule_11"> 11</a> | <span class="dot">•</span> <b>"number"</b>
1451 "incr" <a href="#state_4">shift, and go to state 4</a>
1452 "identifier" <a href="#state_11">shift, and go to state 11</a>
1453 "number" <a href="#state_6">shift, and go to state 6</a>
1454 "(" <a href="#state_7">shift, and go to state 7</a>
1456 exp <a href="#state_17">go to state 17</a>
1459 <h3><a name="state_15" id="state_15"></a>State 15</h3>
1461 <p class="pre"> <a href="#rule_7"> 7</a> <span class="i">@2</span> → <span class="dot">•</span> %empty
1462 <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>
1464 $default <a href="#rule_7">reduce using rule 7</a> (@2)
1466 @2 <a href="#state_18">go to state 18</a>
1469 <h3><a name="state_16" id="state_16"></a>State 16</h3>
1471 <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>
1473 $default <a href="#rule_9">reduce using rule 9</a> (exp)
1476 <h3><a name="state_17" id="state_17"></a>State 17</h3>
1478 <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>
1480 $default <a href="#rule_4">reduce using rule 4</a> (assignment)
1483 <h3><a name="state_18" id="state_18"></a>State 18</h3>
1485 <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>
1486 <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>
1487 <a href="#rule_9"> 9</a> | <span class="dot">•</span> <b>"("</b> <span class="i">exp</span> <b>")"</b>
1488 <a href="#rule_10"> 10</a> | <span class="dot">•</span> <b>"identifier"</b>
1489 <a href="#rule_11"> 11</a> | <span class="dot">•</span> <b>"number"</b>
1491 "incr" <a href="#state_4">shift, and go to state 4</a>
1492 "identifier" <a href="#state_11">shift, and go to state 11</a>
1493 "number" <a href="#state_6">shift, and go to state 6</a>
1494 "(" <a href="#state_7">shift, and go to state 7</a>
1496 exp <a href="#state_19">go to state 19</a>
1499 <h3><a name="state_19" id="state_19"></a>State 19</h3>
1501 <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>
1503 $default <a href="#rule_8">reduce using rule 8</a> (exp)
1506 <div id="footer"><hr />This document was generated using
1507 <a href="https://www.gnu.org/software/bison/" title="GNU Bison">
1508 GNU Bison ]AT_PACKAGE_VERSION[</a>
1509 XML Automaton Report.<br />
1510 Verbatim copying and distribution of this entire page is
1511 permitted in any medium, provided this notice is preserved.</div></body>
1515 AT_BISON_OPTION_POPDEFS
1519 ## -------------------- ##
1520 ## Multistart reports. ##
1521 ## -------------------- ##
1523 AT_SETUP([Multistart reports])
1525 AT_KEYWORDS([multistart report])
1527 AT_BISON_OPTION_PUSHDEFS
1535 %token <std::string> IDENTIFIER "identifier"
1536 %type <std::string> id
1537 %token <int> NUMBER "number"
1541 %start unit assignments exp;
1542 unit: assignments exp { driver.result = $2; };
1546 | assignments assignment {};
1549 id ":=" exp { driver.variables[$id] = $exp; };
1555 "incr" exp <int>{ $$ = 1; } <int>{ $$ = 10; } exp { $$ = $2 + $3 + $4 + $5; }
1556 | "(" exp ")" { std::swap ($$, $2); }
1557 | "identifier" { $$ = driver.variables[$1]; }
1558 | "number" { std::swap ($$, $1); };
1561 AT_BISON_CHECK([-o input.cc -rall --graph=input.gv --xml input.yy])
1563 # Check the contents of the report.
1564 AT_CHECK([cat input.output], [],
1567 0 $accept: YY_PARSE_unit unit "end of file"
1568 1 | YY_PARSE_assignments assignments "end of file"
1569 2 | YY_PARSE_exp exp "end of file"
1571 3 unit: assignments exp
1573 4 assignments: %empty
1574 5 | assignments assignment
1576 6 assignment: id ":=" exp
1584 10 exp: "incr" exp @1 @2 exp
1590 Terminals, with rules where they appear
1592 "end of file" (0) 0 1 2
1596 "identifier" <std::string> (260) 7 12
1597 "number" <int> (261) 13
1598 YY_PARSE_unit (262) 0
1599 YY_PARSE_assignments (263) 1
1600 YY_PARSE_exp (264) 2
1605 Nonterminals, with rules where they appear
1618 id <std::string> (16)
1622 on left: 10 11 12 13
1623 on right: 2 3 6 10 11
1634 0 $accept: . YY_PARSE_unit unit "end of file"
1635 1 | . YY_PARSE_assignments assignments "end of file"
1636 2 | . YY_PARSE_exp exp "end of file"
1638 YY_PARSE_unit shift, and go to state 1
1639 YY_PARSE_assignments shift, and go to state 2
1640 YY_PARSE_exp shift, and go to state 3
1645 0 $accept: YY_PARSE_unit . unit "end of file"
1646 3 unit: . assignments exp
1647 4 assignments: %empty .
1648 5 | . assignments assignment
1650 $default reduce using rule 4 (assignments)
1653 assignments go to state 5
1658 1 $accept: YY_PARSE_assignments . assignments "end of file"
1659 4 assignments: %empty .
1660 5 | . assignments assignment
1662 $default reduce using rule 4 (assignments)
1664 assignments go to state 6
1669 2 $accept: YY_PARSE_exp . exp "end of file"
1670 10 exp: . "incr" exp @1 @2 exp
1675 "incr" shift, and go to state 7
1676 "identifier" shift, and go to state 8
1677 "number" shift, and go to state 9
1678 "(" shift, and go to state 10
1685 0 $accept: YY_PARSE_unit unit . "end of file"
1687 "end of file" shift, and go to state 12
1692 3 unit: assignments . exp
1693 5 assignments: assignments . assignment
1694 6 assignment: . id ":=" exp
1695 7 id: . "identifier"
1696 10 exp: . "incr" exp @1 @2 exp
1701 "incr" shift, and go to state 7
1702 "identifier" shift, and go to state 13
1703 "number" shift, and go to state 9
1704 "(" shift, and go to state 10
1706 assignment go to state 14
1713 1 $accept: YY_PARSE_assignments assignments . "end of file"
1714 5 assignments: assignments . assignment
1715 6 assignment: . id ":=" exp
1716 7 id: . "identifier"
1718 "end of file" shift, and go to state 17
1719 "identifier" shift, and go to state 18
1721 assignment go to state 14
1727 10 exp: . "incr" exp @1 @2 exp
1728 10 | "incr" . exp @1 @2 exp
1733 "incr" shift, and go to state 7
1734 "identifier" shift, and go to state 8
1735 "number" shift, and go to state 9
1736 "(" shift, and go to state 10
1743 12 exp: "identifier" .
1745 $default reduce using rule 12 (exp)
1752 $default reduce using rule 13 (exp)
1757 10 exp: . "incr" exp @1 @2 exp
1763 "incr" shift, and go to state 7
1764 "identifier" shift, and go to state 8
1765 "number" shift, and go to state 9
1766 "(" shift, and go to state 10
1773 2 $accept: YY_PARSE_exp exp . "end of file"
1775 "end of file" shift, and go to state 21
1780 0 $accept: YY_PARSE_unit unit "end of file" .
1787 7 id: "identifier" . [":="]
1788 12 exp: "identifier" . ["end of file"]
1790 "end of file" reduce using rule 12 (exp)
1791 $default reduce using rule 7 (id)
1796 5 assignments: assignments assignment .
1798 $default reduce using rule 5 (assignments)
1803 6 assignment: id . ":=" exp
1805 ":=" shift, and go to state 22
1810 3 unit: assignments exp .
1812 $default reduce using rule 3 (unit)
1817 1 $accept: YY_PARSE_assignments assignments "end of file" .
1824 7 id: "identifier" .
1826 $default reduce using rule 7 (id)
1832 10 exp: "incr" exp . @1 @2 exp
1834 $default reduce using rule 8 (@1)
1841 11 exp: "(" exp . ")"
1843 ")" shift, and go to state 24
1848 2 $accept: YY_PARSE_exp exp "end of file" .
1855 6 assignment: id ":=" . exp
1856 10 exp: . "incr" exp @1 @2 exp
1861 "incr" shift, and go to state 7
1862 "identifier" shift, and go to state 8
1863 "number" shift, and go to state 9
1864 "(" shift, and go to state 10
1872 10 exp: "incr" exp @1 . @2 exp
1874 $default reduce using rule 9 (@2)
1881 11 exp: "(" exp ")" .
1883 $default reduce using rule 11 (exp)
1888 6 assignment: id ":=" exp .
1890 $default reduce using rule 6 (assignment)
1895 10 exp: . "incr" exp @1 @2 exp
1896 10 | "incr" exp @1 @2 . exp
1901 "incr" shift, and go to state 7
1902 "identifier" shift, and go to state 8
1903 "number" shift, and go to state 9
1904 "(" shift, and go to state 10
1911 10 exp: "incr" exp @1 @2 exp .
1913 $default reduce using rule 10 (exp)
1918 AT_CHECK([cat input.gv], [],
1919 [[// Generated by GNU Bison ]AT_PACKAGE_VERSION[.
1920 // Report bugs to <bug-bison@gnu.org>.
1921 // Home page: <https://www.gnu.org/software/bison/>.
1925 node [fontname = courier, shape = box, colorscheme = paired6]
1926 edge [fontname = courier]
1928 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"]
1929 0 -> 1 [style=solid label="YY_PARSE_unit"]
1930 0 -> 2 [style=solid label="YY_PARSE_assignments"]
1931 0 -> 3 [style=solid label="YY_PARSE_exp"]
1932 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"]
1933 1 -> 4 [style=dashed label="unit"]
1934 1 -> 5 [style=dashed label="assignments"]
1935 1 -> "1R4" [style=solid]
1936 "1R4" [label="R4", fillcolor=3, shape=diamond, style=filled]
1937 2 [label="State 2\n\l 1 $accept: YY_PARSE_assignments • assignments \"end of file\"\l 4 assignments: • %empty\l 5 | • assignments assignment\l"]
1938 2 -> 6 [style=dashed label="assignments"]
1939 2 -> "2R4" [style=solid]
1940 "2R4" [label="R4", fillcolor=3, shape=diamond, style=filled]
1941 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"]
1942 3 -> 7 [style=solid label="\"incr\""]
1943 3 -> 8 [style=solid label="\"identifier\""]
1944 3 -> 9 [style=solid label="\"number\""]
1945 3 -> 10 [style=solid label="\"(\""]
1946 3 -> 11 [style=dashed label="exp"]
1947 4 [label="State 4\n\l 0 $accept: YY_PARSE_unit unit • \"end of file\"\l"]
1948 4 -> 12 [style=solid label="\"end of file\""]
1949 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"]
1950 5 -> 7 [style=solid label="\"incr\""]
1951 5 -> 13 [style=solid label="\"identifier\""]
1952 5 -> 9 [style=solid label="\"number\""]
1953 5 -> 10 [style=solid label="\"(\""]
1954 5 -> 14 [style=dashed label="assignment"]
1955 5 -> 15 [style=dashed label="id"]
1956 5 -> 16 [style=dashed label="exp"]
1957 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"]
1958 6 -> 17 [style=solid label="\"end of file\""]
1959 6 -> 18 [style=solid label="\"identifier\""]
1960 6 -> 14 [style=dashed label="assignment"]
1961 6 -> 15 [style=dashed label="id"]
1962 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"]
1963 7 -> 7 [style=solid label="\"incr\""]
1964 7 -> 8 [style=solid label="\"identifier\""]
1965 7 -> 9 [style=solid label="\"number\""]
1966 7 -> 10 [style=solid label="\"(\""]
1967 7 -> 19 [style=dashed label="exp"]
1968 8 [label="State 8\n\l 12 exp: \"identifier\" •\l"]
1969 8 -> "8R12" [style=solid]
1970 "8R12" [label="R12", fillcolor=3, shape=diamond, style=filled]
1971 9 [label="State 9\n\l 13 exp: \"number\" •\l"]
1972 9 -> "9R13" [style=solid]
1973 "9R13" [label="R13", fillcolor=3, shape=diamond, style=filled]
1974 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"]
1975 10 -> 7 [style=solid label="\"incr\""]
1976 10 -> 8 [style=solid label="\"identifier\""]
1977 10 -> 9 [style=solid label="\"number\""]
1978 10 -> 10 [style=solid label="\"(\""]
1979 10 -> 20 [style=dashed label="exp"]
1980 11 [label="State 11\n\l 2 $accept: YY_PARSE_exp exp • \"end of file\"\l"]
1981 11 -> 21 [style=solid label="\"end of file\""]
1982 12 [label="State 12\n\l 0 $accept: YY_PARSE_unit unit \"end of file\" •\l"]
1983 12 -> "12R0" [style=solid]
1984 "12R0" [label="Acc", fillcolor=1, shape=diamond, style=filled]
1985 13 [label="State 13\n\l 7 id: \"identifier\" • [\":=\"]\l 12 exp: \"identifier\" • [\"end of file\"]\l"]
1986 13 -> "13R7" [style=solid]
1987 "13R7" [label="R7", fillcolor=3, shape=diamond, style=filled]
1988 13 -> "13R12" [label="[\"end of file\"]", style=solid]
1989 "13R12" [label="R12", fillcolor=3, shape=diamond, style=filled]
1990 14 [label="State 14\n\l 5 assignments: assignments assignment •\l"]
1991 14 -> "14R5" [style=solid]
1992 "14R5" [label="R5", fillcolor=3, shape=diamond, style=filled]
1993 15 [label="State 15\n\l 6 assignment: id • \":=\" exp\l"]
1994 15 -> 22 [style=solid label="\":=\""]
1995 16 [label="State 16\n\l 3 unit: assignments exp •\l"]
1996 16 -> "16R3" [style=solid]
1997 "16R3" [label="R3", fillcolor=3, shape=diamond, style=filled]
1998 17 [label="State 17\n\l 1 $accept: YY_PARSE_assignments assignments \"end of file\" •\l"]
1999 17 -> "17R1" [style=solid]
2000 "17R1" [label="Acc", fillcolor=1, shape=diamond, style=filled]
2001 18 [label="State 18\n\l 7 id: \"identifier\" •\l"]
2002 18 -> "18R7" [style=solid]
2003 "18R7" [label="R7", fillcolor=3, shape=diamond, style=filled]
2004 19 [label="State 19\n\l 8 @1: • %empty\l 10 exp: \"incr\" exp • @1 @2 exp\l"]
2005 19 -> 23 [style=dashed label="@1"]
2006 19 -> "19R8" [style=solid]
2007 "19R8" [label="R8", fillcolor=3, shape=diamond, style=filled]
2008 20 [label="State 20\n\l 11 exp: \"(\" exp • \")\"\l"]
2009 20 -> 24 [style=solid label="\")\""]
2010 21 [label="State 21\n\l 2 $accept: YY_PARSE_exp exp \"end of file\" •\l"]
2011 21 -> "21R2" [style=solid]
2012 "21R2" [label="Acc", fillcolor=1, shape=diamond, style=filled]
2013 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"]
2014 22 -> 7 [style=solid label="\"incr\""]
2015 22 -> 8 [style=solid label="\"identifier\""]
2016 22 -> 9 [style=solid label="\"number\""]
2017 22 -> 10 [style=solid label="\"(\""]
2018 22 -> 25 [style=dashed label="exp"]
2019 23 [label="State 23\n\l 9 @2: • %empty\l 10 exp: \"incr\" exp @1 • @2 exp\l"]
2020 23 -> 26 [style=dashed label="@2"]
2021 23 -> "23R9" [style=solid]
2022 "23R9" [label="R9", fillcolor=3, shape=diamond, style=filled]
2023 24 [label="State 24\n\l 11 exp: \"(\" exp \")\" •\l"]
2024 24 -> "24R11" [style=solid]
2025 "24R11" [label="R11", fillcolor=3, shape=diamond, style=filled]
2026 25 [label="State 25\n\l 6 assignment: id \":=\" exp •\l"]
2027 25 -> "25R6" [style=solid]
2028 "25R6" [label="R6", fillcolor=3, shape=diamond, style=filled]
2029 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"]
2030 26 -> 7 [style=solid label="\"incr\""]
2031 26 -> 8 [style=solid label="\"identifier\""]
2032 26 -> 9 [style=solid label="\"number\""]
2033 26 -> 10 [style=solid label="\"(\""]
2034 26 -> 27 [style=dashed label="exp"]
2035 27 [label="State 27\n\l 10 exp: \"incr\" exp @1 @2 exp •\l"]
2036 27 -> "27R10" [style=solid]
2037 "27R10" [label="R10", fillcolor=3, shape=diamond, style=filled]
2042 AT_CHECK([[cat input.xml]], [],
2043 [[<?xml version="1.0"?>
2045 <bison-xml-report version="]AT_PACKAGE_VERSION[" bug-report="bug-bison@gnu.org" url="https://www.gnu.org/software/bison/">
2047 <filename>input.yy</filename>
2051 <rule number="0" usefulness="useful">
2054 <symbol>YY_PARSE_unit</symbol>
2055 <symbol>unit</symbol>
2056 <symbol>"end of file"</symbol>
2059 <rule number="1" usefulness="useful">
2062 <symbol>YY_PARSE_assignments</symbol>
2063 <symbol>assignments</symbol>
2064 <symbol>"end of file"</symbol>
2067 <rule number="2" usefulness="useful">
2070 <symbol>YY_PARSE_exp</symbol>
2071 <symbol>exp</symbol>
2072 <symbol>"end of file"</symbol>
2075 <rule number="3" usefulness="useful">
2078 <symbol>assignments</symbol>
2079 <symbol>exp</symbol>
2082 <rule number="4" usefulness="useful">
2083 <lhs>assignments</lhs>
2088 <rule number="5" usefulness="useful">
2089 <lhs>assignments</lhs>
2091 <symbol>assignments</symbol>
2092 <symbol>assignment</symbol>
2095 <rule number="6" usefulness="useful">
2096 <lhs>assignment</lhs>
2099 <symbol>":="</symbol>
2100 <symbol>exp</symbol>
2103 <rule number="7" usefulness="useful">
2106 <symbol>"identifier"</symbol>
2109 <rule number="8" usefulness="useful">
2115 <rule number="9" usefulness="useful">
2121 <rule number="10" usefulness="useful">
2124 <symbol>"incr"</symbol>
2125 <symbol>exp</symbol>
2128 <symbol>exp</symbol>
2131 <rule number="11" usefulness="useful">
2134 <symbol>"("</symbol>
2135 <symbol>exp</symbol>
2136 <symbol>")"</symbol>
2139 <rule number="12" usefulness="useful">
2142 <symbol>"identifier"</symbol>
2145 <rule number="13" usefulness="useful">
2148 <symbol>"number"</symbol>
2153 <terminal symbol-number="0" token-number="0" name=""end of file"" type="" usefulness="useful"/>
2154 <terminal symbol-number="1" token-number="256" name="error" type="" usefulness="useful"/>
2155 <terminal symbol-number="3" token-number="258" name="":="" type="" usefulness="useful"/>
2156 <terminal symbol-number="4" token-number="259" name=""incr"" type="" usefulness="useful"/>
2157 <terminal symbol-number="5" token-number="260" name=""identifier"" type="std::string" usefulness="useful"/>
2158 <terminal symbol-number="6" token-number="261" name=""number"" type="int" usefulness="useful"/>
2159 <terminal symbol-number="7" token-number="262" name="YY_PARSE_unit" type="" usefulness="useful"/>
2160 <terminal symbol-number="8" token-number="263" name="YY_PARSE_assignments" type="" usefulness="useful"/>
2161 <terminal symbol-number="9" token-number="264" name="YY_PARSE_exp" type="" usefulness="useful"/>
2162 <terminal symbol-number="10" token-number="265" name=""("" type="" usefulness="useful"/>
2163 <terminal symbol-number="11" token-number="266" name="")"" type="" usefulness="useful"/>
2166 <nonterminal symbol-number="12" name="$accept" type="" usefulness="useful"/>
2167 <nonterminal symbol-number="13" name="unit" type="" usefulness="useful"/>
2168 <nonterminal symbol-number="14" name="assignments" type="" usefulness="useful"/>
2169 <nonterminal symbol-number="15" name="assignment" type="" usefulness="useful"/>
2170 <nonterminal symbol-number="16" name="id" type="std::string" usefulness="useful"/>
2171 <nonterminal symbol-number="17" name="exp" type="int" usefulness="useful"/>
2172 <nonterminal symbol-number="18" name="@1" type="int" usefulness="useful"/>
2173 <nonterminal symbol-number="19" name="@2" type="int" usefulness="useful"/>
2181 <item rule-number="0" dot="0"/>
2182 <item rule-number="1" dot="0"/>
2183 <item rule-number="2" dot="0"/>
2187 <transition type="shift" symbol="YY_PARSE_unit" state="1"/>
2188 <transition type="shift" symbol="YY_PARSE_assignments" state="2"/>
2189 <transition type="shift" symbol="YY_PARSE_exp" state="3"/>
2199 <item rule-number="0" dot="1"/>
2200 <item rule-number="3" dot="0"/>
2201 <item rule-number="4" dot="0"/>
2202 <item rule-number="5" dot="0"/>
2206 <transition type="goto" symbol="unit" state="4"/>
2207 <transition type="goto" symbol="assignments" state="5"/>
2211 <reduction symbol="$default" rule="4" enabled="true"/>
2219 <item rule-number="1" dot="1"/>
2220 <item rule-number="4" dot="0"/>
2221 <item rule-number="5" dot="0"/>
2225 <transition type="goto" symbol="assignments" state="6"/>
2229 <reduction symbol="$default" rule="4" enabled="true"/>
2237 <item rule-number="2" dot="1"/>
2238 <item rule-number="10" dot="0"/>
2239 <item rule-number="11" dot="0"/>
2240 <item rule-number="12" dot="0"/>
2241 <item rule-number="13" dot="0"/>
2245 <transition type="shift" symbol=""incr"" state="7"/>
2246 <transition type="shift" symbol=""identifier"" state="8"/>
2247 <transition type="shift" symbol=""number"" state="9"/>
2248 <transition type="shift" symbol=""("" state="10"/>
2249 <transition type="goto" symbol="exp" state="11"/>
2259 <item rule-number="0" dot="2"/>
2263 <transition type="shift" symbol=""end of file"" state="12"/>
2273 <item rule-number="3" dot="1"/>
2274 <item rule-number="5" dot="1"/>
2275 <item rule-number="6" dot="0"/>
2276 <item rule-number="7" dot="0"/>
2277 <item rule-number="10" dot="0"/>
2278 <item rule-number="11" dot="0"/>
2279 <item rule-number="12" dot="0"/>
2280 <item rule-number="13" dot="0"/>
2284 <transition type="shift" symbol=""incr"" state="7"/>
2285 <transition type="shift" symbol=""identifier"" state="13"/>
2286 <transition type="shift" symbol=""number"" state="9"/>
2287 <transition type="shift" symbol=""("" state="10"/>
2288 <transition type="goto" symbol="assignment" state="14"/>
2289 <transition type="goto" symbol="id" state="15"/>
2290 <transition type="goto" symbol="exp" state="16"/>
2300 <item rule-number="1" dot="2"/>
2301 <item rule-number="5" dot="1"/>
2302 <item rule-number="6" dot="0"/>
2303 <item rule-number="7" dot="0"/>
2307 <transition type="shift" symbol=""end of file"" state="17"/>
2308 <transition type="shift" symbol=""identifier"" state="18"/>
2309 <transition type="goto" symbol="assignment" state="14"/>
2310 <transition type="goto" symbol="id" state="15"/>
2320 <item rule-number="10" dot="0"/>
2321 <item rule-number="10" dot="1"/>
2322 <item rule-number="11" dot="0"/>
2323 <item rule-number="12" dot="0"/>
2324 <item rule-number="13" dot="0"/>
2328 <transition type="shift" symbol=""incr"" state="7"/>
2329 <transition type="shift" symbol=""identifier"" state="8"/>
2330 <transition type="shift" symbol=""number"" state="9"/>
2331 <transition type="shift" symbol=""("" state="10"/>
2332 <transition type="goto" symbol="exp" state="19"/>
2342 <item rule-number="12" dot="1"/>
2348 <reduction symbol="$default" rule="12" enabled="true"/>
2356 <item rule-number="13" dot="1"/>
2362 <reduction symbol="$default" rule="13" enabled="true"/>
2370 <item rule-number="10" dot="0"/>
2371 <item rule-number="11" dot="0"/>
2372 <item rule-number="11" dot="1"/>
2373 <item rule-number="12" dot="0"/>
2374 <item rule-number="13" dot="0"/>
2378 <transition type="shift" symbol=""incr"" state="7"/>
2379 <transition type="shift" symbol=""identifier"" state="8"/>
2380 <transition type="shift" symbol=""number"" state="9"/>
2381 <transition type="shift" symbol=""("" state="10"/>
2382 <transition type="goto" symbol="exp" state="20"/>
2392 <item rule-number="2" dot="2"/>
2396 <transition type="shift" symbol=""end of file"" state="21"/>
2406 <item rule-number="0" dot="3"/>
2412 <reduction symbol="$default" rule="accept" enabled="true"/>
2420 <item rule-number="7" dot="1">
2422 <symbol>":="</symbol>
2425 <item rule-number="12" dot="1">
2427 <symbol>"end of file"</symbol>
2435 <reduction symbol=""end of file"" rule="12" enabled="true"/>
2436 <reduction symbol="$default" rule="7" enabled="true"/>
2444 <item rule-number="5" dot="2"/>
2450 <reduction symbol="$default" rule="5" enabled="true"/>
2458 <item rule-number="6" dot="1"/>
2462 <transition type="shift" symbol="":="" state="22"/>
2472 <item rule-number="3" dot="2"/>
2478 <reduction symbol="$default" rule="3" enabled="true"/>
2486 <item rule-number="1" dot="3"/>
2492 <reduction symbol="$default" rule="accept" enabled="true"/>
2500 <item rule-number="7" dot="1"/>
2506 <reduction symbol="$default" rule="7" enabled="true"/>
2514 <item rule-number="8" dot="0"/>
2515 <item rule-number="10" dot="2"/>
2519 <transition type="goto" symbol="@1" state="23"/>
2523 <reduction symbol="$default" rule="8" enabled="true"/>
2531 <item rule-number="11" dot="2"/>
2535 <transition type="shift" symbol="")"" state="24"/>
2545 <item rule-number="2" dot="3"/>
2551 <reduction symbol="$default" rule="accept" enabled="true"/>
2559 <item rule-number="6" dot="2"/>
2560 <item rule-number="10" dot="0"/>
2561 <item rule-number="11" dot="0"/>
2562 <item rule-number="12" dot="0"/>
2563 <item rule-number="13" dot="0"/>
2567 <transition type="shift" symbol=""incr"" state="7"/>
2568 <transition type="shift" symbol=""identifier"" state="8"/>
2569 <transition type="shift" symbol=""number"" state="9"/>
2570 <transition type="shift" symbol=""("" state="10"/>
2571 <transition type="goto" symbol="exp" state="25"/>
2581 <item rule-number="9" dot="0"/>
2582 <item rule-number="10" dot="3"/>
2586 <transition type="goto" symbol="@2" state="26"/>
2590 <reduction symbol="$default" rule="9" enabled="true"/>
2598 <item rule-number="11" dot="3"/>
2604 <reduction symbol="$default" rule="11" enabled="true"/>
2612 <item rule-number="6" dot="3"/>
2618 <reduction symbol="$default" rule="6" enabled="true"/>
2626 <item rule-number="10" dot="0"/>
2627 <item rule-number="10" dot="4"/>
2628 <item rule-number="11" dot="0"/>
2629 <item rule-number="12" dot="0"/>
2630 <item rule-number="13" dot="0"/>
2634 <transition type="shift" symbol=""incr"" state="7"/>
2635 <transition type="shift" symbol=""identifier"" state="8"/>
2636 <transition type="shift" symbol=""number"" state="9"/>
2637 <transition type="shift" symbol=""("" state="10"/>
2638 <transition type="goto" symbol="exp" state="27"/>
2648 <item rule-number="10" dot="5"/>
2654 <reduction symbol="$default" rule="10" enabled="true"/>
2663 if test x"$XSLTPROC" != x""; then
2664 AT_CHECK([[$XSLTPROC \
2665 `]]AT_SET_ENV[[ bison --print-datadir`/xslt/xml2xhtml.xsl \
2666 input.xml >input.html]])
2667 AT_CHECK_HTML([input.html],
2668 [[<?xml version="1.0" encoding="UTF-8"?>
2669 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2670 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:bison="https://www.gnu.org/software/bison/">
2672 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
2673 <title>input.yy - GNU Bison XML Automaton Report</title>
2674 <style type="text/css">
2676 font-family: "Nimbus Sans L", Arial, sans-serif;
2681 text-decoration: none;
2685 text-decoration: none;
2691 text-decoration: underline;
2697 font-family: monospace;
2701 list-style-type: decimal;
2704 list-style-type: lower-alpha;
2715 <body><h1>GNU Bison XML Automaton Report</h1><p>
2716 input grammar: <span class="i">input.yy</span></p>
2718 <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>
2720 <h3><a name="terminals_unused_in_grammar" id="terminals_unused_in_grammar"></a> Terminals unused in grammar</h3>
2722 <h3><a name="rules_useless_in_grammar" id="rules_useless_in_grammar"></a> Rules useless in grammar</h3>
2723 <h2><a name="conflicts" id="conflicts"></a> Conflicts</h2>
2725 <h2><a name="grammar" id="grammar"></a> Grammar</h2>
2727 <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>
2728 <a name="rule_1" id="rule_1"> 1</a> | <b>YY_PARSE_assignments</b> <span class="i">assignments</span> <b>"end of file"</b>
2729 <a name="rule_2" id="rule_2"> 2</a> | <b>YY_PARSE_exp</b> <span class="i">exp</span> <b>"end of file"</b>
2731 <a name="rule_3" id="rule_3"> 3</a> <span class="i">unit</span> → <span class="i">assignments</span> <span class="i">exp</span>
2733 <a name="rule_4" id="rule_4"> 4</a> <span class="i">assignments</span> → %empty
2734 <a name="rule_5" id="rule_5"> 5</a> | <span class="i">assignments</span> <span class="i">assignment</span>
2736 <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>
2738 <a name="rule_7" id="rule_7"> 7</a> <span class="i">id</span> → <b>"identifier"</b>
2740 <a name="rule_8" id="rule_8"> 8</a> <span class="i">@1</span> → %empty
2742 <a name="rule_9" id="rule_9"> 9</a> <span class="i">@2</span> → %empty
2744 <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>
2745 <a name="rule_11" id="rule_11"> 11</a> | <b>"("</b> <span class="i">exp</span> <b>")"</b>
2746 <a name="rule_12" id="rule_12"> 12</a> | <b>"identifier"</b>
2747 <a name="rule_13" id="rule_13"> 13</a> | <b>"number"</b>
2750 <h3><a name="terminals" id="terminals"></a> Terminals, with rules where they appear</h3>
2753 <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>
2754 <li><b>error</b> (256)</li>
2755 <li><b>":="</b> (258) <a href="#rule_6">6</a></li>
2756 <li><b>"incr"</b> (259) <a href="#rule_10">10</a></li>
2757 <li><b>"identifier"</b> <std::string> (260) <a href="#rule_7">7</a> <a href="#rule_12">12</a></li>
2758 <li><b>"number"</b> <int> (261) <a href="#rule_13">13</a></li>
2759 <li><b>YY_PARSE_unit</b> (262) <a href="#rule_0">0</a></li>
2760 <li><b>YY_PARSE_assignments</b> (263) <a href="#rule_1">1</a></li>
2761 <li><b>YY_PARSE_exp</b> (264) <a href="#rule_2">2</a></li>
2762 <li><b>"("</b> (265) <a href="#rule_11">11</a></li>
2763 <li><b>")"</b> (266) <a href="#rule_11">11</a></li>
2766 <h3><a name="nonterminals" id="nonterminals"></a> Nonterminals, with rules where they appear</h3>
2769 <li><b>$accept</b> (12)
2771 <li>on left: <a href="#rule_0">0</a> <a href="#rule_1">1</a> <a href="#rule_2">2</a></li>
2774 <li><b>unit</b> (13)
2776 <li>on left: <a href="#rule_3">3</a></li>
2777 <li>on right: <a href="#rule_0">0</a></li>
2780 <li><b>assignments</b> (14)
2782 <li>on left: <a href="#rule_4">4</a> <a href="#rule_5">5</a></li>
2783 <li>on right: <a href="#rule_1">1</a> <a href="#rule_3">3</a> <a href="#rule_5">5</a></li>
2786 <li><b>assignment</b> (15)
2788 <li>on left: <a href="#rule_6">6</a></li>
2789 <li>on right: <a href="#rule_5">5</a></li>
2792 <li><b>id</b> <std::string> (16)
2794 <li>on left: <a href="#rule_7">7</a></li>
2795 <li>on right: <a href="#rule_6">6</a></li>
2798 <li><b>exp</b> <int> (17)
2800 <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>
2801 <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>
2804 <li><b>@1</b> <int> (18)
2806 <li>on left: <a href="#rule_8">8</a></li>
2807 <li>on right: <a href="#rule_10">10</a></li>
2810 <li><b>@2</b> <int> (19)
2812 <li>on left: <a href="#rule_9">9</a></li>
2813 <li>on right: <a href="#rule_10">10</a></li>
2816 </ul><h2><a name="automaton" id="automaton"></a> Automaton</h2>
2818 <h3><a name="state_0" id="state_0"></a>State 0</h3>
2820 <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>
2821 <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>
2822 <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>
2824 YY_PARSE_unit <a href="#state_1">shift, and go to state 1</a>
2825 YY_PARSE_assignments <a href="#state_2">shift, and go to state 2</a>
2826 YY_PARSE_exp <a href="#state_3">shift, and go to state 3</a>
2829 <h3><a name="state_1" id="state_1"></a>State 1</h3>
2831 <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>
2832 <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>
2833 <a href="#rule_4"> 4</a> <span class="i">assignments</span> → <span class="dot">•</span> %empty
2834 <a href="#rule_5"> 5</a> | <span class="dot">•</span> <span class="i">assignments</span> <span class="i">assignment</span>
2836 $default <a href="#rule_4">reduce using rule 4</a> (assignments)
2838 unit <a href="#state_4">go to state 4</a>
2839 assignments <a href="#state_5">go to state 5</a>
2842 <h3><a name="state_2" id="state_2"></a>State 2</h3>
2844 <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>
2845 <a href="#rule_4"> 4</a> <span class="i">assignments</span> → <span class="dot">•</span> %empty
2846 <a href="#rule_5"> 5</a> | <span class="dot">•</span> <span class="i">assignments</span> <span class="i">assignment</span>
2848 $default <a href="#rule_4">reduce using rule 4</a> (assignments)
2850 assignments <a href="#state_6">go to state 6</a>
2853 <h3><a name="state_3" id="state_3"></a>State 3</h3>
2855 <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>
2856 <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>
2857 <a href="#rule_11"> 11</a> | <span class="dot">•</span> <b>"("</b> <span class="i">exp</span> <b>")"</b>
2858 <a href="#rule_12"> 12</a> | <span class="dot">•</span> <b>"identifier"</b>
2859 <a href="#rule_13"> 13</a> | <span class="dot">•</span> <b>"number"</b>
2861 "incr" <a href="#state_7">shift, and go to state 7</a>
2862 "identifier" <a href="#state_8">shift, and go to state 8</a>
2863 "number" <a href="#state_9">shift, and go to state 9</a>
2864 "(" <a href="#state_10">shift, and go to state 10</a>
2866 exp <a href="#state_11">go to state 11</a>
2869 <h3><a name="state_4" id="state_4"></a>State 4</h3>
2871 <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>
2873 "end of file" <a href="#state_12">shift, and go to state 12</a>
2876 <h3><a name="state_5" id="state_5"></a>State 5</h3>
2878 <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>
2879 <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>
2880 <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>
2881 <a href="#rule_7"> 7</a> <span class="i">id</span> → <span class="dot">•</span> <b>"identifier"</b>
2882 <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>
2883 <a href="#rule_11"> 11</a> | <span class="dot">•</span> <b>"("</b> <span class="i">exp</span> <b>")"</b>
2884 <a href="#rule_12"> 12</a> | <span class="dot">•</span> <b>"identifier"</b>
2885 <a href="#rule_13"> 13</a> | <span class="dot">•</span> <b>"number"</b>
2887 "incr" <a href="#state_7">shift, and go to state 7</a>
2888 "identifier" <a href="#state_13">shift, and go to state 13</a>
2889 "number" <a href="#state_9">shift, and go to state 9</a>
2890 "(" <a href="#state_10">shift, and go to state 10</a>
2892 assignment <a href="#state_14">go to state 14</a>
2893 id <a href="#state_15">go to state 15</a>
2894 exp <a href="#state_16">go to state 16</a>
2897 <h3><a name="state_6" id="state_6"></a>State 6</h3>
2899 <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>
2900 <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>
2901 <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>
2902 <a href="#rule_7"> 7</a> <span class="i">id</span> → <span class="dot">•</span> <b>"identifier"</b>
2904 "end of file" <a href="#state_17">shift, and go to state 17</a>
2905 "identifier" <a href="#state_18">shift, and go to state 18</a>
2907 assignment <a href="#state_14">go to state 14</a>
2908 id <a href="#state_15">go to state 15</a>
2911 <h3><a name="state_7" id="state_7"></a>State 7</h3>
2913 <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>
2914 <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>
2915 <a href="#rule_11"> 11</a> | <span class="dot">•</span> <b>"("</b> <span class="i">exp</span> <b>")"</b>
2916 <a href="#rule_12"> 12</a> | <span class="dot">•</span> <b>"identifier"</b>
2917 <a href="#rule_13"> 13</a> | <span class="dot">•</span> <b>"number"</b>
2919 "incr" <a href="#state_7">shift, and go to state 7</a>
2920 "identifier" <a href="#state_8">shift, and go to state 8</a>
2921 "number" <a href="#state_9">shift, and go to state 9</a>
2922 "(" <a href="#state_10">shift, and go to state 10</a>
2924 exp <a href="#state_19">go to state 19</a>
2927 <h3><a name="state_8" id="state_8"></a>State 8</h3>
2929 <p class="pre"> <a href="#rule_12"> 12</a> <span class="i">exp</span> → <b>"identifier"</b> <span class="dot">•</span>
2931 $default <a href="#rule_12">reduce using rule 12</a> (exp)
2934 <h3><a name="state_9" id="state_9"></a>State 9</h3>
2936 <p class="pre"> <a href="#rule_13"> 13</a> <span class="i">exp</span> → <b>"number"</b> <span class="dot">•</span>
2938 $default <a href="#rule_13">reduce using rule 13</a> (exp)
2941 <h3><a name="state_10" id="state_10"></a>State 10</h3>
2943 <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>
2944 <a href="#rule_11"> 11</a> | <span class="dot">•</span> <b>"("</b> <span class="i">exp</span> <b>")"</b>
2945 <a href="#rule_11"> 11</a> | <b>"("</b> <span class="dot">•</span> <span class="i">exp</span> <b>")"</b>
2946 <a href="#rule_12"> 12</a> | <span class="dot">•</span> <b>"identifier"</b>
2947 <a href="#rule_13"> 13</a> | <span class="dot">•</span> <b>"number"</b>
2949 "incr" <a href="#state_7">shift, and go to state 7</a>
2950 "identifier" <a href="#state_8">shift, and go to state 8</a>
2951 "number" <a href="#state_9">shift, and go to state 9</a>
2952 "(" <a href="#state_10">shift, and go to state 10</a>
2954 exp <a href="#state_20">go to state 20</a>
2957 <h3><a name="state_11" id="state_11"></a>State 11</h3>
2959 <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>
2961 "end of file" <a href="#state_21">shift, and go to state 21</a>
2964 <h3><a name="state_12" id="state_12"></a>State 12</h3>
2966 <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>
2971 <h3><a name="state_13" id="state_13"></a>State 13</h3>
2973 <p class="pre"> <a href="#rule_7"> 7</a> <span class="i">id</span> → <b>"identifier"</b> <span class="dot">•</span> [":="]
2974 <a href="#rule_12"> 12</a> <span class="i">exp</span> → <b>"identifier"</b> <span class="dot">•</span> ["end of file"]
2976 "end of file" <a href="#rule_12">reduce using rule 12</a> (exp)
2977 $default <a href="#rule_7">reduce using rule 7</a> (id)
2980 <h3><a name="state_14" id="state_14"></a>State 14</h3>
2982 <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>
2984 $default <a href="#rule_5">reduce using rule 5</a> (assignments)
2987 <h3><a name="state_15" id="state_15"></a>State 15</h3>
2989 <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>
2991 ":=" <a href="#state_22">shift, and go to state 22</a>
2994 <h3><a name="state_16" id="state_16"></a>State 16</h3>
2996 <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>
2998 $default <a href="#rule_3">reduce using rule 3</a> (unit)
3001 <h3><a name="state_17" id="state_17"></a>State 17</h3>
3003 <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>
3008 <h3><a name="state_18" id="state_18"></a>State 18</h3>
3010 <p class="pre"> <a href="#rule_7"> 7</a> <span class="i">id</span> → <b>"identifier"</b> <span class="dot">•</span>
3012 $default <a href="#rule_7">reduce using rule 7</a> (id)
3015 <h3><a name="state_19" id="state_19"></a>State 19</h3>
3017 <p class="pre"> <a href="#rule_8"> 8</a> <span class="i">@1</span> → <span class="dot">•</span> %empty
3018 <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>
3020 $default <a href="#rule_8">reduce using rule 8</a> (@1)
3022 @1 <a href="#state_23">go to state 23</a>
3025 <h3><a name="state_20" id="state_20"></a>State 20</h3>
3027 <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>
3029 ")" <a href="#state_24">shift, and go to state 24</a>
3032 <h3><a name="state_21" id="state_21"></a>State 21</h3>
3034 <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>
3039 <h3><a name="state_22" id="state_22"></a>State 22</h3>
3041 <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>
3042 <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>
3043 <a href="#rule_11"> 11</a> | <span class="dot">•</span> <b>"("</b> <span class="i">exp</span> <b>")"</b>
3044 <a href="#rule_12"> 12</a> | <span class="dot">•</span> <b>"identifier"</b>
3045 <a href="#rule_13"> 13</a> | <span class="dot">•</span> <b>"number"</b>
3047 "incr" <a href="#state_7">shift, and go to state 7</a>
3048 "identifier" <a href="#state_8">shift, and go to state 8</a>
3049 "number" <a href="#state_9">shift, and go to state 9</a>
3050 "(" <a href="#state_10">shift, and go to state 10</a>
3052 exp <a href="#state_25">go to state 25</a>
3055 <h3><a name="state_23" id="state_23"></a>State 23</h3>
3057 <p class="pre"> <a href="#rule_9"> 9</a> <span class="i">@2</span> → <span class="dot">•</span> %empty
3058 <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>
3060 $default <a href="#rule_9">reduce using rule 9</a> (@2)
3062 @2 <a href="#state_26">go to state 26</a>
3065 <h3><a name="state_24" id="state_24"></a>State 24</h3>
3067 <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>
3069 $default <a href="#rule_11">reduce using rule 11</a> (exp)
3072 <h3><a name="state_25" id="state_25"></a>State 25</h3>
3074 <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>
3076 $default <a href="#rule_6">reduce using rule 6</a> (assignment)
3079 <h3><a name="state_26" id="state_26"></a>State 26</h3>
3081 <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>
3082 <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>
3083 <a href="#rule_11"> 11</a> | <span class="dot">•</span> <b>"("</b> <span class="i">exp</span> <b>")"</b>
3084 <a href="#rule_12"> 12</a> | <span class="dot">•</span> <b>"identifier"</b>
3085 <a href="#rule_13"> 13</a> | <span class="dot">•</span> <b>"number"</b>
3087 "incr" <a href="#state_7">shift, and go to state 7</a>
3088 "identifier" <a href="#state_8">shift, and go to state 8</a>
3089 "number" <a href="#state_9">shift, and go to state 9</a>
3090 "(" <a href="#state_10">shift, and go to state 10</a>
3092 exp <a href="#state_27">go to state 27</a>
3095 <h3><a name="state_27" id="state_27"></a>State 27</h3>
3097 <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>
3099 $default <a href="#rule_10">reduce using rule 10</a> (exp)
3102 <div id="footer"><hr />This document was generated using
3103 <a href="https://www.gnu.org/software/bison/" title="GNU Bison">
3104 GNU Bison ]AT_PACKAGE_VERSION[</a>
3105 XML Automaton Report.<br />
3106 Verbatim copying and distribution of this entire page is
3107 permitted in any medium, provided this notice is preserved.</div></body>
3112 AT_BISON_OPTION_POPDEFS
3116 ## ------------------------ ##
3117 ## Reports with conflicts. ##
3118 ## ------------------------ ##
3120 AT_SETUP([Reports with conflicts])
3122 AT_KEYWORDS([cex report])
3124 # We need UTF-8 support for correct screen-width computation of UTF-8
3125 # characters. Skip the test if not available.
3126 locale=`locale -a | $EGREP '^en_US\.(UTF-8|utf8)$' | sed 1q`
3127 AT_SKIP_IF([[test x = x"$locale"]])
3129 AT_SKIP_IF([[test x"$XSLTPROC" = x]])
3131 AT_BISON_OPTION_PUSHDEFS
3143 AT_CHECK([LC_ALL="$locale" bison -fno-caret -o input.cc -rall -Wcex --graph=input.gv --html --xml input.y], [], [],
3144 [[input.y: warning: 3 shift/reduce conflicts [-Wconflicts-sr]
3145 input.y: warning: 3 reduce/reduce conflicts [-Wconflicts-rr]
3146 input.y: warning: shift/reduce conflict on token "⊕" [-Wcounterexamples]
3147 Example: exp "+" exp • "⊕" exp
3156 input.y: warning: reduce/reduce conflict on tokens $end, "+", "⊕" [-Wcounterexamples]
3157 Example: exp "+" exp •
3158 First reduce derivation
3161 Second reduce derivation
3164 input.y: warning: shift/reduce conflict on token "⊕" [-Wcounterexamples]
3165 Example: exp "+" exp • "⊕" exp
3174 input.y: warning: shift/reduce conflict on token "⊕" [-Wcounterexamples]
3175 Example: exp "⊕" exp • "⊕" exp
3184 input.y: warning: shift/reduce conflict on token "+" [-Wcounterexamples]
3185 Example: exp "⊕" exp • "+" exp
3194 input.y: warning: shift/reduce conflict on token "+" [-Wcounterexamples]
3195 Example: exp "⊕" exp • "+" exp
3204 input.y:6.3-13: warning: rule useless in parser due to conflicts [-Wother]
3207 # Check the contents of the report.
3208 # FIXME: Avoid trailing white spaces.
3209 AT_CHECK([sed -e 's/ *$//' input.output], [],
3210 [[Rules useless in parser due to conflicts
3215 State 7 conflicts: 1 shift/reduce, 3 reduce/reduce
3216 State 8 conflicts: 2 shift/reduce
3230 Terminals, with rules where they appear
3240 Nonterminals, with rules where they appear
3251 0 $accept: • exp $end
3252 1 exp: • exp "⊕" exp
3258 "number" shift, and go to state 1
3259 "Ñùṃéℝô" shift, and go to state 2
3268 $default reduce using rule 4 (exp)
3275 $default reduce using rule 5 (exp)
3280 0 $accept: exp • $end
3281 1 exp: exp • "⊕" exp
3285 $end shift, and go to state 4
3286 "+" shift, and go to state 5
3287 "⊕" shift, and go to state 6
3292 0 $accept: exp $end •
3299 1 exp: • exp "⊕" exp
3307 "number" shift, and go to state 1
3308 "Ñùṃéℝô" shift, and go to state 2
3315 1 exp: • exp "⊕" exp
3322 "number" shift, and go to state 1
3323 "Ñùṃéℝô" shift, and go to state 2
3330 1 exp: exp • "⊕" exp
3332 2 | exp "+" exp • [$end, "+", "⊕"]
3334 3 | exp "+" exp • [$end, "+", "⊕"]
3336 "⊕" shift, and go to state 6
3338 $end reduce using rule 2 (exp)
3339 $end [reduce using rule 3 (exp)]
3340 "+" reduce using rule 2 (exp)
3341 "+" [reduce using rule 3 (exp)]
3342 "⊕" [reduce using rule 2 (exp)]
3343 "⊕" [reduce using rule 3 (exp)]
3344 $default reduce using rule 2 (exp)
3346 Conflict between rule 2 and token "+" resolved as reduce (%left "+").
3348 shift/reduce conflict on token "⊕":
3349 2 exp: exp "+" exp •
3350 1 exp: exp • "⊕" exp
3351 Example: exp "+" exp • "⊕" exp
3361 reduce/reduce conflict on tokens $end, "+", "⊕":
3362 2 exp: exp "+" exp •
3363 3 exp: exp "+" exp •
3364 Example: exp "+" exp •
3365 First reduce derivation
3368 Second reduce derivation
3372 shift/reduce conflict on token "⊕":
3373 3 exp: exp "+" exp •
3374 1 exp: exp • "⊕" exp
3375 Example: exp "+" exp • "⊕" exp
3389 1 exp: exp • "⊕" exp
3390 1 | exp "⊕" exp • [$end, "+", "⊕"]
3394 "+" shift, and go to state 5
3395 "⊕" shift, and go to state 6
3397 "+" [reduce using rule 1 (exp)]
3398 "⊕" [reduce using rule 1 (exp)]
3399 $default reduce using rule 1 (exp)
3401 shift/reduce conflict on token "⊕":
3402 1 exp: exp "⊕" exp •
3403 1 exp: exp • "⊕" exp
3404 Example: exp "⊕" exp • "⊕" exp
3414 shift/reduce conflict on token "+":
3415 1 exp: exp "⊕" exp •
3416 2 exp: exp • "+" exp
3417 Example: exp "⊕" exp • "+" exp
3427 shift/reduce conflict on token "+":
3428 1 exp: exp "⊕" exp •
3429 3 exp: exp • "+" exp
3430 Example: exp "⊕" exp • "+" exp
3445 AT_CHECK([cat input.gv], [],
3446 [[// Generated by GNU Bison ]AT_PACKAGE_VERSION[.
3447 // Report bugs to <bug-bison@gnu.org>.
3448 // Home page: <https://www.gnu.org/software/bison/>.
3452 node [fontname = courier, shape = box, colorscheme = paired6]
3453 edge [fontname = courier]
3455 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"]
3456 0 -> 1 [style=solid label="\"number\""]
3457 0 -> 2 [style=solid label="\"Ñùṃéℝô\""]
3458 0 -> 3 [style=dashed label="exp"]
3459 1 [label="State 1\n\l 4 exp: \"number\" •\l"]
3460 1 -> "1R4" [style=solid]
3461 "1R4" [label="R4", fillcolor=3, shape=diamond, style=filled]
3462 2 [label="State 2\n\l 5 exp: \"Ñùṃéℝô\" •\l"]
3463 2 -> "2R5" [style=solid]
3464 "2R5" [label="R5", fillcolor=3, shape=diamond, style=filled]
3465 3 [label="State 3\n\l 0 $accept: exp • $end\l 1 exp: exp • \"⊕\" exp\l 2 | exp • \"+\" exp\l 3 | exp • \"+\" exp\l"]
3466 3 -> 4 [style=solid label="$end"]
3467 3 -> 5 [style=solid label="\"+\""]
3468 3 -> 6 [style=solid label="\"⊕\""]
3469 4 [label="State 4\n\l 0 $accept: exp $end •\l"]
3470 4 -> "4R0" [style=solid]
3471 "4R0" [label="Acc", fillcolor=1, shape=diamond, style=filled]
3472 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"]
3473 5 -> 1 [style=solid label="\"number\""]
3474 5 -> 2 [style=solid label="\"Ñùṃéℝô\""]
3475 5 -> 7 [style=dashed label="exp"]
3476 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"]
3477 6 -> 1 [style=solid label="\"number\""]
3478 6 -> 2 [style=solid label="\"Ñùṃéℝô\""]
3479 6 -> 8 [style=dashed label="exp"]
3480 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"]
3481 7 -> 6 [style=solid label="\"⊕\""]
3482 7 -> "7R2d" [label="[\"⊕\"]", style=solid]
3483 "7R2d" [label="R2", fillcolor=5, shape=diamond, style=filled]
3484 7 -> "7R2" [style=solid]
3485 "7R2" [label="R2", fillcolor=3, shape=diamond, style=filled]
3486 7 -> "7R3d" [label="[$end, \"+\", \"⊕\"]", style=solid]
3487 "7R3d" [label="R3", fillcolor=5, shape=diamond, style=filled]
3488 8 [label="State 8\n\l 1 exp: exp • \"⊕\" exp\l 1 | exp \"⊕\" exp • [$end, \"+\", \"⊕\"]\l 2 | exp • \"+\" exp\l 3 | exp • \"+\" exp\l"]
3489 8 -> 5 [style=solid label="\"+\""]
3490 8 -> 6 [style=solid label="\"⊕\""]
3491 8 -> "8R1d" [label="[\"+\", \"⊕\"]", style=solid]
3492 "8R1d" [label="R1", fillcolor=5, shape=diamond, style=filled]
3493 8 -> "8R1" [style=solid]
3494 "8R1" [label="R1", fillcolor=3, shape=diamond, style=filled]
3499 AT_CHECK([[cat input.xml]], [],
3500 [[<?xml version="1.0"?>
3502 <bison-xml-report version="]AT_PACKAGE_VERSION[" bug-report="bug-bison@gnu.org" url="https://www.gnu.org/software/bison/">
3504 <filename>input.y</filename>
3508 <rule number="0" usefulness="useful">
3511 <symbol>exp</symbol>
3512 <symbol>$end</symbol>
3515 <rule number="1" usefulness="useful">
3518 <symbol>exp</symbol>
3519 <symbol>"⊕"</symbol>
3520 <symbol>exp</symbol>
3523 <rule number="2" usefulness="useful">
3526 <symbol>exp</symbol>
3527 <symbol>"+"</symbol>
3528 <symbol>exp</symbol>
3531 <rule number="3" usefulness="useless-in-parser">
3534 <symbol>exp</symbol>
3535 <symbol>"+"</symbol>
3536 <symbol>exp</symbol>
3539 <rule number="4" usefulness="useful">
3542 <symbol>"number"</symbol>
3545 <rule number="5" usefulness="useful">
3548 <symbol>"Ñùṃéℝô"</symbol>
3553 <terminal symbol-number="0" token-number="0" name="$end" type="" usefulness="useful"/>
3554 <terminal symbol-number="1" token-number="256" name="error" type="" usefulness="useful"/>
3555 <terminal symbol-number="3" token-number="258" name=""+"" type="" usefulness="useful" prec="1" assoc="left"/>
3556 <terminal symbol-number="4" token-number="259" name=""⊕"" type="" usefulness="useful"/>
3557 <terminal symbol-number="5" token-number="260" name=""number"" type="" usefulness="useful"/>
3558 <terminal symbol-number="6" token-number="261" name=""Ñùṃéℝô"" type="" usefulness="useful"/>
3561 <nonterminal symbol-number="7" name="$accept" type="" usefulness="useful"/>
3562 <nonterminal symbol-number="8" name="exp" type="" usefulness="useful"/>
3570 <item rule-number="0" dot="0"/>
3571 <item rule-number="1" dot="0"/>
3572 <item rule-number="2" dot="0"/>
3573 <item rule-number="3" dot="0"/>
3574 <item rule-number="4" dot="0"/>
3575 <item rule-number="5" dot="0"/>
3579 <transition type="shift" symbol=""number"" state="1"/>
3580 <transition type="shift" symbol=""Ñùṃéℝô"" state="2"/>
3581 <transition type="goto" symbol="exp" state="3"/>
3591 <item rule-number="4" dot="1"/>
3597 <reduction symbol="$default" rule="4" enabled="true"/>
3605 <item rule-number="5" dot="1"/>
3611 <reduction symbol="$default" rule="5" enabled="true"/>
3619 <item rule-number="0" dot="1"/>
3620 <item rule-number="1" dot="1"/>
3621 <item rule-number="2" dot="1"/>
3622 <item rule-number="3" dot="1"/>
3626 <transition type="shift" symbol="$end" state="4"/>
3627 <transition type="shift" symbol=""+"" state="5"/>
3628 <transition type="shift" symbol=""⊕"" state="6"/>
3638 <item rule-number="0" dot="2"/>
3644 <reduction symbol="$default" rule="accept" enabled="true"/>
3652 <item rule-number="1" dot="0"/>
3653 <item rule-number="2" dot="0"/>
3654 <item rule-number="2" dot="2"/>
3655 <item rule-number="3" dot="0"/>
3656 <item rule-number="3" dot="2"/>
3657 <item rule-number="4" dot="0"/>
3658 <item rule-number="5" dot="0"/>
3662 <transition type="shift" symbol=""number"" state="1"/>
3663 <transition type="shift" symbol=""Ñùṃéℝô"" state="2"/>
3664 <transition type="goto" symbol="exp" state="7"/>
3674 <item rule-number="1" dot="0"/>
3675 <item rule-number="1" dot="2"/>
3676 <item rule-number="2" dot="0"/>
3677 <item rule-number="3" dot="0"/>
3678 <item rule-number="4" dot="0"/>
3679 <item rule-number="5" dot="0"/>
3683 <transition type="shift" symbol=""number"" state="1"/>
3684 <transition type="shift" symbol=""Ñùṃéℝô"" state="2"/>
3685 <transition type="goto" symbol="exp" state="8"/>
3695 <item rule-number="1" dot="1"/>
3696 <item rule-number="2" dot="1"/>
3697 <item rule-number="2" dot="3">
3699 <symbol>$end</symbol>
3700 <symbol>"+"</symbol>
3701 <symbol>"⊕"</symbol>
3704 <item rule-number="3" dot="1"/>
3705 <item rule-number="3" dot="3">
3707 <symbol>$end</symbol>
3708 <symbol>"+"</symbol>
3709 <symbol>"⊕"</symbol>
3715 <transition type="shift" symbol=""⊕"" state="6"/>
3719 <reduction symbol="$end" rule="2" enabled="true"/>
3720 <reduction symbol="$end" rule="3" enabled="false"/>
3721 <reduction symbol=""+"" rule="2" enabled="true"/>
3722 <reduction symbol=""+"" rule="3" enabled="false"/>
3723 <reduction symbol=""⊕"" rule="2" enabled="false"/>
3724 <reduction symbol=""⊕"" rule="3" enabled="false"/>
3725 <reduction symbol="$default" rule="2" enabled="true"/>
3729 <resolution rule="2" symbol=""+"" type="reduce">%left "+"</resolution>
3735 <item rule-number="1" dot="1"/>
3736 <item rule-number="1" dot="3">
3738 <symbol>$end</symbol>
3739 <symbol>"+"</symbol>
3740 <symbol>"⊕"</symbol>
3743 <item rule-number="2" dot="1"/>
3744 <item rule-number="3" dot="1"/>
3748 <transition type="shift" symbol=""+"" state="5"/>
3749 <transition type="shift" symbol=""⊕"" state="6"/>
3753 <reduction symbol=""+"" rule="1" enabled="false"/>
3754 <reduction symbol=""⊕"" rule="1" enabled="false"/>
3755 <reduction symbol="$default" rule="1" enabled="true"/>
3765 AT_CHECK_HTML([input.html],
3766 [[<?xml version="1.0" encoding="UTF-8"?>
3767 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3768 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:bison="https://www.gnu.org/software/bison/">
3770 <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
3771 <title>input.y - GNU Bison XML Automaton Report</title>
3772 <style type="text/css">
3774 font-family: "Nimbus Sans L", Arial, sans-serif;
3779 text-decoration: none;
3783 text-decoration: none;
3789 text-decoration: underline;
3795 font-family: monospace;
3799 list-style-type: decimal;
3802 list-style-type: lower-alpha;
3813 <body><h1>GNU Bison XML Automaton Report</h1><p>
3814 input grammar: <span class="i">input.y</span></p>
3816 <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>
3818 <h3><a name="terminals_unused_in_grammar" id="terminals_unused_in_grammar"></a> Terminals unused in grammar</h3>
3820 <h3><a name="rules_useless_in_grammar" id="rules_useless_in_grammar"></a> Rules useless in grammar</h3>
3821 <h2><a name="rules_useless_in_parser" id="rules_useless_in_parser"></a> Rules useless in parser due to conflicts</h2>
3823 <a href="#rule_3"> 3</a> <span class="i">exp</span> → <span class="i">exp</span> <b>"+"</b> <span class="i">exp</span>
3826 <h2><a name="conflicts" id="conflicts"></a> Conflicts</h2>
3828 <p class="pre"><a href="#state_7">State 7</a> conflicts: 1 shift/reduce, 3 reduce/reduce
3829 <a href="#state_8">State 8</a> conflicts: 2 shift/reduce
3832 </p><h2><a name="grammar" id="grammar"></a> Grammar</h2>
3834 <a name="rule_0" id="rule_0"> 0</a> <span class="i">$accept</span> → <span class="i">exp</span> <b>$end</b>
3836 <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>
3837 <a name="rule_2" id="rule_2"> 2</a> | <span class="i">exp</span> <b>"+"</b> <span class="i">exp</span>
3838 <a name="rule_3" id="rule_3"> 3</a> | <span class="i">exp</span> <b>"+"</b> <span class="i">exp</span>
3839 <a name="rule_4" id="rule_4"> 4</a> | <b>"number"</b>
3840 <a name="rule_5" id="rule_5"> 5</a> | <b>"Ñùṃéℝô"</b>
3843 <h3><a name="terminals" id="terminals"></a> Terminals, with rules where they appear</h3>
3846 <li><b>$end</b> (0) <a href="#rule_0">0</a></li>
3847 <li><b>error</b> (256)</li>
3848 <li><b>"+"</b> (258) <a href="#rule_2">2</a> <a href="#rule_3">3</a></li>
3849 <li><b>"⊕"</b> (259) <a href="#rule_1">1</a></li>
3850 <li><b>"number"</b> (260) <a href="#rule_4">4</a></li>
3851 <li><b>"Ñùṃéℝô"</b> (261) <a href="#rule_5">5</a></li>
3854 <h3><a name="nonterminals" id="nonterminals"></a> Nonterminals, with rules where they appear</h3>
3857 <li><b>$accept</b> (7)
3859 <li>on left: <a href="#rule_0">0</a></li>
3864 <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>
3865 <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>
3868 </ul><h2><a name="automaton" id="automaton"></a> Automaton</h2>
3870 <h3><a name="state_0" id="state_0"></a>State 0</h3>
3872 <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>
3873 <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>
3874 <a href="#rule_2"> 2</a> | <span class="dot">•</span> <span class="i">exp</span> <b>"+"</b> <span class="i">exp</span>
3875 <a href="#rule_3"> 3</a> | <span class="dot">•</span> <span class="i">exp</span> <b>"+"</b> <span class="i">exp</span>
3876 <a href="#rule_4"> 4</a> | <span class="dot">•</span> <b>"number"</b>
3877 <a href="#rule_5"> 5</a> | <span class="dot">•</span> <b>"Ñùṃéℝô"</b>
3879 "number" <a href="#state_1">shift, and go to state 1</a>
3880 "Ñùṃéℝô" <a href="#state_2">shift, and go to state 2</a>
3882 exp <a href="#state_3">go to state 3</a>
3885 <h3><a name="state_1" id="state_1"></a>State 1</h3>
3887 <p class="pre"> <a href="#rule_4"> 4</a> <span class="i">exp</span> → <b>"number"</b> <span class="dot">•</span>
3889 $default <a href="#rule_4">reduce using rule 4</a> (exp)
3892 <h3><a name="state_2" id="state_2"></a>State 2</h3>
3894 <p class="pre"> <a href="#rule_5"> 5</a> <span class="i">exp</span> → <b>"Ñùṃéℝô"</b> <span class="dot">•</span>
3896 $default <a href="#rule_5">reduce using rule 5</a> (exp)
3899 <h3><a name="state_3" id="state_3"></a>State 3</h3>
3901 <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>
3902 <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>
3903 <a href="#rule_2"> 2</a> | <span class="i">exp</span> <span class="dot">•</span> <b>"+"</b> <span class="i">exp</span>
3904 <a href="#rule_3"> 3</a> | <span class="i">exp</span> <span class="dot">•</span> <b>"+"</b> <span class="i">exp</span>
3906 $end <a href="#state_4">shift, and go to state 4</a>
3907 "+" <a href="#state_5">shift, and go to state 5</a>
3908 "⊕" <a href="#state_6">shift, and go to state 6</a>
3911 <h3><a name="state_4" id="state_4"></a>State 4</h3>
3913 <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>
3918 <h3><a name="state_5" id="state_5"></a>State 5</h3>
3920 <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>
3921 <a href="#rule_2"> 2</a> | <span class="dot">•</span> <span class="i">exp</span> <b>"+"</b> <span class="i">exp</span>
3922 <a href="#rule_2"> 2</a> | <span class="i">exp</span> <b>"+"</b> <span class="dot">•</span> <span class="i">exp</span>
3923 <a href="#rule_3"> 3</a> | <span class="dot">•</span> <span class="i">exp</span> <b>"+"</b> <span class="i">exp</span>
3924 <a href="#rule_3"> 3</a> | <span class="i">exp</span> <b>"+"</b> <span class="dot">•</span> <span class="i">exp</span>
3925 <a href="#rule_4"> 4</a> | <span class="dot">•</span> <b>"number"</b>
3926 <a href="#rule_5"> 5</a> | <span class="dot">•</span> <b>"Ñùṃéℝô"</b>
3928 "number" <a href="#state_1">shift, and go to state 1</a>
3929 "Ñùṃéℝô" <a href="#state_2">shift, and go to state 2</a>
3931 exp <a href="#state_7">go to state 7</a>
3934 <h3><a name="state_6" id="state_6"></a>State 6</h3>
3936 <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>
3937 <a href="#rule_1"> 1</a> | <span class="i">exp</span> <b>"⊕"</b> <span class="dot">•</span> <span class="i">exp</span>
3938 <a href="#rule_2"> 2</a> | <span class="dot">•</span> <span class="i">exp</span> <b>"+"</b> <span class="i">exp</span>
3939 <a href="#rule_3"> 3</a> | <span class="dot">•</span> <span class="i">exp</span> <b>"+"</b> <span class="i">exp</span>
3940 <a href="#rule_4"> 4</a> | <span class="dot">•</span> <b>"number"</b>
3941 <a href="#rule_5"> 5</a> | <span class="dot">•</span> <b>"Ñùṃéℝô"</b>
3943 "number" <a href="#state_1">shift, and go to state 1</a>
3944 "Ñùṃéℝô" <a href="#state_2">shift, and go to state 2</a>
3946 exp <a href="#state_8">go to state 8</a>
3949 <h3><a name="state_7" id="state_7"></a>State 7</h3>
3951 <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>
3952 <a href="#rule_2"> 2</a> | <span class="i">exp</span> <span class="dot">•</span> <b>"+"</b> <span class="i">exp</span>
3953 <a href="#rule_2"> 2</a> | <span class="i">exp</span> <b>"+"</b> <span class="i">exp</span> <span class="dot">•</span> [$end, "+", "⊕"]
3954 <a href="#rule_3"> 3</a> | <span class="i">exp</span> <span class="dot">•</span> <b>"+"</b> <span class="i">exp</span>
3955 <a href="#rule_3"> 3</a> | <span class="i">exp</span> <b>"+"</b> <span class="i">exp</span> <span class="dot">•</span> [$end, "+", "⊕"]
3957 "⊕" <a href="#state_6">shift, and go to state 6</a>
3959 $end <a href="#rule_2">reduce using rule 2</a> (exp)
3960 $end [<a href="#rule_3">reduce using rule 3</a> (exp)]
3961 "+" <a href="#rule_2">reduce using rule 2</a> (exp)
3962 "+" [<a href="#rule_3">reduce using rule 3</a> (exp)]
3963 "⊕" [<a href="#rule_2">reduce using rule 2</a> (exp)]
3964 "⊕" [<a href="#rule_3">reduce using rule 3</a> (exp)]
3965 $default <a href="#rule_2">reduce using rule 2</a> (exp)
3967 Conflict between <a href="#rule_2">rule 2</a> and token "+" resolved as reduce (%left "+").
3970 <h3><a name="state_8" id="state_8"></a>State 8</h3>
3972 <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>
3973 <a href="#rule_1"> 1</a> | <span class="i">exp</span> <b>"⊕"</b> <span class="i">exp</span> <span class="dot">•</span> [$end, "+", "⊕"]
3974 <a href="#rule_2"> 2</a> | <span class="i">exp</span> <span class="dot">•</span> <b>"+"</b> <span class="i">exp</span>
3975 <a href="#rule_3"> 3</a> | <span class="i">exp</span> <span class="dot">•</span> <b>"+"</b> <span class="i">exp</span>
3977 "+" <a href="#state_5">shift, and go to state 5</a>
3978 "⊕" <a href="#state_6">shift, and go to state 6</a>
3980 "+" [<a href="#rule_1">reduce using rule 1</a> (exp)]
3981 "⊕" [<a href="#rule_1">reduce using rule 1</a> (exp)]
3982 $default <a href="#rule_1">reduce using rule 1</a> (exp)
3985 <div id="footer"><hr />This document was generated using
3986 <a href="https://www.gnu.org/software/bison/" title="GNU Bison">
3987 GNU Bison ]AT_PACKAGE_VERSION[</a>
3988 XML Automaton Report.<br />
3989 Verbatim copying and distribution of this entire page is
3990 permitted in any medium, provided this notice is preserved.</div></body>
3994 AT_BISON_OPTION_POPDEFS