Browse Source

Fixed printing of AL code: cannot print self due to copying

Yentl Van Tendeloo 7 years ago
parent
commit
ab4fe724d3

BIN
bootstrap/bootstrap.m.gz


+ 4 - 0
bootstrap/metamodels.alt

@@ -238,6 +238,7 @@ Void function initialize_AL(scd_location : String, export_location : String):
 	instantiate_link(model, "Association", "constant_node", "constant", "Element")
 	instantiate_link(model, "Association", "output_node", "output", "Expression")
 	instantiate_link(model, "Association", "global_var", "global", "String")
+	instantiate_link(model, "Association", "declare_var", "declare", "String")
 	instantiate_link(model, "Association", "param_name", "param", "String")
 	instantiate_link(model, "Association", "param_value", "param", "Expression")
 	instantiate_link(model, "Association", "param_next_param", "param", "param")
@@ -261,6 +262,7 @@ Void function initialize_AL(scd_location : String, export_location : String):
 	instantiate_link(model, "Inheritance", "", "constant_node", "dict_link")
 	instantiate_link(model, "Inheritance", "", "output_node", "dict_link")
 	instantiate_link(model, "Inheritance", "", "global_var", "dict_link")
+	instantiate_link(model, "Inheritance", "", "declare_var", "dict_link")
 	instantiate_link(model, "Inheritance", "", "param_name", "dict_link")
 	instantiate_link(model, "Inheritance", "", "param_value", "dict_link")
 	instantiate_link(model, "Inheritance", "", "param_next_param", "dict_link")
@@ -282,6 +284,7 @@ Void function initialize_AL(scd_location : String, export_location : String):
 	instantiate_attribute(model, "constant_node", "target_lower_cardinality", 1)
 	instantiate_attribute(model, "output_node", "target_lower_cardinality", 1)
 	instantiate_attribute(model, "global_var", "target_lower_cardinality", 1)
+	instantiate_attribute(model, "declare_var", "target_lower_cardinality", 1)
 	instantiate_attribute(model, "param_name", "target_lower_cardinality", 1)
 	instantiate_attribute(model, "param_value", "target_lower_cardinality", 1)
 	instantiate_attribute(model, "funcdef_body", "target_lower_cardinality", 1)
@@ -303,6 +306,7 @@ Void function initialize_AL(scd_location : String, export_location : String):
 	instantiate_attribute(model, "constant_node", "target_upper_cardinality", 1)
 	instantiate_attribute(model, "output_node", "target_upper_cardinality", 1)
 	instantiate_attribute(model, "global_var", "target_upper_cardinality", 1)
+	instantiate_attribute(model, "declare_var", "target_upper_cardinality", 1)
 	instantiate_attribute(model, "param_name", "target_upper_cardinality", 1)
 	instantiate_attribute(model, "param_value", "target_upper_cardinality", 1)
 	instantiate_attribute(model, "param_next_param", "target_upper_cardinality", 1)

+ 2 - 0
bootstrap/modelling.alc

@@ -571,6 +571,8 @@ String function add_AL(model : Element, element : Element):
 				add_AL_links(model, todo, elem, type, "last_param", "param")
 				add_AL_links(model, todo, elem, type, "next", "")
 
+			// TODO why isn't declare added here? --> this causes the JIT to crash with a "localXXXXX is undefined" error
+
 	// Mark the node as first
 	String initial
 	initial = instantiate_node(model, "Initial", "")

+ 4 - 1
models/AL_to_py.alc

@@ -121,13 +121,16 @@ Boolean function main(model : Element):
 	String initial_function
 	String al_node
 	Element initial_function_element
-	get_indent(0)
 
 	initial_function = set_pop(allInstances(model, "AL/Initial"))
 	initial_function = set_pop(allAssociationDestinations(model, initial_function, "AL/initial_funcdef"))
 	initial_function_element = model["model"][initial_function]["body"]
 	al_node = cast_value(initial_function_element)
 	while (cast_value(initial_function_element) == "global"):
+		log("Assigning to " + cast_value(initial_function_element["next"]["var"]["var"]))
+		log("  the element: " + cast_value(initial_function_element["next"]["value"]["node"]))
+		log("  keys: " + set_to_string(dict_keys(initial_function_element["next"]["value"]["node"])))
+		log("Function is element: " + cast_id(initial_function_element["next"]["value"]["node"]))
 		initial_function_element = initial_function_element["next"]["next"]
 	log("Started execution at " + cast_value(initial_function_element))
 	log("Started REAL execution at " + cast_value(initial_function_element))

+ 7 - 0
models/test.alc

@@ -0,0 +1,7 @@
+include "primitives.alh"
+
+Void function main(model : Element):
+	log("Test")
+	Integer a
+	a = 1
+	return!

+ 2 - 1
test_printer.py

@@ -7,4 +7,5 @@ login("admin", "admin")
 
 model_add("formalisms/String", "formalisms/SimpleClassDiagrams", open("models/String.mvc", 'r').read())
 transformation_add_AL({"AL": "formalisms/ActionLanguage"}, {"String": "formalisms/String"}, "models/AL_to_Py", open("models/AL_to_py.alc", 'r').read())
-transformation_execute_AL("models/AL_to_Py", {"AL": "models/AL_to_Py"}, {"String": "models/printed_string"})
+transformation_add_AL({}, {}, "models/test", open("models/test.alc", 'r').read())
+transformation_execute_AL("models/AL_to_Py", {"AL": "models/test"}, {"String": "models/printed_string"})

+ 1 - 1
wrappers/modelverse_SCCD.py

@@ -1,7 +1,7 @@
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
-Date:   Wed Mar 28 10:16:04 2018
+Date:   Wed Mar 28 13:33:27 2018
 
 Model author: Yentl Van Tendeloo
 Model name:   MvK Server