Yentl Van Tendeloo 7 years ago
parent
commit
36c5446a1a

+ 144 - 141
kernel/modelverse_kernel/generated.py

@@ -12,6 +12,12 @@ class ModelverseKernel(object):
 		self.success = True
 		self.success = True
 		self.generators = {}
 		self.generators = {}
 
 
+	def set_overlap(self, lst):
+		s = set(lst.pop())
+		while (lst):
+			s &= set(lst.pop())
+		return list(s)
+
 	def execute_yields(self, taskname, operation, params, reply):
 	def execute_yields(self, taskname, operation, params, reply):
 		try:
 		try:
 			self.success = True
 			self.success = True
@@ -185,8 +191,6 @@ class ModelverseKernel(object):
 		Rules_N8_4, = yield [('RD', [Rules_N8_3, 'IP'])]
 		Rules_N8_4, = yield [('RD', [Rules_N8_3, 'IP'])]
 		Rules_N8_4_V, = yield [('RV', [Rules_N8_4])]
 		Rules_N8_4_V, = yield [('RV', [Rules_N8_4])]
 		Rules_N8_5, = yield [('RD', [Rules_N8_4, 'last_param'])]
 		Rules_N8_5, = yield [('RD', [Rules_N8_4, 'last_param'])]
-		Rules_N8_6, = yield [('RD', [Rules_N8_5, 'name'])]
-		Rules_N8_6_V, = yield [('RV', [Rules_N8_6])]
 		Rules_N9_0 = root
 		Rules_N9_0 = root
 		Rules_N9_1, = yield [('RD', [Rules_N9_0, taskname])]
 		Rules_N9_1, = yield [('RD', [Rules_N9_0, taskname])]
 		Rules_N9_2, = yield [('RD', [Rules_N9_1, 'frame'])]
 		Rules_N9_2, = yield [('RD', [Rules_N9_1, 'frame'])]
@@ -519,8 +523,6 @@ class ModelverseKernel(object):
 			Rules_N6_3_DEL, = yield [('RDE', [Rules_N6_2, 'phase'])]
 			Rules_N6_3_DEL, = yield [('RDE', [Rules_N6_2, 'phase'])]
 			yield [('DE', [Rules_N6_3_DEL])]
 			yield [('DE', [Rules_N6_3_DEL])]
 			Rules_N6_5, = yield [('RD', [Rules_N6_2, 'IP'])]
 			Rules_N6_5, = yield [('RD', [Rules_N6_2, 'IP'])]
-			Rules_N6_5_DEL, = yield [('RDE', [Rules_N6_2, 'IP'])]
-			yield [('DE', [Rules_N6_5_DEL])]
 			Rules_N6_7, = yield [('RD', [Rules_N6_2, 'evalstack'])]
 			Rules_N6_7, = yield [('RD', [Rules_N6_2, 'evalstack'])]
 			Rules_N6_7_DEL, = yield [('RDE', [Rules_N6_2, 'evalstack'])]
 			Rules_N6_7_DEL, = yield [('RDE', [Rules_N6_2, 'evalstack'])]
 			yield [('DE', [Rules_N6_7_DEL])]
 			yield [('DE', [Rules_N6_7_DEL])]
@@ -535,10 +537,11 @@ class ModelverseKernel(object):
 			Rules_N6_10 = self.set_overlap(matched)[0]
 			Rules_N6_10 = self.set_overlap(matched)[0]
 			Rules_N6_4, = yield [('CNV', ['finish'])]
 			Rules_N6_4, = yield [('CNV', ['finish'])]
 			Rules_N6_9, = yield [('CN', [])]
 			Rules_N6_9, = yield [('CN', [])]
-			Rules___169, = yield [('CD', [Rules_N6_2, 'phase', Rules_N6_4])]
-			Rules___173, = yield [('CD', [Rules_N6_2, 'IP', Rules_N6_6])]
+			Rules_N6_11, = yield [('CNV', ['finish'])]
+			Rules___171, = yield [('CD', [Rules_N6_2, 'phase', Rules_N6_4])]
 			Rules___183, = yield [('CD', [Rules_N6_2, 'evalstack', Rules_N6_9])]
 			Rules___183, = yield [('CD', [Rules_N6_2, 'evalstack', Rules_N6_9])]
 			Rules___185, = yield [('CD', [Rules_N6_9, 'prev', Rules_N6_8])]
 			Rules___185, = yield [('CD', [Rules_N6_9, 'prev', Rules_N6_8])]
+			Rules___187, = yield [('CD', [Rules_N6_8, 'phase', Rules_N6_11])]
 		elif (True  and Rules_N7_1 is not None  and Rules_N7_3 is not None  and Rules_N7_6 is not None  and Rules_N7_6_V['value'] == 'call' and Rules_N7_10 is not None  and Rules_N7_10_V == 'call' and Rules_N7_11 is None ):
 		elif (True  and Rules_N7_1 is not None  and Rules_N7_3 is not None  and Rules_N7_6 is not None  and Rules_N7_6_V['value'] == 'call' and Rules_N7_10 is not None  and Rules_N7_10_V == 'call' and Rules_N7_11 is None ):
 			# Execute rule Rules/Call_Call_None_N7
 			# Execute rule Rules/Call_Call_None_N7
 			print('Execute rule Rules/Call_Call_None_N7')
 			print('Execute rule Rules/Call_Call_None_N7')
@@ -559,16 +562,16 @@ class ModelverseKernel(object):
 			Rules_N7_7, = yield [('CN', [])]
 			Rules_N7_7, = yield [('CN', [])]
 			Rules_N7_9, = yield [('CNV', ['finish'])]
 			Rules_N7_9, = yield [('CNV', ['finish'])]
 			Rules_N7_13, = yield [('CNV', ['init'])]
 			Rules_N7_13, = yield [('CNV', ['init'])]
-			Rules___203, = yield [('CD', [Rules_N7_1, 'frame', Rules_N7_2])]
-			Rules___207, = yield [('CD', [Rules_N7_2, 'evalstack', Rules_N7_4])]
-			Rules___209, = yield [('CD', [Rules_N7_2, 'symbols', Rules_N7_5])]
-			Rules___211, = yield [('CD', [Rules_N7_2, 'caller', Rules_N7_6])]
-			Rules___213, = yield [('CD', [Rules_N7_2, 'returnvalue', Rules_N7_7])]
-			Rules___215, = yield [('CD', [Rules_N7_2, 'IP', Rules_N7_12])]
-			Rules___217, = yield [('CD', [Rules_N7_2, 'phase', Rules_N7_13])]
-			Rules___221, = yield [('CD', [Rules_N7_2, 'prev', Rules_N7_3])]
-			Rules___227, = yield [('CD', [Rules_N7_3, 'phase', Rules_N7_9])]
-		elif (True  and Rules_N8_1 is not None  and Rules_N8_3 is not None  and Rules_N8_4 is not None  and Rules_N8_4_V['value'] == 'call' and Rules_N8_5 is not None  and Rules_N8_6 is not None  and Rules_N8_6_V == a):
+			Rules___205, = yield [('CD', [Rules_N7_1, 'frame', Rules_N7_2])]
+			Rules___209, = yield [('CD', [Rules_N7_2, 'evalstack', Rules_N7_4])]
+			Rules___211, = yield [('CD', [Rules_N7_2, 'symbols', Rules_N7_5])]
+			Rules___213, = yield [('CD', [Rules_N7_2, 'caller', Rules_N7_6])]
+			Rules___215, = yield [('CD', [Rules_N7_2, 'returnvalue', Rules_N7_7])]
+			Rules___217, = yield [('CD', [Rules_N7_2, 'IP', Rules_N7_12])]
+			Rules___219, = yield [('CD', [Rules_N7_2, 'phase', Rules_N7_13])]
+			Rules___223, = yield [('CD', [Rules_N7_2, 'prev', Rules_N7_3])]
+			Rules___229, = yield [('CD', [Rules_N7_3, 'phase', Rules_N7_9])]
+		elif (True  and Rules_N8_1 is not None  and Rules_N8_3 is not None  and Rules_N8_4 is not None  and Rules_N8_4_V['value'] == 'call' and Rules_N8_5 is not None ):
 			# Execute rule Rules/Call_Call_Params_N8
 			# Execute rule Rules/Call_Call_Params_N8
 			print('Execute rule Rules/Call_Call_Params_N8')
 			print('Execute rule Rules/Call_Call_Params_N8')
 			Rules_N8_1, = yield [('RD', [Rules_N8_0, taskname])]
 			Rules_N8_1, = yield [('RD', [Rules_N8_0, taskname])]
@@ -608,11 +611,11 @@ class ModelverseKernel(object):
 			Rules_N8_9, = yield [('RD', [Rules_N8_11, a])]
 			Rules_N8_9, = yield [('RD', [Rules_N8_11, a])]
 			Rules_N8_7, = yield [('CNV', ['finish'])]
 			Rules_N8_7, = yield [('CNV', ['finish'])]
 			Rules_N8_10, = yield [('CN', [])]
 			Rules_N8_10, = yield [('CN', [])]
-			Rules___251, = yield [('CD', [Rules_N8_1, 'frame', Rules_N8_2])]
-			Rules___265, = yield [('CD', [Rules_N8_3, 'finish', Rules_N8_7])]
-			Rules___275, = yield [('CD', [Rules_N8_10, 'value', Rules_N8_8])]
+			Rules___253, = yield [('CD', [Rules_N8_1, 'frame', Rules_N8_2])]
+			Rules___267, = yield [('CD', [Rules_N8_3, 'finish', Rules_N8_7])]
+			Rules___277, = yield [('CD', [Rules_N8_10, 'value', Rules_N8_8])]
 			Rules_N8_16, = yield [('CE', [Rules_N8_15, Rules_N8_10])]
 			Rules_N8_16, = yield [('CE', [Rules_N8_15, Rules_N8_10])]
