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]
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]

View File

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

View File

@@ -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"]
}

View File

@@ -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 ";" |
`----------------'

View File

@@ -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]
}

View File

@@ -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)

View File

@@ -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])

View File

@@ -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]