Przeglądaj źródła

Added first 8 AL rules

Yentl Van Tendeloo 7 lat temu
rodzic
commit
f340b4b4a5
3 zmienionych plików z 578 dodań i 20 usunięć
  1. 0 20
      bootstrap/MVK_rules.mvc
  2. 549 0
      bootstrap/MvK_rules.mvc
  3. 29 0
      bootstrap/MvK_rules_MM.mvc

+ 0 - 20
bootstrap/MVK_rules.mvc

@@ -1,20 +0,0 @@
-SimpleAttribute String {}
-SimpleAttribute Boolean {}
-
-Class Rule {
-    name : String
-}
-
-Class Node {
-    type : String
-    value? : String
-    match? : Boolean
-}
-
-Class Root : Node {}
-
-Association contains (Rule, Node) {}
-
-Association Edge : Node (Node, Node) {
-    name : String
-}

+ 549 - 0
bootstrap/MvK_rules.mvc

@@ -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'"
+    }
+}

+ 29 - 0
bootstrap/MvK_rules_MM.mvc

@@ -0,0 +1,29 @@
+SimpleAttribute String {}
+SimpleAttribute Boolean {}
+
+Class Rule {
+    name : String
+}
+
+Class Node {
+    value? : String
+}
+
+Class Match {
+    match? : Boolean
+}
+Class Create : Node {}
+Class Delete : Match {}
+Class NAC : Node {}
+Class Root : Node {}
+
+Association contains (Rule, Node) {}
+
+Association Edge : Node (Node, Node) {
+    name : String
+}
+
+Association CreateEdge : Edge (Node, Node) {}
+Association MatchEdge : Edge (Node, Node) {}
+Association DeleteEdge : MatchEdge (Node, Node) {}
+Association NACEdge : Edge (Node, Node) {}