Browse Source

Bugfixes to MvK rules...

Yentl Van Tendeloo 7 years ago
parent
commit
0eb6becd8f
3 changed files with 86 additions and 78 deletions
  1. 74 71
      kernel/modelverse_kernel/generated.py
  2. 11 6
      kernel/rules/MvK_rules.mvc
  3. 1 1
      wrappers/modelverse_SCCD.py

+ 74 - 71
kernel/modelverse_kernel/generated.py

@@ -314,10 +314,12 @@ class ModelverseKernel(object):
 		Rules_N23_0 = root
 		Rules_N23_1, = yield [('RD', [Rules_N23_0, taskname])]
 		Rules_N23_2, = yield [('RD', [Rules_N23_1, 'frame'])]
+		Rules_N23_8, = yield [('RD', [Rules_N23_1, 'input'])]
 		Rules_N23_5, = yield [('RD', [Rules_N23_2, 'IP'])]
 		Rules_N23_5_V, = yield [('RV', [Rules_N23_5])]
 		Rules_N23_6, = yield [('RD', [Rules_N23_2, 'phase'])]
 		Rules_N23_6_V, = yield [('RV', [Rules_N23_6])]
+		Rules_N23_7, = yield [('RD', [Rules_N23_8, 'value'])]
 		Rules_N24_0 = root
 		Rules_N24_1, = yield [('RD', [Rules_N24_0, taskname])]
 		Rules_N24_2, = yield [('RD', [Rules_N24_1, 'frame'])]
@@ -902,9 +904,9 @@ class ModelverseKernel(object):
 			Rules_N16_1, = yield [('RD', [Rules_N16_0, taskname])]
 			Rules_N16_2, = yield [('RD', [Rules_N16_1, 'frame'])]
 			Rules_N16_3, = yield [('RD', [Rules_N16_2, 'phase'])]
+			Rules_N16_3_DEL, = yield [('RDE', [Rules_N16_2, 'phase'])]
+			yield [('DE', [Rules_N16_3_DEL])]
 			Rules_N16_4, = yield [('RD', [Rules_N16_2, 'IP'])]
-			Rules_N16_4_DEL, = yield [('RDE', [Rules_N16_2, 'IP'])]
-			yield [('DE', [Rules_N16_4_DEL])]
 			Rules_N16_6, = yield [('RD', [Rules_N16_2, 'evalstack'])]
 			Rules_N16_6_DEL, = yield [('RDE', [Rules_N16_2, 'evalstack'])]
 			yield [('DE', [Rules_N16_6_DEL])]
@@ -918,9 +920,10 @@ class ModelverseKernel(object):
 			matched.append(_tmp)
 			Rules_N16_9 = self.set_overlap(matched)[0]
 			Rules_N16_8, = yield [('CN', [])]
-			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])]
+			Rules_N16_10, = yield [('CNV', ['finish'])]
+			Rules___670, = yield [('CD', [Rules_N16_2, 'phase', Rules_N16_10])]
+			Rules___682, = yield [('CD', [Rules_N16_2, 'evalstack', Rules_N16_8])]
+			Rules___684, = yield [('CD', [Rules_N16_8, 'prev', Rules_N16_7])]
 			print(str(locals()))
 		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
@@ -935,9 +938,9 @@ class ModelverseKernel(object):
 			Rules_N17_7, = yield [('RD', [Rules_N17_5, 'var'])]
 			Rules_N17_4, = yield [('CNV', ['finish'])]
 			Rules_N17_8, = yield [('CN', [])]
-			Rules___700, = yield [('CD', [Rules_N17_2, 'phase', Rules_N17_4])]
+			Rules___701, = yield [('CD', [Rules_N17_2, 'phase', Rules_N17_4])]
 			Rules_N17_9, = yield [('CE', [Rules_N17_6, Rules_N17_8])]
-			Rules___709, = yield [('CE', [Rules_N17_9, Rules_N17_7])]
+			Rules___710, = yield [('CE', [Rules_N17_9, Rules_N17_7])]
 			print(str(locals()))
 		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
@@ -952,9 +955,9 @@ class ModelverseKernel(object):
 			Rules_N18_7, = yield [('RD', [Rules_N18_6, 'var'])]
 			Rules_N18_5, = yield [('CNV', ['finish'])]
 			Rules_N18_8, = yield [('CN', [])]
