blob: 43702b0b2ddf4a6b6d7a5660164d911499c0818a [file] [log] [blame]
Emma Lagiera96327f2020-08-14 14:06:58 +00001digraph finite_state_machine {
2 rankdir = "LR";
3
4 node [ shape = "doublecircle" ];
5 "End";
6
7 node [ shape = "point" ];
8 "Init";
9
10 node [ shape = "circle" ];
11 "Init" -> "Start";
12
13 "Start" -> "End" [ label = "EOF" ];
14 "Start" -> "Parse Method Name" [ label = "'begin_compilation'" ];
15 "Start" -> "Error" [ label = "NOT('begin_compilation')" ];
16
17 "Parse Method Name" -> "Skip to CFG"
18 [ label = "method_name IN analyzer.methods" ];
19 "Parse Method Name" -> "Skip Method"
20 [ label = "method_name NOT IN analyzer.methods" ];
21 "Parse Method Name" -> "Error" [ label = "EOF OR NOT('name')" ];
22
23 "Skip Method" -> "End" [ label = "EOF" ];
24 "Skip Method" -> "Parse Method Name" [ label = "'begin_compilation'" ];
25 "Skip Method" -> "Skip Method";
26
27 "Skip to CFG" -> "Start CFG" [ label = "'end_compilation'" ];
28 "Skip to CFG" -> "Skip to CFG";
29 "Skip to CFG" -> "Error" [ label = "EOF" ];
30
31 "Start CFG" -> "Is Disassembly Pass" [ label = "'begin_cfg'" ];
32 "Start CFG" -> "Error" [ label = "EOF OR NOT('begin_cfg')" ];
33
34 "Is Disassembly Pass" -> "Parse Flags"
35 [ label = "'name \"disassembly (after)\"'" ];
36 "Is Disassembly Pass" -> "Skip Pass"
37 [ label = "NOT('name \"disassembly (after)\"')" ];
38 "Is Disassembly Pass" -> "Error" [ label = "EOF OR NOT('name')" ];
39
40 "Skip Pass" -> "End CFG" [ label = "'end_cfg'" ];
41 "Skip Pass" -> "Skip Pass";
42 "Skip Pass" -> "Error" [ label = "EOF" ];
43
44 "Parse Flags" -> "Skip to HIR" [ label = "'flags'" ];
45 "Parse Flags" -> "Parse Flags";
46 "Parse Flags" -> "Error" [ label = "EOF" ];
47
48 "Skip to HIR" -> "HIR Instruction" [ label = "'begin_HIR'" ];
49 "Skip to HIR" -> "Skip to HIR";
50 "Skip to HIR" -> "Error" [ label = "EOF" ];
51
52 "HIR Instruction" -> "HIR Instruction" [ label = "'<|@'" ];
53 "HIR Instruction" -> "End HIR" [ label = "'end_HIR'" ];
54 "HIR Instruction" -> "Disassembly";
55 "HIR Instruction" -> "Error" [ label = "EOF" ];
56
57 "Disassembly" -> "HIR Instruction" [ label = "'<|@'" ];
58 "Disassembly" -> "Disassembly";
59 "Disassembly" -> "Error" [ label = "EOF" ];
60
61 "End HIR" -> "End Block" [ label = "'end_block'" ];
62 "End HIR" -> "Error" [ label = "EOF OR NOT('end_block')" ];
63
64 "End Block" -> "Parse Flags" [ label = "'begin_block'" ];
65 "End Block" -> "End CFG" [ label = "'end_cfg'" ];
66 "End Block" -> "Error" [ label = "EOF OR NOT('begin_block' OR 'end_cfg')" ];
67
68 "End CFG" -> "Is Disassembly Pass" [ label = "'begin_cfg'" ];
69 "End CFG" -> "Parse Method Name" [ label = "'begin_compilation'" ];
70 "End CFG" -> "End" [ label = "EOF" ];
71}