Rule Access_Eval_N1 { Root N1_root {} Match N1_userroot { match = True } Match N1_frame { match = True } Delete N1_phase_D { value = "'eval'" match = True } Match N1_IP { value = "!access" match = True } Create N1_phase_C { value = "'finish'" } Delete N1_RV_D {} Create N1_RV_C {} Match N1_val {} MatchEdge (N1_root, N1_userroot) { value = "username" } MatchEdge (N1_userroot, N1_frame) { value = "'frame'" } MatchEdge (N1_frame, N1_IP) { value = "'IP'" } DeleteEdge (N1_frame, N1_phase_D) { value = "'phase'" } CreateEdge (N1_frame, N1_phase_C) { value = "'phase'" } CreateEdge (N1_frame, N1_RV_C) { value = "'returnvalue'" } DeleteEdge (N1_frame, N1_RV_D) { value = "'returnvalue'" } MatchEdge (N1_RV_D, N1_RV_C) { value = "'value'" } } Rule Access_Init_N2 { Root N2_root {} Match N2_userroot { match = True } Match N2_frame { match = True } Match N2_phase { match = True value = "'init'" } Match N2_IP_old { match = True value = "!access" } Create N2_evalstack_C {} Match N2_evalstack_M {} Match N2_IP_new {} Create N2_phase_new { value = "'eval'" } MatchEdge (N2_root, N2_userroot) { value = "username" } MatchEdge (N2_userroot, N2_frame) { value = "'frame'" } MatchEdge (N2_frame, N2_phase) { value = "'phase'" } DeleteEdge (N2_frame, N2_IP_old) { value = "'IP'" } CreateEdge (N2_frame, N2_evalstack_C) { value = "'evalstack'" } DeleteEdge (N2_frame, N2_evalstack_M) { value = "'evalstack'" } CreateEdge (N2_frame, N2_IP_new) { value = "'IP'" } CreateEdge (N2_evalstack_C, N2_evalstack_M) { value = "'prev'" } CreateEdge (N2_evalstack_M, N2_phase_new) { value = "'phase'" } CreateEdge (N2_evalstack_M, N2_IP) { value = "'inst'" } MatchEdge (N2_IP, N2_IP_new) { value = "'var'" } } Rule Assign_Assign_N3 { Root N3_0 {} Match N3_1 { match = True } Match N3_2 { match = True } Match N3_3 { match = True value = "!assign" } Delete N3_4 { match = True value = "'assign'" } Create N3_5 { value = "'finish'" } Match N3_6 {} Match N3_7 {} Match N3_8 {} MatchEdge (N3_0, N3_1) { value = "username" } MatchEdge (N3_1, N3_2) { value = "'frame'" } MatchEdge (N3_2, N3_3) { value = "'IP'" } DeleteEdge (N3_2, N3_4) { value = "'phase'" } CreateEdge (N3_2, N3_5) { value = "'phase'" } MatchEdge (N3_2, N3_6) { value = "'returnvalue'" } DeleteEdge (N3_2, N3_7) { value = "'variable'" } CreateEdge (N3_7, N3_6) { value = "'value'" } DeleteEdge (N3_7, N3_8) { value = "'value'" } } Rule Assign_Init_N4 { Root N4_0 {} Match N4_1 { match = True } Match N4_2 { match = True } Match N4_3 { match = True value = "'init'" } Create N4_4 {} Match N4_5 {} Match N4_6 { match = True value = "!assign" } Create N4_7 { value = "'value'" } Match N4_8 {} MatchEdge (N4_0, N4_1) { value = "username" } MatchEdge (N4_1, N4_2) { value = "'frame'" } MatchEdge (N4_2, N4_3) { value = "'phase'" } DeleteEdge (N4_2, N4_6) { value = "'IP'" } CreateEdge (N4_2, N4_4) { value = "'evalstack'" } DeleteEdge (N4_2, N4_5) { value = "'evalstack'" } CreateEdge (N4_2, N4_8) { value = "'IP'" } CreateEdge (N4_5, N4_6) { value = "'inst'" } CreateEdge (N4_5, N4_7) { value = "'phase'" } MatchEdge (N4_6, N4_8) { value = "'var'" } } Rule Assign_Value_N5 { Root N5_0 {} Match N5_1 { match = True } Match N5_2 { match = True } Match N5_3 { match = True value = "'value'" } Match N5_4 { match = True value = "!assign" } Create N5_5 { match = True } Create N5_6 { value = "'init'" } Match N5_7 {} Match N5_8 {} Match N5_9 {} Create N5_10 { value = "'assign'" } MatchEdge (N5_0, N5_1) { value = "username" } MatchEdge (N5_1, N5_2) { value = "'frame'" } DeleteEdge (N5_2, N5_3) { value = "'phase'" } DeleteEdge (N5_2, N5_4) { value = "'IP'" } CreateEdge (N5_2, N5_5) { value = "'evalstack'" } CreateEdge (N5_2, N5_6) { value = "'phase'" } DeleteEdge (N5_2, N5_9) { value = "'evalstack'" } CreateEdge (N5_2, N5_7) { value = "'IP'" } MatchEdge (N5_2, N5_8) { value = "'returnvalue'" } CreateEdge (N5_2, N5_8) { value = "'variable'" } CreateEdge (N5_5, N5_9) { value = "'prev'" } DeleteEdge (N5_5, N5_9) { value = "'evalstack'" } CreateEdge (N5_9, N5_4) { value = "'inst'" } CreateEdge (N5_9, N5_10) { value = "'phase'" } MatchEdge (N5_4, N5_7) { value = "'value'" } } Rule Break_N6 { Root N6_0 {} Match N6_1 { match = True } Match N6_2 { match = True } Delete N6_3 { value = "'init'" match = True } Create N6_4 { value = "'finish'" } Match N6_5 { value = "!break" match = True } Match N6_6 { value = "!while" } MatchEdge (N6_0, N6_1) { value = "username" } MatchEdge (N6_1, N6_2) { value = "'frame'" } DeleteEdge (N6_2, N6_3) { value = "'phase'" } CreateEdge (N6_2, N6_4) { value = "'phase'" } DeleteEdge (N6_2, N6_5) { value = "'IP'" } CreateEdge (N6_2, N6_6) { value = "'IP'" } MatchEdge (N6_5, N6_6) { value = "'while'" } } Rule Call_Call_None_N7 { Root N7_0 {} Match N7_1 { match = True } Create N7_2 {} Match N7_3 { match = True } Create N7_4 {} Create N7_5 {} Create N7_6 { value = "!call" } Create N7_7 {} Match N7_8 {} Create N7_9 { value = "'finish'" } Delete N7_10 { value = "'call'" match = True } NAC N7_11 {} Match N7_12 {} Create N7_13 { value = "'init'" } MatchEdge (N7_0, N7_1) { value = "username" } CreateEdge (N7_1, N7_2) { value = "'frame'" } DeleteEdge (N7_1, N7_3) { value = "'frame'" } CreateEdge (N7_2, N7_4) { value = "'evalstack'" } CreateEdge (N7_2, N7_5) { value = "'symbols'" } CreateEdge (N7_2, N7_6) { value = "'caller'" } CreateEdge (N7_2, N7_7) { value = "'returnvalue'" } CreateEdge (N7_2, N7_12) { value = "'IP'" } CreateEdge (N7_2, N7_13) { value = "'phase'" } NACEdge (N7_6, N7_11) { value = "'last_param'" } CreateEdge (N7_2, N7_3) { value = "'prev'" } MatchEdge (N7_3, N7_6) { value = "'IP'" } MatchEdge (N7_3, N7_8) { value = "'returnvalue'" } CreateEdge (N7_3, N7_9) { value = "'phase'" } DeleteEdge (N7_3, N7_10) { value = "'phase'" } MatchEdge (N7_8, N7_12) { value = "'body'" } } Rule Call_Call_Params_N8 { Root N8_0 {} Match N8_1 { match = True } Match N8_2 {} Match N8_3 {} Match N8_4 { value = "!call" } Match N8_5 {} Match N8_6 { value = "a" match = True } Create N8_7 { value = "'finish'" } Match N8_8 {} Match N8_9 {} Create N8_10 {} Match N8_11 {} Match N8_12 {} Match N8_13 {} Delete N8_14 { value = "'call'" } Match N8_15 {} Create N8_16 {} MatchEdge (N8_0, N8_1) { value = "username" } CreateEdge (N8_1, N8_2) { value = "'frame'" } DeleteEdge (N8_1, N8_3) { value = "'frame'" } MatchEdge (N8_2, N8_4) { value = "'caller'" } MatchEdge (N8_2, N8_3) { value = "'prev'" } MatchEdge (N8_2, N8_15) { value = "'symbols'" } MatchEdge (N8_2, N8_13) { value = "'IP'" } MatchEdge (N8_3, N8_4) { value = "!call" } CreateEdge (N8_3, N8_7) { value = "'finish'" } MatchEdge (N8_3, N8_8) { value = "'returnvalue'" } DeleteEdge (N8_3, N8_14) { value = "'phase'" } MatchEdge (N8_4, N8_5) { value = "'last_param'" } MatchEdge (N8_5, N8_6) { value = "'name'" } CreateEdge (N8_10, N8_8) { value = "'value'" } MatchEdge (N8_11, N8_9) { value = "a" } MatchEdge (N8_12, N8_13) { value = "'body'" } MatchEdge (N8_12, N8_11) { value = "'params'" } CreateEdge (N8_15, N8_16) {} CreateEdge (N8_16, N8_9) {} CreateEdge (N8_16, N8_10) {} } Rule Call_Params_First_Multi_N9 { Root N9_0 {} Match N9_1 { match = True } Match N9_2 { match = True ] Create N9_3 {} Create N9_4 { value = "'init'" } Create N9_5 {} Create N9_6 {} Create N9_7 {} Match N9_8 {} Match N9_9 {} Match N9_10 {} Create N9_11 { value = "'init'" } Create N9_12 {} Match N9_13 {} Match N9_14 { value = "!call" match = True } Match N9_15 {} Match N9_16 {} Match N9_17 {} MatchEdge (N9_0, N9_1) { value = "username" } MatchEdge (N9_1, N9_2) { value = "'frame'" } DeleteEdge (N9_2, N9_13) { value = "'evalstack'" } DeleteEdge (N9_2, N9_14) { value = "'IP'" } CreateEdge (N9_2, N9_11) { value = "'init'" } DeleteEdge (N9_2, N9_15) { value = "'phase'" } MatchEdge (N9_2, N9_10) { value = "'returnvalue'" } CreateEdge (N9_2, N9_17) { value = "'IP'" } CreateEdge (N9_3, N9_14) { value = "'caller'" } CreateEdge (N9_3, N9_2) { value = "'prev'" } CreateEdge (N9_3, N9_4) { value = "'phase'" } CreateEdge (N9_3, N9_5) { value = "'evalstack'" } CreateEdge (N9_3, N9_6) { value = "'symbols'" } CreateEdge (N9_3, N9_7) { value = "'returnvalue'" } CreateEdge (N9_3, N9_8) { value = "'IP'" } MatchEdge (N9_10, N9_9) { value = "'params'" } MatchEdge (N9_10, N9_8) { value = "'body'" } CreateEdge (N9_12, N9_13) { value = "'prev'" } CreateEdge (N9_13, N9_14) { value = "'inst'" } MatchEdge (N9_14, N9_15) { value = "'params'" } MatchEdge (N9_15, N9_16) { value = "'next_param'" } MatchEdge (N9_15, N9_17) { value = "'value'" } } Rule Call_Params_First_Single_N10 { Root N10_0 {} Match N10_1 { match = True } Match N10_2 { match = True } Create N10_3 {} Create N10_4 { value = "'init'" } Create N10_5 {} Create N10_6 {} Create N10_7 {} Match N10_8 {} Create N10_9 { value = "'init'" } Match N10_10 {} Match N10_11 {} Match N10_12 {} Create N10_13 { value = "'call'" } Match N10_14 { value = "!call" } Match N10_15 {} Match N10_16 {} Create N10_17 {} MatchEdge (N10_0, N10_1) { value = "username" } MatchEdge (N10_1, N10_2) { value = "'frame'" } CreateEdge (N10_2, N10_16) { value = "'IP'" } CreateEdge (N10_2, N10_9) { value = "'phase'" } MatchEdge (N10_2, N10_10) { value = "'returnvalue'" } DeleteEdge (N10_2, N10_12) { value = "'evalstack'" } CreateEdge (N10_2, N10_17) { value = "'evalstack'" } DeleteEdge (N10_2, N10_14) { value = "'IP'" } DeleteEdge (N10_2, N10_15) { value = "'phase'" } CreateEdge (N10_3, N10_4) { value = "'phase'" } CreateEdge (N10_3, N10_5) { value = "'evalstack'" } CreateEdge (N10_3, N10_6) { value = "'symbols'" } CreateEdge (N10_3, N10_7) { value = "'returnvalue'" } MatchEdge (N10_10, N10_8) { value = "'body'" } MatchEdge (N10_10, N10_11) { value = "'params'" } CreateEdge (N10_12, N10_13) { value = "'phase'" } CreateEdge (N10_12, N10_14) { value = "'inst'" } MatchEdge (N10_14, N10_15) { value = "'params'" } MatchEdge (N10_14, N10_15) { value = "'last_param'" } MatchEdge (N10_15, N10_16) { value = "'value'" } CreateEdge (N10_17, N10_12) { value = "'prev'" } } Rule Call_Params_Last_N11 { Root N11_0 {} Match N11_1 { match = True } Match N11_2 { match = True } Match N11_3 {} Match N11_4 {} Match N11_5 {} Match N11_6 {} Match N11_7 {} Create N11_8 {} Create N11_9 {} Match N11_10 {} Match N11_11 {} Match N11_12 { value = "a" } Match N11_13 {} Match N11_14 {} Create N11_15 { value = "'call'" } Match N11_16 { value = "!call" } Match N11_17 {} Create N11_18 {} Create N11_19 { value = "'init'" } Match N11_20 {} MatchEdge (N11_0, N11_1) { value = "username" } MatchEdge (N11_1, N11_2) { value = "'frame'" } DeleteEdge (N11_2, N11_16) { value = "'IP'" } DeleteEdge (N11_2, N11_17) { value = "'evalstack'" } CreateEdge (N11_2, N11_18) { value = "'evalstack'" } CreateEdge (N11_2, N11_19) { value = "'phase'" } DeleteEdge (N11_2, N11_14) { value = "'phase'" } MatchEdge (N11_2, N11_10) { value = "'returnvalue'" } CreateEdge (N11_2, N11_13) { value = "'IP'" } MatchEdge (N11_3, N11_16) { value = "'caller'" } MatchEdge (N11_3, N11_2) { value = "'prev'" } MatchEdge (N11_3, N11_20) { value = "'symbols'" } MatchEdge (N11_3, N11_5) { value = "'IP'" } MatchEdge (N11_4, N11_5) { value = "'body'" } MatchEdge (N11_4, N11_6) { value = "'params'" } MatchEdge (N11_6, N11_7) { value = "a" } CreateEdge (N11_8, N11_7) {} CreateEdge (N11_8, N11_9) {} CreateEdge (N11_9, N11_10) { value = "'value'" } MatchEdge (N11_11, N11_14) { value = "'next_param'" } MatchEdge (N11_11, N11_12) { value = "'name'" } MatchEdge (N11_14, N11_13) { value = "'value'" } MatchEdge (N11_16, N11_14) { value = "'last_param'" } CreateEdge (N11_17, N11_16) { value = "'inst'" } CreateEdge (N11_17, N11_15) { value = "'phase'" } CreateEdge (N11_18, N11_17) { value = "'prev'" } CreateEdge (N11_20, N11_8) {} } Rule Call_Params_Next_N12 { Root N12_0 {} Match N12_1 {} Match N12_2 {} Match N12_3 {} Match N12_4 {} Match N12_5 {} Match N12_6 {} Match N12_7 {} Create N12_8 {} Create N12_9 {} Match N12_10 {} Match N12_11 {} Match N12_12 {} Match N12_13 {} Match N12_14 { value = "a" } Create N12_15 {} Match N12_16 {} Match N12_17 {} Match N12_18 {} Match N12_19 { value = "!call" } Create N12_20 { value = "'init'" } MatchEdge (N12_0, N12_1) { value = "username" } MatchEdge (N12_1, N12_2) { value = "'frame'" } MatchEdge (N12_2, N12_10) { value = "'returnvalue'" } DeleteEdge (N12_2, N12_11) { value = "'phase'" } DeleteEdge (N12_2, N12_17) { value = "'evalstack'" } CreateEdge (N12_2, N12_15) { value = "'evalstack'" } CreateEdge (N12_2, N12_16) { value = "'IP'" } DeleteEdge (N12_2, N12_19) { value = "'IP'" } CreateEdge (N12_2, N12_20) { value = "'phase'" } MatchEdge (N12_3, N12_5) { value = "'IP'" } MatchEdge (N12_3, N12_13) { value = "'symbols'" } MatchEdge (N12_3, N12_2) { value = "'prev'" } MatchEdge (N12_3, N12_19) { value = "'caller'" } MatchEdge (N12_4, N12_6) { value = "'params'" } MatchEdge (N12_4, N12_5) { value = "'body'" } MatchEdge (N12_6, N12_7) { value = "a" } CreateEdge (N12_8, N12_7) {} CreateEdge (N12_8, N12_9) {} CreateEdge (N12_9, N12_10) { value = "'value'" } MatchEdge (N12_11, N12_18) { value = "'next_param'" } MatchEdge (N12_11, N12_16) { value = "'value'" } MatchEdge (N12_12, N12_14) { value = "'name'" } MatchEdge (N12_12, N12_11) { value = "'next_param'" } CreateEdge (N12_13, N12_8) {} CreateEdge (N12_15, N12_17) { value = "'prev'" } CreateEdge (N12_17, N12_18) { value = "'phase'" } CreateEdge (N12_17, N12_19) { value = "'inst'" } } Rule Call_Resolve_No_Params_N13 { Root N13_0 {} Match N13_1 {} Match N13_2 {} Match N13_3 { value = "'init'" } Create N13_4 {} Match N13_5 {} Match N13_6 { value = "!call" } Create N13_7 { value = "'call'" } Match N13_8 {} NAC N13_9 {} MatchEdge (N13_0, N13_1) { value = "username" } MatchEdge (N13_1, N13_2) { value = "'frame'" } DeleteEdge (N13_2, N13_6) { value = "'IP'" } MatchEdge (N13_2, N13_3) { value = "'phase'" } CreateEdge (N13_2, N13_4) { value = "'evalstack'" } DeleteEdge (N13_2, N13_5) { value = "'evalstack'" } CreateEdge (N13_2, N13_8) { value = "'IP'" } CreateEdge (N13_4, N13_5) { value = "'prev'" } CreateEdge (N13_5, N13_6) { value = "'inst'" } CreateEdge (N13_5, N13_7) { value = "'phase'" } NACEdge (N13_6, N13_9) { value = "'params'" } MatchEdge (N13_6, N13_8) { value = "'func'" } } Rule Call_Resolve_Params_N14 { Root N14_0 {} Match N14_1 {} Match N14_2 {} Match N14_3 {} Create N14_4 {} Match N14_5 {} Match N14_6 {} Match N14_7 { value = "'init'" } Match N14_8 {} MatchEdge (N14_0, N14_1) { value = "username" } MatchEdge (N14_1, N14_2) { value = "'frame'" } DeleteEdge (N14_2, N14_3) { value = "'evalstack'" } CreateEdge (N14_2, N14_4) { value = "'evalstack'" } DeleteEdge (N14_2, N14_5) { value = "'IP'" } CreateEdge (N14_2, N14_6) { value = "'IP'" } MatchEdge (N14_2, N14_7) { value = "'phase'" } CreateEdge (N14_3, N14_8) { value = "'phase'" } CreateEdge (N14_3, N14_5) { value = "'inst'" } CreateEdge (N14_4, N14_3) { value = "'prev'" } MatchEdge (N14_5, N14_8) { value = "'params'" } MatchEdge (N14_5, N14_6) { value = "'func'" } } Rule Const_N15 { Root N15_0 {} Match N15_1 {} Match N15_2 {} Match N15_3 {} Delete N15_4 { value = "'init'" } Create N15_5 { value = "'finish'" } Match N15_6 { value = "!const" } Match N15_7 {} MatchEdge (N15_0, N15_1) { value = "username" } MatchEdge (N15_1, N15_2) { value = "'frame'" } CreateEdge (N15_2, N15_7) { value = "'returnvalue'" } DeleteEdge (N15_2, N15_3) { value = "'returnvalue'" } DeleteEdge (N15_2, N15_4) { value = "'phase'" } CreateEdge (N15_2, N15_5) { value = "'phase'" } MatchEdge (N15_2, N15_6) { value = "'IP'" } MatchEdge (N15_6, N15_7) { value = "'node'" } } Rule Continue_N16 { Root N16_0 {} Match N16_1 {} Match N16_2 {} Match N16_3 { value = "'init'" } Match N16_4 { value = "!continue" } Match N16_5 { value = "!while" } MatchEdge (N16_0, N16_1) { value = "username" } MatchEdge (N16_1, N16_2) { value = "'frame'" } MatchEdge (N16_2, N16_3) { value = "'init'" } DeleteEdge (N16_2, N16_4) { value = "'IP'" } CreateEdge (N16_2, N16_5) { value = "'IP'" } MatchEdge (N16_4, N16_5) { value = "'while'" } } Rule If_False_N21 { Root N21_root {} Match N21_userroot { match = True } Match N21_frame { match = True } Delete N21_phase_D { value = "'cond'" match = True } Create N21_phase_C { value = "'finish'" } Match N21_IP { value = "!if" match = True } Match N21_RV { value = "False" match = True } NAC N21_else {} MatchEdge (N21_root, N21_userroot) { value = "username" } MatchEdge (N21_userroot, N21_frame) { value = "'frame'" } MatchEdge (N21_frame, N21_IP) { value = "'IP'" } MatchEdge (N21_frame, N21_RV) { value = "'returnvalue'" } DeleteEdge (N21_frame, N21_phase_D) { value = "'phase'" } CreateEdge (N21_frame, N21_phase_C) { value = "'phase'" } NACEdge (N21_IP, N21_else) { value = "'else'" } }