Przeglądaj źródła

More fixed tests, but still not working

Yentl Van Tendeloo 8 lat temu
rodzic
commit
a4203685cc

BIN
bootstrap/bootstrap.m.gz


+ 1 - 1
bootstrap/conformance_scd.alc

@@ -150,7 +150,7 @@ String function conformance_scd(model : Element):
 					return "Source of model edge not typed by source of type: " + model_info(model, model_name)!
 					return "Source of model edge not typed by source of type: " + model_info(model, model_name)!
 
 
 				if (bool_not(is_nominal_instance(model, dst_model, dst_metamodel))):
 				if (bool_not(is_nominal_instance(model, dst_model, dst_metamodel))):
-					return "Destination of model edge not typed by source of type: " + model_info(model, model_name)!
+					return "Destination of model edge not typed by destination of type: " + model_info(model, model_name)!
 
 
 			// Check cardinality for all of our edges
 			// Check cardinality for all of our edges
 			//
 			//

+ 16 - 5
bootstrap/metamodels.alc

@@ -193,7 +193,10 @@ Element function initialize_SCD(location : String):
 	// Add some attributes, now that it is an ordinary model
 	// Add some attributes, now that it is an ordinary model
 	instantiate_node(scd, "AttributeValue", "Natural")
 	instantiate_node(scd, "AttributeValue", "Natural")
 	instantiate_node(scd, "AttributeValue", "Boolean")
 	instantiate_node(scd, "AttributeValue", "Boolean")
-	model_define_attribute(scd, "Attribute", "optional", False, "Boolean")
+	instantiate_link(scd, "Attribute", "attr_optional", "Attribute", "Boolean")
+	instantiate_attribute(scd, "attr_optional", "name", "optional")
+	instantiate_attribute(scd, "attr_optional", "optional", False)
+	instantiate_attribute(scd, "attr_name", "optional", False)
 	model_define_attribute(scd, "Class", "lower_cardinality", True, "Natural")
 	model_define_attribute(scd, "Class", "lower_cardinality", True, "Natural")
 	model_define_attribute(scd, "Class", "upper_cardinality", True, "Natural")
 	model_define_attribute(scd, "Class", "upper_cardinality", True, "Natural")
 	model_define_attribute(scd, "Association", "source_lower_cardinality", True, "Natural")
 	model_define_attribute(scd, "Association", "source_lower_cardinality", True, "Natural")
@@ -201,6 +204,12 @@ Element function initialize_SCD(location : String):
 	model_define_attribute(scd, "Association", "source_upper_cardinality", True, "Natural")
 	model_define_attribute(scd, "Association", "source_upper_cardinality", True, "Natural")
 	model_define_attribute(scd, "Association", "target_upper_cardinality", True, "Natural")
 	model_define_attribute(scd, "Association", "target_upper_cardinality", True, "Natural")
 
 
+	// Make all primitives inherit from primitive type
+	instantiate_node(scd, "AttributeValue", "PrimitiveType")
+	instantiate_link(scd, "Inheritance", "", "Natural", "PrimitiveType")
+	instantiate_link(scd, "Inheritance", "", "String", "PrimitiveType")
+	instantiate_link(scd, "Inheritance", "", "Boolean", "PrimitiveType")
+
 	// Add in the Action Language metamodel
 	// Add in the Action Language metamodel
 	add_AL_to_MM(scd)
 	add_AL_to_MM(scd)
 
 
@@ -212,7 +221,7 @@ Element function initialize_SCD(location : String):
 	instantiate_attribute(scd, "Natural", "constraint", constraint_natural)
 	instantiate_attribute(scd, "Natural", "constraint", constraint_natural)
 	instantiate_attribute(scd, "String", "constraint", constraint_string)
 	instantiate_attribute(scd, "String", "constraint", constraint_string)
 	instantiate_attribute(scd, "Boolean", "constraint", constraint_boolean)
 	instantiate_attribute(scd, "Boolean", "constraint", constraint_boolean)
-	instantiate_attribute(scd, "attr_name", "optional", False)
+
 
 
 	// Add constraints to all primitive classes
 	// Add constraints to all primitive classes
 	// TODO this is much too slow right now
 	// TODO this is much too slow right now
@@ -296,6 +305,7 @@ Element function create_metamodels():
 
 
 Void function add_AL_to_MM(model : Element):
 Void function add_AL_to_MM(model : Element):
 	instantiate_node(model, "AttributeValue", "Action")
 	instantiate_node(model, "AttributeValue", "Action")
+	instantiate_link(model, "Inheritance", "", "Action", "PrimitiveType")
 	instantiate_node(model, "AttributeValue", "Statement")
 	instantiate_node(model, "AttributeValue", "Statement")
 	instantiate_node(model, "AttributeValue", "Expression")
 	instantiate_node(model, "AttributeValue", "Expression")
 	instantiate_node(model, "AttributeValue", "funcdef")
 	instantiate_node(model, "AttributeValue", "funcdef")
