The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
digraph G {
#concentrate = true

  "g0" [label="0: $start -> start $end", shape = doubleoctagon, fontcolor=blue, color=blue ]
  "g1" [label="1: start -> input", shape = box, fontcolor=blue, color=blue ]
  "g2" [label="2: STAR-1 -> STAR-1 line", shape = box, fontcolor=blue, color=blue ]
  "g3" [label="3: STAR-1 -> /* empty */", shape = box, fontcolor=blue, color=blue ]
  "g4" [label="4: input -> STAR-1", shape = box, fontcolor=blue, color=blue ]
  "g5" [label="5: line -> '\\n'", shape = box, fontcolor=blue, color=blue ]
  "g6" [label="6: line -> exp '\\n'", shape = box, fontcolor=blue, color=blue ]
  "g7" [label="7: line -> error '\\n'", shape = box, fontcolor=blue, color=blue ]
  "g8" [label="8: exp -> NUM", shape = box, fontcolor=blue, color=blue ]
  "g9" [label="9: exp -> VAR", shape = box, fontcolor=blue, color=blue ]
  "g10" [label="10: exp -> VAR '=' exp", shape = box, fontcolor=blue, color=blue ]
  "g11" [label="11: exp -> exp '+' exp", shape = box, fontcolor=blue, color=blue ]
  "g12" [label="12: exp -> exp '-' exp", shape = box, fontcolor=blue, color=blue ]
  "g13" [label="13: exp -> exp '*' exp", shape = box, fontcolor=blue, color=blue ]
  "g14" [label="14: exp -> exp '/' exp", shape = box, fontcolor=blue, color=blue ]
  "g15" [label="15: exp -> '-' exp", shape = box, fontcolor=blue, color=blue ]
  "g16" [label="16: exp -> exp '^' exp", shape = box, fontcolor=blue, color=blue ]
  "g17" [label="17: exp -> '(' exp ')'", shape = box, fontcolor=blue, color=blue ]
  g0 ->g1 [style=dotted];
  g1 ->g2 [style=dotted];
  g2 ->g3 [style=dotted];
  g3 ->g4 [style=dotted];
  g4 ->g5 [style=dotted];
  g5 ->g6 [style=dotted];
  g6 ->g7 [style=dotted];
  g7 ->g8 [style=dotted];
  g8 ->g9 [style=dotted];
  g9 ->g10 [style=dotted];
  g10 ->g11 [style=dotted];
  g11 ->g12 [style=dotted];
  g12 ->g13 [style=dotted];
  g13 ->g14 [style=dotted];
  g14 ->g15 [style=dotted];
  g15 ->g16 [style=dotted];
  g16 ->g17 [style=dotted];
13 [shape = diamond, fontcolor=red, color=red]
23 [shape = diamond, fontcolor=red, color=red]
24 [shape = diamond, fontcolor=red, color=red]
25 [shape = diamond, fontcolor=red, color=red]
26 [shape = diamond, fontcolor=red, color=red]
27 [shape = diamond, fontcolor=red, color=red]
29 [shape = diamond, fontcolor=red, color=red]
0 [ label = "0\n$start -> . start $end", shape = plaintext]
0 -> 2 [label = "input", arrowhead = odot, color = "red", fontcolor = "red"]
0 -> 1 [label = "STAR-1", arrowhead = odot, color = "red", fontcolor = "red"]
0 -> 3 [label = "start", arrowhead = odot, color = "red", fontcolor = "red"]
0 -> "g3" [label = "$default", arrowhead=dot, color = "blue", fontcolor = "blue"]
1 [ label = "1\nSTAR-1 -> STAR-1 . line", shape = plaintext]
1 -> 7 [label = "'('"]
1 -> 4 [label = "'-'"]
1 -> 9 [label = "'\\n'"]
1 -> 5 [label = "NUM"]
1 -> 8 [label = "VAR"]
1 -> 10 [label = "error"]
1 -> 6 [label = "exp", arrowhead = odot, color = "red", fontcolor = "red"]
1 -> 11 [label = "line", arrowhead = odot, color = "red", fontcolor = "red"]
1 -> "g4" [label = "$end", arrowhead=dot, color = "blue", fontcolor = "blue"]
2 [ label = "2\n", shape = plaintext]
2 -> "g1" [label = "$default", arrowhead=dot, color = "blue", fontcolor = "blue"]
3 [ label = "3\n$start -> start . $end", shape = plaintext]
3 -> 12 [label = "$end"]
4 [ label = "4\nexp -> '-' . exp", shape = plaintext]
4 -> 7 [label = "'('"]
4 -> 4 [label = "'-'"]
4 -> 5 [label = "NUM"]
4 -> 8 [label = "VAR"]
4 -> 13 [label = "exp", arrowhead = odot, color = "red", fontcolor = "red"]
5 [ label = "5\n", shape = plaintext]
5 -> "g8" [label = "$default", arrowhead=dot, color = "blue", fontcolor = "blue"]
6 [ label = "6\nline -> exp . '\n'\nexp -> exp . '+' exp\nexp -> exp . '-' exp\nexp -> exp . '*' exp\nexp -> exp . '/' exp\nexp -> exp . '^' exp", shape = plaintext]
6 -> 16 [label = "'*'"]
6 -> 17 [label = "'+'"]
6 -> 14 [label = "'-'"]
6 -> 19 [label = "'/'"]
6 -> 18 [label = "'\\n'"]
6 -> 15 [label = "'^'"]
7 [ label = "7\nexp -> '(' . exp ')'", shape = plaintext]
7 -> 7 [label = "'('"]
7 -> 4 [label = "'-'"]
7 -> 5 [label = "NUM"]
7 -> 8 [label = "VAR"]
7 -> 20 [label = "exp", arrowhead = odot, color = "red", fontcolor = "red"]
8 [ label = "8\nexp -> VAR . '=' exp", shape = plaintext]
8 -> 21 [label = "'='"]
8 -> "g9" [label = "')'", arrowhead=dot, color = "blue", fontcolor = "blue"]
8 -> "g9" [label = "'*'", arrowhead=dot, color = "blue", fontcolor = "blue"]
8 -> "g9" [label = "'+'", arrowhead=dot, color = "blue", fontcolor = "blue"]
8 -> "g9" [label = "'-'", arrowhead=dot, color = "blue", fontcolor = "blue"]
8 -> "g9" [label = "'/'", arrowhead=dot, color = "blue", fontcolor = "blue"]
8 -> "g9" [label = "'\n'", arrowhead=dot, color = "blue", fontcolor = "blue"]
8 -> "g9" [label = "'^'", arrowhead=dot, color = "blue", fontcolor = "blue"]
9 [ label = "9\n", shape = plaintext]
9 -> "g5" [label = "$default", arrowhead=dot, color = "blue", fontcolor = "blue"]
10 [ label = "10\nline -> error . '\n'", shape = plaintext]
10 -> 22 [label = "'\\n'"]
11 [ label = "11\n", shape = plaintext]
11 -> "g2" [label = "$default", arrowhead=dot, color = "blue", fontcolor = "blue"]
12 [ label = "12\n", shape = plaintext]
12 [shape = doublecircle]
12 -> "g0" [arrowhead = dot, color = blue]
13 [ label = "13\nexp -> exp . '+' exp\nexp -> exp . '-' exp\nexp -> exp . '*' exp\nexp -> exp . '/' exp\nexp -> exp . '^' exp"]
13 -> 16 [label = "'*'"]
13 -> 17 [label = "'+'"]
13 -> 14 [label = "'-'"]
13 -> 19 [label = "'/'"]
13 -> 15 [label = "'^'"]
13 -> "g15" [label = "')'", arrowhead=dot, color = "blue", fontcolor = "blue"]
13 -> "g15" [label = "'\n'", arrowhead=dot, color = "blue", fontcolor = "blue"]
13 -> "g15" [label = "'*'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
13 -> "g15" [label = "'+'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
13 -> "g15" [label = "'-'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
13 -> "g15" [label = "'/'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
13 -> "g15" [label = "'^'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
14 [ label = "14\nexp -> exp '-' . exp", shape = plaintext]
14 -> 7 [label = "'('"]
14 -> 4 [label = "'-'"]
14 -> 5 [label = "NUM"]
14 -> 8 [label = "VAR"]
14 -> 23 [label = "exp", arrowhead = odot, color = "red", fontcolor = "red"]
15 [ label = "15\nexp -> exp '^' . exp", shape = plaintext]
15 -> 7 [label = "'('"]
15 -> 4 [label = "'-'"]
15 -> 5 [label = "NUM"]
15 -> 8 [label = "VAR"]
15 -> 24 [label = "exp", arrowhead = odot, color = "red", fontcolor = "red"]
16 [ label = "16\nexp -> exp '*' . exp", shape = plaintext]
16 -> 7 [label = "'('"]
16 -> 4 [label = "'-'"]
16 -> 5 [label = "NUM"]
16 -> 8 [label = "VAR"]
16 -> 25 [label = "exp", arrowhead = odot, color = "red", fontcolor = "red"]
17 [ label = "17\nexp -> exp '+' . exp", shape = plaintext]
17 -> 7 [label = "'('"]
17 -> 4 [label = "'-'"]
17 -> 5 [label = "NUM"]
17 -> 8 [label = "VAR"]
17 -> 26 [label = "exp", arrowhead = odot, color = "red", fontcolor = "red"]
18 [ label = "18\n", shape = plaintext]
18 -> "g6" [label = "$default", arrowhead=dot, color = "blue", fontcolor = "blue"]
19 [ label = "19\nexp -> exp '/' . exp", shape = plaintext]
19 -> 7 [label = "'('"]
19 -> 4 [label = "'-'"]
19 -> 5 [label = "NUM"]
19 -> 8 [label = "VAR"]
19 -> 27 [label = "exp", arrowhead = odot, color = "red", fontcolor = "red"]
20 [ label = "20\nexp -> exp . '+' exp\nexp -> exp . '-' exp\nexp -> exp . '*' exp\nexp -> exp . '/' exp\nexp -> exp . '^' exp\nexp -> '(' exp . ')'", shape = plaintext]
20 -> 28 [label = "')'"]
20 -> 16 [label = "'*'"]
20 -> 17 [label = "'+'"]
20 -> 14 [label = "'-'"]
20 -> 19 [label = "'/'"]
20 -> 15 [label = "'^'"]
21 [ label = "21\nexp -> VAR '=' . exp", shape = plaintext]
21 -> 7 [label = "'('"]
21 -> 4 [label = "'-'"]
21 -> 5 [label = "NUM"]
21 -> 8 [label = "VAR"]
21 -> 29 [label = "exp", arrowhead = odot, color = "red", fontcolor = "red"]
22 [ label = "22\n", shape = plaintext]
22 -> "g7" [label = "$default", arrowhead=dot, color = "blue", fontcolor = "blue"]
23 [ label = "23\nexp -> exp . '+' exp\nexp -> exp . '-' exp\nexp -> exp . '*' exp\nexp -> exp . '/' exp\nexp -> exp . '^' exp"]
23 -> 16 [label = "'*'"]
23 -> 17 [label = "'+'"]
23 -> 14 [label = "'-'"]
23 -> 19 [label = "'/'"]
23 -> 15 [label = "'^'"]
23 -> "g12" [label = "')'", arrowhead=dot, color = "blue", fontcolor = "blue"]
23 -> "g12" [label = "'\n'", arrowhead=dot, color = "blue", fontcolor = "blue"]
23 -> "g12" [label = "'*'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
23 -> "g12" [label = "'+'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
23 -> "g12" [label = "'-'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
23 -> "g12" [label = "'/'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
23 -> "g12" [label = "'^'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
24 [ label = "24\nexp -> exp . '+' exp\nexp -> exp . '-' exp\nexp -> exp . '*' exp\nexp -> exp . '/' exp\nexp -> exp . '^' exp"]
24 -> 16 [label = "'*'"]
24 -> 17 [label = "'+'"]
24 -> 14 [label = "'-'"]
24 -> 19 [label = "'/'"]
24 -> 15 [label = "'^'"]
24 -> "g16" [label = "')'", arrowhead=dot, color = "blue", fontcolor = "blue"]
24 -> "g16" [label = "'\n'", arrowhead=dot, color = "blue", fontcolor = "blue"]
24 -> "g16" [label = "'*'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
24 -> "g16" [label = "'+'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
24 -> "g16" [label = "'-'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
24 -> "g16" [label = "'/'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
24 -> "g16" [label = "'^'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
25 [ label = "25\nexp -> exp . '+' exp\nexp -> exp . '-' exp\nexp -> exp . '*' exp\nexp -> exp . '/' exp\nexp -> exp . '^' exp"]
25 -> 16 [label = "'*'"]
25 -> 17 [label = "'+'"]
25 -> 14 [label = "'-'"]
25 -> 19 [label = "'/'"]
25 -> 15 [label = "'^'"]
25 -> "g13" [label = "')'", arrowhead=dot, color = "blue", fontcolor = "blue"]
25 -> "g13" [label = "'\n'", arrowhead=dot, color = "blue", fontcolor = "blue"]
25 -> "g13" [label = "'*'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
25 -> "g13" [label = "'+'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
25 -> "g13" [label = "'-'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
25 -> "g13" [label = "'/'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
25 -> "g13" [label = "'^'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
26 [ label = "26\nexp -> exp . '+' exp\nexp -> exp . '-' exp\nexp -> exp . '*' exp\nexp -> exp . '/' exp\nexp -> exp . '^' exp"]
26 -> 16 [label = "'*'"]
26 -> 17 [label = "'+'"]
26 -> 14 [label = "'-'"]
26 -> 19 [label = "'/'"]
26 -> 15 [label = "'^'"]
26 -> "g11" [label = "')'", arrowhead=dot, color = "blue", fontcolor = "blue"]
26 -> "g11" [label = "'\n'", arrowhead=dot, color = "blue", fontcolor = "blue"]
26 -> "g11" [label = "'*'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
26 -> "g11" [label = "'+'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
26 -> "g11" [label = "'-'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
26 -> "g11" [label = "'/'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
26 -> "g11" [label = "'^'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
27 [ label = "27\nexp -> exp . '+' exp\nexp -> exp . '-' exp\nexp -> exp . '*' exp\nexp -> exp . '/' exp\nexp -> exp . '^' exp"]
27 -> 16 [label = "'*'"]
27 -> 17 [label = "'+'"]
27 -> 14 [label = "'-'"]
27 -> 19 [label = "'/'"]
27 -> 15 [label = "'^'"]
27 -> "g14" [label = "')'", arrowhead=dot, color = "blue", fontcolor = "blue"]
27 -> "g14" [label = "'\n'", arrowhead=dot, color = "blue", fontcolor = "blue"]
27 -> "g14" [label = "'*'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
27 -> "g14" [label = "'+'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
27 -> "g14" [label = "'-'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
27 -> "g14" [label = "'/'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
27 -> "g14" [label = "'^'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
28 [ label = "28\n", shape = plaintext]
28 -> "g17" [label = "$default", arrowhead=dot, color = "blue", fontcolor = "blue"]
29 [ label = "29\nexp -> exp . '+' exp\nexp -> exp . '-' exp\nexp -> exp . '*' exp\nexp -> exp . '/' exp\nexp -> exp . '^' exp"]
29 -> 16 [label = "'*'"]
29 -> 17 [label = "'+'"]
29 -> 14 [label = "'-'"]
29 -> 19 [label = "'/'"]
29 -> 15 [label = "'^'"]
29 -> "g10" [label = "')'", arrowhead=dot, color = "blue", fontcolor = "blue"]
29 -> "g10" [label = "'\n'", arrowhead=dot, color = "blue", fontcolor = "blue"]
29 -> "g10" [label = "'*'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
29 -> "g10" [label = "'+'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
29 -> "g10" [label = "'-'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
29 -> "g10" [label = "'/'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]
29 -> "g10" [label = "'^'", arrowhead=dot, style=dotted, color = "red", fontcolor = "red"]

}