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.
This commit is contained in:
Akim Demaille
2020-07-03 06:36:50 +02:00
parent 0fd542c3e0
commit d7f7fcd9c7
8 changed files with 145 additions and 115 deletions

View File

@@ -3,7 +3,7 @@ digraph "reduce.y"
node [fontname=courier shape=box] node [fontname=courier shape=box]
edge [fontname=courier] 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] 1 -> "1R3" [label="" style=solid]
"1R3" [style=filled shape=diamond fillcolor=yellowgreen label="R3"] "1R3" [style=filled shape=diamond fillcolor=yellowgreen label="R3"]
1 -> "1R4" [label="[\";\"]" style=solid] 1 -> "1R4" [label="[\";\"]" style=solid]

View File

@@ -1,7 +1,7 @@
.------------------. .------------------.
| State 1 | | State 1 |
| 3 a: "0" . [";"] | | 3 a: "0" [";"] |
| 4 b: "0" . ["."] | | 4 b: "0" ["."] |
`------------------' `------------------'
/ \ / \
/ \ ["."] / \ ["."]

View File

@@ -3,7 +3,7 @@ digraph "shift.y"
node [fontname=courier shape=box] node [fontname=courier shape=box]
edge [fontname=courier] 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="\".\""] 3 -> 6 [style=solid label="\".\""]
6 [label="State 6\n 1 exp: a \".\" .\l"] 6 [label="State 6\n 1 exp: a \".\" \l"]
} }

View File

@@ -1,6 +1,6 @@
.----------------. .----------------.
| State 3 | | State 3 |
| 1 exp: a . ";" | | 1 exp: a ";" |
`----------------' `----------------'
| |
| ";" | ";"
@@ -8,5 +8,5 @@
v v
.----------------. .----------------.
| State 6 | | State 6 |
| 1 exp: a ";" . | | 1 exp: a ";" |
`----------------' `----------------'

View File

@@ -7,29 +7,29 @@ digraph "example.y"
node [fontname = courier, shape = box, colorscheme = paired6] node [fontname = courier, shape = box, colorscheme = paired6]
edge [fontname = courier] 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 -> 1 [style=solid label="\"0\""]
0 -> 2 [style=dashed label="exp"] 0 -> 2 [style=dashed label="exp"]
0 -> 3 [style=dashed label="a"] 0 -> 3 [style=dashed label="a"]
0 -> 4 [style=dashed label="b"] 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] 1 -> "1R3" [style=solid]
"1R3" [label="R3", fillcolor=3, shape=diamond, style=filled] "1R3" [label="R3", fillcolor=3, shape=diamond, style=filled]
1 -> "1R4" [label="[\".\"]", style=solid] 1 -> "1R4" [label="[\".\"]", style=solid]
"1R4" [label="R4", fillcolor=3, shape=diamond, style=filled] "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"] 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="\";\""] 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="\".\""] 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] 5 -> "5R0" [style=solid]
"5R0" [label="Acc", fillcolor=1, shape=diamond, style=filled] "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] 6 -> "6R1" [style=solid]
"6R1" [label="R1", fillcolor=3, shape=diamond, style=filled] "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] 7 -> "7R2" [style=solid]
"7R2" [label="R2", fillcolor=3, shape=diamond, style=filled] "7R2" [label="R2", fillcolor=3, shape=diamond, style=filled]
} }

View File

@@ -84,7 +84,7 @@ print_core (struct obstack *oout, state *s)
obstack_1grow (oout, ' '); obstack_1grow (oout, ' ');
} }
obstack_1grow (oout, '.'); obstack_sgrow (oout, "");
if (0 <= *r->rhs) if (0 <= *r->rhs)
for (item_number const *sp = sp1; 0 <= *sp; ++sp) for (item_number const *sp = sp1; 0 <= *sp; ++sp)

View File

