|
@@ -418,3 +418,37 @@ def check_symbols(a, b, c, **remainder):
|
|
|
|
|
|
result, = yield [("CNV", ["OK"])]
|
|
result, = yield [("CNV", ["OK"])]
|
|
raise PrimitiveFinished(result)
|
|
raise PrimitiveFinished(result)
|
|
|
|
+
|
|
|
|
+def construct_const(**remainder):
|
|
|
|
+ v, = yield [("CNV", [{"value": "constant"}])]
|
|
|
|
+
|
|
|
|
+ # Get input: keep trying until we get something
|
|
|
|
+ try:
|
|
|
|
+ gen = __get_input(remainder)
|
|
|
|
+ inp = None
|
|
|
|
+ while 1:
|
|
|
|
+ inp = yield gen.send(inp)
|
|
|
|
+ except PrimitiveFinished as e:
|
|
|
|
+ inp = e.result
|
|
|
|
+
|
|
|
|
+ yield [("CD", [v, "node", inp])]
|
|
|
|
+
|
|
|
|
+ raise PrimitiveFinished(v)
|
|
|
|
+
|
|
|
|
+def __get_input(parameters):
|
|
|
|
+ mvk = parameters["mvk"]
|
|
|
|
+ user_root = parameters["user_root"]
|
|
|
|
+ while 1:
|
|
|
|
+ try:
|
|
|
|
+ gen = mvk.input_init(user_root)
|
|
|
|
+ inp = None
|
|
|
|
+ while 1:
|
|
|
|
+ inp = yield gen.send(inp)
|
|
|
|
+ except StopIteration:
|
|
|
|
+ # Finished
|
|
|
|
+ if mvk.success:
|
|
|
|
+ # Got some input, so we can access it
|
|
|
|
+ raise PrimitiveFinished(mvk.input_value)
|
|
|
|
+ else:
|
|
|
|
+ # No input, so yield None but don't stop
|
|
|
|
+ yield None
|