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