-			Rules___728, = yield [('CD', [Rules_N18_2, 'phase', Rules_N18_5])]
+			Rules___729, = yield [('CD', [Rules_N18_2, 'phase', Rules_N18_5])]
 			Rules_N18_9, = yield [('CE', [Rules_N18_3, Rules_N18_8])]
-			Rules___735, = yield [('CE', [Rules_N18_9, Rules_N18_7])]
+			Rules___736, = yield [('CE', [Rules_N18_9, Rules_N18_7])]
 			print(str(locals()))
 		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
@@ -971,11 +974,11 @@ class ModelverseKernel(object):
 			Rules_N19_8, = yield [('RD', [Rules_N19_6, 'cond'])]
 			Rules_N19_4, = yield [('CN', [])]
 			Rules_N19_7, = yield [('CNV', ['cond'])]
-			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])]
+			Rules___755, = yield [('CD', [Rules_N19_2, 'evalstack', Rules_N19_4])]
+			Rules___759, = yield [('CD', [Rules_N19_2, 'IP', Rules_N19_8])]
+			Rules___761, = yield [('CD', [Rules_N19_4, 'prev', Rules_N19_5])]
+			Rules___763, = yield [('CD', [Rules_N19_5, 'inst', Rules_N19_6])]
+			Rules___765, = yield [('CD', [Rules_N19_5, 'phase', Rules_N19_7])]
 			print(str(locals()))
 		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
@@ -996,12 +999,12 @@ class ModelverseKernel(object):
 			Rules_N20_5, = yield [('CN', [])]
 			Rules_N20_7, = yield [('CNV', ['init'])]
 			Rules_N20_10, = yield [('CNV', ['finish'])]
-			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])]
+			Rules___788, = yield [('CD', [Rules_N20_2, 'evalstack', Rules_N20_5])]
+			Rules___792, = yield [('CD', [Rules_N20_2, 'phase', Rules_N20_7])]
+			Rules___796, = yield [('CD', [Rules_N20_2, 'IP', Rules_N20_8])]
+			Rules___800, = yield [('CD', [Rules_N20_5, 'prev', Rules_N20_9])]
+			Rules___802, = yield [('CD', [Rules_N20_9, 'inst', Rules_N20_4])]
+			Rules___804, = yield [('CD', [Rules_N20_9, 'phase', Rules_N20_10])]
 			print(str(locals()))
 		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
@@ -1015,7 +1018,7 @@ class ModelverseKernel(object):
 			yield [('DE', [Rules_N21_3_DEL])]
 			Rules_N21_7, = yield [('RD', [Rules_N21_5, 'else'])]
 			Rules_N21_4, = yield [('CNV', ['finish'])]
-			Rules___823, = yield [('CD', [Rules_N21_2, 'phase', Rules_N21_4])]
+			Rules___824, = yield [('CD', [Rules_N21_2, 'phase', Rules_N21_4])]
 			print(str(locals()))
 		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
@@ -1036,14 +1039,14 @@ class ModelverseKernel(object):
 			Rules_N22_4, = yield [('CN', [])]
 			Rules_N22_5, = yield [('CNV', ['init'])]
 			Rules_N22_10, = yield [('CNV', ['finish'])]
-			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])]
+			Rules___847, = yield [('CD', [Rules_N22_2, 'evalstack', Rules_N22_4])]
+			Rules___849, = yield [('CD', [Rules_N22_4, 'prev', Rules_N22_7])]
+			Rules___851, = yield [('CD', [Rules_N22_2, 'phase', Rules_N22_5])]
+			Rules___857, = yield [('CD', [Rules_N22_2, 'IP', Rules_N22_8])]
+			Rules___859, = yield [('CD', [Rules_N22_7, 'inst', Rules_N22_9])]
+			Rules___861, = yield [('CD', [Rules_N22_7, 'phase', Rules_N22_10])]
 			print(str(locals()))
-		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  and Rules_N23_8 is not None ):
 			# Execute rule Rules/Input_N23
 			print('Execute rule Rules/Input_N23')
 			Rules_N23_1, = yield [('RD', [Rules_N23_0, taskname])]