-			Rules___284, = yield [('CE', [Rules_N8_16, Rules_N8_9])]
+			Rules___286, = yield [('CE', [Rules_N8_16, Rules_N8_9])]
 		elif (True  and Rules_N9_1 is not None  and Rules_N9_2 is not None  and Rules_N9_14 is not None  and Rules_N9_14_V['value'] == 'call' and Rules_N9_15 is not None  and Rules_N9_16 is not None ):
 		elif (True  and Rules_N9_1 is not None  and Rules_N9_2 is not None  and Rules_N9_14 is not None  and Rules_N9_14_V['value'] == 'call' and Rules_N9_15 is not None  and Rules_N9_16 is not None ):
 			# Execute rule Rules/Call_Params_First_Multi_N9
 			# Execute rule Rules/Call_Params_First_Multi_N9
 			print('Execute rule Rules/Call_Params_First_Multi_N9')
 			print('Execute rule Rules/Call_Params_First_Multi_N9')
@@ -640,19 +643,19 @@ class ModelverseKernel(object):
 			Rules_N9_7, = yield [('CN', [])]
 			Rules_N9_7, = yield [('CN', [])]
 			Rules_N9_11, = yield [('CNV', ['init'])]
 			Rules_N9_11, = yield [('CNV', ['init'])]
 			Rules_N9_12, = yield [('CN', [])]
 			Rules_N9_12, = yield [('CN', [])]
-			Rules___308, = yield [('CD', [Rules_N9_2, 'evalstack', Rules_N9_12])]
-			Rules___314, = yield [('CD', [Rules_N9_2, 'init', Rules_N9_11])]
-			Rules___320, = yield [('CD', [Rules_N9_2, 'IP', Rules_N9_17])]
-			Rules___322, = yield [('CD', [Rules_N9_3, 'caller', Rules_N9_14])]
-			Rules___324, = yield [('CD', [Rules_N9_3, 'prev', Rules_N9_2])]
-			Rules___326, = yield [('CD', [Rules_N9_3, 'phase', Rules_N9_4])]
-			Rules___328, = yield [('CD', [Rules_N9_3, 'evalstack', Rules_N9_5])]
-			Rules___330, = yield [('CD', [Rules_N9_3, 'symbols', Rules_N9_6])]
-			Rules___332, = yield [('CD', [Rules_N9_3, 'returnvalue', Rules_N9_7])]
-			Rules___334, = yield [('CD', [Rules_N9_3, 'IP', Rules_N9_8])]
-			Rules___340, = yield [('CD', [Rules_N9_12, 'prev', Rules_N9_13])]
-			Rules___342, = yield [('CD', [Rules_N9_13, 'inst', Rules_N9_14])]
-			Rules___344, = yield [('CD', [Rules_N9_13, 'phase', Rules_N9_16])]
+			Rules___310, = yield [('CD', [Rules_N9_2, 'evalstack', Rules_N9_12])]
+			Rules___316, = yield [('CD', [Rules_N9_2, 'init', Rules_N9_11])]
+			Rules___322, = yield [('CD', [Rules_N9_2, 'IP', Rules_N9_17])]
+			Rules___324, = yield [('CD', [Rules_N9_3, 'caller', Rules_N9_14])]
+			Rules___326, = yield [('CD', [Rules_N9_3, 'prev', Rules_N9_2])]
+			Rules___328, = yield [('CD', [Rules_N9_3, 'phase', Rules_N9_4])]
+			Rules___330, = yield [('CD', [Rules_N9_3, 'evalstack', Rules_N9_5])]
+			Rules___332, = yield [('CD', [Rules_N9_3, 'symbols', Rules_N9_6])]
+			Rules___334, = yield [('CD', [Rules_N9_3, 'returnvalue', Rules_N9_7])]
+			Rules___336, = yield [('CD', [Rules_N9_3, 'IP', Rules_N9_8])]
+			Rules___342, = yield [('CD', [Rules_N9_12, 'prev', Rules_N9_13])]
+			Rules___344, = yield [('CD', [Rules_N9_13, 'inst', Rules_N9_14])]
+			Rules___346, = yield [('CD', [Rules_N9_13, 'phase', Rules_N9_16])]
 		elif (True  and Rules_N10_1 is not None  and Rules_N10_2 is not None  and Rules_N10_14 is not None  and Rules_N10_14_V['value'] == 'call' and Rules_N10_15 is not None ):
 		elif (True  and Rules_N10_1 is not None  and Rules_N10_2 is not None  and Rules_N10_14 is not None  and Rules_N10_14_V['value'] == 'call' and Rules_N10_15 is not None ):
 			# Execute rule Rules/Call_Params_First_Single_N10
 			# Execute rule Rules/Call_Params_First_Single_N10
 			print('Execute rule Rules/Call_Params_First_Single_N10')
 			print('Execute rule Rules/Call_Params_First_Single_N10')
@@ -681,19 +684,19 @@ class ModelverseKernel(object):
 			Rules_N10_9, = yield [('CNV', ['init'])]
 			Rules_N10_9, = yield [('CNV', ['init'])]
 			Rules_N10_13, = yield [('CNV', ['call'])]
 			Rules_N10_13, = yield [('CNV', ['call'])]
 			Rules_N10_17, = yield [('CN', [])]
 			Rules_N10_17, = yield [('CN', [])]
-			Rules___374, = yield [('CD', [Rules_N10_2, 'IP', Rules_N10_16])]
-			Rules___376, = yield [('CD', [Rules_N10_2, 'phase', Rules_N10_9])]
-			Rules___382, = yield [('CD', [Rules_N10_2, 'evalstack', Rules_N10_17])]
-			Rules___388, = yield [('CD', [Rules_N10_3, 'phase', Rules_N10_4])]
-			Rules___390, = yield [('CD', [Rules_N10_3, 'evalstack', Rules_N10_5])]
-			Rules___392, = yield [('CD', [Rules_N10_3, 'symbols', Rules_N10_6])]
-			Rules___394, = yield [('CD', [Rules_N10_3, 'returnvalue', Rules_N10_7])]
-			Rules___396, = yield [('CD', [Rules_N10_3, 'prev', Rules_N10_2])]
-			Rules___398, = yield [('CD', [Rules_N10_3, 'IP', Rules_N10_8])]
-			Rules___400, = yield [('CD', [Rules_N10_3, 'caller', Rules_N10_14])]
-			Rules___406, = yield [('CD', [Rules_N10_12, 'phase', Rules_N10_13])]
-			Rules___408, = yield [('CD', [Rules_N10_12, 'inst', Rules_N10_14])]
-			Rules___416, = yield [('CD', [Rules_N10_17, 'prev', Rules_N10_12])]
+			Rules___376, = yield [('CD', [Rules_N10_2, 'IP', Rules_N10_16])]
+			Rules___378, = yield [('CD', [Rules_N10_2, 'phase', Rules_N10_9])]
+			Rules___384, = yield [('CD', [Rules_N10_2, 'evalstack', Rules_N10_17])]
+			Rules___390, = yield [('CD', [Rules_N10_3, 'phase', Rules_N10_4])]
+			Rules___392, = yield [('CD', [Rules_N10_3, 'evalstack', Rules_N10_5])]
+			Rules___394, = yield [('CD', [Rules_N10_3, 'symbols', Rules_N10_6])]
+			Rules___396, = yield [('CD', [Rules_N10_3, 'returnvalue', Rules_N10_7])]
+			Rules___398, = yield [('CD', [Rules_N10_3, 'prev', Rules_N10_2])]
+			Rules___400, = yield [('CD', [Rules_N10_3, 'IP', Rules_N10_8])]
+			Rules___402, = yield [('CD', [Rules_N10_3, 'caller', Rules_N10_14])]
+			Rules___408, = yield [('CD', [Rules_N10_12, 'phase', Rules_N10_13])]
+			Rules___410, = yield [('CD', [Rules_N10_12, 'inst', Rules_N10_14])]
+			Rules___418, = yield [('CD', [Rules_N10_17, 'prev', Rules_N10_12])]
 		elif (True  and Rules_N11_1 is not None  and Rules_N11_2 is not None  and Rules_N11_14 is not None  and Rules_N11_16 is not None  and Rules_N11_16_V['value'] == 'call'):
 		elif (True  and Rules_N11_1 is not None  and Rules_N11_2 is not None  and Rules_N11_14 is not None  and Rules_N11_16 is not None  and Rules_N11_16_V['value'] == 'call'):
 			# Execute rule Rules/Call_Params_Last_N11
 			# Execute rule Rules/Call_Params_Last_N11
 			print('Execute rule Rules/Call_Params_Last_N11')
 			print('Execute rule Rules/Call_Params_Last_N11')
@@ -747,15 +750,15 @@ class ModelverseKernel(object):
 			Rules_N11_15, = yield [('CNV', ['call'])]
 			Rules_N11_15, = yield [('CNV', ['call'])]
 			Rules_N11_18, = yield [('CN', [])]
 			Rules_N11_18, = yield [('CN', [])]
 			Rules_N11_19, = yield [('CNV', ['init'])]
 			Rules_N11_19, = yield [('CNV', ['init'])]
-			Rules___446, = yield [('CD', [Rules_N11_2, 'evalstack', Rules_N11_18])]
-			Rules___448, = yield [('CD', [Rules_N11_2, 'phase', Rules_N11_19])]
-			Rules___454, = yield [('CD', [Rules_N11_2, 'IP', Rules_N11_13])]
-			Rules___470, = yield [('CD', [Rules_N11_9, 'value', Rules_N11_10])]
-			Rules___480, = yield [('CD', [Rules_N11_17, 'inst', Rules_N11_16])]
-			Rules___482, = yield [('CD', [Rules_N11_17, 'phase', Rules_N11_15])]
-			Rules___484, = yield [('CD', [Rules_N11_18, 'prev', Rules_N11_17])]
+			Rules___448, = yield [('CD', [Rules_N11_2, 'evalstack', Rules_N11_18])]
+			Rules___450, = yield [('CD', [Rules_N11_2, 'phase', Rules_N11_19])]
+			Rules___456, = yield [('CD', [Rules_N11_2, 'IP', Rules_N11_13])]
+			Rules___472, = yield [('CD', [Rules_N11_9, 'value', Rules_N11_10])]
+			Rules___482, = yield [('CD', [Rules_N11_17, 'inst', Rules_N11_16])]
+			Rules___484, = yield [('CD', [Rules_N11_17, 'phase', Rules_N11_15])]
+			Rules___486, = yield [('CD', [Rules_N11_18, 'prev', Rules_N11_17])]
 			Rules_N11_8, = yield [('CE', [Rules_N11_20, Rules_N11_9])]
 			Rules_N11_8, = yield [('CE', [Rules_N11_20, Rules_N11_9])]
