From 94054924a91d780445369af49e08f640c04d5521 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Mon, 28 Jan 2019 19:27:21 +0100 Subject: [PATCH] tests: check XML and dot reports * tests/report.at: Here. --- tests/report.at | 833 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 831 insertions(+), 2 deletions(-) diff --git a/tests/report.at b/tests/report.at index baa9170c..bf24bc4f 100644 --- a/tests/report.at +++ b/tests/report.at @@ -58,9 +58,8 @@ exp: | "identifier" { $$ = driver.variables[$1]; } | "number" { std::swap ($$, $1); }; ]]) -AT_BISON_OPTION_POPDEFS -AT_BISON_CHECK([-o input.cc -v input.yy]) +AT_BISON_CHECK([-o input.cc -v --graph=input.gv --xml input.yy]) # Check the contents of the report. AT_CHECK([cat input.output], [], @@ -296,4 +295,834 @@ State 19 $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" (260) 5 10 +"number" (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 (13) + on left: 5, on right: 4 +exp (14) + on left: 8 9 10 11, on right: 1 4 8 9 +@1 (15) + on left: 6, on right: 8 +@2 (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 . +// Home page: . + +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]], [], +[[ + + + + input.yy + + + + + $accept + + unit + "end of file" + + + + unit + + assignments + exp + + + + assignments + + + + + + assignments + + assignments + assignment + + + + assignment + + id + ":=" + exp + + + + id + + "identifier" + + + + @1 + + + + + + @2 + + + + + + exp + + "incr" + exp + @1 + @2 + exp + + + + exp + + "(" + exp + ")" + + + + exp + + "identifier" + + + + exp + + "number" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ":=" + + + + + "end of file" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]]) + + +AT_BISON_OPTION_POPDEFS AT_CLEANUP