@@ -332,13 +332,7 @@ AT_KEYWORDS([[graph]])
AT_DATA([[input.y]], [$2]) AT_DATA([[input.y]], [$2])
AT_BISON_CHECK([[-rall --graph input.y]], [0], [[]], [[ignore]]) AT_BISON_CHECK([[-rall --graph input.y]], [0], [[]], [[ignore]])
AT_CHECK([[grep -v // input.dot]], [0], AT_CHECK([[grep -v // input.dot]], [0],
[[ [$3])
digraph "input.y"
{
node [fontname = courier, shape = box, colorscheme = paired6]
edge [fontname = courier]
]$3[}
]])
AT_CLEANUP AT_CLEANUP
]) ])
@@ -354,27 +348,33 @@ a: ;
b: 'b'; 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 -> 1 [style=dashed label="exp"]
0 -> 2 [style=dashed label="a"] 0 -> 2 [style=dashed label="a"]
0 -> "0R2" [style=solid] 0 -> "0R2" [style=solid]
"0R2" [label="R2", fillcolor=3, shape=diamond, style=filled] "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"] 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="'?'"] 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] 3 -> "3R0" [style=solid]
"3R0" [label="Acc", fillcolor=1, shape=diamond, style=filled] "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 -> 5 [style=solid label="'b'"]
4 -> 6 [style=dashed 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] 5 -> "5R3" [style=solid]
"5R3" [label="R3", fillcolor=3, shape=diamond, style=filled] "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] 6 -> "6R1" [style=solid]
"6R1" [label="R1", fillcolor=3, shape=diamond, style=filled] "6R1" [label="R1", fillcolor=3, shape=diamond, style=filled]
}
]]) ]])
## ------------------------ ## ## ------------------------ ##
@@ -396,7 +396,12 @@ empty_b: %prec 'b';
empty_c: %prec 'c'; 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 -> 1 [style=solid label="'a'"]
0 -> 2 [style=solid label="'b'"] 0 -> 2 [style=solid label="'b'"]
0 -> 3 [style=solid label="'c'"] 0 -> 3 [style=solid label="'c'"]
@@ -410,35 +415,36 @@ empty_c: %prec 'c';
"0R8d" [label="R8", fillcolor=5, shape=diamond, style=filled] "0R8d" [label="R8", fillcolor=5, shape=diamond, style=filled]
0 -> "0R9d" [label="['c']", style=solid] 0 -> "0R9d" [label="['c']", style=solid]
"0R9d" [label="R9", fillcolor=5, shape=diamond, style=filled] "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] 1 -> "1R1" [style=solid]
"1R1" [label="R1", fillcolor=3, shape=diamond, style=filled] "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] 2 -> "2R3" [style=solid]
"2R3" [label="R3", fillcolor=3, shape=diamond, style=filled] "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] 3 -> "3R5" [style=solid]
"3R5" [label="R5", fillcolor=3, shape=diamond, style=filled] "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"] 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'"] 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'"] 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'"] 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] 8 -> "8R0" [style=solid]
"8R0" [label="Acc", fillcolor=1, shape=diamond, style=filled] "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] 9 -> "9R2" [style=solid]
"9R2" [label="R2", fillcolor=3, shape=diamond, style=filled] "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] 10 -> "10R4" [style=solid]
"10R4" [label="R4", fillcolor=3, shape=diamond, style=filled] "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] 11 -> "11R6" [style=solid]
"11R6" [label="R6", fillcolor=3, shape=diamond, style=filled] "11R6" [label="R6", fillcolor=3, shape=diamond, style=filled]
}
]]) ]])
## ---------------------- ## ## ---------------------- ##
@@ -463,7 +469,12 @@ empty_b: %prec 'b';
empty_c: %prec 'c'; 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 -> 1 [style=solid label="'b'"]
0 -> 2 [style=solid label="'c'"] 0 -> 2 [style=solid label="'c'"]
0 -> 3 [style=dashed label="start"] 0 -> 3 [style=dashed label="start"]
@@ -472,32 +483,33 @@ empty_c: %prec 'c';
0 -> 6 [style=dashed label="empty_c"] 0 -> 6 [style=dashed label="empty_c"]
0 -> "0R7" [style=solid] 0 -> "0R7" [style=solid]
"0R7" [label="R7", fillcolor=3, shape=diamond, style=filled] "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] 1 -> "1R3" [style=solid]
"1R3" [label="R3", fillcolor=3, shape=diamond, style=filled] "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] 2 -> "2R5" [style=solid]
"2R5" [label="R5", fillcolor=3, shape=diamond, style=filled] "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"] 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'"] 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'"] 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'"] 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] 7 -> "7R0" [style=solid]
"7R0" [label="Acc", fillcolor=1, shape=diamond, style=filled] "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] 8 -> "8R2" [style=solid]
"8R2" [label="R2", fillcolor=3, shape=diamond, style=filled] "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] 9 -> "9R4" [style=solid]
"9R4" [label="R4", fillcolor=3, shape=diamond, style=filled] "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] 10 -> "10R6" [style=solid]
"10R6" [label="R6", fillcolor=3, shape=diamond, style=filled] "10R6" [label="R6", fillcolor=3, shape=diamond, style=filled]
}
]]) ]])
## ---------------- ## ## ---------------- ##
@@ -511,7 +523,12 @@ a: ;
b: ; 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 -> 1 [style=dashed label="exp"]
0 -> 2 [style=dashed label="a"] 0 -> 2 [style=dashed label="a"]
0 -> 3 [style=dashed label="b"] 0 -> 3 [style=dashed label="b"]
@@ -519,17 +536,18 @@ b: ;
"0R3" [label="R3", fillcolor=3, shape=diamond, style=filled] "0R3" [label="R3", fillcolor=3, shape=diamond, style=filled]
0 -> "0R4d" [label="[$end]", style=solid] 0 -> "0R4d" [label="[$end]", style=solid]
"0R4d" [label="R4", fillcolor=5, shape=diamond, style=filled] "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"] 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] 2 -> "2R1" [style=solid]
"2R1" [label="R1", fillcolor=3, shape=diamond, style=filled] "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] 3 -> "3R2" [style=solid]
"3R2" [label="R2", fillcolor=3, shape=diamond, style=filled] "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] 4 -> "4R0" [style=solid]
"4R0" [label="Acc", fillcolor=1, shape=diamond, style=filled] "4R0" [label="Acc", fillcolor=1, shape=diamond, style=filled]
}
]]) ]])
## ---------------------------------------- ## ## ---------------------------------------- ##
@@ -544,7 +562,12 @@ b: ;
c: ; 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 -> 1 [style=dashed label="exp"]
0 -> 2 [style=dashed label="a"] 0 -> 2 [style=dashed label="a"]
0 -> 3 [style=dashed label="b"] 0 -> 3 [style=dashed label="b"]
@@ -555,40 +578,41 @@ c: ;
"0R9" [label="R9", fillcolor=3, shape=diamond, style=filled] "0R9" [label="R9", fillcolor=3, shape=diamond, style=filled]
0 -> "0R10d" [label="[';', '?']", style=solid] 0 -> "0R10d" [label="[';', '?']", style=solid]
"0R10d" [label="R10", fillcolor=5, shape=diamond, style=filled] "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"] 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 -> 6 [style=solid label="';'"]
2 -> 7 [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 -> 8 [style=solid label="'?'"]
3 -> 9 [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 -> 10 [style=solid label="';'"]
4 -> 11 [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] 5 -> "5R0" [style=solid]
"5R0" [label="Acc", fillcolor=1, shape=diamond, style=filled] "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] 6 -> "6R1" [style=solid]
"6R1" [label="R1", fillcolor=3, shape=diamond, style=filled] "6R1" [label="R1", fillcolor=3, shape=diamond, style=filled]
6 -> "6R2d" [label="[$end]", style=solid] 6 -> "6R2d" [label="[$end]", style=solid]
"6R2d" [label="R2", fillcolor=5, shape=diamond, style=filled] "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] 7 -> "7R3" [style=solid]
"7R3" [label="R3", fillcolor=3, shape=diamond, style=filled] "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] 8 -> "8R4" [style=solid]
"8R4" [label="R4", fillcolor=3, shape=diamond, style=filled] "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] 9 -> "9R5" [style=solid]
"9R5" [label="R5", fillcolor=3, shape=diamond, style=filled] "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] 10 -> "10R7" [style=solid]
"10R7" [label="R7", fillcolor=3, shape=diamond, style=filled] "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] 11 -> "11R6" [style=solid]
"11R6" [label="R6", fillcolor=3, shape=diamond, style=filled] "11R6" [label="R6", fillcolor=3, shape=diamond, style=filled]
}
]]) ]])
## ------------------------------------------------------ ## ## ------------------------------------------------------ ##
@@ -604,62 +628,67 @@ opexp: exp '+' exp;
imm: '0'; 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 -> 1 [style=solid label="\"if\""]
0 -> 2 [style=solid label="'0'"] 0 -> 2 [style=solid label="'0'"]
0 -> 3 [style=dashed label="exp"] 0 -> 3 [style=dashed label="exp"]
0 -> 4 [style=dashed label="ifexp"] 0 -> 4 [style=dashed label="ifexp"]
0 -> 5 [style=dashed label="opexp"] 0 -> 5 [style=dashed label="opexp"]
0 -> 6 [style=dashed label="imm"] 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 -> 1 [style=solid label="\"if\""]
1 -> 2 [style=solid label="'0'"] 1 -> 2 [style=solid label="'0'"]
1 -> 7 [style=dashed label="exp"] 1 -> 7 [style=dashed label="exp"]
1 -> 4 [style=dashed label="ifexp"] 1 -> 4 [style=dashed label="ifexp"]
1 -> 5 [style=dashed label="opexp"] 1 -> 5 [style=dashed label="opexp"]
1 -> 6 [style=dashed label="imm"] 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] 2 -> "2R8" [style=solid]
"2R8" [label="R8", fillcolor=3, shape=diamond, style=filled] "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 -> 8 [style=solid label="$end"]
3 -> 9 [style=solid label="'+'"] 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] 4 -> "4R1" [style=solid]
"4R1" [label="R1", fillcolor=3, shape=diamond, style=filled] "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] 5 -> "5R2" [style=solid]
"5R2" [label="R2", fillcolor=3, shape=diamond, style=filled] "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] 6 -> "6R3" [style=solid]
"6R3" [label="R3", fillcolor=3, shape=diamond, style=filled] "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 -> 10 [style=solid label="\"then\""]
7 -> 9 [style=solid label="'+'"] 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] 8 -> "8R0" [style=solid]
"8R0" [label="Acc", fillcolor=1, shape=diamond, style=filled] "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 -> 1 [style=solid label="\"if\""]
9 -> 2 [style=solid label="'0'"] 9 -> 2 [style=solid label="'0'"]
9 -> 11 [style=dashed label="exp"] 9 -> 11 [style=dashed label="exp"]
9 -> 4 [style=dashed label="ifexp"] 9 -> 4 [style=dashed label="ifexp"]
9 -> 5 [style=dashed label="opexp"] 9 -> 5 [style=dashed label="opexp"]
9 -> 6 [style=dashed label="imm"] 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 -> 1 [style=solid label="\"if\""]
10 -> 2 [style=solid label="'0'"] 10 -> 2 [style=solid label="'0'"]
10 -> 12 [style=dashed label="exp"] 10 -> 12 [style=dashed label="exp"]
10 -> 4 [style=dashed label="ifexp"] 10 -> 4 [style=dashed label="ifexp"]
10 -> 5 [style=dashed label="opexp"] 10 -> 5 [style=dashed label="opexp"]
10 -> 6 [style=dashed label="imm"] 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 -> 9 [style=solid label="'+'"]
11 -> "11R7d" [label="['+']", style=solid] 11 -> "11R7d" [label="['+']", style=solid]
"11R7d" [label="R7", fillcolor=5, shape=diamond, style=filled] "11R7d" [label="R7", fillcolor=5, shape=diamond, style=filled]
11 -> "11R7" [style=solid] 11 -> "11R7" [style=solid]
"11R7" [label="R7", fillcolor=3, shape=diamond, style=filled] "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 -> 13 [style=solid label="\"else\""]
12 -> 9 [style=solid label="'+'"] 12 -> 9 [style=solid label="'+'"]
12 -> 14 [style=dashed label="elseexp"] 12 -> 14 [style=dashed label="elseexp"]
@@ -667,22 +696,23 @@ imm: '0';
"12R6d" [label="R6", fillcolor=5, shape=diamond, style=filled] "12R6d" [label="R6", fillcolor=5, shape=diamond, style=filled]
12 -> "12R6" [style=solid] 12 -> "12R6" [style=solid]
"12R6" [label="R6", fillcolor=3, shape=diamond, style=filled] "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 -> 1 [style=solid label="\"if\""]
13 -> 2 [style=solid label="'0'"] 13 -> 2 [style=solid label="'0'"]
13 -> 15 [style=dashed label="exp"] 13 -> 15 [style=dashed label="exp"]
13 -> 4 [style=dashed label="ifexp"] 13 -> 4 [style=dashed label="ifexp"]
13 -> 5 [style=dashed label="opexp"] 13 -> 5 [style=dashed label="opexp"]
13 -> 6 [style=dashed label="imm"] 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] 14 -> "14R4" [style=solid]
"14R4" [label="R4", fillcolor=3, shape=diamond, style=filled] "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 -> 9 [style=solid label="'+'"]
15 -> "15R5d" [label="['+']", style=solid] 15 -> "15R5d" [label="['+']", style=solid]
"15R5d" [label="R5", fillcolor=5, shape=diamond, style=filled] "15R5d" [label="R5", fillcolor=5, shape=diamond, style=filled]
15 -> "15R5" [style=solid] 15 -> "15R5" [style=solid]
"15R5" [label="R5", fillcolor=3, shape=diamond, style=filled] "15R5" [label="R5", fillcolor=3, shape=diamond, style=filled]
}
]]) ]])
m4_popdef([AT_TEST]) m4_popdef([AT_TEST])

