Emma Lagier | a96327f | 2020-08-14 14:06:58 +0000 | [diff] [blame] | 1 | digraph 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 | } |