-			Rules___487, = yield [('CE', [Rules_N11_8, Rules_N11_7])]
+			Rules___489, = yield [('CE', [Rules_N11_8, Rules_N11_7])]
 		elif (True  and Rules_N12_1 is not None  and Rules_N12_2 is not None  and Rules_N12_11 is not None  and Rules_N12_18 is not None  and Rules_N12_19 is not None  and Rules_N12_19_V['value'] == 'call'):
 		elif (True  and Rules_N12_1 is not None  and Rules_N12_2 is not None  and Rules_N12_11 is not None  and Rules_N12_18 is not None  and Rules_N12_19 is not None  and Rules_N12_19_V['value'] == 'call'):
 			# Execute rule Rules/Call_Params_Next_N12
 			# Execute rule Rules/Call_Params_Next_N12
 			print('Execute rule Rules/Call_Params_Next_N12')
 			print('Execute rule Rules/Call_Params_Next_N12')
@@ -808,15 +811,15 @@ class ModelverseKernel(object):
 			Rules_N12_9, = yield [('CN', [])]
 			Rules_N12_9, = yield [('CN', [])]
 			Rules_N12_15, = yield [('CN', [])]
 			Rules_N12_15, = yield [('CN', [])]
 			Rules_N12_20, = yield [('CNV', ['init'])]
 			Rules_N12_20, = yield [('CNV', ['init'])]
-			Rules___519, = yield [('CD', [Rules_N12_2, 'evalstack', Rules_N12_15])]
-			Rules___521, = yield [('CD', [Rules_N12_2, 'IP', Rules_N12_16])]
-			Rules___525, = yield [('CD', [Rules_N12_2, 'phase', Rules_N12_20])]
-			Rules___541, = yield [('CD', [Rules_N12_9, 'value', Rules_N12_10])]
-			Rules___551, = yield [('CD', [Rules_N12_15, 'prev', Rules_N12_17])]
-			Rules___553, = yield [('CD', [Rules_N12_17, 'phase', Rules_N12_18])]
-			Rules___555, = yield [('CD', [Rules_N12_17, 'inst', Rules_N12_19])]
+			Rules___521, = yield [('CD', [Rules_N12_2, 'evalstack', Rules_N12_15])]
+			Rules___523, = yield [('CD', [Rules_N12_2, 'IP', Rules_N12_16])]
+			Rules___527, = yield [('CD', [Rules_N12_2, 'phase', Rules_N12_20])]
+			Rules___543, = yield [('CD', [Rules_N12_9, 'value', Rules_N12_10])]
+			Rules___553, = yield [('CD', [Rules_N12_15, 'prev', Rules_N12_17])]
+			Rules___555, = yield [('CD', [Rules_N12_17, 'phase', Rules_N12_18])]
+			Rules___557, = yield [('CD', [Rules_N12_17, 'inst', Rules_N12_19])]
 			Rules_N12_8, = yield [('CE', [Rules_N12_13, Rules_N12_9])]
 			Rules_N12_8, = yield [('CE', [Rules_N12_13, Rules_N12_9])]
-			Rules___558, = yield [('CE', [Rules_N12_8, Rules_N12_7])]
+			Rules___560, = yield [('CE', [Rules_N12_8, Rules_N12_7])]
 		elif (True  and Rules_N13_1 is not None  and Rules_N13_2 is not None  and Rules_N13_3 is not None  and Rules_N13_3_V == 'init' and Rules_N13_6 is not None  and Rules_N13_6_V['value'] == 'call' and Rules_N13_9 is None ):
 		elif (True  and Rules_N13_1 is not None  and Rules_N13_2 is not None  and Rules_N13_3 is not None  and Rules_N13_3_V == 'init' and Rules_N13_6 is not None  and Rules_N13_6_V['value'] == 'call' and Rules_N13_9 is None ):
 			# Execute rule Rules/Call_Resolve_No_Params_N13
 			# Execute rule Rules/Call_Resolve_No_Params_N13
 			print('Execute rule Rules/Call_Resolve_No_Params_N13')
 			print('Execute rule Rules/Call_Resolve_No_Params_N13')
@@ -833,11 +836,11 @@ class ModelverseKernel(object):
 			Rules_N13_8, = yield [('RD', [Rules_N13_6, 'func'])]
 			Rules_N13_8, = yield [('RD', [Rules_N13_6, 'func'])]
 			Rules_N13_4, = yield [('CN', [])]
 			Rules_N13_4, = yield [('CN', [])]
 			Rules_N13_7, = yield [('CNV', ['call'])]
 			Rules_N13_7, = yield [('CNV', ['call'])]
-			Rules___578, = yield [('CD', [Rules_N13_2, 'evalstack', Rules_N13_4])]
-			Rules___582, = yield [('CD', [Rules_N13_2, 'IP', Rules_N13_8])]
-			Rules___584, = yield [('CD', [Rules_N13_4, 'prev', Rules_N13_5])]
-			Rules___586, = yield [('CD', [Rules_N13_5, 'inst', Rules_N13_6])]
-			Rules___588, = yield [('CD', [Rules_N13_5, 'phase', Rules_N13_7])]
+			Rules___580, = yield [('CD', [Rules_N13_2, 'evalstack', Rules_N13_4])]
+			Rules___584, = yield [('CD', [Rules_N13_2, 'IP', Rules_N13_8])]
+			Rules___586, = yield [('CD', [Rules_N13_4, 'prev', Rules_N13_5])]
+			Rules___588, = yield [('CD', [Rules_N13_5, 'inst', Rules_N13_6])]
+			Rules___590, = yield [('CD', [Rules_N13_5, 'phase', Rules_N13_7])]
 		elif (True  and Rules_N14_1 is not None  and Rules_N14_2 is not None  and Rules_N14_5 is not None  and Rules_N14_5_V['value'] == 'call' and Rules_N14_8 is not None ):
 		elif (True  and Rules_N14_1 is not None  and Rules_N14_2 is not None  and Rules_N14_5 is not None  and Rules_N14_5_V['value'] == 'call' and Rules_N14_8 is not None ):
 			# Execute rule Rules/Call_Resolve_Params_N14
 			# Execute rule Rules/Call_Resolve_Params_N14
 			print('Execute rule Rules/Call_Resolve_Params_N14')
 			print('Execute rule Rules/Call_Resolve_Params_N14')
@@ -853,11 +856,11 @@ class ModelverseKernel(object):
 			Rules_N14_8, = yield [('RD', [Rules_N14_5, 'params'])]
 			Rules_N14_8, = yield [('RD', [Rules_N14_5, 'params'])]
 			Rules_N14_6, = yield [('RD', [Rules_N14_5, 'func'])]
 			Rules_N14_6, = yield [('RD', [Rules_N14_5, 'func'])]
 			Rules_N14_4, = yield [('CN', [])]
 			Rules_N14_4, = yield [('CN', [])]
-			Rules___609, = yield [('CD', [Rules_N14_2, 'evalstack', Rules_N14_4])]
-			Rules___613, = yield [('CD', [Rules_N14_2, 'IP', Rules_N14_6])]
-			Rules___617, = yield [('CD', [Rules_N14_3, 'phase', Rules_N14_8])]
-			Rules___619, = yield [('CD', [Rules_N14_3, 'inst', Rules_N14_5])]
-			Rules___621, = yield [('CD', [Rules_N14_4, 'prev', Rules_N14_3])]
+			Rules___611, = yield [('CD', [Rules_N14_2, 'evalstack', Rules_N14_4])]
+			Rules___615, = yield [('CD', [Rules_N14_2, 'IP', Rules_N14_6])]
+			Rules___619, = yield [('CD', [Rules_N14_3, 'phase', Rules_N14_8])]
+			Rules___621, = yield [('CD', [Rules_N14_3, 'inst', Rules_N14_5])]
+			Rules___623, = yield [('CD', [Rules_N14_4, 'prev', Rules_N14_3])]
 		elif (True  and Rules_N15_1 is not None  and Rules_N15_2 is not None  and Rules_N15_4 is not None  and Rules_N15_4_V == 'init' and Rules_N15_6 is not None  and Rules_N15_6_V['value'] == 'constant'):
 		elif (True  and Rules_N15_1 is not None  and Rules_N15_2 is not None  and Rules_N15_4 is not None  and Rules_N15_4_V == 'init' and Rules_N15_6 is not None  and Rules_N15_6_V['value'] == 'constant'):
 			# Execute rule Rules/Const_N15
 			# Execute rule Rules/Const_N15
 			print('Execute rule Rules/Const_N15')
 			print('Execute rule Rules/Const_N15')
@@ -872,8 +875,8 @@ class ModelverseKernel(object):
 			Rules_N15_6, = yield [('RD', [Rules_N15_2, 'IP'])]
 			Rules_N15_6, = yield [('RD', [Rules_N15_2, 'IP'])]
 			Rules_N15_7, = yield [('RD', [Rules_N15_6, 'node'])]
 			Rules_N15_7, = yield [('RD', [Rules_N15_6, 'node'])]
 			Rules_N15_5, = yield [('CNV', ['finish'])]
 			Rules_N15_5, = yield [('CNV', ['finish'])]
-			Rules___639, = yield [('CD', [Rules_N15_2, 'returnvalue', Rules_N15_7])]
-			Rules___645, = yield [('CD', [Rules_N15_2, 'phase', Rules_N15_5])]
+			Rules___641, = yield [('CD', [Rules_N15_2, 'returnvalue', Rules_N15_7])]
+			Rules___647, = yield [('CD', [Rules_N15_2, 'phase', Rules_N15_5])]
 		elif (True  and Rules_N16_1 is not None  and Rules_N16_2 is not None  and Rules_N16_3 is not None  and Rules_N16_3_V == 'init' and Rules_N16_4 is not None  and Rules_N16_4_V['value'] == 'continue'):
 		elif (True  and Rules_N16_1 is not None  and Rules_N16_2 is not None  and Rules_N16_3 is not None  and Rules_N16_3_V == 'init' and Rules_N16_4 is not None  and Rules_N16_4_V['value'] == 'continue'):
 			# Execute rule Rules/Continue_N16
 			# Execute rule Rules/Continue_N16
 			print('Execute rule Rules/Continue_N16')
 			print('Execute rule Rules/Continue_N16')
