| 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" ]; |
| } |