Browse Source

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

Yentl Van Tendeloo 7 years ago
parent
commit
cb2bf902b1
6 changed files with 20 additions and 3 deletions
  1. 4 0
      bootstrap/metamodels.alt
  2. 2 0
      bootstrap/modelling.alc
  3. 4 1
      models/AL_to_py.alc
  4. 7 0
      models/test.alc
  5. 2 1
      test_printer.py
  6. 1 1
      wrappers/modelverse_SCCD.py

+ 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", "constant_node", "constant", "Element")
 	instantiate_link(model, "Association", "output_node", "output", "Expression")
 	instantiate_link(model, "Association", "output_node", "output", "Expression")
 	instantiate_link(model, "Association", "global_var", "global", "String")
 	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_name", "param", "String")
 	instantiate_link(model, "Association", "param_value", "param", "Expression")
 	instantiate_link(model, "Association", "param_value", "param", "Expression")
 	instantiate_link(model, "Association", "param_next_param", "param", "param")
 	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", "", "constant_node", "dict_link")
 	instantiate_link(model, "Inheritance", "", "output_node", "dict_link")
 	instantiate_link(model, "Inheritance", "", "output_node", "dict_link")
 	instantiate_link(model, "Inheritance", "", "global_var", "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_name", "dict_link")
 	instantiate_link(model, "Inheritance", "", "param_value", "dict_link")
 	instantiate_link(model, "Inheritance", "", "param_value", "dict_link")
 	instantiate_link(model, "Inheritance", "", "param_next_param", "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, "constant_node", "target_lower_cardinality", 1)
 	instantiate_attribute(model, "output_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, "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_name", "target_lower_cardinality", 1)
 	instantiate_attribute(model, "param_value", "target_lower_cardinality", 1)
 	instantiate_attribute(model, "param_value", "target_lower_cardinality", 1)
 	instantiate_attribute(model, "funcdef_body", "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, "constant_node", "target_upper_cardinality", 1)
 	instantiate_attribute(model, "output_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, "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_name", "target_upper_cardinality", 1)
 	instantiate_attribute(model, "param_value", "target_upper_cardinality", 1)
 	instantiate_attribute(model, "param_value", "target_upper_cardinality", 1)
 	instantiate_attribute(model, "param_next_param", "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, "last_param", "param")
 				add_AL_links(model, todo, elem, type, "next", "")
 				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
 	// Mark the node as first
 	String initial
 	String initial
 	initial = instantiate_node(model, "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 initial_function
 	String al_node
 	String al_node
 	Element initial_function_element
 	Element initial_function_element
-	get_indent(0)
 
 
 	initial_function = set_pop(allInstances(model, "AL/Initial"))
 	initial_function = set_pop(allInstances(model, "AL/Initial"))
 	initial_function = set_pop(allAssociationDestinations(model, initial_function, "AL/initial_funcdef"))
 	initial_function = set_pop(allAssociationDestinations(model, initial_function, "AL/initial_funcdef"))
 	initial_function_element = model["model"][initial_function]["body"]
 	initial_function_element = model["model"][initial_function]["body"]
 	al_node = cast_value(initial_function_element)
 	al_node = cast_value(initial_function_element)
 	while (cast_value(initial_function_element) == "global"):
 	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"]
 		initial_function_element = initial_function_element["next"]["next"]
 	log("Started execution at " + cast_value(initial_function_element))
 	log("Started execution at " + cast_value(initial_function_element))
 	log("Started REAL 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())
 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_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)
 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 author: Yentl Van Tendeloo
 Model name:   MvK Server
 Model name:   MvK Server