@@ -896,9 +899,9 @@ class ModelverseKernel(object):
 			matched.append(_tmp)
 			matched.append(_tmp)
 			Rules_N16_9 = self.set_overlap(matched)[0]
 			Rules_N16_9 = self.set_overlap(matched)[0]
 			Rules_N16_8, = yield [('CN', [])]
 			Rules_N16_8, = yield [('CN', [])]
-			Rules___669, = yield [('CD', [Rules_N16_2, 'IP', Rules_N16_5])]
-			Rules___679, = yield [('CD', [Rules_N16_2, 'evalstack', Rules_N16_8])]
-			Rules___681, = yield [('CD', [Rules_N16_8, 'prev', Rules_N16_7])]
+			Rules___671, = yield [('CD', [Rules_N16_2, 'IP', Rules_N16_5])]
+			Rules___681, = yield [('CD', [Rules_N16_2, 'evalstack', Rules_N16_8])]
+			Rules___683, = yield [('CD', [Rules_N16_8, 'prev', Rules_N16_7])]
 		elif (True  and Rules_N17_1 is not None  and Rules_N17_2 is not None  and Rules_N17_3 is not None  and Rules_N17_3_V == 'init' and Rules_N17_5 is not None  and Rules_N17_5_V['value'] == 'declare'):
 		elif (True  and Rules_N17_1 is not None  and Rules_N17_2 is not None  and Rules_N17_3 is not None  and Rules_N17_3_V == 'init' and Rules_N17_5 is not None  and Rules_N17_5_V['value'] == 'declare'):
 			# Execute rule Rules/Declare_Init_N17
 			# Execute rule Rules/Declare_Init_N17
 			print('Execute rule Rules/Declare_Init_N17')
 			print('Execute rule Rules/Declare_Init_N17')
@@ -912,9 +915,9 @@ class ModelverseKernel(object):
 			Rules_N17_7, = yield [('RD', [Rules_N17_5, 'var'])]
 			Rules_N17_7, = yield [('RD', [Rules_N17_5, 'var'])]
 			Rules_N17_4, = yield [('CNV', ['finish'])]
 			Rules_N17_4, = yield [('CNV', ['finish'])]
 			Rules_N17_8, = yield [('CN', [])]
 			Rules_N17_8, = yield [('CN', [])]
-			Rules___698, = yield [('CD', [Rules_N17_2, 'phase', Rules_N17_4])]
+			Rules___700, = yield [('CD', [Rules_N17_2, 'phase', Rules_N17_4])]
 			Rules_N17_9, = yield [('CE', [Rules_N17_6, Rules_N17_8])]
 			Rules_N17_9, = yield [('CE', [Rules_N17_6, Rules_N17_8])]
-			Rules___707, = yield [('CE', [Rules_N17_9, Rules_N17_7])]
+			Rules___709, = yield [('CE', [Rules_N17_9, Rules_N17_7])]
 		elif (True  and Rules_N18_1 is not None  and Rules_N18_2 is not None  and Rules_N18_4 is not None  and Rules_N18_4_V == 'init' and Rules_N18_6 is not None  and Rules_N18_6_V['value'] == 'global'):
 		elif (True  and Rules_N18_1 is not None  and Rules_N18_2 is not None  and Rules_N18_4 is not None  and Rules_N18_4_V == 'init' and Rules_N18_6 is not None  and Rules_N18_6_V['value'] == 'global'):
 			# Execute rule Rules/Global_Init_N18
 			# Execute rule Rules/Global_Init_N18
 			print('Execute rule Rules/Global_Init_N18')
 			print('Execute rule Rules/Global_Init_N18')
@@ -928,9 +931,9 @@ class ModelverseKernel(object):
 			Rules_N18_7, = yield [('RD', [Rules_N18_6, 'var'])]
 			Rules_N18_7, = yield [('RD', [Rules_N18_6, 'var'])]
 			Rules_N18_5, = yield [('CNV', ['finish'])]
 			Rules_N18_5, = yield [('CNV', ['finish'])]
 			Rules_N18_8, = yield [('CN', [])]
 			Rules_N18_8, = yield [('CN', [])]
-			Rules___726, = yield [('CD', [Rules_N18_2, 'phase', Rules_N18_5])]
+			Rules___728, = yield [('CD', [Rules_N18_2, 'phase', Rules_N18_5])]
 			Rules_N18_9, = yield [('CE', [Rules_N18_3, Rules_N18_8])]
 			Rules_N18_9, = yield [('CE', [Rules_N18_3, Rules_N18_8])]
-			Rules___733, = yield [('CE', [Rules_N18_9, Rules_N18_7])]
+			Rules___735, = yield [('CE', [Rules_N18_9, Rules_N18_7])]
 		elif (True  and Rules_N19_1 is not None  and Rules_N19_2 is not None  and Rules_N19_3 is not None  and Rules_N19_3_V == 'init' and Rules_N19_6 is not None  and Rules_N19_6_V['value'] == 'if'):
 		elif (True  and Rules_N19_1 is not None  and Rules_N19_2 is not None  and Rules_N19_3 is not None  and Rules_N19_3_V == 'init' and Rules_N19_6 is not None  and Rules_N19_6_V['value'] == 'if'):
 			# Execute rule Rules/If_Cond_N19
 			# Execute rule Rules/If_Cond_N19
 			print('Execute rule Rules/If_Cond_N19')
 			print('Execute rule Rules/If_Cond_N19')
@@ -946,11 +949,11 @@ class ModelverseKernel(object):
 			Rules_N19_8, = yield [('RD', [Rules_N19_6, 'cond'])]
 			Rules_N19_8, = yield [('RD', [Rules_N19_6, 'cond'])]
 			Rules_N19_4, = yield [('CN', [])]
 			Rules_N19_4, = yield [('CN', [])]
 			Rules_N19_7, = yield [('CNV', ['cond'])]
 			Rules_N19_7, = yield [('CNV', ['cond'])]
-			Rules___752, = yield [('CD', [Rules_N19_2, 'evalstack', Rules_N19_4])]
-			Rules___756, = yield [('CD', [Rules_N19_2, 'IP', Rules_N19_8])]
-			Rules___758, = yield [('CD', [Rules_N19_4, 'prev', Rules_N19_5])]
-			Rules___760, = yield [('CD', [Rules_N19_5, 'inst', Rules_N19_6])]
-			Rules___762, = yield [('CD', [Rules_N19_5, 'phase', Rules_N19_7])]
+			Rules___754, = yield [('CD', [Rules_N19_2, 'evalstack', Rules_N19_4])]
+			Rules___758, = yield [('CD', [Rules_N19_2, 'IP', Rules_N19_8])]
+			Rules___760, = yield [('CD', [Rules_N19_4, 'prev', Rules_N19_5])]
+			Rules___762, = yield [('CD', [Rules_N19_5, 'inst', Rules_N19_6])]
+			Rules___764, = yield [('CD', [Rules_N19_5, 'phase', Rules_N19_7])]
 		elif (True  and Rules_N20_1 is not None  and Rules_N20_2 is not None  and Rules_N20_3 is not None  and Rules_N20_3_V == 'cond' and Rules_N20_4 is not None  and Rules_N20_4_V['value'] == 'if' and Rules_N20_6 is not None  and Rules_N20_6_V == False and Rules_N20_8 is not None ):
 		elif (True  and Rules_N20_1 is not None  and Rules_N20_2 is not None  and Rules_N20_3 is not None  and Rules_N20_3_V == 'cond' and Rules_N20_4 is not None  and Rules_N20_4_V['value'] == 'if' and Rules_N20_6 is not None  and Rules_N20_6_V == False and Rules_N20_8 is not None ):
 			# Execute rule Rules/If_False_Else_N20
 			# Execute rule Rules/If_False_Else_N20
 			print('Execute rule Rules/If_False_Else_N20')
 			print('Execute rule Rules/If_False_Else_N20')
@@ -970,12 +973,12 @@ class ModelverseKernel(object):
 			Rules_N20_5, = yield [('CN', [])]
 			Rules_N20_5, = yield [('CN', [])]
 			Rules_N20_7, = yield [('CNV', ['init'])]
 			Rules_N20_7, = yield [('CNV', ['init'])]
 			Rules_N20_10, = yield [('CNV', ['finish'])]
 			Rules_N20_10, = yield [('CNV', ['finish'])]
-			Rules___785, = yield [('CD', [Rules_N20_2, 'evalstack', Rules_N20_5])]
-			Rules___789, = yield [('CD', [Rules_N20_2, 'phase', Rules_N20_7])]
-			Rules___793, = yield [('CD', [Rules_N20_2, 'IP', Rules_N20_8])]
-			Rules___797, = yield [('CD', [Rules_N20_5, 'prev', Rules_N20_9])]
-			Rules___799, = yield [('CD', [Rules_N20_9, 'inst', Rules_N20_4])]
-			Rules___801, = yield [('CD', [Rules_N20_9, 'phase', Rules_N20_10])]
+			Rules___787, = yield [('CD', [Rules_N20_2, 'evalstack', Rules_N20_5])]
+			Rules___791, = yield [('CD', [Rules_N20_2, 'phase', Rules_N20_7])]
+			Rules___795, = yield [('CD', [Rules_N20_2, 'IP', Rules_N20_8])]
+			Rules___799, = yield [('CD', [Rules_N20_5, 'prev', Rules_N20_9])]
+			Rules___801, = yield [('CD', [Rules_N20_9, 'inst', Rules_N20_4])]
+			Rules___803, = yield [('CD', [Rules_N20_9, 'phase', Rules_N20_10])]
 		elif (True  and Rules_N21_1 is not None  and Rules_N21_2 is not None  and Rules_N21_3 is not None  and Rules_N21_3_V == 'cond' and Rules_N21_5 is not None  and Rules_N21_5_V['value'] == 'if' and Rules_N21_6 is not None  and Rules_N21_6_V == False and Rules_N21_7 is None ):
 		elif (True  and Rules_N21_1 is not None  and Rules_N21_2 is not None  and Rules_N21_3 is not None  and Rules_N21_3_V == 'cond' and Rules_N21_5 is not None  and Rules_N21_5_V['value'] == 'if' and Rules_N21_6 is not None  and Rules_N21_6_V == False and Rules_N21_7 is None ):
 			# Execute rule Rules/If_False_None_N21
 			# Execute rule Rules/If_False_None_N21
 			print('Execute rule Rules/If_False_None_N21')
 			print('Execute rule Rules/If_False_None_N21')