@@ -314,9 +324,10 @@ Void function add_AL_to_MM(model : Element):
 	instantiate_node(model, "AttributeValue", "input")
 	instantiate_node(model, "AttributeValue", "input")
 	instantiate_node(model, "AttributeValue", "resolve")
 	instantiate_node(model, "AttributeValue", "resolve")
 	instantiate_node(model, "AttributeValue", "call")
 	instantiate_node(model, "AttributeValue", "call")
-	instantiate_link(model, "Attribute", "dict_link", "Action", "Element")
-	instantiate_link(model, "Attribute", "to_str", "dict_link", "String")
-	instantiate_attribute(model, "to_str", "name", "name")
+	instantiate_link(model, "Attribute", "dict_link", "Action", "PrimitiveType")
+	instantiate_attribute(model, "dict_link", "name", "dictionary_link")
+	instantiate_attribute(model, "dict_link", "optional", True)
+	model_define_attribute(model, "dict_link", "name", False, "String")
 	instantiate_link(model, "Inheritance", "", "Action", "Element")
 	instantiate_link(model, "Inheritance", "", "Action", "Element")
 	instantiate_link(model, "Inheritance", "", "funcdef", "Action")
 	instantiate_link(model, "Inheritance", "", "funcdef", "Action")
 	instantiate_link(model, "Inheritance", "", "param", "Action")
 	instantiate_link(model, "Inheritance", "", "param", "Action")

+ 1 - 0
bootstrap/modelling.alc

@@ -494,6 +494,7 @@ Void function construct_model():
 
 
 	while (True):
 	while (True):
 		command = input()
 		command = input()
+		log(command)
 		if (command == "instantiate_bottom"):
 		if (command == "instantiate_bottom"):
 			Element m
 			Element m
 			m = instantiate_bottom()
 			m = instantiate_bottom()

+ 26 - 17
integration/test_constructors_models.py

@@ -38,6 +38,24 @@ bottom = [
         "retype", "1", "association_inh_class", "Inheritance",
         "retype", "1", "association_inh_class", "Inheritance",
         "retype", "1", "attribute_inh_attributevalue", "Inheritance",
         "retype", "1", "attribute_inh_attributevalue", "Inheritance",
 
 
+        "instantiate_node", "1", "AttributeValue", "PrimitiveType",
+        "instantiate_node", "1", "AttributeValue", "Natural",
+        "instantiate_node", "1", "AttributeValue", "Boolean",
+        "instantiate_link", "1", "Attribute", "attr_optional", "Attribute", "Boolean",
+        "instantiate_attribute", "1", "attr_optional", "name", "optional",
+        "instantiate_attribute", "1", "attr_optional", "optional", False,
+        "instantiate_attribute", "1", "attr_name", "optional", False,
+        "model_define_attribute", "1", "Class", "lower_cardinality", True, "Natural",
+        "model_define_attribute", "1", "Class", "upper_cardinality", True, "Natural",
+        "model_define_attribute", "1", "Class", "source_lower_cardinality", True, "Natural",
+        "model_define_attribute", "1", "Class", "source_upper_cardinality", True, "Natural",
+        "model_define_attribute", "1", "Class", "target_lower_cardinality", True, "Natural",
+        "model_define_attribute", "1", "Class", "target_upper_cardinality", True, "Natural",
+
+        "instantiate_link", "1", "Inheritance", "", "Natural", "PrimitiveType",
+        "instantiate_link", "1", "Inheritance", "", "Boolean", "PrimitiveType",
+        "instantiate_link", "1", "Inheritance", "", "String", "PrimitiveType",
+
         "export_node", "1", "models/SimpleClassDiagrams_new",
         "export_node", "1", "models/SimpleClassDiagrams_new",
         "exit",
         "exit",
     ]
     ]
