|
@@ -42,8 +42,8 @@ class ModelverseKernel(object):
|
|
|
raise
|
|
|
|
|
|
def execute_rule(self, username):
|
|
|
- user_root = yield [("RD", [self.root, username])]
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
+ user_root, = yield [("RD", [self.root, username])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
inst, phase = yield [("RD", [user_frame, "IP"]),
|
|
|
("RD", [user_frame, "phase"]),
|
|
|
]
|
|
@@ -53,7 +53,7 @@ class ModelverseKernel(object):
|
|
|
("RV", [inst]),
|
|
|
]
|
|
|
if self.new_debug is not None:
|
|
|
- self.debug_info = yield [("RV", [self.new_debug])]
|
|
|
+ self.debug_info, = yield [("RV", [self.new_debug])]
|
|
|
|
|
|
if phase_v == "finish":
|
|
|
gen = self.helper_init(user_root)
|
|
@@ -77,7 +77,6 @@ class ModelverseKernel(object):
|
|
|
try:
|
|
|
inp = None
|
|
|
while 1:
|
|
|
- # Without checking:
|
|
|
inp = yield gen.send(inp)
|
|
|
except StopIteration:
|
|
|
pass
|
|
@@ -86,39 +85,28 @@ class ModelverseKernel(object):
|
|
|
### Process primitives ###
|
|
|
##########################
|
|
|
def load_primitives(self, username):
|
|
|
- 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]
|
|
|
+ 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])
|
|
|
self.compiled.update(self.primitives)
|
|
|
|
|
|
def execute_primitive(self, user_root, inst, username):
|
|
|
# execute_primitive
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
- symbols = yield [("RD", [user_frame, "symbols"])]
|
|
|
- all_links = yield [("RO", [symbols])]
|
|
|
- if len(all_links) == 1:
|
|
|
- # Single parameter, so avoid all list comprehensions
|
|
|
- all_links = all_links[0]
|
|
|
- containers = yield [("RE", [all_links])]
|
|
|
- outgoings = yield [("RO", [all_links])]
|
|
|
- dict_values = yield [("RD", [containers[1], "value"])]
|
|
|
- formals_1 = yield [("RE", [outgoings[0]])]
|
|
|
- dict_keys_ref = yield [("RD", [formals_1[1], "name"])]
|
|
|
- dict_keys = yield [("RV", [dict_keys_ref])]
|
|
|
- parameters = {dict_keys: dict_values}
|
|
|
- else:
|
|
|
- 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))
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
+ symbols, = yield [("RD", [user_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["user_root"] = user_root
|
|
@@ -143,8 +131,8 @@ class ModelverseKernel(object):
|
|
|
# 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", [user_frame, "prev"])]
|
|
|
- lnk = yield [("RDE", [old_frame, "returnvalue"])]
|
|
|
+ old_frame, = yield [("RD", [user_frame, "prev"])]
|
|
|
+ lnk, = yield [("RDE", [old_frame, "returnvalue"])]
|
|
|
_, _, _, _ = yield [("CD", [old_frame, "returnvalue", result]),
|
|
|
("CD", [user_root, "frame", old_frame]),
|
|
|
("DE", [lnk]),
|
|
@@ -155,8 +143,8 @@ class ModelverseKernel(object):
|
|
|
### Execute input and output methods ###
|
|
|
########################################
|
|
|
def get_output(self, username):
|
|
|
- user_root = yield [("RD", [self.root, username])]
|
|
|
- first_output = yield [("RD", [user_root, "output"])]
|
|
|
+ user_root, = yield [("RD", [self.root, username])]
|
|
|
+ first_output, = yield [("RD", [user_root, "output"])]
|
|
|
next_output, rv = yield [("RD", [first_output, "next"]),
|
|
|
("RD", [first_output, "value"]),
|
|
|
]
|
|
@@ -164,18 +152,18 @@ class ModelverseKernel(object):
|
|
|
self.success = False
|
|
|
self.returnvalue = {"id": None, "value": ""}
|
|
|
else:
|
|
|
- rv_value = yield [("RV", [rv])]
|
|
|
+ rv_value, = yield [("RV", [rv])]
|
|
|
_, _ = yield [("CD", [user_root, "output", next_output]),
|
|
|
("DN", [first_output]),
|
|
|
]
|
|
|
self.returnvalue = {"id": rv, "value": rv_value}
|
|
|
|
|
|
def set_input(self, username, element_type, value):
|
|
|
- user_root = yield [("RD", [self.root, username])]
|
|
|
+ user_root, = yield [("RD", [self.root, username])]
|
|
|
old_input, link = yield [("RD", [user_root, "last_input"]),
|
|
|
("RDE", [user_root, "last_input"]),
|
|
|
]
|
|
|
- new_input = yield [("CN", [])]
|
|
|
+ new_input, = yield [("CN", [])]
|
|
|
_, _ = yield [("CD", [user_root, "last_input", new_input]),
|
|
|
("CD", [old_input, "next", new_input]),
|
|
|
]
|
|
@@ -183,7 +171,7 @@ class ModelverseKernel(object):
|
|
|
if element_type == "R":
|
|
|
new_value = int(value)
|
|
|
elif element_type == "V":
|
|
|
- new_value = yield [("CNV", [value])]
|
|
|
+ new_value, = yield [("CNV", [value])]
|
|
|
_, _ = yield [("CD", [old_input, "value", new_value]),
|
|
|
("DE", [link])
|
|
|
]
|
|
@@ -193,12 +181,12 @@ class ModelverseKernel(object):
|
|
|
### Transformation rules for instructions ###
|
|
|
#############################################
|
|
|
def break_init(self, user_root):
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
phase_link, ip_link = \
|
|
|
yield [("RDE", [user_frame, "phase"]),
|
|
|
("RDE", [user_frame, "IP"])
|
|
|
]
|
|
|
- inst = yield [("RD", [user_frame, "IP"])]
|
|
|
+ inst, = yield [("RD", [user_frame, "IP"])]
|
|
|
while_inst, new_phase = \
|
|
|
yield [("RD", [inst, "while"]),
|
|
|
("CNV", ["finish"]),
|
|
@@ -210,17 +198,17 @@ class ModelverseKernel(object):
|
|
|
]
|
|
|
|
|
|
def continue_init(self, user_root):
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
ip_link, inst = yield [("RDE", [user_frame, "IP"]),
|
|
|
("RD", [user_frame, "IP"]),
|
|
|
]
|
|
|
- while_inst = yield [("RD", [inst, "while"])]
|
|
|
+ while_inst, = yield [("RD", [inst, "while"])]
|
|
|
_, _ = yield [("CD", [user_frame, "IP", while_inst]),
|
|
|
("DE", [ip_link]),
|
|
|
]
|
|
|
|
|
|
def if_init(self, user_root):
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
evalstack, evalstack_link = \
|
|
|
yield [("RD", [user_frame, "evalstack"]),
|
|
|
("RDE", [user_frame, "evalstack"]),
|
|
@@ -228,7 +216,7 @@ class ModelverseKernel(object):
|
|
|
inst, ip_link = yield [("RD", [user_frame, "IP"]),
|
|
|
("RDE", [user_frame, "IP"]),
|
|
|
]
|
|
|
- cond = yield [("RD", [inst, "cond"])]
|
|
|
+ cond, = yield [("RD", [inst, "cond"])]
|
|
|
new_evalstack, new_phase = \
|
|
|
yield [("CN", []),
|
|
|
("CNV", ["cond"]),
|
|
@@ -244,12 +232,12 @@ class ModelverseKernel(object):
|
|
|
]
|
|
|
|
|
|
def if_cond(self, user_root):
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
returnvalue, inst = yield [("RD", [user_frame, "returnvalue"]),
|
|
|
("RD", [user_frame, "IP"]),
|
|
|
]
|
|
|
- returnvalue_v = yield [("RV", [returnvalue])]
|
|
|
- _else = yield [("RD", [inst, "else"])]
|
|
|
+ returnvalue_v, = yield [("RV", [returnvalue])]
|
|
|
+ _else, = yield [("RD", [inst, "else"])]
|
|
|
|
|
|
if returnvalue_v:
|
|
|
phase_link, evalstack, evalstack_link, ip_link, _then, new_evalstack, evalstack_phase, new_phase = \
|
|
@@ -306,7 +294,7 @@ class ModelverseKernel(object):
|
|
|
]
|
|
|
|
|
|
def while_init(self, user_root):
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
evalstack, evalstack_link, ip_link, inst = \
|
|
|
yield [("RD", [user_frame, "evalstack"]),
|
|
|
("RDE", [user_frame, "evalstack"]),
|
|
@@ -329,9 +317,9 @@ class ModelverseKernel(object):
|
|
|
]
|
|
|
|
|
|
def while_cond(self, user_root):
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
- returnvalue = yield [("RD", [user_frame, "returnvalue"])]
|
|
|
- returnvalue_v = yield [("RV", [returnvalue])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
+ returnvalue, = yield [("RD", [user_frame, "returnvalue"])]
|
|
|
+ returnvalue_v, = yield [("RV", [returnvalue])]
|
|
|
|
|
|
if returnvalue_v:
|
|
|
phase_link, evalstack, evalstack_link, ip_link, inst = \
|
|
@@ -341,7 +329,7 @@ class ModelverseKernel(object):
|
|
|
("RDE", [user_frame, "IP"]),
|
|
|
("RD", [user_frame, "IP"]),
|
|
|
]
|
|
|
- body = yield [("RD", [inst, "body"])]
|
|
|
+ body, = yield [("RD", [inst, "body"])]
|
|
|
new_evalstack, new_phase, evalstack_phase = \
|
|
|
yield [("CN", []),
|
|
|
("CNV", ["init"]),
|
|
@@ -368,7 +356,7 @@ class ModelverseKernel(object):
|
|
|
]
|
|
|
|
|
|
def access_init(self, user_root):
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
evalstack, evalstack_link, inst, ip_link = \
|
|
|
yield [("RD", [user_frame, "evalstack"]),
|
|
|
("RDE", [user_frame, "evalstack"]),
|
|
@@ -391,7 +379,7 @@ class ModelverseKernel(object):
|
|
|
]
|
|
|
|
|
|
def access_eval(self, user_root):
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
phase_link, returnvalue_link, returnvalue = \
|
|
|
yield [("RDE", [user_frame, "phase"]),
|
|
|
("RDE", [user_frame, "returnvalue"]),
|
|
@@ -407,7 +395,7 @@ class ModelverseKernel(object):
|
|
|
]
|
|
|
|
|
|
def resolve_init(self, user_root):
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
symbols, evalstack, evalstack_link, ip_link, inst = \
|
|
|
yield [("RD", [user_frame, "symbols"]),
|
|
|
("RD", [user_frame, "evalstack"]),
|
|
@@ -415,8 +403,8 @@ class ModelverseKernel(object):
|
|
|
("RDE", [user_frame, "IP"]),
|
|
|
("RD", [user_frame, "IP"]),
|
|
|
]
|
|
|
- var = yield [("RD", [inst, "var"])]
|
|
|
- variable = yield [("RDN", [symbols, var])]
|
|
|
+ var, = yield [("RD", [inst, "var"])]
|
|
|
+ variable, = yield [("RDN", [symbols, var])]
|
|
|
|
|
|
if variable is None:
|
|
|
phase_link, returnvalue_link, _globals, var_name = \
|
|
@@ -441,8 +429,8 @@ class ModelverseKernel(object):
|
|
|
# We have a compiled function ready!
|
|
|
# Now we have to bind the ID to the compiled functions
|
|
|
# For this, we read out the body of the resolved data
|
|
|
- compiler_val = yield [("RD", [variable, "value"])]
|
|
|
- compiler_body = yield [("RD", [compiler_val, "body"])]
|
|
|
+ compiler_val, = yield [("RD", [variable, "value"])]
|
|
|
+ compiler_body, = yield [("RD", [compiler_val, "body"])]
|
|
|
self.compiled[compiler_body] = compiled_function
|
|
|
|
|
|
else:
|
|
@@ -459,7 +447,7 @@ class ModelverseKernel(object):
|
|
|
]
|
|
|
|
|
|
def assign_init(self, user_root):
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
evalstack, evalstack_link, ip_link, inst = \
|
|
|
yield [("RD", [user_frame, "evalstack"]),
|
|
|
("RDE", [user_frame, "evalstack"]),
|
|
@@ -482,7 +470,7 @@ class ModelverseKernel(object):
|
|
|
]
|
|
|
|
|
|
def assign_value(self, user_root):
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
phase_link, evalstack, returnvalue, evalstack_link, ip_link, inst = \
|
|
|
yield [("RDE", [user_frame, "phase"]),
|
|
|
("RD", [user_frame, "evalstack"]),
|
|
@@ -512,7 +500,7 @@ class ModelverseKernel(object):
|
|
|
]
|
|
|
|
|
|
def assign_assign(self, user_root):
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
phase_link, returnvalue, variable_link, variable = \
|
|
|
yield [("RDE", [user_frame, "phase"]),
|
|
|
("RD", [user_frame, "returnvalue"]),
|
|
@@ -531,12 +519,12 @@ class ModelverseKernel(object):
|
|
|
]
|
|
|
|
|
|
def return_init(self, user_root):
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
- inst = yield [("RD", [user_frame, "IP"])]
|
|
|
- value = yield [("RD", [inst, "value"])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
+ inst, = yield [("RD", [user_frame, "IP"])]
|
|
|
+ value, = yield [("RD", [inst, "value"])]
|
|
|
|
|
|
if value is None:
|
|
|
- prev_frame = yield [("RD", [user_frame, "prev"])]
|
|
|
+ prev_frame, = yield [("RD", [user_frame, "prev"])]
|
|
|
_, _ = yield [("CD", [user_root, "frame", prev_frame]),
|
|
|
("DN", [user_frame]),
|
|
|
]
|
|
@@ -559,8 +547,8 @@ class ModelverseKernel(object):
|
|
|
]
|
|
|
|
|
|
def return_eval(self, user_root):
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
- prev_frame = yield [("RD", [user_frame, "prev"])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
+ prev_frame, = yield [("RD", [user_frame, "prev"])]
|
|
|
returnvalue, old_returnvalue_link = \
|
|
|
yield [("RD", [user_frame, "returnvalue"]),
|
|
|
("RDE", [prev_frame, "returnvalue"]),
|
|
@@ -572,7 +560,7 @@ class ModelverseKernel(object):
|
|
|
]
|
|
|
|
|
|
def constant_init(self, user_root):
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
phase_link, returnvalue_link, inst = \
|
|
|
yield [("RDE", [user_frame, "phase"]),
|
|
|
("RDE", [user_frame, "returnvalue"]),
|
|
@@ -588,9 +576,9 @@ class ModelverseKernel(object):
|
|
|
]
|
|
|
|
|
|
def helper_init(self, user_root):
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
- inst = yield [("RD", [user_frame, "IP"])]
|
|
|
- next = yield [("RD", [inst, "next"])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
+ inst, = yield [("RD", [user_frame, "IP"])]
|
|
|
+ next, = yield [("RD", [inst, "next"])]
|
|
|
|
|
|
if next is None:
|
|
|
ip_link, phase_link, evalstack_top = \
|
|
@@ -598,7 +586,7 @@ class ModelverseKernel(object):
|
|
|
("RDE", [user_frame, "phase"]),
|
|
|
("RD", [user_frame, "evalstack"]),
|
|
|
]
|
|
|
- evalstack = yield [("RD", [evalstack_top, "prev"])]
|
|
|
+ evalstack, = yield [("RD", [evalstack_top, "prev"])]
|
|
|
evalstack_inst, evalstack_phase, evalstack_inst_link, evalstack_phase_link = \
|
|
|
yield [("RD", [evalstack, "inst"]),
|
|
|
("RD", [evalstack, "phase"]),
|
|
@@ -628,7 +616,7 @@ class ModelverseKernel(object):
|
|
|
]
|
|
|
|
|
|
def call_init(self, user_root):
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
symbols, evalstack, evalstack_link, ip_link, inst = \
|
|
|
yield [("RD", [user_frame, "symbols"]),
|
|
|
("RD", [user_frame, "evalstack"]),
|
|
@@ -655,7 +643,7 @@ class ModelverseKernel(object):
|
|
|
("DE", [ip_link]),
|
|
|
]
|
|
|
else:
|
|
|
- new_evalstack = yield [("CN", [])]
|
|
|
+ new_evalstack,= yield [("CN", [])]
|
|
|
_, _, _, _, _, _, _ = \
|
|
|
yield [("CD", [user_frame, "evalstack", new_evalstack]),
|
|
|
("CD", [new_evalstack, "prev", evalstack]),
|
|
@@ -667,12 +655,12 @@ class ModelverseKernel(object):
|
|
|
]
|
|
|
|
|
|
def call_call(self, user_root):
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
- inst = yield [("RD", [user_frame, "IP"])]
|
|
|
- param = yield [("RD", [inst, "last_param"])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
+ inst, = yield [("RD", [user_frame, "IP"])]
|
|
|
+ param, = yield [("RD", [inst, "last_param"])]
|
|
|
|
|
|
if param is None:
|
|
|
- returnvalue = yield [("RD", [user_frame, "returnvalue"])]
|
|
|
+ returnvalue, = yield [("RD", [user_frame, "returnvalue"])]
|
|
|
body, phase_link, frame_link, prev_phase, new_phase, new_frame, new_evalstack, new_symbols, new_returnvalue = \
|
|
|
yield [("RD", [returnvalue, "body"]),
|
|
|
("RDE", [user_frame, "phase"]),
|
|
@@ -709,14 +697,14 @@ class ModelverseKernel(object):
|
|
|
("RD", [new_frame, "symbols"]),
|
|
|
("RD", [new_frame, "IP"]),
|
|
|
]
|
|
|
- signature = yield [("RRD", [new_IP, "body"])]
|
|
|
+ signature, = yield [("RRD", [new_IP, "body"])]
|
|
|
signature = signature[0]
|
|
|
sig_params, last_param = \
|
|
|
yield [("RD", [signature, "params"]),
|
|
|
("RD", [inst, "last_param"]),
|
|
|
]
|
|
|
- name = yield [("RD", [last_param, "name"])]
|
|
|
- name_value = yield [("RV", [name])]
|
|
|
+ name, = yield [("RD", [last_param, "name"])]
|
|
|
+ name_value, = yield [("RV", [name])]
|
|
|
returnvalue, formal_parameter, new_phase, variable = \
|
|
|
yield [("RD", [user_frame, "returnvalue"]),
|
|
|
("RD", [sig_params, name_value]),
|
|
@@ -745,8 +733,7 @@ class ModelverseKernel(object):
|
|
|
raise Exception("%s: error: could not find any overlap" % self.debug_info)
|
|
|
|
|
|
def call_param(self, user_root):
|
|
|
- #TODO this code is likely very buggy!
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
inst, phase = yield [("RD", [user_frame, "IP"]),
|
|
|
("RD", [user_frame, "phase"]),
|
|
|
]
|
|
@@ -754,7 +741,7 @@ class ModelverseKernel(object):
|
|
|
yield [("RD", [inst, "params"]),
|
|
|
("RD", [inst, "last_param"]),
|
|
|
]
|
|
|
- next_param = yield [("RD", [params, "next_param"])]
|
|
|
+ next_param, = yield [("RD", [params, "next_param"])]
|
|
|
|
|
|
if params == phase:
|
|
|
phase_link, ip_link, returnvalue, param_value, evalstack, evalstack_link = \
|
|
@@ -765,7 +752,7 @@ class ModelverseKernel(object):
|
|
|
("RD", [user_frame, "evalstack"]),
|
|
|
("RDE", [user_frame, "evalstack"]),
|
|
|
]
|
|
|
- body = yield [("RD", [returnvalue, "body"])]
|
|
|
+ body, = yield [("RD", [returnvalue, "body"])]
|
|
|
new_frame, prev_evalstack, new_phase, prev_phase, new_evalstack, new_symbols, new_returnvalue = \
|
|
|
yield [("CN", []),
|
|
|
("CN", []),
|
|
@@ -795,7 +782,7 @@ class ModelverseKernel(object):
|
|
|
if next_param is not None:
|
|
|
_ = yield [("CD", [evalstack, "phase", next_param])]
|
|
|
else:
|
|
|
- evalstack_phase = \
|
|
|
+ evalstack_phase, = \
|
|
|
yield [("CNV", ["call"])]
|
|
|
_ = yield [("CD", [evalstack, "phase", evalstack_phase])]
|
|
|
else:
|
|
@@ -813,18 +800,18 @@ class ModelverseKernel(object):
|
|
|
("RD", [new_frame, "symbols"]),
|
|
|
("RD", [new_frame, "IP"]),
|
|
|
]
|
|
|
- signature = yield [("RRD", [new_IP, "body"])]
|
|
|
+ signature, = yield [("RRD", [new_IP, "body"])]
|
|
|
signature = signature[0]
|
|
|
- sig_params = yield [("RD", [signature, "params"])]
|
|
|
+ sig_params, = yield [("RD", [signature, "params"])]
|
|
|
|
|
|
if last_param == phase:
|
|
|
- prev_param = \
|
|
|
+ prev_param, = \
|
|
|
yield [("RRD", [last_param, "next_param"])]
|
|
|
prev_param = prev_param[0]
|
|
|
- name = yield [("RD", [prev_param, "name"])]
|
|
|
- name_value = \
|
|
|
+ name, = yield [("RD", [prev_param, "name"])]
|
|
|
+ name_value, = \
|
|
|
yield [("RV", [name])]
|
|
|
- evalstack_phase = \
|
|
|
+ evalstack_phase, = \
|
|
|
yield [("CNV", ["call"])]
|
|
|
_ = yield [("CD", [evalstack, "phase", evalstack_phase])]
|
|
|
formal_parameter, param_value = \
|
|
@@ -832,7 +819,7 @@ class ModelverseKernel(object):
|
|
|
("RD", [last_param, "value"]),
|
|
|
]
|
|
|
else:
|
|
|
- param_b = yield [("RD", [user_frame, "phase"])]
|
|
|
+ param_b, = yield [("RD", [user_frame, "phase"])]
|
|
|
param_c, param_a = \
|
|
|
yield [("RD", [param_b, "next_param"]),
|
|
|
("RRD", [param_b, "next_param"]),
|
|
@@ -842,7 +829,7 @@ class ModelverseKernel(object):
|
|
|
yield [("RD", [param_a, "name"]),
|
|
|
("RD", [param_b, "value"]),
|
|
|
]
|
|
|
- name_value = \
|
|
|
+ name_value, = \
|
|
|
yield [("RV", [name])]
|
|
|
formal_parameter, _ = \
|
|
|
yield [("RD", [sig_params, name_value]),
|
|
@@ -864,7 +851,7 @@ class ModelverseKernel(object):
|
|
|
("CD", [variable, "value", returnvalue]),
|
|
|
]
|
|
|
|
|
|
- t1 = yield [("CE", [new_symbols, variable])]
|
|
|
+ t1, = yield [("CE", [new_symbols, variable])]
|
|
|
_, _, _, _ = \
|
|
|
yield [("CE", [t1, formal_parameter]),
|
|
|
("DE", [phase_link]),
|
|
@@ -873,7 +860,7 @@ class ModelverseKernel(object):
|
|
|
]
|
|
|
|
|
|
def input_init(self, user_root):
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
returnvalue_link, _input = \
|
|
|
yield [("RDE", [user_frame, "returnvalue"]),
|
|
|
("RD", [user_root, "input"]),
|
|
@@ -901,7 +888,7 @@ class ModelverseKernel(object):
|
|
|
self.success = False
|
|
|
|
|
|
def output_init(self, user_root):
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
evalstack, evalstack_link, ip_link, inst = \
|
|
|
yield [("RD", [user_frame, "evalstack"]),
|
|
|
("RDE", [user_frame, "evalstack"]),
|
|
@@ -924,7 +911,7 @@ class ModelverseKernel(object):
|
|
|
]
|
|
|
|
|
|
def output_output(self, user_root):
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
returnvalue_link, returnvalue, last_output, phase_link, last_output_link, new_last_output, finish = \
|
|
|
yield [("RDE", [user_frame, "returnvalue"]),
|
|
|
("RD", [user_frame, "returnvalue"]),
|
|
@@ -944,8 +931,8 @@ class ModelverseKernel(object):
|
|
|
]
|
|
|
|
|
|
def declare_init(self, user_root):
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
- inst = yield [("RD", [user_frame, "IP"])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
+ inst, = yield [("RD", [user_frame, "IP"])]
|
|
|
new_var, symbols, phase_link, empty_node, new_phase = \
|
|
|
yield [("RD", [inst, "var"]),
|
|
|
("RD", [user_frame, "symbols"]),
|
|
@@ -954,18 +941,18 @@ class ModelverseKernel(object):
|
|
|
("CNV", ["finish"]),
|
|
|
]
|
|
|
|
|
|
- exists = yield [("RDN", [symbols, new_var])]
|
|
|
+ exists, = yield [("RDN", [symbols, new_var])]
|
|
|
if exists is None:
|
|
|
- new_edge = yield [("CE", [symbols, empty_node])]
|
|
|
- _ = yield [("CE", [new_edge, new_var])]
|
|
|
+ new_edge, = yield [("CE", [symbols, empty_node])]
|
|
|
+ _ = yield [("CE", [new_edge, new_var])]
|
|
|
|
|
|
- _, _ = yield [ ("CD", [user_frame, "phase", new_phase]),
|
|
|
+ _, _ = yield [("CD", [user_frame, "phase", new_phase]),
|
|
|
("DE", [phase_link]),
|
|
|
]
|
|
|
|
|
|
def global_init(self, user_root):
|
|
|
- user_frame = yield [("RD", [user_root, "frame"])]
|
|
|
- inst = yield [("RD", [user_frame, "IP"])]
|
|
|
+ user_frame, = yield [("RD", [user_root, "frame"])]
|
|
|
+ inst, = yield [("RD", [user_frame, "IP"])]
|
|
|
new_var, global_symbols, phase_link, empty_node, new_phase = \
|
|
|
yield [("RD", [inst, "var"]),
|
|
|
("RD", [user_root, "globals"]),
|
|
@@ -974,8 +961,8 @@ class ModelverseKernel(object):
|
|
|
("CNV", ["finish"]),
|
|
|
]
|
|
|
|
|
|
- value = yield [("RV", [new_var])]
|
|
|
- exists = yield [("RD", [global_symbols, value])]
|
|
|
+ value, = yield [("RV", [new_var])]
|
|
|
+ exists, = yield [("RD", [global_symbols, value])]
|
|
|
|
|
|
if exists is None:
|
|
|
yield [("CD", [global_symbols, value, empty_node])]
|