@@ -988,7 +991,7 @@ class ModelverseKernel(object):
 			yield [('DE', [Rules_N21_3_DEL])]
 			yield [('DE', [Rules_N21_3_DEL])]
 			Rules_N21_7, = yield [('RD', [Rules_N21_5, 'else'])]
 			Rules_N21_7, = yield [('RD', [Rules_N21_5, 'else'])]
 			Rules_N21_4, = yield [('CNV', ['finish'])]
 			Rules_N21_4, = yield [('CNV', ['finish'])]
-			Rules___821, = yield [('CD', [Rules_N21_2, 'phase', Rules_N21_4])]
+			Rules___823, = yield [('CD', [Rules_N21_2, 'phase', Rules_N21_4])]
 		elif (True  and Rules_N22_1 is not None  and Rules_N22_2 is not None  and Rules_N22_3 is not None  and Rules_N22_3_V == 'cond' and Rules_N22_6 is not None  and Rules_N22_6_V == True and Rules_N22_9 is not None  and Rules_N22_9_V['value'] == 'if'):
 		elif (True  and Rules_N22_1 is not None  and Rules_N22_2 is not None  and Rules_N22_3 is not None  and Rules_N22_3_V == 'cond' and Rules_N22_6 is not None  and Rules_N22_6_V == True and Rules_N22_9 is not None  and Rules_N22_9_V['value'] == 'if'):
 			# Execute rule Rules/If_True_N22
 			# Execute rule Rules/If_True_N22
 			print('Execute rule Rules/If_True_N22')
 			print('Execute rule Rules/If_True_N22')
@@ -1008,12 +1011,12 @@ class ModelverseKernel(object):
 			Rules_N22_4, = yield [('CN', [])]
 			Rules_N22_4, = yield [('CN', [])]
 			Rules_N22_5, = yield [('CNV', ['init'])]
 			Rules_N22_5, = yield [('CNV', ['init'])]
 			Rules_N22_10, = yield [('CNV', ['finish'])]
 			Rules_N22_10, = yield [('CNV', ['finish'])]
-			Rules___844, = yield [('CD', [Rules_N22_2, 'evalstack', Rules_N22_4])]
-			Rules___846, = yield [('CD', [Rules_N22_4, 'prev', Rules_N22_7])]
-			Rules___848, = yield [('CD', [Rules_N22_2, 'phase', Rules_N22_5])]
-			Rules___854, = yield [('CD', [Rules_N22_2, 'IP', Rules_N22_8])]
-			Rules___856, = yield [('CD', [Rules_N22_7, 'inst', Rules_N22_9])]
-			Rules___858, = yield [('CD', [Rules_N22_7, 'phase', Rules_N22_10])]
+			Rules___846, = yield [('CD', [Rules_N22_2, 'evalstack', Rules_N22_4])]
+			Rules___848, = yield [('CD', [Rules_N22_4, 'prev', Rules_N22_7])]
+			Rules___850, = yield [('CD', [Rules_N22_2, 'phase', Rules_N22_5])]
+			Rules___856, = yield [('CD', [Rules_N22_2, 'IP', Rules_N22_8])]
+			Rules___858, = yield [('CD', [Rules_N22_7, 'inst', Rules_N22_9])]
+			Rules___860, = yield [('CD', [Rules_N22_7, 'phase', Rules_N22_10])]
 		elif (True  and Rules_N23_1 is not None  and Rules_N23_2 is not None  and Rules_N23_5 is not None  and Rules_N23_5_V['value'] == 'input' and Rules_N23_6 is not None  and Rules_N23_6_V == 'init' and Rules_N23_7 is not None ):
 		elif (True  and Rules_N23_1 is not None  and Rules_N23_2 is not None  and Rules_N23_5 is not None  and Rules_N23_5_V['value'] == 'input' and Rules_N23_6 is not None  and Rules_N23_6_V == 'init' and Rules_N23_7 is not None ):
 			# Execute rule Rules/Input_N23
 			# Execute rule Rules/Input_N23
 			print('Execute rule Rules/Input_N23')
 			print('Execute rule Rules/Input_N23')
@@ -1036,9 +1039,9 @@ class ModelverseKernel(object):
 			Rules_N23_9_DEL, = yield [('RDE', [Rules_N23_8, 'next'])]
 			Rules_N23_9_DEL, = yield [('RDE', [Rules_N23_8, 'next'])]
 			yield [('DE', [Rules_N23_9_DEL])]
 			yield [('DE', [Rules_N23_9_DEL])]
 			Rules_N23_3, = yield [('CNV', ['finish'])]
 			Rules_N23_3, = yield [('CNV', ['finish'])]
-			Rules___876, = yield [('CD', [Rules_N23_2, 'phase', Rules_N23_3])]
-			Rules___884, = yield [('CD', [Rules_N23_2, 'returnvalue', Rules_N23_7])]
-			Rules___892, = yield [('CD', [Rules_N23_1, 'input', Rules_N23_9])]
+			Rules___878, = yield [('CD', [Rules_N23_2, 'phase', Rules_N23_3])]
+			Rules___886, = yield [('CD', [Rules_N23_2, 'returnvalue', Rules_N23_7])]
+			Rules___894, = yield [('CD', [Rules_N23_1, 'input', Rules_N23_9])]
 		elif (True  and Rules_N24_1 is not None  and Rules_N24_2 is not None  and Rules_N24_3 is not None  and Rules_N24_3_V == 'finish' and Rules_N24_5 is not None  and Rules_N24_6 is not None ):
 		elif (True  and Rules_N24_1 is not None  and Rules_N24_2 is not None  and Rules_N24_3 is not None  and Rules_N24_3_V == 'finish' and Rules_N24_5 is not None  and Rules_N24_6 is not None ):
 			# Execute rule Rules/Next_Next_N24
 			# Execute rule Rules/Next_Next_N24
 			print('Execute rule Rules/Next_Next_N24')
 			print('Execute rule Rules/Next_Next_N24')
@@ -1052,8 +1055,8 @@ class ModelverseKernel(object):
 			yield [('DE', [Rules_N24_5_DEL])]
 			yield [('DE', [Rules_N24_5_DEL])]
 			Rules_N24_6, = yield [('RD', [Rules_N24_5, 'next'])]
 			Rules_N24_6, = yield [('RD', [Rules_N24_5, 'next'])]
 			Rules_N24_4, = yield [('CNV', ['init'])]
 			Rules_N24_4, = yield [('CNV', ['init'])]
-			Rules___907, = yield [('CD', [Rules_N24_2, 'phase', Rules_N24_4])]
-			Rules___911, = yield [('CD', [Rules_N24_2, 'IP', Rules_N24_6])]
+			Rules___909, = yield [('CD', [Rules_N24_2, 'phase', Rules_N24_4])]
+			Rules___913, = yield [('CD', [Rules_N24_2, 'IP', Rules_N24_6])]
 		elif (True  and Rules_N25_1 is not None  and Rules_N25_2 is not None  and Rules_N25_3 is not None  and Rules_N25_3_V == 'finish' and Rules_N25_4 is not None  and Rules_N25_9 is None ):
 		elif (True  and Rules_N25_1 is not None  and Rules_N25_2 is not None  and Rules_N25_3 is not None  and Rules_N25_3_V == 'finish' and Rules_N25_4 is not None  and Rules_N25_9 is None ):
 			# Execute rule Rules/Next_NoNext_N25
 			# Execute rule Rules/Next_NoNext_N25
 			print('Execute rule Rules/Next_NoNext_N25')
 			print('Execute rule Rules/Next_NoNext_N25')
@@ -1078,9 +1081,9 @@ class ModelverseKernel(object):
 			Rules_N25_8, = yield [('RD', [Rules_N25_7, 'phase'])]
 			Rules_N25_8, = yield [('RD', [Rules_N25_7, 'phase'])]
 			Rules_N25_8_DEL, = yield [('RDE', [Rules_N25_7, 'phase'])]
 			Rules_N25_8_DEL, = yield [('RDE', [Rules_N25_7, 'phase'])]
 			yield [('DE', [Rules_N25_8_DEL])]
 			yield [('DE', [Rules_N25_8_DEL])]
-			Rules___933, = yield [('CD', [Rules_N25_2, 'IP', Rules_N25_5])]
-			Rules___937, = yield [('CD', [Rules_N25_2, 'evalstack', Rules_N25_7])]
-			Rules___939, = yield [('CD', [Rules_N25_2, 'phase', Rules_N25_8])]
+			Rules___935, = yield [('CD', [Rules_N25_2, 'IP', Rules_N25_5])]
+			Rules___939, = yield [('CD', [Rules_N25_2, 'evalstack', Rules_N25_7])]
+			Rules___941, = yield [('CD', [Rules_N25_2, 'phase', Rules_N25_8])]
 		elif (True  and Rules_N26_1 is not None  and Rules_N26_2 is not None  and Rules_N26_3 is not None  and Rules_N26_3_V == 'init' and Rules_N26_4 is not None  and Rules_N26_4_V['value'] == 'output'):
 		elif (True  and Rules_N26_1 is not None  and Rules_N26_2 is not None  and Rules_N26_3 is not None  and Rules_N26_3_V == 'init' and Rules_N26_4 is not None  and Rules_N26_4_V['value'] == 'output'):
 			# Execute rule Rules/Output_Init_N26
 			# Execute rule Rules/Output_Init_N26
 			print('Execute rule Rules/Output_Init_N26')
 			print('Execute rule Rules/Output_Init_N26')