@@ -45,6 +63,7 @@ bottom = [
 action_language = [
 action_language = [
         "model",
         "model",
         "instantiate_node", "1", "AttributeValue", "Action",
         "instantiate_node", "1", "AttributeValue", "Action",
+        "instantiate_link", "1", "Inheritance", "", "Action", "PrimitiveType",
         "instantiate_node", "1", "AttributeValue", "Statement",
         "instantiate_node", "1", "AttributeValue", "Statement",
         "instantiate_node", "1", "AttributeValue", "Expression",
         "instantiate_node", "1", "AttributeValue", "Expression",
         "instantiate_node", "1", "AttributeValue", "funcdef",
         "instantiate_node", "1", "AttributeValue", "funcdef",
@@ -63,9 +82,10 @@ action_language = [
         "instantiate_node", "1", "AttributeValue", "input",
         "instantiate_node", "1", "AttributeValue", "input",
         "instantiate_node", "1", "AttributeValue", "resolve",
         "instantiate_node", "1", "AttributeValue", "resolve",
         "instantiate_node", "1", "AttributeValue", "call",
         "instantiate_node", "1", "AttributeValue", "call",
-        "instantiate_link", "1", "Association", "dict_link", "Action", "Element",
-        "instantiate_link", "1", "Association", "to_str", "dict_link", "String",
-        "instantiate_attribute", "1", "to_str", "name", "name",
+        "instantiate_link", "1", "Attribute", "dict_link", "Action", "PrimitiveType",
+        "instantiate_attribute", "1", "dict_link", "name", "dictionary_link",
+        "instantiate_attribute", "1", "dict_link", "optional", True,
+        "model_define_attribute", "1", "dict_link", "name", False, "String",
         "instantiate_link", "1", "Inheritance", "", "Action", "Element",
         "instantiate_link", "1", "Inheritance", "", "Action", "Element",
         "instantiate_link", "1", "Inheritance", "", "funcdef", "Action",
         "instantiate_link", "1", "Inheritance", "", "funcdef", "Action",
         "instantiate_link", "1", "Inheritance", "", "param", "Action",
         "instantiate_link", "1", "Inheritance", "", "param", "Action",
@@ -85,7 +105,8 @@ action_language = [
         "instantiate_link", "1", "Inheritance", "", "access", "Expression",
         "instantiate_link", "1", "Inheritance", "", "access", "Expression",
         "instantiate_link", "1", "Inheritance", "", "constant", "Expression",
         "instantiate_link", "1", "Inheritance", "", "constant", "Expression",
         "instantiate_link", "1", "Inheritance", "", "input", "Expression",
         "instantiate_link", "1", "Inheritance", "", "input", "Expression",
-        "instantiate_link", "1", "Attribute", "statement_next", "Statement", "Statement",
+        "model_define_attribute", "1", "Statement", "next", True, "Statement",
+        # TODO replace all like this!
         "instantiate_link", "1", "Attribute", "if_cond", "if", "Expression",
         "instantiate_link", "1", "Attribute", "if_cond", "if", "Expression",
         "instantiate_link", "1", "Attribute", "if_then", "if", "Statement",
         "instantiate_link", "1", "Attribute", "if_then", "if", "Statement",
         "instantiate_link", "1", "Attribute", "if_else", "if", "Statement",
         "instantiate_link", "1", "Attribute", "if_else", "if", "Statement",
@@ -108,7 +129,6 @@ action_language = [
         "instantiate_link", "1", "Attribute", "call_func", "call", "Expression",
         "instantiate_link", "1", "Attribute", "call_func", "call", "Expression",
         "instantiate_link", "1", "Attribute", "call_params", "call", "param",
         "instantiate_link", "1", "Attribute", "call_params", "call", "param",
         "instantiate_link", "1", "Attribute", "call_last_param", "call", "param",
         "instantiate_link", "1", "Attribute", "call_last_param", "call", "param",
-        "instantiate_attribute", "1", "statement_next", "name", "next",
         "instantiate_attribute", "1", "if_cond", "name", "cond",
         "instantiate_attribute", "1", "if_cond", "name", "cond",
         "instantiate_attribute", "1", "if_then", "name", "true",
         "instantiate_attribute", "1", "if_then", "name", "true",
         "instantiate_attribute", "1", "if_else", "name", "false",
         "instantiate_attribute", "1", "if_else", "name", "false",
@@ -156,23 +176,12 @@ action_language = [
         "instantiate_link", "1", "Inheritance", "", "call_params", "dict_link",
         "instantiate_link", "1", "Inheritance", "", "call_params", "dict_link",
         "instantiate_link", "1", "Inheritance", "", "call_last_param", "dict_link",
         "instantiate_link", "1", "Inheritance", "", "call_last_param", "dict_link",
 
 
-        "instantiate_link", "1", "Attribute", "constraint", "Class", "funcdef",
-        "instantiate_attribute", "1", "constraint", "name", "constraint",
+        "model_define_attribute", "1", "Class", "constraint", True, "funcdef",
         "exit",
         "exit",
     ]
     ]
 
 
 bottom_attributes = [
 bottom_attributes = [
         "model",
         "model",
-        "instantiate_node", "1", "AttributeValue", "Natural",
-        "instantiate_node", "1", "AttributeValue", "Boolean",
-        "model_define_attribute", "1", "Attribute", "optional", False, "Boolean",
-        "model_define_attribute", "1", "Class", "lower_cardinality", True, "Natural",
-        "model_define_attribute", "1", "Class", "upper_cardinality", True, "Natural",
-        "model_define_attribute", "1", "Class", "source_lower_cardinality", True, "Natural",
-        "model_define_attribute", "1", "Class", "source_upper_cardinality", True, "Natural",
-        "model_define_attribute", "1", "Class", "target_lower_cardinality", True, "Natural",
-        "model_define_attribute", "1", "Class", "target_upper_cardinality", True, "Natural",
-        "instantiate_attribute", "1", "attr_name", "optional", False,
         "exit",
         "exit",
     ]
     ]