瀏覽代碼

Fixed more problems related to action language

Yentl Van Tendeloo 8 年之前
父節點
當前提交
f0c515dbb4
共有 4 個文件被更改,包括 24 次插入40 次删除
  1. 二進制
      bootstrap/bootstrap.m.gz
  2. 15 14
      bootstrap/metamodels.alc
  3. 3 20
      bootstrap/modelling.alc
  4. 6 6
      integration/test_constructors_models.py

二進制
bootstrap/bootstrap.m.gz


+ 15 - 14
bootstrap/metamodels.alc

@@ -209,6 +209,7 @@ Element function initialize_SCD(location : String):
 	instantiate_link(scd, "Inheritance", "", "Natural", "PrimitiveType")
 	instantiate_link(scd, "Inheritance", "", "String", "PrimitiveType")
 	instantiate_link(scd, "Inheritance", "", "Boolean", "PrimitiveType")
+	instantiate_link(scd, "Inheritance", "", "Action", "PrimitiveType")
 
 	// Add in the Action Language metamodel
 	add_AL_to_MM(scd)
@@ -225,20 +226,20 @@ Element function initialize_SCD(location : String):
 
 	// Add constraints to all primitive classes
 	// TODO this is much too slow right now
-	//add_constraint(scd, "if", constraint_if)
-	//add_constraint(scd, "while", constraint_while)
-	//add_constraint(scd, "break", constraint_break)
-	//add_constraint(scd, "continue", constraint_continue)
-	//add_constraint(scd, "assign", constraint_assign)
-	//add_constraint(scd, "return", constraint_return)
-	//add_constraint(scd, "output", constraint_output)
-	//add_constraint(scd, "input", constraint_input)
-	//add_constraint(scd, "declare", constraint_declare)
-	//add_constraint(scd, "global", constraint_global)
-	//add_constraint(scd, "access", constraint_access)
-	//add_constraint(scd, "constant", constraint_constant)
-	//add_constraint(scd, "resolve", constraint_resolve)
-	//add_constraint(scd, "call", constraint_call)
+	//instantiate_attribute_code(scd, "if", "constraint", constraint_if)
+	//instantiate_attribute_code(scd, "while", "constraint", constraint_while)
+	//instantiate_attribute_code(scd, "break", "constraint", constraint_break)
+	//instantiate_attribute_code(scd, "continue", "constraint", constraint_continue)
+	//instantiate_attribute_code(scd, "assign", "constraint", constraint_assign)
+	//instantiate_attribute_code(scd, "return", "constraint", constraint_return)
+	//instantiate_attribute_code(scd, "output", "constraint", constraint_output)
+	//instantiate_attribute_code(scd, "input", "constraint", constraint_input)
+	//instantiate_attribute_code(scd, "declare", "constraint", constraint_declare)
+	//instantiate_attribute_code(scd, "global", "constraint", constraint_global)
+	//instantiate_attribute_code(scd, "access", "constraint", constraint_access)
+	//instantiate_attribute_code(scd, "constant", "constraint", constraint_constant)
+	//instantiate_attribute_code(scd, "resolve", "constraint", constraint_resolve)
+	//instantiate_attribute_code(scd, "call", "constraint", constraint_call)
 
 	// Finally done, so export!
 	export_node(location, scd)

+ 3 - 20
bootstrap/modelling.alc

@@ -427,7 +427,7 @@ String function add_AL(model : Element, element : Element):
 				if (is_physical_action(elem)):
 					type = cast_a2s(elem)
 				else:
-					type = "Any"
+					type = "PrimitiveType"
 
 			// Add the node itself
 			elem_name = "__" + cast_id2s(elem)
@@ -445,7 +445,7 @@ String function add_AL(model : Element, element : Element):
 				add_AL_links(model, todo, elem, type, "body", "")
 				add_AL_links(model, todo, elem, type, "next", "")
 			elif (type == "assign"):
