1digraph 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} 72