72 lines
2.6 KiB
Plaintext
72 lines
2.6 KiB
Plaintext
|
digraph finite_state_machine {
|
||
|
rankdir = "LR";
|
||
|
|
||
|
node [ shape = "doublecircle" ];
|
||
|
"End";
|
||
|
|
||
|
node [ shape = "point" ];
|
||
|
"Init";
|
||
|
|
||
|
node [ shape = "circle" ];
|
||
|
"Init" -> "Start";
|
||
|
|
||
|
"Start" -> "End" [ label = "EOF" ];
|
||
|
"Start" -> "Parse Method Name" [ label = "'begin_compilation'" ];
|
||
|
"Start" -> "Error" [ label = "NOT('begin_compilation')" ];
|
||
|
|
||
|
"Parse Method Name" -> "Skip to CFG"
|
||
|
[ label = "method_name IN analyzer.methods" ];
|
||
|
"Parse Method Name" -> "Skip Method"
|
||
|
[ label = "method_name NOT IN analyzer.methods" ];
|
||
|
"Parse Method Name" -> "Error" [ label = "EOF OR NOT('name')" ];
|
||
|
|
||
|
"Skip Method" -> "End" [ label = "EOF" ];
|
||
|
"Skip Method" -> "Parse Method Name" [ label = "'begin_compilation'" ];
|
||
|
"Skip Method" -> "Skip Method";
|
||
|
|
||
|
"Skip to CFG" -> "Start CFG" [ label = "'end_compilation'" ];
|
||
|
"Skip to CFG" -> "Skip to CFG";
|
||
|
"Skip to CFG" -> "Error" [ label = "EOF" ];
|
||
|
|
||
|
"Start CFG" -> "Is Disassembly Pass" [ label = "'begin_cfg'" ];
|
||
|
"Start CFG" -> "Error" [ label = "EOF OR NOT('begin_cfg')" ];
|
||
|
|
||
|
"Is Disassembly Pass" -> "Parse Flags"
|
||
|
[ label = "'name \"disassembly (after)\"'" ];
|
||
|
"Is Disassembly Pass" -> "Skip Pass"
|
||
|
[ label = "NOT('name \"disassembly (after)\"')" ];
|
||
|
"Is Disassembly Pass" -> "Error" [ label = "EOF OR NOT('name')" ];
|
||
|
|
||
|
"Skip Pass" -> "End CFG" [ label = "'end_cfg'" ];
|
||
|
"Skip Pass" -> "Skip Pass";
|
||
|
"Skip Pass" -> "Error" [ label = "EOF" ];
|
||
|
|
||
|
"Parse Flags" -> "Skip to HIR" [ label = "'flags'" ];
|
||
|
"Parse Flags" -> "Parse Flags";
|
||
|
"Parse Flags" -> "Error" [ label = "EOF" ];
|
||
|
|
||
|
"Skip to HIR" -> "HIR Instruction" [ label = "'begin_HIR'" ];
|
||
|
"Skip to HIR" -> "Skip to HIR";
|
||
|
"Skip to HIR" -> "Error" [ label = "EOF" ];
|
||
|
|
||
|
"HIR Instruction" -> "HIR Instruction" [ label = "'<|@'" ];
|
||
|
"HIR Instruction" -> "End HIR" [ label = "'end_HIR'" ];
|
||
|
"HIR Instruction" -> "Disassembly";
|
||
|
"HIR Instruction" -> "Error" [ label = "EOF" ];
|
||
|
|
||
|
"Disassembly" -> "HIR Instruction" [ label = "'<|@'" ];
|
||
|
"Disassembly" -> "Disassembly";
|
||
|
"Disassembly" -> "Error" [ label = "EOF" ];
|
||
|
|
||
|
"End HIR" -> "End Block" [ label = "'end_block'" ];
|
||
|
"End HIR" -> "Error" [ label = "EOF OR NOT('end_block')" ];
|
||
|
|
||
|
"End Block" -> "Parse Flags" [ label = "'begin_block'" ];
|
||
|
"End Block" -> "End CFG" [ label = "'end_cfg'" ];
|
||
|
"End Block" -> "Error" [ label = "EOF OR NOT('begin_block' OR 'end_cfg')" ];
|
||
|
|
||
|
"End CFG" -> "Is Disassembly Pass" [ label = "'begin_cfg'" ];
|
||
|
"End CFG" -> "Parse Method Name" [ label = "'begin_compilation'" ];
|
||
|
"End CFG" -> "End" [ label = "EOF" ];
|
||
|
}
|