|
@@ -0,0 +1,549 @@
|
|
|
+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 {}
|
|
|
+
|
|
|
+ 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 {
|
|
|
+}
|
|
|
+
|
|
|
+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'"
|
|
|
+ }
|
|
|
+}
|