@@ -1065,9 +1068,9 @@ class ModelverseKernel(object):
 			Rules_N23_9_DEL, = yield [('RDE', [Rules_N23_8, 'next'])]
 			yield [('DE', [Rules_N23_9_DEL])]
 			Rules_N23_3, = yield [('CNV', ['finish'])]
-			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])]
+			Rules___879, = yield [('CD', [Rules_N23_2, 'phase', Rules_N23_3])]
+			Rules___887, = yield [('CD', [Rules_N23_2, 'returnvalue', Rules_N23_7])]
+			Rules___895, = yield [('CD', [Rules_N23_1, 'input', Rules_N23_9])]
 			print(str(locals()))
 		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
@@ -1082,8 +1085,8 @@ class ModelverseKernel(object):
 			yield [('DE', [Rules_N24_5_DEL])]
 			Rules_N24_6, = yield [('RD', [Rules_N24_5, 'next'])]
 			Rules_N24_4, = yield [('CNV', ['init'])]
-			Rules___909, = yield [('CD', [Rules_N24_2, 'phase', Rules_N24_4])]
-			Rules___913, = yield [('CD', [Rules_N24_2, 'IP', Rules_N24_6])]
+			Rules___910, = yield [('CD', [Rules_N24_2, 'phase', Rules_N24_4])]
+			Rules___914, = yield [('CD', [Rules_N24_2, 'IP', Rules_N24_6])]
 			print(str(locals()))
 		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
@@ -1109,9 +1112,9 @@ class ModelverseKernel(object):
 			Rules_N25_8, = yield [('RD', [Rules_N25_7, 'phase'])]
 			Rules_N25_8_DEL, = yield [('RDE', [Rules_N25_7, 'phase'])]
 			yield [('DE', [Rules_N25_8_DEL])]
-			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])]
+			Rules___936, = yield [('CD', [Rules_N25_2, 'IP', Rules_N25_5])]
+			Rules___940, = yield [('CD', [Rules_N25_2, 'evalstack', Rules_N25_7])]
+			Rules___942, = yield [('CD', [Rules_N25_2, 'phase', Rules_N25_8])]
 			print(str(locals()))
 		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
@@ -1128,11 +1131,11 @@ class ModelverseKernel(object):
 			Rules_N26_7, = yield [('RD', [Rules_N26_4, 'value'])]
 			Rules_N26_5, = yield [('CN', [])]
 			Rules_N26_8, = yield [('CNV', ['output'])]
-			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])]
+			Rules___969, = yield [('CD', [Rules_N26_2, 'evalstack', Rules_N26_5])]
+			Rules___971, = yield [('CD', [Rules_N26_5, 'prev', Rules_N26_6])]
+			Rules___975, = yield [('CD', [Rules_N26_2, 'IP', Rules_N26_7])]
+			Rules___977, = yield [('CD', [Rules_N26_6, 'inst', Rules_N26_4])]
+			Rules___979, = yield [('CD', [Rules_N26_6, 'phase', Rules_N26_8])]
 			print(str(locals()))
 		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
@@ -1149,16 +1152,16 @@ class ModelverseKernel(object):
 			Rules_N27_7, = yield [('RD', [Rules_N27_2, 'returnvalue'])]
 			Rules_N27_6, = yield [('CNV', ['finish'])]
 			Rules_N27_8, = yield [('CN', [])]
-			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])]
+			Rules___1000, = yield [('CD', [Rules_N27_2, 'phase', Rules_N27_6])]
+			Rules___1004, = yield [('CD', [Rules_N27_3, 'value', Rules_N27_7])]
+			Rules___1006, = yield [('CD', [Rules_N27_3, 'next', Rules_N27_8])]
+			Rules___1008, = yield [('CD', [Rules_N27_1, 'last_output', Rules_N27_8])]
 			print(str(locals()))
 		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
 			print('Execute rule Rules/Resolve_NoAttrGlobal_N28')
 			Rules_N28_1, = yield [('RD', [Rules_N28_0, taskname])]
-			Rules_N28_2, = yield [('RD', [Rules_N28_0, 'globals'])]
+			Rules_N28_2, = yield [('RD', [Rules_N28_1, 'globals'])]
 			Rules_N28_3, = yield [('RD', [Rules_N28_1, 'frame'])]
 			Rules_N28_5, = yield [('RD', [Rules_N28_3, 'symbols'])]
 			Rules_N28_6, = yield [('RD', [Rules_N28_3, 'returnvalue'])]