-				add_AL_links(model, todo, elem, type, "var", "")
+				add_AL_links(model, todo, elem, type, "var", "resolve")
 				add_AL_links(model, todo, elem, type, "value", "")
 				add_AL_links(model, todo, elem, type, "next", "")
 			elif (type == "break"):
@@ -457,7 +457,7 @@ String function add_AL(model : Element, element : Element):
 			elif (type == "resolve"):
 				add_AL_links(model, todo, elem, type, "var", "")
 			elif (type == "access"):
-				add_AL_links(model, todo, elem, type, "var", "")
+				add_AL_links(model, todo, elem, type, "var", "resolve")
 			elif (type == "constant"):
 				add_AL_links(model, todo, elem, type, "node", "")
 			elif (type == "output"):
@@ -481,18 +481,6 @@ String function add_AL(model : Element, element : Element):
 
 	return reverseKeyLookup(model["model"], element)!
 
-Void function add_constraint(model : Element, element : String, constraint : Action):
-	// Add local constraints to an element
-	Element attr_type
-	String link_name
-	String constraint_name
-
-	constraint_name = add_AL(model, constraint)
-	attr_type = find_attribute_type(model, element, "constraint")
-	instantiate_link(model, attr_type, "", element, constraint_name)
-
-	return!
-
 Void function construct_model():
 	String command
 
@@ -531,8 +519,6 @@ Void function construct_model():
 			instantiate_attribute_code(global_models[input()], input(), input(), construct_function())
 		elif (command == "instantiate_link"):
 			instantiate_link(global_models[input()], input(), input(), input(), input())
-		elif (command == "add_constraint"):
-			add_constraint(global_models[input()], input(), construct_function())
 		elif (command == "model_define_attribute"):
 			model_define_attribute(global_models[input()], input(), input(), input(), input())
 		elif (command == "initialize_SCD"):
@@ -593,9 +579,6 @@ Element function construct_model_raw(metamodel : Element):
 		elif (command == "instantiate_link"):
 			input()
 			instantiate_link(model, input(), input(), input(), input())
-		elif (command == "add_constraint"):
-			input()
-			add_constraint(model, input(), construct_function())
 		elif (command == "import_node"):
 			input()
 			input()

+ 6 - 6
integration/test_constructors_models.py

@@ -168,7 +168,7 @@ bottom_attributes = [
 def add_constraints(model):
     return [
             "model",
-            "add_constraint", str(model), "Integer",
+            "instantiate_attribute_code", str(model), "Natural", "constraint",
                 "funcdef",
                 "constraint",
                 2, str(model*100), str(model*100+1),
@@ -194,7 +194,7 @@ def add_constraints(model):
                         True,
                         "return",
                             True,
-                                "const", "Integer instance is not an integer.",
+                                "const", "Natural instance is not an integer.",
                         False,
                     False,
             "exit",
@@ -205,14 +205,14 @@ instantiate_scd = [
         "instantiate_model", "1", "2",
         "instantiate_node", "2", "Class", "Place",
         "instantiate_node", "2", "Class", "Transition",
-        "instantiate_node", "2", "Class", "Integer",
+        "instantiate_node", "2", "Class", "Natural",
         "instantiate_link", "2", "Association", "P2T", "Place", "Transition",
         "instantiate_link", "2", "Association", "T2P", "Transition", "Place",
-        "instantiate_link", "2", "Association", "Place_tokens", "Place", "Integer",
+        "instantiate_link", "2", "Association", "Place_tokens", "Place", "Natural",
         "instantiate_attribute", "2", "Place_tokens", "name", "tokens",
-        "instantiate_link", "2", "Association", "P2T_weight", "P2T", "Integer",
+        "instantiate_link", "2", "Association", "P2T_weight", "P2T", "Natural",
         "instantiate_attribute", "2", "P2T_weight", "name", "weight",
-        "instantiate_link", "2", "Association", "T2P_weight", "T2P", "Integer",
+        "instantiate_link", "2", "Association", "T2P_weight", "T2P", "Natural",
         "instantiate_attribute", "2", "T2P_weight", "name", "weight",
         "export_node", "2", "models/PetriNets_new",
         "exit",