diff options
author | Akim Demaille <akim.demaille@gmail.com> | 2020-07-03 06:36:50 +0200 |
---|---|---|
committer | Akim Demaille <akim.demaille@gmail.com> | 2020-07-03 06:51:57 +0200 |
commit | d7f7fcd9c7ca64d312196b081aa09def3a518979 (patch) | |
tree | 5b8aa7e7040d4c473e60e55aeaa16f9da1c084a2 | |
parent | 0fd542c3e012bc507e3fcddcc9e38fb648498a29 (diff) | |
download | bison-d7f7fcd9c7ca64d312196b081aa09def3a518979.tar.gz |
dot: also use a dot in the output
* src/print-graph.c (print_core): Use a dot instead of a point.
* doc/figs/example-reduce.gv, doc/figs/example-reduce.txt,
* doc/figs/example-shift.gv, doc/figs/example-shift.txt,
* doc/figs/example.gv: Update.
* tests/output.at, tests/report.at: Adjust.
-rw-r--r-- | doc/figs/example-reduce.gv | 2 | ||||
-rw-r--r-- | doc/figs/example-reduce.txt | 4 | ||||
-rw-r--r-- | doc/figs/example-shift.gv | 4 | ||||
-rw-r--r-- | doc/figs/example-shift.txt | 4 | ||||
-rw-r--r-- | doc/figs/example.gv | 16 | ||||
-rw-r--r-- | src/print-graph.c | 2 | ||||
-rw-r--r-- | tests/output.at | 170 | ||||
-rw-r--r-- | tests/report.at | 58 |
8 files changed, 145 insertions, 115 deletions
diff --git a/doc/figs/example-reduce.gv b/doc/figs/example-reduce.gv index fdd99c5d..d71a9d6e 100644 --- a/doc/figs/example-reduce.gv +++ b/doc/figs/example-reduce.gv @@ -3,7 +3,7 @@ digraph "reduce.y" node [fontname=courier shape=box] edge [fontname=courier] - 1 [label="State 1\n 3 a: \"0\" . [\".\"]\l 4 b: \"0\" . [\";\"]\l"] + 1 [label="State 1\n 3 a: \"0\" • [\".\"]\l 4 b: \"0\" • [\";\"]\l"] 1 -> "1R3" [label="" style=solid] "1R3" [style=filled shape=diamond fillcolor=yellowgreen label="R3"] 1 -> "1R4" [label="[\";\"]" style=solid] diff --git a/doc/figs/example-reduce.txt b/doc/figs/example-reduce.txt index d4e8219f..ab4a839d 100644 --- a/doc/figs/example-reduce.txt +++ b/doc/figs/example-reduce.txt @@ -1,7 +1,7 @@ .------------------. | State 1 | - | 3 a: "0" . [";"] | - | 4 b: "0" . ["."] | + | 3 a: "0" • [";"] | + | 4 b: "0" • ["."] | `------------------' / \ / \ ["."] diff --git a/doc/figs/example-shift.gv b/doc/figs/example-shift.gv index 995ba0e4..df8369f3 100644 --- a/doc/figs/example-shift.gv +++ b/doc/figs/example-shift.gv @@ -3,7 +3,7 @@ digraph "shift.y" node [fontname=courier shape=box] edge [fontname=courier] - 3 [label="State 3\n 1 exp: a . \".\"\l"] + 3 [label="State 3\n 1 exp: a • \".\"\l"] 3 -> 6 [style=solid label="\".\""] - 6 [label="State 6\n 1 exp: a \".\" .\l"] + 6 [label="State 6\n 1 exp: a \".\" •\l"] } diff --git a/doc/figs/example-shift.txt b/doc/figs/example-shift.txt index 43b14122..4ff9be80 100644 --- a/doc/figs/example-shift.txt +++ b/doc/figs/example-shift.txt @@ -1,6 +1,6 @@ .----------------. | State 3 | -| 1 exp: a . ";" | +| 1 exp: a • ";" | `----------------' | | ";" @@ -8,5 +8,5 @@ v .----------------. | State 6 | -| 1 exp: a ";" . | +| 1 exp: a ";" • | `----------------' diff --git a/doc/figs/example.gv b/doc/figs/example.gv index 47122928..fe2866e2 100644 --- a/doc/figs/example.gv +++ b/doc/figs/example.gv @@ -7,29 +7,29 @@ digraph "example.y" node [fontname = courier, shape = box, colorscheme = paired6] edge [fontname = courier] - 0 [label="State 0\n\l 0 $accept: . exp $end\l 1 exp: . a \";\"\l 2 | . b \".\"\l 3 a: . \"0\"\l 4 b: . \"0\"\l"] + 0 [label="State 0\n\l 0 $accept: • exp $end\l 1 exp: • a \";\"\l 2 | • b \".\"\l 3 a: • \"0\"\l 4 b: • \"0\"\l"] 0 -> 1 [style=solid label="\"0\""] 0 -> 2 [style=dashed label="exp"] 0 -> 3 [style=dashed label="a"] 0 -> 4 [style=dashed label="b"] - 1 [label="State 1\n\l 3 a: \"0\" . [\";\"]\l 4 b: \"0\" . [\".\"]\l"] + 1 [label="State 1\n\l 3 a: \"0\" • [\";\"]\l 4 b: \"0\" • [\".\"]\l"] 1 -> "1R3" [style=solid] "1R3" [label="R3", fillcolor=3, shape=diamond, style=filled] 1 -> "1R4" [label="[\".\"]", style=solid] "1R4" [label="R4", fillcolor=3, shape=diamond, style=filled] - 2 [label="State 2\n\l 0 $accept: exp . $end\l"] + 2 [label="State 2\n\l 0 $accept: exp • $end\l"] 2 -> 5 [style=solid label="$end"] - 3 [label="State 3\n\l 1 exp: a . \";\"\l"] + 3 [label="State 3\n\l 1 exp: a • \";\"\l"] 3 -> 6 [style=solid label="\";\""] - 4 [label="State 4\n\l 2 exp: b . \".\"\l"] + 4 [label="State 4\n\l 2 exp: b • \".\"\l"] 4 -> 7 [style=solid label="\".\""] - 5 [label="State 5\n\l 0 $accept: exp $end .\l"] + 5 [label="State 5\n\l 0 $accept: exp $end •\l"] 5 -> "5R0" [style=solid] "5R0" [label="Acc", fillcolor=1, shape=diamond, style=filled] - 6 [label="State 6\n\l 1 exp: a \";\" .\l"] + 6 [label="State 6\n\l 1 exp: a \";\" •\l"] 6 -> "6R1" [style=solid] "6R1" [label="R1", fillcolor=3, shape=diamond, style=filled] - 7 [label="State 7\n\l 2 exp: b \".\" .\l"] + 7 [label="State 7\n\l 2 exp: b \".\" •\l"] 7 -> "7R2" [style=solid] "7R2" [label="R2", fillcolor=3, shape=diamond, style=filled] } diff --git a/src/print-graph.c b/src/print-graph.c index adaa8bed..f99555aa 100644 --- a/src/print-graph.c +++ b/src/print-graph.c @@ -84,7 +84,7 @@ print_core (struct obstack *oout, state *s) obstack_1grow (oout, ' '); } - obstack_1grow (oout, '.'); + obstack_sgrow (oout, "•"); if (0 <= *r->rhs) for (item_number const *sp = sp1; 0 <= *sp; ++sp) diff --git a/tests/output.at b/tests/output.at index 11dcceb7..60267c2d 100644 --- a/tests/output.at +++ b/tests/output.at @@ -332,13 +332,7 @@ AT_KEYWORDS([[graph]]) AT_DATA([[input.y]], [$2]) AT_BISON_CHECK([[-rall --graph input.y]], [0], [[]], [[ignore]]) AT_CHECK([[grep -v // input.dot]], [0], -[[ -digraph "input.y" -{ - node [fontname = courier, shape = box, colorscheme = paired6] - edge [fontname = courier] - ]$3[} -]]) +[$3]) AT_CLEANUP ]) @@ -354,27 +348,33 @@ a: ; b: 'b'; ]], [[ - 0 [label="State 0\n\l 0 $accept: . exp $end\l 1 exp: . a '?' b\l 2 a: . %empty\l"] +digraph "input.y" +{ + node [fontname = courier, shape = box, colorscheme = paired6] + edge [fontname = courier] + + 0 [label="State 0\n\l 0 $accept: • exp $end\l 1 exp: • a '?' b\l 2 a: • %empty\l"] 0 -> 1 [style=dashed label="exp"] 0 -> 2 [style=dashed label="a"] 0 -> "0R2" [style=solid] "0R2" [label="R2", fillcolor=3, shape=diamond, style=filled] - 1 [label="State 1\n\l 0 $accept: exp . $end\l"] + 1 [label="State 1\n\l 0 $accept: exp • $end\l"] 1 -> 3 [style=solid label="$end"] - 2 [label="State 2\n\l 1 exp: a . '?' b\l"] + 2 [label="State 2\n\l 1 exp: a • '?' b\l"] 2 -> 4 [style=solid label="'?'"] - 3 [label="State 3\n\l 0 $accept: exp $end .\l"] + 3 [label="State 3\n\l 0 $accept: exp $end •\l"] 3 -> "3R0" [style=solid] "3R0" [label="Acc", fillcolor=1, shape=diamond, style=filled] - 4 [label="State 4\n\l 1 exp: a '?' . b\l 3 b: . 'b'\l"] + 4 [label="State 4\n\l 1 exp: a '?' • b\l 3 b: • 'b'\l"] 4 -> 5 [style=solid label="'b'"] 4 -> 6 [style=dashed label="b"] - 5 [label="State 5\n\l 3 b: 'b' .\l"] + 5 [label="State 5\n\l 3 b: 'b' •\l"] 5 -> "5R3" [style=solid] "5R3" [label="R3", fillcolor=3, shape=diamond, style=filled] - 6 [label="State 6\n\l 1 exp: a '?' b .\l"] + 6 [label="State 6\n\l 1 exp: a '?' b •\l"] 6 -> "6R1" [style=solid] "6R1" [label="R1", fillcolor=3, shape=diamond, style=filled] +} ]]) ## ------------------------ ## @@ -396,7 +396,12 @@ empty_b: %prec 'b'; empty_c: %prec 'c'; ]], [[ - 0 [label="State 0\n\l 0 $accept: . start $end\l 1 start: . 'a'\l 2 | . empty_a 'a'\l 3 | . 'b'\l 4 | . empty_b 'b'\l 5 | . 'c'\l 6 | . empty_c 'c'\l 7 empty_a: . %empty ['a']\l 8 empty_b: . %empty ['b']\l 9 empty_c: . %empty ['c']\l"] +digraph "input.y" +{ + node [fontname = courier, shape = box, colorscheme = paired6] + edge [fontname = courier] + + 0 [label="State 0\n\l 0 $accept: • start $end\l 1 start: • 'a'\l 2 | • empty_a 'a'\l 3 | • 'b'\l 4 | • empty_b 'b'\l 5 | • 'c'\l 6 | • empty_c 'c'\l 7 empty_a: • %empty ['a']\l 8 empty_b: • %empty ['b']\l 9 empty_c: • %empty ['c']\l"] 0 -> 1 [style=solid label="'a'"] 0 -> 2 [style=solid label="'b'"] 0 -> 3 [style=solid label="'c'"] @@ -410,35 +415,36 @@ empty_c: %prec 'c'; "0R8d" [label="R8", fillcolor=5, shape=diamond, style=filled] 0 -> "0R9d" [label="['c']", style=solid] "0R9d" [label="R9", fillcolor=5, shape=diamond, style=filled] - 1 [label="State 1\n\l 1 start: 'a' .\l"] + 1 [label="State 1\n\l 1 start: 'a' •\l"] 1 -> "1R1" [style=solid] "1R1" [label="R1", fillcolor=3, shape=diamond, style=filled] - 2 [label="State 2\n\l 3 start: 'b' .\l"] + 2 [label="State 2\n\l 3 start: 'b' •\l"] 2 -> "2R3" [style=solid] "2R3" [label="R3", fillcolor=3, shape=diamond, style=filled] - 3 [label="State 3\n\l 5 start: 'c' .\l"] + 3 [label="State 3\n\l 5 start: 'c' •\l"] 3 -> "3R5" [style=solid] "3R5" [label="R5", fillcolor=3, shape=diamond, style=filled] - 4 [label="State 4\n\l 0 $accept: start . $end\l"] + 4 [label="State 4\n\l 0 $accept: start • $end\l"] 4 -> 8 [style=solid label="$end"] - 5 [label="State 5\n\l 2 start: empty_a . 'a'\l"] + 5 [label="State 5\n\l 2 start: empty_a • 'a'\l"] 5 -> 9 [style=solid label="'a'"] - 6 [label="State 6\n\l 4 start: empty_b . 'b'\l"] + 6 [label="State 6\n\l 4 start: empty_b • 'b'\l"] 6 -> 10 [style=solid label="'b'"] - 7 [label="State 7\n\l 6 start: empty_c . 'c'\l"] + 7 [label="State 7\n\l 6 start: empty_c • 'c'\l"] 7 -> 11 [style=solid label="'c'"] - 8 [label="State 8\n\l 0 $accept: start $end .\l"] + 8 [label="State 8\n\l 0 $accept: start $end •\l"] 8 -> "8R0" [style=solid] "8R0" [label="Acc", fillcolor=1, shape=diamond, style=filled] - 9 [label="State 9\n\l 2 start: empty_a 'a' .\l"] + 9 [label="State 9\n\l 2 start: empty_a 'a' •\l"] 9 -> "9R2" [style=solid] "9R2" [label="R2", fillcolor=3, shape=diamond, style=filled] - 10 [label="State 10\n\l 4 start: empty_b 'b' .\l"] + 10 [label="State 10\n\l 4 start: empty_b 'b' •\l"] 10 -> "10R4" [style=solid] "10R4" [label="R4", fillcolor=3, shape=diamond, style=filled] - 11 [label="State 11\n\l 6 start: empty_c 'c' .\l"] + 11 [label="State 11\n\l 6 start: empty_c 'c' •\l"] 11 -> "11R6" [style=solid] "11R6" [label="R6", fillcolor=3, shape=diamond, style=filled] +} ]]) ## ---------------------- ## @@ -463,7 +469,12 @@ empty_b: %prec 'b'; empty_c: %prec 'c'; ]], [[ - 0 [label="State 0\n\l 0 $accept: . start $end\l 1 start: . 'a'\l 2 | . empty_a 'a'\l 3 | . 'b'\l 4 | . empty_b 'b'\l 5 | . 'c'\l 6 | . empty_c 'c'\l 7 empty_a: . %empty ['a']\l 8 empty_b: . %empty []\l 9 empty_c: . %empty []\l"] +digraph "input.y" +{ + node [fontname = courier, shape = box, colorscheme = paired6] + edge [fontname = courier] + + 0 [label="State 0\n\l 0 $accept: • start $end\l 1 start: • 'a'\l 2 | • empty_a 'a'\l 3 | • 'b'\l 4 | • empty_b 'b'\l 5 | • 'c'\l 6 | • empty_c 'c'\l 7 empty_a: • %empty ['a']\l 8 empty_b: • %empty []\l 9 empty_c: • %empty []\l"] 0 -> 1 [style=solid label="'b'"] 0 -> 2 [style=solid label="'c'"] 0 -> 3 [style=dashed label="start"] @@ -472,32 +483,33 @@ empty_c: %prec 'c'; 0 -> 6 [style=dashed label="empty_c"] 0 -> "0R7" [style=solid] "0R7" [label="R7", fillcolor=3, shape=diamond, style=filled] - 1 [label="State 1\n\l 3 start: 'b' .\l"] + 1 [label="State 1\n\l 3 start: 'b' •\l"] 1 -> "1R3" [style=solid] "1R3" [label="R3", fillcolor=3, shape=diamond, style=filled] - 2 [label="State 2\n\l 5 start: 'c' .\l"] + 2 [label="State 2\n\l 5 start: 'c' •\l"] 2 -> "2R5" [style=solid] "2R5" [label="R5", fillcolor=3, shape=diamond, style=filled] - 3 [label="State 3\n\l 0 $accept: start . $end\l"] + 3 [label="State 3\n\l 0 $accept: start • $end\l"] 3 -> 7 [style=solid label="$end"] - 4 [label="State 4\n\l 2 start: empty_a . 'a'\l"] + 4 [label="State 4\n\l 2 start: empty_a • 'a'\l"] 4 -> 8 [style=solid label="'a'"] - 5 [label="State 5\n\l 4 start: empty_b . 'b'\l"] + 5 [label="State 5\n\l 4 start: empty_b • 'b'\l"] 5 -> 9 [style=solid label="'b'"] - 6 [label="State 6\n\l 6 start: empty_c . 'c'\l"] + 6 [label="State 6\n\l 6 start: empty_c • 'c'\l"] 6 -> 10 [style=solid label="'c'"] - 7 [label="State 7\n\l 0 $accept: start $end .\l"] + 7 [label="State 7\n\l 0 $accept: start $end •\l"] 7 -> "7R0" [style=solid] "7R0" [label="Acc", fillcolor=1, shape=diamond, style=filled] - 8 [label="State 8\n\l 2 start: empty_a 'a' .\l"] + 8 [label="State 8\n\l 2 start: empty_a 'a' •\l"] 8 -> "8R2" [style=solid] "8R2" [label="R2", fillcolor=3, shape=diamond, style=filled] - 9 [label="State 9\n\l 4 start: empty_b 'b' .\l"] + 9 [label="State 9\n\l 4 start: empty_b 'b' •\l"] 9 -> "9R4" [style=solid] "9R4" [label="R4", fillcolor=3, shape=diamond, style=filled] - 10 [label="State 10\n\l 6 start: empty_c 'c' .\l"] + 10 [label="State 10\n\l 6 start: empty_c 'c' •\l"] 10 -> "10R6" [style=solid] "10R6" [label="R6", fillcolor=3, shape=diamond, style=filled] +} ]]) ## ---------------- ## @@ -511,7 +523,12 @@ a: ; b: ; ]], [[ - 0 [label="State 0\n\l 0 $accept: . exp $end\l 1 exp: . a\l 2 | . b\l 3 a: . %empty [$end]\l 4 b: . %empty [$end]\l"] +digraph "input.y" +{ + node [fontname = courier, shape = box, colorscheme = paired6] + edge [fontname = courier] + + 0 [label="State 0\n\l 0 $accept: • exp $end\l 1 exp: • a\l 2 | • b\l 3 a: • %empty [$end]\l 4 b: • %empty [$end]\l"] 0 -> 1 [style=dashed label="exp"] 0 -> 2 [style=dashed label="a"] 0 -> 3 [style=dashed label="b"] @@ -519,17 +536,18 @@ b: ; "0R3" [label="R3", fillcolor=3, shape=diamond, style=filled] 0 -> "0R4d" [label="[$end]", style=solid] "0R4d" [label="R4", fillcolor=5, shape=diamond, style=filled] - 1 [label="State 1\n\l 0 $accept: exp . $end\l"] + 1 [label="State 1\n\l 0 $accept: exp • $end\l"] 1 -> 4 [style=solid label="$end"] - 2 [label="State 2\n\l 1 exp: a .\l"] + 2 [label="State 2\n\l 1 exp: a •\l"] 2 -> "2R1" [style=solid] "2R1" [label="R1", fillcolor=3, shape=diamond, style=filled] - 3 [label="State 3\n\l 2 exp: b .\l"] + 3 [label="State 3\n\l 2 exp: b •\l"] 3 -> "3R2" [style=solid] "3R2" [label="R2", fillcolor=3, shape=diamond, style=filled] - 4 [label="State 4\n\l 0 $accept: exp $end .\l"] + 4 [label="State 4\n\l 0 $accept: exp $end •\l"] 4 -> "4R0" [style=solid] "4R0" [label="Acc", fillcolor=1, shape=diamond, style=filled] +} ]]) ## ---------------------------------------- ## @@ -544,7 +562,12 @@ b: ; c: ; ]], [[ - 0 [label="State 0\n\l 0 $accept: . exp $end\l 1 exp: . a ';'\l 2 | . a ';'\l 3 | . a '.'\l 4 | . b '?'\l 5 | . b '!'\l 6 | . c '?'\l 7 | . c ';'\l 8 a: . %empty [';', '.']\l 9 b: . %empty ['?', '!']\l 10 c: . %empty [';', '?']\l"] +digraph "input.y" +{ + node [fontname = courier, shape = box, colorscheme = paired6] + edge [fontname = courier] + + 0 [label="State 0\n\l 0 $accept: • exp $end\l 1 exp: • a ';'\l 2 | • a ';'\l 3 | • a '.'\l 4 | • b '?'\l 5 | • b '!'\l 6 | • c '?'\l 7 | • c ';'\l 8 a: • %empty [';', '.']\l 9 b: • %empty ['?', '!']\l 10 c: • %empty [';', '?']\l"] 0 -> 1 [style=dashed label="exp"] 0 -> 2 [style=dashed label="a"] 0 -> 3 [style=dashed label="b"] @@ -555,40 +578,41 @@ c: ; "0R9" [label="R9", fillcolor=3, shape=diamond, style=filled] 0 -> "0R10d" [label="[';', '?']", style=solid] "0R10d" [label="R10", fillcolor=5, shape=diamond, style=filled] - 1 [label="State 1\n\l 0 $accept: exp . $end\l"] + 1 [label="State 1\n\l 0 $accept: exp • $end\l"] 1 -> 5 [style=solid label="$end"] - 2 [label="State 2\n\l 1 exp: a . ';'\l 2 | a . ';'\l 3 | a . '.'\l"] + 2 [label="State 2\n\l 1 exp: a • ';'\l 2 | a • ';'\l 3 | a • '.'\l"] 2 -> 6 [style=solid label="';'"] 2 -> 7 [style=solid label="'.'"] - 3 [label="State 3\n\l 4 exp: b . '?'\l 5 | b . '!'\l"] + 3 [label="State 3\n\l 4 exp: b • '?'\l 5 | b • '!'\l"] 3 -> 8 [style=solid label="'?'"] 3 -> 9 [style=solid label="'!'"] - 4 [label="State 4\n\l 6 exp: c . '?'\l 7 | c . ';'\l"] + 4 [label="State 4\n\l 6 exp: c • '?'\l 7 | c • ';'\l"] 4 -> 10 [style=solid label="';'"] 4 -> 11 [style=solid label="'?'"] - 5 [label="State 5\n\l 0 $accept: exp $end .\l"] + 5 [label="State 5\n\l 0 $accept: exp $end •\l"] 5 -> "5R0" [style=solid] "5R0" [label="Acc", fillcolor=1, shape=diamond, style=filled] - 6 [label="State 6\n\l 1 exp: a ';' . [$end]\l 2 | a ';' . [$end]\l"] + 6 [label="State 6\n\l 1 exp: a ';' • [$end]\l 2 | a ';' • [$end]\l"] 6 -> "6R1" [style=solid] "6R1" [label="R1", fillcolor=3, shape=diamond, style=filled] 6 -> "6R2d" [label="[$end]", style=solid] "6R2d" [label="R2", fillcolor=5, shape=diamond, style=filled] - 7 [label="State 7\n\l 3 exp: a '.' .\l"] + 7 [label="State 7\n\l 3 exp: a '.' •\l"] 7 -> "7R3" [style=solid] "7R3" [label="R3", fillcolor=3, shape=diamond, style=filled] - 8 [label="State 8\n\l 4 exp: b '?' .\l"] + 8 [label="State 8\n\l 4 exp: b '?' •\l"] 8 -> "8R4" [style=solid] "8R4" [label="R4", fillcolor=3, shape=diamond, style=filled] - 9 [label="State 9\n\l 5 exp: b '!' .\l"] + 9 [label="State 9\n\l 5 exp: b '!' •\l"] 9 -> "9R5" [style=solid] "9R5" [label="R5", fillcolor=3, shape=diamond, style=filled] - 10 [label="State 10\n\l 7 exp: c ';' .\l"] + 10 [label="State 10\n\l 7 exp: c ';' •\l"] 10 -> "10R7" [style=solid] "10R7" [label="R7", fillcolor=3, shape=diamond, style=filled] - 11 [label="State 11\n\l 6 exp: c '?' .\l"] + 11 [label="State 11\n\l 6 exp: c '?' •\l"] 11 -> "11R6" [style=solid] "11R6" [label="R6", fillcolor=3, shape=diamond, style=filled] +} ]]) ## ------------------------------------------------------ ## @@ -604,62 +628,67 @@ opexp: exp '+' exp; imm: '0'; ]], [[ - 0 [label="State 0\n\l 0 $accept: . exp $end\l 1 exp: . ifexp\l 2 | . opexp\l 3 | . imm\l 4 ifexp: . \"if\" exp \"then\" exp elseexp\l 7 opexp: . exp '+' exp\l 8 imm: . '0'\l"] +digraph "input.y" +{ + node [fontname = courier, shape = box, colorscheme = paired6] + edge [fontname = courier] + + 0 [label="State 0\n\l 0 $accept: • exp $end\l 1 exp: • ifexp\l 2 | • opexp\l 3 | • imm\l 4 ifexp: • \"if\" exp \"then\" exp elseexp\l 7 opexp: • exp '+' exp\l 8 imm: • '0'\l"] 0 -> 1 [style=solid label="\"if\""] 0 -> 2 [style=solid label="'0'"] 0 -> 3 [style=dashed label="exp"] 0 -> 4 [style=dashed label="ifexp"] 0 -> 5 [style=dashed label="opexp"] 0 -> 6 [style=dashed label="imm"] - 1 [label="State 1\n\l 1 exp: . ifexp\l 2 | . opexp\l 3 | . imm\l 4 ifexp: . \"if\" exp \"then\" exp elseexp\l 4 | \"if\" . exp \"then\" exp elseexp\l 7 opexp: . exp '+' exp\l 8 imm: . '0'\l"] + 1 [label="State 1\n\l 1 exp: • ifexp\l 2 | • opexp\l 3 | • imm\l 4 ifexp: • \"if\" exp \"then\" exp elseexp\l 4 | \"if\" • exp \"then\" exp elseexp\l 7 opexp: • exp '+' exp\l 8 imm: • '0'\l"] 1 -> 1 [style=solid label="\"if\""] 1 -> 2 [style=solid label="'0'"] 1 -> 7 [style=dashed label="exp"] 1 -> 4 [style=dashed label="ifexp"] 1 -> 5 [style=dashed label="opexp"] 1 -> 6 [style=dashed label="imm"] - 2 [label="State 2\n\l 8 imm: '0' .\l"] + 2 [label="State 2\n\l 8 imm: '0' •\l"] 2 -> "2R8" [style=solid] "2R8" [label="R8", fillcolor=3, shape=diamond, style=filled] - 3 [label="State 3\n\l 0 $accept: exp . $end\l 7 opexp: exp . '+' exp\l"] + 3 [label="State 3\n\l 0 $accept: exp • $end\l 7 opexp: exp • '+' exp\l"] 3 -> 8 [style=solid label="$end"] 3 -> 9 [style=solid label="'+'"] - 4 [label="State 4\n\l 1 exp: ifexp .\l"] + 4 [label="State 4\n\l 1 exp: ifexp •\l"] 4 -> "4R1" [style=solid] "4R1" [label="R1", fillcolor=3, shape=diamond, style=filled] - 5 [label="State 5\n\l 2 exp: opexp .\l"] + 5 [label="State 5\n\l 2 exp: opexp •\l"] 5 -> "5R2" [style=solid] "5R2" [label="R2", fillcolor=3, shape=diamond, style=filled] - 6 [label="State 6\n\l 3 exp: imm .\l"] + 6 [label="State 6\n\l 3 exp: imm •\l"] 6 -> "6R3" [style=solid] "6R3" [label="R3", fillcolor=3, shape=diamond, style=filled] - 7 [label="State 7\n\l 4 ifexp: \"if\" exp . \"then\" exp elseexp\l 7 opexp: exp . '+' exp\l"] + 7 [label="State 7\n\l 4 ifexp: \"if\" exp • \"then\" exp elseexp\l 7 opexp: exp • '+' exp\l"] 7 -> 10 [style=solid label="\"then\""] 7 -> 9 [style=solid label="'+'"] - 8 [label="State 8\n\l 0 $accept: exp $end .\l"] + 8 [label="State 8\n\l 0 $accept: exp $end •\l"] 8 -> "8R0" [style=solid] "8R0" [label="Acc", fillcolor=1, shape=diamond, style=filled] - 9 [label="State 9\n\l 1 exp: . ifexp\l 2 | . opexp\l 3 | . imm\l 4 ifexp: . \"if\" exp \"then\" exp elseexp\l 7 opexp: . exp '+' exp\l 7 | exp '+' . exp\l 8 imm: . '0'\l"] + 9 [label="State 9\n\l 1 exp: • ifexp\l 2 | • opexp\l 3 | • imm\l 4 ifexp: • \"if\" exp \"then\" exp elseexp\l 7 opexp: • exp '+' exp\l 7 | exp '+' • exp\l 8 imm: • '0'\l"] 9 -> 1 [style=solid label="\"if\""] 9 -> 2 [style=solid label="'0'"] 9 -> 11 [style=dashed label="exp"] 9 -> 4 [style=dashed label="ifexp"] 9 -> 5 [style=dashed label="opexp"] 9 -> 6 [style=dashed label="imm"] - 10 [label="State 10\n\l 1 exp: . ifexp\l 2 | . opexp\l 3 | . imm\l 4 ifexp: . \"if\" exp \"then\" exp elseexp\l 4 | \"if\" exp \"then\" . exp elseexp\l 7 opexp: . exp '+' exp\l 8 imm: . '0'\l"] + 10 [label="State 10\n\l 1 exp: • ifexp\l 2 | • opexp\l 3 | • imm\l 4 ifexp: • \"if\" exp \"then\" exp elseexp\l 4 | \"if\" exp \"then\" • exp elseexp\l 7 opexp: • exp '+' exp\l 8 imm: • '0'\l"] 10 -> 1 [style=solid label="\"if\""] 10 -> 2 [style=solid label="'0'"] 10 -> 12 [style=dashed label="exp"] 10 -> 4 [style=dashed label="ifexp"] 10 -> 5 [style=dashed label="opexp"] 10 -> 6 [style=dashed label="imm"] - 11 [label="State 11\n\l 7 opexp: exp . '+' exp\l 7 | exp '+' exp . [$end, \"then\", \"else\", '+']\l"] + 11 [label="State 11\n\l 7 opexp: exp • '+' exp\l 7 | exp '+' exp • [$end, \"then\", \"else\", '+']\l"] 11 -> 9 [style=solid label="'+'"] 11 -> "11R7d" [label="['+']", style=solid] "11R7d" [label="R7", fillcolor=5, shape=diamond, style=filled] 11 -> "11R7" [style=solid] "11R7" [label="R7", fillcolor=3, shape=diamond, style=filled] - 12 [label="State 12\n\l 4 ifexp: \"if\" exp \"then\" exp . elseexp\l 5 elseexp: . \"else\" exp\l 6 | . %empty [$end, \"then\", \"else\", '+']\l 7 opexp: exp . '+' exp\l"] + 12 [label="State 12\n\l 4 ifexp: \"if\" exp \"then\" exp • elseexp\l 5 elseexp: • \"else\" exp\l 6 | • %empty [$end, \"then\", \"else\", '+']\l 7 opexp: exp • '+' exp\l"] 12 -> 13 [style=solid label="\"else\""] 12 -> 9 [style=solid label="'+'"] 12 -> 14 [style=dashed label="elseexp"] @@ -667,22 +696,23 @@ imm: '0'; "12R6d" [label="R6", fillcolor=5, shape=diamond, style=filled] 12 -> "12R6" [style=solid] "12R6" [label="R6", fillcolor=3, shape=diamond, style=filled] - 13 [label="State 13\n\l 1 exp: . ifexp\l 2 | . opexp\l 3 | . imm\l 4 ifexp: . \"if\" exp \"then\" exp elseexp\l 5 elseexp: \"else\" . exp\l 7 opexp: . exp '+' exp\l 8 imm: . '0'\l"] + 13 [label="State 13\n\l 1 exp: • ifexp\l 2 | • opexp\l 3 | • imm\l 4 ifexp: • \"if\" exp \"then\" exp elseexp\l 5 elseexp: \"else\" • exp\l 7 opexp: • exp '+' exp\l 8 imm: • '0'\l"] 13 -> 1 [style=solid label="\"if\""] 13 -> 2 [style=solid label="'0'"] 13 -> 15 [style=dashed label="exp"] 13 -> 4 [style=dashed label="ifexp"] 13 -> 5 [style=dashed label="opexp"] 13 -> 6 [style=dashed label="imm"] - 14 [label="State 14\n\l 4 ifexp: \"if\" exp \"then\" exp elseexp .\l"] + 14 [label="State 14\n\l 4 ifexp: \"if\" exp \"then\" exp elseexp •\l"] 14 -> "14R4" [style=solid] "14R4" [label="R4", fillcolor=3, shape=diamond, style=filled] - 15 [label="State 15\n\l 5 elseexp: \"else\" exp . [$end, \"then\", \"else\", '+']\l 7 opexp: exp . '+' exp\l"] + 15 [label="State 15\n\l 5 elseexp: \"else\" exp • [$end, \"then\", \"else\", '+']\l 7 opexp: exp • '+' exp\l"] 15 -> 9 [style=solid label="'+'"] 15 -> "15R5d" [label="['+']", style=solid] "15R5d" [label="R5", fillcolor=5, shape=diamond, style=filled] 15 -> "15R5" [style=solid] "15R5" [label="R5", fillcolor=3, shape=diamond, style=filled] +} ]]) m4_popdef([AT_TEST]) diff --git a/tests/report.at b/tests/report.at index 9e9f1272..f4936aef 100644 --- a/tests/report.at +++ b/tests/report.at @@ -586,14 +586,14 @@ 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 [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 [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 [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\""] @@ -601,69 +601,69 @@ digraph "input.yy" 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 [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 [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 [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 [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 [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 [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 [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 [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 [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 [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 [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 [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 [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 [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 [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 [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 [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] } @@ -1416,32 +1416,32 @@ digraph "input.y" node [fontname = courier, shape = box, colorscheme = paired6] edge [fontname = courier] - 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"] + 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"] 0 -> 1 [style=solid label="\"number\""] 0 -> 2 [style=solid label="\"Ñùṃéℝô\""] 0 -> 3 [style=dashed label="exp"] - 1 [label="State 1\n\l 4 exp: \"number\" .\l"] + 1 [label="State 1\n\l 4 exp: \"number\" •\l"] 1 -> "1R4" [style=solid] "1R4" [label="R4", fillcolor=3, shape=diamond, style=filled] - 2 [label="State 2\n\l 5 exp: \"Ñùṃéℝô\" .\l"] + 2 [label="State 2\n\l 5 exp: \"Ñùṃéℝô\" •\l"] 2 -> "2R5" [style=solid] "2R5" [label="R5", fillcolor=3, shape=diamond, style=filled] - 3 [label="State 3\n\l 0 $accept: exp . $end\l 1 exp: exp . \"⊕\" exp\l 2 | exp . \"+\" exp\l 3 | exp . \"+\" exp\l"] + 3 [label="State 3\n\l 0 $accept: exp • $end\l 1 exp: exp • \"⊕\" exp\l 2 | exp • \"+\" exp\l 3 | exp • \"+\" exp\l"] 3 -> 4 [style=solid label="$end"] 3 -> 5 [style=solid label="\"+\""] 3 -> 6 [style=solid label="\"⊕\""] - 4 [label="State 4\n\l 0 $accept: exp $end .\l"] + 4 [label="State 4\n\l 0 $accept: exp $end •\l"] 4 -> "4R0" [style=solid] "4R0" [label="Acc", fillcolor=1, shape=diamond, style=filled] - 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"] + 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"] 5 -> 1 [style=solid label="\"number\""] 5 -> 2 [style=solid label="\"Ñùṃéℝô\""] 5 -> 7 [style=dashed label="exp"] - 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"] + 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"] 6 -> 1 [style=solid label="\"number\""] 6 -> 2 [style=solid label="\"Ñùṃéℝô\""] 6 -> 8 [style=dashed label="exp"] - 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"] + 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"] 7 -> 6 [style=solid label="\"⊕\""] 7 -> "7R2d" [label="[\"⊕\"]", style=solid] "7R2d" [label="R2", fillcolor=5, shape=diamond, style=filled] @@ -1449,7 +1449,7 @@ digraph "input.y" "7R2" [label="R2", fillcolor=3, shape=diamond, style=filled] 7 -> "7R3d" [label="[$end, \"+\", \"⊕\"]", style=solid] "7R3d" [label="R3", fillcolor=5, shape=diamond, style=filled] - 8 [label="State 8\n\l 1 exp: exp . \"⊕\" exp\l 1 | exp \"⊕\" exp . [$end, \"+\", \"⊕\"]\l 2 | exp . \"+\" exp\l 3 | exp . \"+\" exp\l"] + 8 [label="State 8\n\l 1 exp: exp • \"⊕\" exp\l 1 | exp \"⊕\" exp • [$end, \"+\", \"⊕\"]\l 2 | exp • \"+\" exp\l 3 | exp • \"+\" exp\l"] 8 -> 5 [style=solid label="\"+\""] 8 -> 6 [style=solid label="\"⊕\""] 8 -> "8R1d" [label="[\"+\", \"⊕\"]", style=solid] |