@@ -1096,11 +1099,11 @@ class ModelverseKernel(object):
 			Rules_N26_7, = yield [('RD', [Rules_N26_4, 'value'])]
 			Rules_N26_7, = yield [('RD', [Rules_N26_4, 'value'])]
 			Rules_N26_5, = yield [('CN', [])]
 			Rules_N26_5, = yield [('CN', [])]
 			Rules_N26_8, = yield [('CNV', ['output'])]
 			Rules_N26_8, = yield [('CNV', ['output'])]
-			Rules___966, = yield [('CD', [Rules_N26_2, 'evalstack', Rules_N26_5])]
-			Rules___968, = yield [('CD', [Rules_N26_5, 'prev', Rules_N26_6])]
-			Rules___972, = yield [('CD', [Rules_N26_2, 'IP', Rules_N26_7])]
-			Rules___974, = yield [('CD', [Rules_N26_6, 'inst', Rules_N26_4])]
-			Rules___976, = yield [('CD', [Rules_N26_6, 'phase', Rules_N26_8])]
+			Rules___968, = yield [('CD', [Rules_N26_2, 'evalstack', Rules_N26_5])]
+			Rules___970, = yield [('CD', [Rules_N26_5, 'prev', Rules_N26_6])]
+			Rules___974, = yield [('CD', [Rules_N26_2, 'IP', Rules_N26_7])]
+			Rules___976, = yield [('CD', [Rules_N26_6, 'inst', Rules_N26_4])]
+			Rules___978, = yield [('CD', [Rules_N26_6, 'phase', Rules_N26_8])]
 		elif (True  and Rules_N27_1 is not None  and Rules_N27_2 is not None  and Rules_N27_4 is not None  and Rules_N27_4_V['value'] == 'output' and Rules_N27_5 is not None  and Rules_N27_5_V == 'output'):
 		elif (True  and Rules_N27_1 is not None  and Rules_N27_2 is not None  and Rules_N27_4 is not None  and Rules_N27_4_V['value'] == 'output' and Rules_N27_5 is not None  and Rules_N27_5_V == 'output'):
 			# Execute rule Rules/Output_Output_N27
 			# Execute rule Rules/Output_Output_N27
 			print('Execute rule Rules/Output_Output_N27')
 			print('Execute rule Rules/Output_Output_N27')
@@ -1116,10 +1119,10 @@ class ModelverseKernel(object):
 			Rules_N27_7, = yield [('RD', [Rules_N27_2, 'returnvalue'])]
 			Rules_N27_7, = yield [('RD', [Rules_N27_2, 'returnvalue'])]
 			Rules_N27_6, = yield [('CNV', ['finish'])]
 			Rules_N27_6, = yield [('CNV', ['finish'])]
 			Rules_N27_8, = yield [('CN', [])]
 			Rules_N27_8, = yield [('CN', [])]
-			Rules___997, = yield [('CD', [Rules_N27_2, 'phase', Rules_N27_6])]
-			Rules___1001, = yield [('CD', [Rules_N27_3, 'value', Rules_N27_7])]
-			Rules___1003, = yield [('CD', [Rules_N27_3, 'next', Rules_N27_8])]
-			Rules___1005, = yield [('CD', [Rules_N27_1, 'last_output', Rules_N27_8])]
+			Rules___999, = yield [('CD', [Rules_N27_2, 'phase', Rules_N27_6])]
+			Rules___1003, = yield [('CD', [Rules_N27_3, 'value', Rules_N27_7])]
+			Rules___1005, = yield [('CD', [Rules_N27_3, 'next', Rules_N27_8])]
+			Rules___1007, = yield [('CD', [Rules_N27_1, 'last_output', Rules_N27_8])]
 		elif (True  and Rules_N28_1 is not None  and Rules_N28_3 is not None  and Rules_N28_5 is not None  and Rules_N28_7 is not None  and Rules_N28_7_V['value'] == 'resolve' and Rules_N28_8 is not None  and Rules_N28_8_V == 'init' and Rules_N28_10 is not None  and Rules_N28_11 is None ):
 		elif (True  and Rules_N28_1 is not None  and Rules_N28_3 is not None  and Rules_N28_5 is not None  and Rules_N28_7 is not None  and Rules_N28_7_V['value'] == 'resolve' and Rules_N28_8 is not None  and Rules_N28_8_V == 'init' and Rules_N28_10 is not None  and Rules_N28_11 is None ):
 			# Execute rule Rules/Resolve_NoAttrGlobal_N28
 			# Execute rule Rules/Resolve_NoAttrGlobal_N28
 			print('Execute rule Rules/Resolve_NoAttrGlobal_N28')
 			print('Execute rule Rules/Resolve_NoAttrGlobal_N28')
@@ -1138,8 +1141,8 @@ class ModelverseKernel(object):
 			Rules_N28_9, = yield [('RDN', [Rules_N28_2, Rules_N28_10])]
 			Rules_N28_9, = yield [('RDN', [Rules_N28_2, Rules_N28_10])]
 			Rules_N28_11, = yield [('RDN', [Rules_N28_5, Rules_N28_10])]
 			Rules_N28_11, = yield [('RDN', [Rules_N28_5, Rules_N28_10])]
 			Rules_N28_4, = yield [('CNV', ['finish'])]
 			Rules_N28_4, = yield [('CNV', ['finish'])]
-			Rules___1027, = yield [('CD', [Rules_N28_3, 'phase', Rules_N28_4])]
-			Rules___1037, = yield [('CD', [Rules_N28_3, 'returnvalue', Rules_N28_9])]
+			Rules___1029, = yield [('CD', [Rules_N28_3, 'phase', Rules_N28_4])]
+			Rules___1039, = yield [('CD', [Rules_N28_3, 'returnvalue', Rules_N28_9])]
 		elif (True  and Rules_N29_1 is not None  and Rules_N29_2 is not None  and Rules_N29_3 is not None  and Rules_N29_3_V['value'] == 'resolve' and Rules_N29_4 is not None  and Rules_N29_4_V == 'init' and Rules_N29_6 is not None  and Rules_N29_7 is not None  and Rules_N29_9 is not None ):
 		elif (True  and Rules_N29_1 is not None  and Rules_N29_2 is not None  and Rules_N29_3 is not None  and Rules_N29_3_V['value'] == 'resolve' and Rules_N29_4 is not None  and Rules_N29_4_V == 'init' and Rules_N29_6 is not None  and Rules_N29_7 is not None  and Rules_N29_9 is not None ):
 			# Execute rule Rules/Resolve_NoAttr_N29
 			# Execute rule Rules/Resolve_NoAttr_N29
 			print('Execute rule Rules/Resolve_NoAttr_N29')
 			print('Execute rule Rules/Resolve_NoAttr_N29')
@@ -1156,8 +1159,8 @@ class ModelverseKernel(object):
 			Rules_N29_9, = yield [('RD', [Rules_N29_3, 'var'])]
 			Rules_N29_9, = yield [('RD', [Rules_N29_3, 'var'])]
 			Rules_N29_7, = yield [('RDN', [Rules_N29_6, Rules_N29_9])]
 			Rules_N29_7, = yield [('RDN', [Rules_N29_6, Rules_N29_9])]
 			Rules_N29_5, = yield [('CNV', ['finish'])]
 			Rules_N29_5, = yield [('CNV', ['finish'])]
-			Rules___1065, = yield [('CD', [Rules_N29_2, 'phase', Rules_N29_5])]
-			Rules___1069, = yield [('CD', [Rules_N29_2, 'returnvalue', Rules_N29_7])]
+			Rules___1067, = yield [('CD', [Rules_N29_2, 'phase', Rules_N29_5])]
+			Rules___1071, = yield [('CD', [Rules_N29_2, 'returnvalue', Rules_N29_7])]
 		elif (True  and Rules_N30_1 is not None  and Rules_N30_2 is not None  and Rules_N30_4 is not None  and Rules_N30_4_V == 'eval' and Rules_N30_5 is not None  and Rules_N30_5_V['value'] == 'return'):
 		elif (True  and Rules_N30_1 is not None  and Rules_N30_2 is not None  and Rules_N30_4 is not None  and Rules_N30_4_V == 'eval' and Rules_N30_5 is not None  and Rules_N30_5_V['value'] == 'return'):
 			# Execute rule Rules/Return_Eval_N30
 			# Execute rule Rules/Return_Eval_N30
 			print('Execute rule Rules/Return_Eval_N30')
 			print('Execute rule Rules/Return_Eval_N30')
@@ -1180,8 +1183,8 @@ class ModelverseKernel(object):
 			Rules_N30_7, = yield [('RD', [Rules_N30_3, 'returnvalue'])]
 			Rules_N30_7, = yield [('RD', [Rules_N30_3, 'returnvalue'])]
 			Rules_N30_7_DEL, = yield [('RDE', [Rules_N30_3, 'returnvalue'])]
 			Rules_N30_7_DEL, = yield [('RDE', [Rules_N30_3, 'returnvalue'])]
 			yield [('DE', [Rules_N30_7_DEL])]
 			yield [('DE', [Rules_N30_7_DEL])]
-			Rules___1090, = yield [('CD', [Rules_N30_1, 'frame', Rules_N30_3])]
-			Rules___1100, = yield [('CD', [Rules_N30_3, 'returnvalue', Rules_N30_6])]
+			Rules___1092, = yield [('CD', [Rules_N30_1, 'frame', Rules_N30_3])]
+			Rules___1102, = yield [('CD', [Rules_N30_3, 'returnvalue', Rules_N30_6])]
 		elif (True  and Rules_N31_1 is not None  and Rules_N31_2 is not None  and Rules_N31_4 is not None  and Rules_N31_4_V == 'init' and Rules_N31_5 is not None  and Rules_N31_5_V['value'] == 'return' and Rules_N31_6 is None ):
 		elif (True  and Rules_N31_1 is not None  and Rules_N31_2 is not None  and Rules_N31_4 is not None  and Rules_N31_4_V == 'init' and Rules_N31_5 is not None  and Rules_N31_5_V['value'] == 'return' and Rules_N31_6 is None ):
 			# Execute rule Rules/Return_NoValue_N31
 			# Execute rule Rules/Return_NoValue_N31
 			print('Execute rule Rules/Return_NoValue_N31')
 			print('Execute rule Rules/Return_NoValue_N31')