@@ -1172,8 +1175,8 @@ class ModelverseKernel(object):
 			Rules_N28_9, = yield [('RDN', [Rules_N28_2, Rules_N28_10])]
 			Rules_N28_11, = yield [('RDN', [Rules_N28_5, Rules_N28_10])]
 			Rules_N28_4, = yield [('CNV', ['finish'])]
-			Rules___1029, = yield [('CD', [Rules_N28_3, 'phase', Rules_N28_4])]
-			Rules___1039, = yield [('CD', [Rules_N28_3, 'returnvalue', Rules_N28_9])]
+			Rules___1030, = yield [('CD', [Rules_N28_3, 'phase', Rules_N28_4])]
+			Rules___1040, = yield [('CD', [Rules_N28_3, 'returnvalue', Rules_N28_9])]
 			print(str(locals()))
 		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
@@ -1191,8 +1194,8 @@ class ModelverseKernel(object):
 			Rules_N29_9, = yield [('RD', [Rules_N29_3, 'var'])]
 			Rules_N29_7, = yield [('RDN', [Rules_N29_6, Rules_N29_9])]
 			Rules_N29_5, = yield [('CNV', ['finish'])]
-			Rules___1067, = yield [('CD', [Rules_N29_2, 'phase', Rules_N29_5])]
-			Rules___1071, = yield [('CD', [Rules_N29_2, 'returnvalue', Rules_N29_7])]
+			Rules___1068, = yield [('CD', [Rules_N29_2, 'phase', Rules_N29_5])]
+			Rules___1072, = yield [('CD', [Rules_N29_2, 'returnvalue', Rules_N29_7])]
 			print(str(locals()))
 		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
@@ -1216,8 +1219,8 @@ class ModelverseKernel(object):
 			Rules_N30_7, = yield [('RD', [Rules_N30_3, 'returnvalue'])]
 			Rules_N30_7_DEL, = yield [('RDE', [Rules_N30_3, 'returnvalue'])]
 			yield [('DE', [Rules_N30_7_DEL])]
-			Rules___1092, = yield [('CD', [Rules_N30_1, 'frame', Rules_N30_3])]
-			Rules___1102, = yield [('CD', [Rules_N30_3, 'returnvalue', Rules_N30_6])]
+			Rules___1093, = yield [('CD', [Rules_N30_1, 'frame', Rules_N30_3])]
+			Rules___1103, = yield [('CD', [Rules_N30_3, 'returnvalue', Rules_N30_6])]
 			print(str(locals()))
 		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
@@ -1236,7 +1239,7 @@ class ModelverseKernel(object):
 			Rules_N31_3_DEL, = yield [('RDE', [Rules_N31_2, 'prev'])]
 			yield [('DE', [Rules_N31_3_DEL])]
 			Rules_N31_6, = yield [('RD', [Rules_N31_5, 'value'])]
-			Rules___1117, = yield [('CD', [Rules_N31_1, 'frame', Rules_N31_3])]
+			Rules___1118, = yield [('CD', [Rules_N31_1, 'frame', Rules_N31_3])]
 			print(str(locals()))
 		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
@@ -1253,11 +1256,11 @@ class ModelverseKernel(object):
 			Rules_N32_7, = yield [('RD', [Rules_N32_5, 'value'])]
 			Rules_N32_4, = yield [('CN', [])]
 			Rules_N32_8, = yield [('CNV', ['eval'])]
-			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])]
+			Rules___1145, = yield [('CD', [Rules_N32_2, 'evalstack', Rules_N32_4])]
+			Rules___1149, = yield [('CD', [Rules_N32_2, 'IP', Rules_N32_7])]
+			Rules___1151, = yield [('CD', [Rules_N32_4, 'prev', Rules_N32_6])]
+			Rules___1153, = yield [('CD', [Rules_N32_6, 'inst', Rules_N32_5])]
+			Rules___1155, = yield [('CD', [Rules_N32_6, 'phase', Rules_N32_8])]
 			print(str(locals()))
 		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
@@ -1274,11 +1277,11 @@ class ModelverseKernel(object):
 			Rules_N33_7, = yield [('RD', [Rules_N33_5, 'cond'])]
 			Rules_N33_4, = yield [('CN', [])]
 			Rules_N33_8, = yield [('CNV', ['cond'])]