View File

@@ -586,14 +586,14 @@ digraph "input.yy"
node [fontname = courier, shape = box, colorscheme = paired6] node [fontname = courier, shape = box, colorscheme = paired6]
edge [fontname = courier] 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 -> 1 [style=dashed label="unit"]
0 -> 2 [style=dashed label="assignments"] 0 -> 2 [style=dashed label="assignments"]
0 -> "0R2" [style=solid] 0 -> "0R2" [style=solid]
"0R2" [label="R2", fillcolor=3, shape=diamond, style=filled] "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\""] 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 -> 4 [style=solid label="\"incr\""]
2 -> 5 [style=solid label="\"identifier\""] 2 -> 5 [style=solid label="\"identifier\""]
2 -> 6 [style=solid label="\"number\""] 2 -> 6 [style=solid label="\"number\""]
@@ -601,69 +601,69 @@ digraph "input.yy"
2 -> 8 [style=dashed label="assignment"] 2 -> 8 [style=dashed label="assignment"]
2 -> 9 [style=dashed label="id"] 2 -> 9 [style=dashed label="id"]
2 -> 10 [style=dashed label="exp"] 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] 3 -> "3R0" [style=solid]
"3R0" [label="Acc", fillcolor=1, shape=diamond, style=filled] "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 -> 4 [style=solid label="\"incr\""]
4 -> 11 [style=solid label="\"identifier\""] 4 -> 11 [style=solid label="\"identifier\""]
4 -> 6 [style=solid label="\"number\""] 4 -> 6 [style=solid label="\"number\""]
4 -> 7 [style=solid label="\"(\""] 4 -> 7 [style=solid label="\"(\""]
4 -> 12 [style=dashed label="exp"] 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] 5 -> "5R5" [style=solid]
"5R5" [label="R5", fillcolor=3, shape=diamond, style=filled] "5R5" [label="R5", fillcolor=3, shape=diamond, style=filled]
5 -> "5R10" [label="[\"end of file\"]", style=solid] 5 -> "5R10" [label="[\"end of file\"]", style=solid]
"5R10" [label="R10", fillcolor=3, shape=diamond, style=filled] "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] 6 -> "6R11" [style=solid]
"6R11" [label="R11", fillcolor=3, shape=diamond, style=filled] "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 -> 4 [style=solid label="\"incr\""]
7 -> 11 [style=solid label="\"identifier\""] 7 -> 11 [style=solid label="\"identifier\""]
7 -> 6 [style=solid label="\"number\""] 7 -> 6 [style=solid label="\"number\""]
7 -> 7 [style=solid label="\"(\""] 7 -> 7 [style=solid label="\"(\""]
7 -> 13 [style=dashed label="exp"] 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] 8 -> "8R3" [style=solid]
"8R3" [label="R3", fillcolor=3, shape=diamond, style=filled] "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="\":=\""] 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] 10 -> "10R1" [style=solid]
"10R1" [label="R1", fillcolor=3, shape=diamond, style=filled] "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] 11 -> "11R10" [style=solid]
"11R10" [label="R10", fillcolor=3, shape=diamond, style=filled] "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 -> 15 [style=dashed label="@1"]
12 -> "12R6" [style=solid] 12 -> "12R6" [style=solid]
"12R6" [label="R6", fillcolor=3, shape=diamond, style=filled] "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="\")\""] 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 -> 4 [style=solid label="\"incr\""]
14 -> 11 [style=solid label="\"identifier\""] 14 -> 11 [style=solid label="\"identifier\""]
14 -> 6 [style=solid label="\"number\""] 14 -> 6 [style=solid label="\"number\""]
14 -> 7 [style=solid label="\"(\""] 14 -> 7 [style=solid label="\"(\""]
14 -> 17 [style=dashed label="exp"] 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 -> 18 [style=dashed label="@2"]
15 -> "15R7" [style=solid] 15 -> "15R7" [style=solid]
"15R7" [label="R7", fillcolor=3, shape=diamond, style=filled] "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] 16 -> "16R9" [style=solid]
"16R9" [label="R9", fillcolor=3, shape=diamond, style=filled] "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] 17 -> "17R4" [style=solid]
"17R4" [label="R4", fillcolor=3, shape=diamond, style=filled] "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 -> 4 [style=solid label="\"incr\""]
18 -> 11 [style=solid label="\"identifier\""] 18 -> 11 [style=solid label="\"identifier\""]
18 -> 6 [style=solid label="\"number\""] 18 -> 6 [style=solid label="\"number\""]
18 -> 7 [style=solid label="\"(\""] 18 -> 7 [style=solid label="\"(\""]
18 -> 19 [style=dashed label="exp"] 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] 19 -> "19R8" [style=solid]
"19R8" [label="R8", fillcolor=3, shape=diamond, style=filled] "19R8" [label="R8", fillcolor=3, shape=diamond, style=filled]
} }
@@ -1416,32 +1416,32 @@ digraph "input.y"
node [fontname = courier, shape = box, colorscheme = paired6] node [fontname = courier, shape = box, colorscheme = paired6]
edge [fontname = courier] 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 -> 1 [style=solid label="\"number\""]
0 -> 2 [style=solid label="\"Ñùṃéℝô\""] 0 -> 2 [style=solid label="\"Ñùṃéℝô\""]
0 -> 3 [style=dashed label="exp"] 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] 1 -> "1R4" [style=solid]
"1R4" [label="R4", fillcolor=3, shape=diamond, style=filled] "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] 2 -> "2R5" [style=solid]
"2R5" [label="R5", fillcolor=3, shape=diamond, style=filled] "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 -> 4 [style=solid label="$end"]
3 -> 5 [style=solid label="\"+\""] 3 -> 5 [style=solid label="\"+\""]
3 -> 6 [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] 4 -> "4R0" [style=solid]
"4R0" [label="Acc", fillcolor=1, shape=diamond, style=filled] "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 -> 1 [style=solid label="\"number\""]
5 -> 2 [style=solid label="\"Ñùṃéℝô\""] 5 -> 2 [style=solid label="\"Ñùṃéℝô\""]
5 -> 7 [style=dashed label="exp"] 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 -> 1 [style=solid label="\"number\""]
6 -> 2 [style=solid label="\"Ñùṃéℝô\""] 6 -> 2 [style=solid label="\"Ñùṃéℝô\""]
6 -> 8 [style=dashed label="exp"] 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 -> 6 [style=solid label="\"⊕\""]
7 -> "7R2d" [label="[\"⊕\"]", style=solid] 7 -> "7R2d" [label="[\"⊕\"]", style=solid]
"7R2d" [label="R2", fillcolor=5, shape=diamond, style=filled] "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] "7R2" [label="R2", fillcolor=3, shape=diamond, style=filled]
7 -> "7R3d" [label="[$end, \"+\", \"⊕\"]", style=solid] 7 -> "7R3d" [label="[$end, \"+\", \"⊕\"]", style=solid]
"7R3d" [label="R3", fillcolor=5, shape=diamond, style=filled] "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 -> 5 [style=solid label="\"+\""]
8 -> 6 [style=solid label="\"⊕\""] 8 -> 6 [style=solid label="\"⊕\""]
8 -> "8R1d" [label="[\"+\", \"⊕\"]", style=solid] 8 -> "8R1d" [label="[\"+\", \"⊕\"]", style=solid]