@@ -1199,7 +1202,7 @@ class ModelverseKernel(object):
 			Rules_N31_3_DEL, = yield [('RDE', [Rules_N31_2, 'prev'])]
 			Rules_N31_3_DEL, = yield [('RDE', [Rules_N31_2, 'prev'])]
 			yield [('DE', [Rules_N31_3_DEL])]
 			yield [('DE', [Rules_N31_3_DEL])]
 			Rules_N31_6, = yield [('RD', [Rules_N31_5, 'value'])]
 			Rules_N31_6, = yield [('RD', [Rules_N31_5, 'value'])]
-			Rules___1115, = yield [('CD', [Rules_N31_1, 'frame', Rules_N31_3])]
+			Rules___1117, = yield [('CD', [Rules_N31_1, 'frame', Rules_N31_3])]
 		elif (True  and Rules_N32_1 is not None  and Rules_N32_2 is not None  and Rules_N32_3 is not None  and Rules_N32_3_V == 'init' and Rules_N32_5 is not None  and Rules_N32_5_V['value'] == 'return' and Rules_N32_7 is not None ):
 		elif (True  and Rules_N32_1 is not None  and Rules_N32_2 is not None  and Rules_N32_3 is not None  and Rules_N32_3_V == 'init' and Rules_N32_5 is not None  and Rules_N32_5_V['value'] == 'return' and Rules_N32_7 is not None ):
 			# Execute rule Rules/Return_Value_N32
 			# Execute rule Rules/Return_Value_N32
 			print('Execute rule Rules/Return_Value_N32')
 			print('Execute rule Rules/Return_Value_N32')
@@ -1215,11 +1218,11 @@ class ModelverseKernel(object):
 			Rules_N32_7, = yield [('RD', [Rules_N32_5, 'value'])]
 			Rules_N32_7, = yield [('RD', [Rules_N32_5, 'value'])]
 			Rules_N32_4, = yield [('CN', [])]
 			Rules_N32_4, = yield [('CN', [])]
 			Rules_N32_8, = yield [('CNV', ['eval'])]
 			Rules_N32_8, = yield [('CNV', ['eval'])]
-			Rules___1142, = yield [('CD', [Rules_N32_2, 'evalstack', Rules_N32_4])]
-			Rules___1146, = yield [('CD', [Rules_N32_2, 'IP', Rules_N32_7])]
-			Rules___1148, = yield [('CD', [Rules_N32_4, 'prev', Rules_N32_6])]
-			Rules___1150, = yield [('CD', [Rules_N32_6, 'inst', Rules_N32_5])]
-			Rules___1152, = yield [('CD', [Rules_N32_6, 'phase', Rules_N32_8])]
+			Rules___1144, = yield [('CD', [Rules_N32_2, 'evalstack', Rules_N32_4])]
+			Rules___1148, = yield [('CD', [Rules_N32_2, 'IP', Rules_N32_7])]
+			Rules___1150, = yield [('CD', [Rules_N32_4, 'prev', Rules_N32_6])]
+			Rules___1152, = yield [('CD', [Rules_N32_6, 'inst', Rules_N32_5])]
+			Rules___1154, = yield [('CD', [Rules_N32_6, 'phase', Rules_N32_8])]
 		elif (True  and Rules_N33_1 is not None  and Rules_N33_2 is not None  and Rules_N33_3 is not None  and Rules_N33_3_V == 'init' and Rules_N33_5 is not None  and Rules_N33_5_V['value'] == 'while'):
 		elif (True  and Rules_N33_1 is not None  and Rules_N33_2 is not None  and Rules_N33_3 is not None  and Rules_N33_3_V == 'init' and Rules_N33_5 is not None  and Rules_N33_5_V['value'] == 'while'):
 			# Execute rule Rules/While_Cond_N33
 			# Execute rule Rules/While_Cond_N33
 			print('Execute rule Rules/While_Cond_N33')
 			print('Execute rule Rules/While_Cond_N33')
@@ -1235,11 +1238,11 @@ class ModelverseKernel(object):
 			Rules_N33_7, = yield [('RD', [Rules_N33_5, 'cond'])]
 			Rules_N33_7, = yield [('RD', [Rules_N33_5, 'cond'])]
 			Rules_N33_4, = yield [('CN', [])]
 			Rules_N33_4, = yield [('CN', [])]
 			Rules_N33_8, = yield [('CNV', ['cond'])]
 			Rules_N33_8, = yield [('CNV', ['cond'])]
-			Rules___1173, = yield [('CD', [Rules_N33_2, 'evalstack', Rules_N33_4])]
-			Rules___1177, = yield [('CD', [Rules_N33_2, 'IP', Rules_N33_7])]
-			Rules___1179, = yield [('CD', [Rules_N33_4, 'prev', Rules_N33_6])]
-			Rules___1181, = yield [('CD', [Rules_N33_6, 'inst', Rules_N33_5])]
-			Rules___1183, = yield [('CD', [Rules_N33_6, 'phase', Rules_N33_8])]
+			Rules___1175, = yield [('CD', [Rules_N33_2, 'evalstack', Rules_N33_4])]
+			Rules___1179, = yield [('CD', [Rules_N33_2, 'IP', Rules_N33_7])]
+			Rules___1181, = yield [('CD', [Rules_N33_4, 'prev', Rules_N33_6])]
+			Rules___1183, = yield [('CD', [Rules_N33_6, 'inst', Rules_N33_5])]
+			Rules___1185, = yield [('CD', [Rules_N33_6, 'phase', Rules_N33_8])]
 		elif (True  and Rules_N34_1 is not None  and Rules_N34_2 is not None  and Rules_N34_3 is not None  and Rules_N34_3_V == 'cond' and Rules_N34_5 is not None  and Rules_N34_5_V['value'] == 'while' and Rules_N34_6 is not None  and Rules_N34_6_V == False):
 		elif (True  and Rules_N34_1 is not None  and Rules_N34_2 is not None  and Rules_N34_3 is not None  and Rules_N34_3_V == 'cond' and Rules_N34_5 is not None  and Rules_N34_5_V['value'] == 'while' and Rules_N34_6 is not None  and Rules_N34_6_V == False):
 			# Execute rule Rules/While_False_N34
 			# Execute rule Rules/While_False_N34
 			print('Execute rule Rules/While_False_N34')
 			print('Execute rule Rules/While_False_N34')
@@ -1251,7 +1254,7 @@ class ModelverseKernel(object):
 			Rules_N34_5, = yield [('RD', [Rules_N34_2, 'IP'])]
 			Rules_N34_5, = yield [('RD', [Rules_N34_2, 'IP'])]
 			Rules_N34_6, = yield [('RD', [Rules_N34_2, 'returnvalue'])]
 			Rules_N34_6, = yield [('RD', [Rules_N34_2, 'returnvalue'])]
 			Rules_N34_4, = yield [('CNV', ['finish'])]
 			Rules_N34_4, = yield [('CNV', ['finish'])]
-			Rules___1200, = yield [('CD', [Rules_N34_2, 'phase', Rules_N34_4])]
+			Rules___1202, = yield [('CD', [Rules_N34_2, 'phase', Rules_N34_4])]
 		elif (True  and Rules_N35_1 is not None  and Rules_N35_2 is not None  and Rules_N35_3 is not None  and Rules_N35_3_V == 'cond' and Rules_N35_5 is not None  and Rules_N35_5_V['value'] == 'while' and Rules_N35_7 is not None  and Rules_N35_7_V == True):
 		elif (True  and Rules_N35_1 is not None  and Rules_N35_2 is not None  and Rules_N35_3 is not None  and Rules_N35_3_V == 'cond' and Rules_N35_5 is not None  and Rules_N35_5_V['value'] == 'while' and Rules_N35_7 is not None  and Rules_N35_7_V == True):
 			# Execute rule Rules/While_True_N35
 			# Execute rule Rules/While_True_N35
 			print('Execute rule Rules/While_True_N35')
 			print('Execute rule Rules/While_True_N35')
@@ -1274,13 +1277,13 @@ class ModelverseKernel(object):
 			Rules_N35_4, = yield [('CNV', ['init'])]
 			Rules_N35_4, = yield [('CNV', ['init'])]
 			Rules_N35_6, = yield [('CN', [])]
 			Rules_N35_6, = yield [('CN', [])]
 			Rules_N35_10, = yield [('CNV', ['init'])]
 			Rules_N35_10, = yield [('CNV', ['init'])]
-			Rules___1224, = yield [('CD', [Rules_N35_2, 'phase', Rules_N35_4])]
-			Rules___1228, = yield [('CD', [Rules_N35_2, 'evalstack', Rules_N35_6])]
-			Rules___1234, = yield [('CD', [Rules_N35_2, 'IP', Rules_N35_9])]
-			Rules___1236, = yield [('CD', [Rules_N35_8, 'inst', Rules_N35_5])]
-			Rules___1238, = yield [('CD', [Rules_N35_8, 'phase', Rules_N35_10])]
-			Rules___1244, = yield [('CD', [Rules_N35_8, taskname, Rules_N35_5])]
-			Rules___1246, = yield [('CD', [Rules_N35_6, 'prev', Rules_N35_8])]
+			Rules___1226, = yield [('CD', [Rules_N35_2, 'phase', Rules_N35_4])]
+			Rules___1230, = yield [('CD', [Rules_N35_2, 'evalstack', Rules_N35_6])]
+			Rules___1236, = yield [('CD', [Rules_N35_2, 'IP', Rules_N35_9])]
+			Rules___1238, = yield [('CD', [Rules_N35_8, 'inst', Rules_N35_5])]
+			Rules___1240, = yield [('CD', [Rules_N35_8, 'phase', Rules_N35_10])]
+			Rules___1246, = yield [('CD', [Rules_N35_8, taskname, Rules_N35_5])]
+			Rules___1248, = yield [('CD', [Rules_N35_6, 'prev', Rules_N35_8])]
 		else:
 		else:
 			# no rules were applicable, so idle for some time
 			# no rules were applicable, so idle for some time
 			pass #TODO
 			pass #TODO