-			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])]
+			Rules___1176, = yield [('CD', [Rules_N33_2, 'evalstack', Rules_N33_4])]
+			Rules___1180, = yield [('CD', [Rules_N33_2, 'IP', Rules_N33_7])]
+			Rules___1182, = yield [('CD', [Rules_N33_4, 'prev', Rules_N33_6])]
+			Rules___1184, = yield [('CD', [Rules_N33_6, 'inst', Rules_N33_5])]
+			Rules___1186, = yield [('CD', [Rules_N33_6, 'phase', Rules_N33_8])]
 			print(str(locals()))
 		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
@@ -1291,7 +1294,7 @@ class ModelverseKernel(object):
 			Rules_N34_5, = yield [('RD', [Rules_N34_2, 'IP'])]
 			Rules_N34_6, = yield [('RD', [Rules_N34_2, 'returnvalue'])]
 			Rules_N34_4, = yield [('CNV', ['finish'])]
-			Rules___1202, = yield [('CD', [Rules_N34_2, 'phase', Rules_N34_4])]
+			Rules___1203, = yield [('CD', [Rules_N34_2, 'phase', Rules_N34_4])]
 			print(str(locals()))
 		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
@@ -1315,13 +1318,13 @@ class ModelverseKernel(object):
 			Rules_N35_4, = yield [('CNV', ['init'])]
 			Rules_N35_6, = yield [('CN', [])]
 			Rules_N35_10, = yield [('CNV', ['init'])]
-			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])]
+			Rules___1227, = yield [('CD', [Rules_N35_2, 'phase', Rules_N35_4])]
+			Rules___1231, = yield [('CD', [Rules_N35_2, 'evalstack', Rules_N35_6])]
+			Rules___1237, = yield [('CD', [Rules_N35_2, 'IP', Rules_N35_9])]
+			Rules___1239, = yield [('CD', [Rules_N35_8, 'inst', Rules_N35_5])]
+			Rules___1241, = yield [('CD', [Rules_N35_8, 'phase', Rules_N35_10])]
+			Rules___1247, = yield [('CD', [Rules_N35_8, taskname, Rules_N35_5])]
+			Rules___1249, = yield [('CD', [Rules_N35_6, 'prev', Rules_N35_8])]
 			print(str(locals()))
 		else:
 			# no rules were applicable, so idle for some time

+ 11 - 6
kernel/rules/MvK_rules.mvc

@@ -1165,6 +1165,9 @@ Rule Continue_N16 {
     Match N16_7 {}
     Create N16_8 {}
     Match N16_9 {}
+    Create N16_10 {
+        value = "'finish'"
+    }
 
     MatchEdge (N16_0, N16_1) {
         value = "taskname"
@@ -1172,13 +1175,13 @@ Rule Continue_N16 {
     MatchEdge (N16_1, N16_2) {
         value = "'frame'"
     }
-    MatchEdge (N16_2, N16_3) {
+    DeleteEdge (N16_2, N16_3) {
         value = "'phase'"
     }
-    DeleteEdge (N16_2, N16_4) {
-        value = "'IP'"
+    CreateEdge (N16_2, N16_10) {
+        value = "'phase'"
     }
-    CreateEdge (N16_2, N16_5) {
+    MatchEdge (N16_2, N16_4) {
         value = "'IP'"
     }
     MatchEdge (N16_4, N16_5) {
@@ -1572,7 +1575,9 @@ Rule Input_N23 {
     Match N23_7 {
         match = True
     }
-    Match N23_8 {}
+    Match N23_8 {
+        match = True
+    }
     Match N23_9 {}
 
     MatchEdge (N23_0, N23_1) {
@@ -1864,7 +1869,7 @@ Rule Resolve_NoAttrGlobal_N28 {
     MatchEdge (N28_0, N28_1) {
         value = "taskname"
     }
-    MatchEdge (N28_0, N28_2) {
+    MatchEdge (N28_1, N28_2) {
         value = "'globals'"
     }
     MatchEdge (N28_1, N28_3) {

+ 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:   Mon Nov 27 16:40:00 2017
+Date:   Tue Nov 28 08:33:05 2017
 
 Model author: Yentl Van Tendeloo
 Model name:   MvK Server