+ 0 - 130
kernel/modelverse_kernel/main_autogen.py

@@ -1,130 +0,0 @@
-import modelverse_kernel.primitives as primitive_functions
-import modelverse_kernel.compiled as compiled_functions
-from collections import defaultdict
-import sys
-import time
-
-class ModelverseKernel(object):
-    def __init__(self, root):
-        self.root = root
-        self.primitives = {}
-        self.returnvalue = None
-        self.success = True
-        self.generators = {}
-
-    def execute_yields(self, taskname, operation, params, reply):
-        try:
-            self.success = True
-            self.taskname = taskname
-            if taskname not in self.generators:
-                self.generators[taskname] = {}
-            if operation not in self.generators[taskname]:
-                # Create the generator for the function to execute
-                self.generators[taskname][operation] = getattr(self, operation)(taskname, *params)
-
-            if reply is not None:
-                return self.generators[taskname][operation].send(reply)
-            else:
-                return self.generators[taskname][operation].next()
-        except StopIteration:
-            # Done, so remove the generator
-            del self.generators[taskname][operation]
-            return None
-        except:
-            raise
-
-    ##########################
-    ### Process primitives ###
-    ##########################
-    def load_primitives(self, taskname):
-        hierarchy, =     yield [('RD', [self.root, '__hierarchy'])]
-        primitives, =    yield [('RD', [hierarchy, 'primitives'])]
-        keys, =          yield [('RDK', [primitives])]
-        function_names = yield [('RV', [f]) for f in keys]
-        signatures  =    yield [('RDN', [primitives, f]) for f in keys]
-        bodies =         yield [('RD', [f, 'body']) for f in signatures]
-        for i in range(len(keys)):
-            self.primitives[bodies[i]] = getattr(primitive_functions, function_names[i])
-
-    def execute_primitive(self, task_root, inst, taskname):
-        # execute_primitive
-        task_frame, =    yield [('RD', [task_root, 'frame'])]
-        symbols, =       yield [('RD', [task_frame, 'symbols'])]
-        all_links, =     yield [('RO', [symbols])]
-        containers =    yield [('RE', [v]) for v in all_links]
-        outgoings =     yield [('RO', [v]) for v in all_links]
-        dict_values =   yield [('RD', [v[1], 'value']) for v in containers]
-        formals_1 =     yield [('RE', [v[0]]) for v in outgoings]
-        dict_keys_ref = yield [('RD', [v[1], 'name']) for v in formals_1]
-        dict_keys =     yield [('RV', [v]) for v in dict_keys_ref]
-        parameters = dict(zip(dict_keys, dict_values))
-
-        parameters['root'] = self.root
-        parameters['task_root'] = task_root
-        parameters['taskname'] = taskname
-        parameters['mvk'] = self
-
-        # prim is a generator itself!
-        try:
-            # Forward the message we get to this generator
-            # Sometimes it might not even be a generator, in which case this should already be in the except block (i.e., for the Read Root operation)
-            prim = self.primitives[inst](**parameters)
-            inp = None
-            while 1:
-                inp = yield prim.send(inp)
-        except StopIteration:
-            # Execution has ended without return value, so we have no idea what to do
-            raise Exception('Primitive finished without returning a value!')
-        except primitive_functions.PrimitiveFinished as e:
-            # Execution has ended with a returnvalue, so read it out from the exception being thrown
-            result = e.result
-
-            #if result is None:
-            #    raise Exception('Primitive raised exception: value of None for operation %s with parameters %s' % (self.compiled[inst], str(parameters)))
-
-        # Clean up the current stack, as if a return happened
-        old_frame, =    yield [('RD', [task_frame, 'prev'])]
-        lnk, =          yield [('RDE', [old_frame, 'returnvalue'])]
-        _, _, _, _ =    yield [('CD', [old_frame, 'returnvalue', result]),
-                               ('CD', [task_root, 'frame', old_frame]),
-                               ('DE', [lnk]),
-                               ('DN', [task_frame]),
-                              ]
-
-    ########################################
-    ### Execute input and output methods ###
-    ########################################
-    def get_output(self, taskname):
-        task_root, =        yield [('RD', [self.root, taskname])]
-        first_output, =     yield [('RD', [task_root, 'output'])]
-        next_output, rv =   yield [('RD', [first_output, 'next']),
-                                   ('RD', [first_output, 'value']),
-                                  ]
-        if next_output is None:
-            self.success = False
-            self.returnvalue = None
-        else:
-            rv_value, =     yield [('RV', [rv])]
-            _, _ =          yield [('CD', [task_root, 'output', next_output]),
-                                   ('DN', [first_output]),
-                                  ]
-            self.returnvalue = rv_value
-
-    def set_input(self, taskname, value):
-        task_root, =        yield [('RD', [self.root, taskname])]
-        old_input, link =   yield [('RD', [task_root, 'last_input']),
-                                   ('RDE', [task_root, 'last_input']),
-                                  ]
-        new_input, =        yield [('CN', [])]
-        _, _ =              yield [('CD', [task_root, 'last_input', new_input]),
-                                   ('CD', [old_input, 'next', new_input]),
-                                  ]
-
-        new_value, =        yield [('CNV', [value])]
-        _, _ =              yield [('CD', [old_input, 'value', new_value]),
-                                   ('DE', [link])
-                                  ]
-        self.returnvalue = {'id': 100, 'value': 'success'}
-
-    ### Generated rules
-    def execute_rule(self, taskname):

+ 8 - 5
kernel/rules/MvK_rules.mvc

@@ -311,6 +311,10 @@ Rule Break_N6 {
     Match N6_8 {}
     Match N6_8 {}
     Create N6_9 {}
     Create N6_9 {}
     Match N6_10 {}
     Match N6_10 {}
+    Create N6_11 {
+        value = "'finish'"
+    }
+    Match N6_12 {}
 
 
     MatchEdge (N6_0, N6_1) {
     MatchEdge (N6_0, N6_1) {
         value = "taskname"
         value = "taskname"
@@ -324,10 +328,7 @@ Rule Break_N6 {
     CreateEdge (N6_2, N6_4) {
     CreateEdge (N6_2, N6_4) {
         value = "'phase'"
         value = "'phase'"
     }
     }
-    DeleteEdge (N6_2, N6_5) {
-        value = "'IP'"
-    }
-    CreateEdge (N6_2, N6_6) {
+    MatchEdge (N6_2, N6_5) {
         value = "'IP'"
         value = "'IP'"
     }
     }
     MatchEdge (N6_5, N6_6) {
     MatchEdge (N6_5, N6_6) {
@@ -348,6 +349,9 @@ Rule Break_N6 {
     CreateEdge (N6_9, N6_8) {
     CreateEdge (N6_9, N6_8) {
         value = "'prev'"
         value = "'prev'"
     }
     }
+    CreateEdge (N6_8, N6_11) {
+        value = "'phase'"
+    }
 }
 }
 
 
 Rule Call_Call_None_N7 {
 Rule Call_Call_None_N7 {
@@ -450,7 +454,6 @@ Rule Call_Call_Params_N8 {
     }
     }
     Match N8_6 {
     Match N8_6 {
         value = "a"
         value = "a"
-        match = True
     }
     }
     Create N8_7 {
     Create N8_7 {
         value = "'finish'"
         value = "'finish'"

+ 8 - 0
kernel/rules/to_python.alc

@@ -40,6 +40,12 @@ Boolean function main(model : Element):
 	result = result + "        self.success = True\n"
 	result = result + "        self.success = True\n"
 	result = result + "        self.generators = {}\n"
 	result = result + "        self.generators = {}\n"
 	result = result + "\n"
 	result = result + "\n"
+    result = result + "    def set_overlap(self, lst):\n"
+    result = result + "        s = set(lst.pop())\n"
+    result = result + "        while (lst):\n"
+    result = result + "            s &= set(lst.pop())\n"
+    result = result + "        return list(s)\n"
+	result = result + "\n"
 	result = result + "    def execute_yields(self, taskname, operation, params, reply):\n"
 	result = result + "    def execute_yields(self, taskname, operation, params, reply):\n"
 	result = result + "        try:\n"
 	result = result + "        try:\n"
 	result = result + "            self.success = True\n"
 	result = result + "            self.success = True\n"
@@ -405,6 +411,8 @@ Boolean function main(model : Element):
 				result = result + "            " + string_replace(edge, "/", "_") + ", = yield [('CD', [" + string_replace(readAssociationSource(model, edge), "/", "_") + ", " + attr + ", " + string_replace(readAssociationDestination(model, edge), "/", "_") + "])]\n"
 				result = result + "            " + string_replace(edge, "/", "_") + ", = yield [('CD', [" + string_replace(readAssociationSource(model, edge), "/", "_") + ", " + attr + ", " + string_replace(readAssociationDestination(model, edge), "/", "_") + "])]\n"
 			else:
 			else:
 				result = result + "            " + string_replace(edge, "/", "_") + ", = yield [('CE', [" + string_replace(readAssociationSource(model, edge), "/", "_") + ", " + string_replace(readAssociationDestination(model, edge), "/", "_") + "])]\n"
 				result = result + "            " + string_replace(edge, "/", "_") + ", = yield [('CE', [" + string_replace(readAssociationSource(model, edge), "/", "_") + ", " + string_replace(readAssociationDestination(model, edge), "/", "_") + "])]\n"
+		
+		result = result + "            print(str(locals()))\n"
 
 
 	result = result + "        else:\n"
 	result = result + "        else:\n"
 	result = result + "            # no rules were applicable, so idle for some time\n"
 	result = result + "            # no rules were applicable, so idle for some time\n"

+ 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:   Mon Nov 27 15:23:49 2017
+Date:   Mon Nov 27 16:06:55 2017
 
 
 Model author: Yentl Van Tendeloo
 Model author: Yentl Van Tendeloo
 Model name:   MvK Server
 Model name:   MvK Server