|
@@ -46,96 +46,110 @@ def integer_subtraction(a, b, **remainder):
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
if 'value' not in b:
|
|
if 'value' not in b:
|
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
|
- raise PrimitiveFinished({'value': a['value'] - b['value']})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': a['value'] - b['value']})
|
|
|
|
|
+ yield [("RETURN", [{'value': a['value'] - b['value']}])]
|
|
|
|
|
|
|
|
def integer_addition(a, b, **remainder):
|
|
def integer_addition(a, b, **remainder):
|
|
|
if 'value' not in a:
|
|
if 'value' not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
if 'value' not in b:
|
|
if 'value' not in b:
|
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
|
- raise PrimitiveFinished({'value': a['value'] + b['value']})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': a['value'] + b['value']})
|
|
|
|
|
+ yield [("RETURN", [{'value': a['value'] + b['value']}])]
|
|
|
|
|
|
|
|
def integer_multiplication(a, b, **remainder):
|
|
def integer_multiplication(a, b, **remainder):
|
|
|
if 'value' not in a:
|
|
if 'value' not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
if 'value' not in b:
|
|
if 'value' not in b:
|
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
|
- raise PrimitiveFinished({'value': a['value'] * b['value']})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': a['value'] * b['value']})
|
|
|
|
|
+ yield [("RETURN", [{'value': a['value'] * b['value']}])]
|
|
|
|
|
|
|
|
def integer_division(a, b, **remainder):
|
|
def integer_division(a, b, **remainder):
|
|
|
if 'value' not in a:
|
|
if 'value' not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
if 'value' not in b:
|
|
if 'value' not in b:
|
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
|
- raise PrimitiveFinished({'value': int(a['value']) // b['value']})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': int(a['value']) // b['value']})
|
|
|
|
|
+ yield [("RETURN", [{'value': int(a['value']) // b['value']}])]
|
|
|
|
|
|
|
|
def integer_lt(a, b, **remainder):
|
|
def integer_lt(a, b, **remainder):
|
|
|
if 'value' not in a:
|
|
if 'value' not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
if 'value' not in b:
|
|
if 'value' not in b:
|
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
|
- raise PrimitiveFinished({'value': a['value'] < b['value']})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': a['value'] < b['value']})
|
|
|
|
|
+ yield [("RETURN", [{'value': a['value'] < b['value']}])]
|
|
|
|
|
|
|
|
def bool_and(a, b, **remainder):
|
|
def bool_and(a, b, **remainder):
|
|
|
if 'value' not in a:
|
|
if 'value' not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
if 'value' not in b:
|
|
if 'value' not in b:
|
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
|
- raise PrimitiveFinished({'value': a['value'] and b['value']})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': a['value'] and b['value']})
|
|
|
|
|
+ yield [("RETURN", [{'value': a['value'] and b['value']}])]
|
|
|
|
|
|
|
|
def bool_or(a, b, **remainder):
|
|
def bool_or(a, b, **remainder):
|
|
|
if 'value' not in a:
|
|
if 'value' not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
if 'value' not in b:
|
|
if 'value' not in b:
|
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
|
- raise PrimitiveFinished({'value': a['value'] or b['value']})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': a['value'] or b['value']})
|
|
|
|
|
+ yield [("RETURN", [{'value': a['value'] or b['value']}])]
|
|
|
|
|
|
|
|
def bool_not(a, **remainder):
|
|
def bool_not(a, **remainder):
|
|
|
if 'value' not in a:
|
|
if 'value' not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
- raise PrimitiveFinished({'value': not a['value']})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': not a['value']})
|
|
|
|
|
+ yield [("RETURN", [{'value': not a['value']}])]
|
|
|
|
|
|
|
|
def float_subtraction(a, b, **remainder):
|
|
def float_subtraction(a, b, **remainder):
|
|
|
if 'value' not in a:
|
|
if 'value' not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
if 'value' not in b:
|
|
if 'value' not in b:
|
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
|
- raise PrimitiveFinished({'value': a['value'] - b['value']})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': a['value'] - b['value']})
|
|
|
|
|
+ yield [("RETURN", [{'value': a['value'] - b['value']}])]
|
|
|
|
|
|
|
|
def float_addition(a, b, **remainder):
|
|
def float_addition(a, b, **remainder):
|
|
|
if 'value' not in a:
|
|
if 'value' not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
if 'value' not in b:
|
|
if 'value' not in b:
|
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
|
- raise PrimitiveFinished({'value': a['value'] + b['value']})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': a['value'] + b['value']})
|
|
|
|
|
+ yield [("RETURN", [{'value': a['value'] + b['value']}])]
|
|
|
|
|
|
|
|
def float_multiplication(a, b, **remainder):
|
|
def float_multiplication(a, b, **remainder):
|
|
|
if 'value' not in a:
|
|
if 'value' not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
if 'value' not in b:
|
|
if 'value' not in b:
|
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
|
- raise PrimitiveFinished({'value': a['value'] * b['value']})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': a['value'] * b['value']})
|
|
|
|
|
+ yield [("RETURN", [{'value': a['value'] * b['value']}])]
|
|
|
|
|
|
|
|
def float_division(a, b, **remainder):
|
|
def float_division(a, b, **remainder):
|
|
|
if 'value' not in a:
|
|
if 'value' not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
if 'value' not in b:
|
|
if 'value' not in b:
|
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
|
- raise PrimitiveFinished({'value': float(a['value']) / float(b['value'])})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': float(a['value']) / float(b['value'])})
|
|
|
|
|
+ yield [("RETURN", [{'value': float(a['value']) / b['value']}])]
|
|
|
|
|
|
|
|
def float_lt(a, b, **remainder):
|
|
def float_lt(a, b, **remainder):
|
|
|
if 'value' not in a:
|
|
if 'value' not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
if 'value' not in b:
|
|
if 'value' not in b:
|
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
|
- raise PrimitiveFinished({'value': a['value'] < b['value']})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': a['value'] < b['value']})
|
|
|
|
|
+ yield [("RETURN", [{'value': a['value'] < b['value']}])]
|
|
|
|
|
|
|
|
def string_join(a, b, **remainder):
|
|
def string_join(a, b, **remainder):
|
|
|
if 'value' not in a:
|
|
if 'value' not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
if 'value' not in b:
|
|
if 'value' not in b:
|
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
|
- raise PrimitiveFinished({'value': str(a['value']) + str(b['value'])})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': str(a['value']) + str(b['value'])})
|
|
|
|
|
+ yield [("RETURN", [{'value': str(a['value']) + str(b['value'])}])]
|
|
|
|
|
|
|
|
def string_split(a, b, **remainder):
|
|
def string_split(a, b, **remainder):
|
|
|
# TODO make non-primitive, though compiled
|
|
# TODO make non-primitive, though compiled
|
|
@@ -147,26 +161,30 @@ def string_split(a, b, **remainder):
|
|
|
elems = yield [("CN", [])] + [("CNV", [v]) for v in result]
|
|
elems = yield [("CN", [])] + [("CNV", [v]) for v in result]
|
|
|
new_val = elems[0]
|
|
new_val = elems[0]
|
|
|
yield [("CD", [new_val, i, v]) for i, v in enumerate(elems[1:])]
|
|
yield [("CD", [new_val, i, v]) for i, v in enumerate(elems[1:])]
|
|
|
- raise PrimitiveFinished({'id': new_val})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'id': new_val})
|
|
|
|
|
+ yield [("RETURN", [{'id': new_val}])]
|
|
|
|
|
|
|
|
def string_get(a, b, **remainder):
|
|
def string_get(a, b, **remainder):
|
|
|
if 'value' not in a:
|
|
if 'value' not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
if 'value' not in b:
|
|
if 'value' not in b:
|
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
|
- raise PrimitiveFinished({'value': a['value'][b['value']]})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': a['value'][b['value']]})
|
|
|
|
|
+ yield [("RETURN", [{'value': a['value'][b['value']]}])]
|
|
|
|
|
|
|
|
def string_len(a, **remainder):
|
|
def string_len(a, **remainder):
|
|
|
if 'value' not in a:
|
|
if 'value' not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
- raise PrimitiveFinished({'value': len(a['value'])})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': len(a['value'])})
|
|
|
|
|
+ yield [("RETURN", [{'value': len(a['value'])}])]
|
|
|
|
|
|
|
|
def value_eq(a, b, **remainder):
|
|
def value_eq(a, b, **remainder):
|
|
|
if 'value' not in a:
|
|
if 'value' not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
if 'value' not in b:
|
|
if 'value' not in b:
|
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
|
- raise PrimitiveFinished({'value': a['value'] == b['value']})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': a['value'] == b['value']})
|
|
|
|
|
+ yield [("RETURN", [{'value': a['value'] == b['value']}])]
|
|
|
|
|
|
|
|
def element_eq(a, b, **remainder):
|
|
def element_eq(a, b, **remainder):
|
|
|
if "id" not in a:
|
|
if "id" not in a:
|
|
@@ -175,44 +193,53 @@ def element_eq(a, b, **remainder):
|
|
|
if "id" not in b:
|
|
if "id" not in b:
|
|
|
#print("MATERIALIZING B element_eq")
|
|
#print("MATERIALIZING B element_eq")
|
|
|
b['id'], = yield [("CNV", [b['value']])]
|
|
b['id'], = yield [("CNV", [b['value']])]
|
|
|
- raise PrimitiveFinished({'value': a['id'] == b['id']})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': a['id'] == b['id']})
|
|
|
|
|
+ yield [("RETURN", [{'value': a['id'] == b['id']}])]
|
|
|
|
|
|
|
|
def cast_string(a, **remainder):
|
|
def cast_string(a, **remainder):
|
|
|
if 'value' not in a:
|
|
if 'value' not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
if isinstance(a['value'], dict):
|
|
if isinstance(a['value'], dict):
|
|
|
- raise PrimitiveFinished({'value': str(a['value']['value'])})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': str(a['value']['value'])})
|
|
|
|
|
+ yield [("RETURN", [{'value': str(a['value']['value'])}])]
|
|
|
else:
|
|
else:
|
|
|
- raise PrimitiveFinished({'value': str(a['value'])})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': str(a['value'])})
|
|
|
|
|
+ yield [("RETURN", [{'value': str(a['value'])}])]
|
|
|
|
|
|
|
|
def cast_float(a, **remainder):
|
|
def cast_float(a, **remainder):
|
|
|
if 'value' not in a:
|
|
if 'value' not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
- raise PrimitiveFinished({'value': float(a['value'])})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': float(a['value'])})
|
|
|
|
|
+ yield [("RETURN", [{'value': float(a['value'])}])]
|
|
|
|
|
|
|
|
def cast_boolean(a, **remainder):
|
|
def cast_boolean(a, **remainder):
|
|
|
if 'value' not in a:
|
|
if 'value' not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
- raise PrimitiveFinished({'value': bool(a['value'])})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': bool(a['value'])})
|
|
|
|
|
+ yield [("RETURN", [{'value': bool(a['value'])}])]
|
|
|
|
|
|
|
|
def cast_integer(a, **remainder):
|
|
def cast_integer(a, **remainder):
|
|
|
if 'value' not in a:
|
|
if 'value' not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
- raise PrimitiveFinished({'value': int(a['value'])})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': int(a['value'])})
|
|
|
|
|
+ yield [("RETURN", [{'value': int(a['value'])}])]
|
|
|
|
|
|
|
|
def cast_value(a, **remainder):
|
|
def cast_value(a, **remainder):
|
|
|
if 'value' not in a:
|
|
if 'value' not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
if isinstance(a['value'], dict):
|
|
if isinstance(a['value'], dict):
|
|
|
- raise PrimitiveFinished({'value': str(a['value']['value'])})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': str(a['value']['value'])})
|
|
|
|
|
+ yield [("RETURN", [{'value': str(a['value']['value'])}])]
|
|
|
else:
|
|
else:
|
|
|
- raise PrimitiveFinished({'value': json.dumps(a['value'])})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': json.dumps(a['value'])})
|
|
|
|
|
+ yield [("RETURN", [{'value': json.dumps(a['value'])}])]
|
|
|
|
|
|
|
|
def cast_id(a, **remainder):
|
|
def cast_id(a, **remainder):
|
|
|
if "id" not in a:
|
|
if "id" not in a:
|
|
|
#print("MATERIALIZING A cast_id")
|
|
#print("MATERIALIZING A cast_id")
|
|
|
a['id'], = yield [("CNV", [a['value']])]
|
|
a['id'], = yield [("CNV", [a['value']])]
|
|
|
- raise PrimitiveFinished({'value': str(a['id'])})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': str(a['id'])})
|
|
|
|
|
+ yield [("RETURN", [{'value': str(a['id'])}])]
|
|
|
|
|
|
|
|
def dict_add_fast(a, b, c, **remainder):
|
|
def dict_add_fast(a, b, c, **remainder):
|
|
|
# TODO deprecate, as dict_add is now also efficient
|
|
# TODO deprecate, as dict_add is now also efficient
|
|
@@ -223,7 +250,8 @@ def dict_add_fast(a, b, c, **remainder):
|
|
|
c['id'], = yield [("CNV", [c['value']])]
|
|
c['id'], = yield [("CNV", [c['value']])]
|
|
|
|
|
|
|
|
yield [("CD", [a['id'], b['value'], c['id']])]
|
|
yield [("CD", [a['id'], b['value'], c['id']])]
|
|
|
- raise PrimitiveFinished(a)
|
|
|
|
|
|
|
+ #raise PrimitiveFinished(a)
|
|
|
|
|
+ yield [("RETURN", [a])]
|
|
|
|
|
|
|
|
def dict_delete(a, b, **remainder):
|
|
def dict_delete(a, b, **remainder):
|
|
|
if "value" not in b:
|
|
if "value" not in b:
|
|
@@ -237,89 +265,107 @@ def dict_delete(a, b, **remainder):
|
|
|
print("Keys: " + str(keys))
|
|
print("Keys: " + str(keys))
|
|
|
raise Exception()
|
|
raise Exception()
|
|
|
yield [("DE", [edge])]
|
|
yield [("DE", [edge])]
|
|
|
- raise PrimitiveFinished(a)
|
|
|
|
|
|
|
+ #raise PrimitiveFinished(a)
|
|
|
|
|
+ yield [("RETURN", [a])]
|
|
|
|
|
|
|
|
def dict_delete_node(a, b, **remainder):
|
|
def dict_delete_node(a, b, **remainder):
|
|
|
edge, = yield [("RDNE", [a['id'], b['id']])]
|
|
edge, = yield [("RDNE", [a['id'], b['id']])]
|
|
|
if edge is None:
|
|
if edge is None:
|
|
|
print("Failed dict_delete_node!")
|
|
print("Failed dict_delete_node!")
|
|
|
yield [("DE", [edge])]
|
|
yield [("DE", [edge])]
|
|
|
- raise PrimitiveFinished(a)
|
|
|
|
|
|
|
+ #raise PrimitiveFinished(a)
|
|
|
|
|
+ yield [("RETURN", [a])]
|
|
|
|
|
|
|
|
def dict_read(a, b, **remainder):
|
|
def dict_read(a, b, **remainder):
|
|
|
if "value" not in b:
|
|
if "value" not in b:
|
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
|
result, = yield [("RD", [a['id'], b['value']])]
|
|
result, = yield [("RD", [a['id'], b['value']])]
|
|
|
- raise PrimitiveFinished({'id': result})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'id': result})
|
|
|
|
|
+ yield [("RETURN", [{'id': result}])]
|
|
|
|
|
|
|
|
def dict_read_edge(a, b, **remainder):
|
|
def dict_read_edge(a, b, **remainder):
|
|
|
if "value" not in b:
|
|
if "value" not in b:
|
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
|
result, = yield [("RDE", [a['id'], b['value']])]
|
|
result, = yield [("RDE", [a['id'], b['value']])]
|
|
|
- raise PrimitiveFinished({'id': result})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'id': result})
|
|
|
|
|
+ yield [("RETURN", [{'id': result}])]
|
|
|
|
|
|
|
|
def dict_read_node(a, b, **remainder):
|
|
def dict_read_node(a, b, **remainder):
|
|
|
result, = yield [("RDN", [a['id'], b['id']])]
|
|
result, = yield [("RDN", [a['id'], b['id']])]
|
|
|
- raise PrimitiveFinished({'id': result})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'id': result})
|
|
|
|
|
+ yield [("RETURN", [{'id': result}])]
|
|
|
|
|
|
|
|
def dict_in(a, b, **remainder):
|
|
def dict_in(a, b, **remainder):
|
|
|
if "value" not in b:
|
|
if "value" not in b:
|
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
|
value, = yield [("RD", [a['id'], b['value']])]
|
|
value, = yield [("RD", [a['id'], b['value']])]
|
|
|
- raise PrimitiveFinished({'value': value is not None})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': value is not None})
|
|
|
|
|
+ yield [("RETURN", [{'value': value is not None}])]
|
|
|
|
|
|
|
|
def dict_in_node(a, b, **remainder):
|
|
def dict_in_node(a, b, **remainder):
|
|
|
if "id" not in b:
|
|
if "id" not in b:
|
|
|
# Not even allocated the node, so it is certain not to be in the dictionary
|
|
# Not even allocated the node, so it is certain not to be in the dictionary
|
|
|
- raise PrimitiveFinished({'value': False})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': False})
|
|
|
|
|
+ yield [("RETURN", [{'value': False}])]
|
|
|
value, = yield [("RDN", [a['id'], b['id']])]
|
|
value, = yield [("RDN", [a['id'], b['id']])]
|
|
|
- raise PrimitiveFinished({'value': value is not None})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': value is not None})
|
|
|
|
|
+ yield [("RETURN", [{'value': value is not None}])]
|
|
|
|
|
|
|
|
def dict_keys(a, **remainder):
|
|
def dict_keys(a, **remainder):
|
|
|
keys, result = yield [("RDK", [a['id']]), ("CN", [])]
|
|
keys, result = yield [("RDK", [a['id']]), ("CN", [])]
|
|
|
edges = yield [("CE", [result, result]) for _ in keys]
|
|
edges = yield [("CE", [result, result]) for _ in keys]
|
|
|
_ = yield [("CE", [edge, key]) for edge, key in zip(edges, keys)]
|
|
_ = yield [("CE", [edge, key]) for edge, key in zip(edges, keys)]
|
|
|
- raise PrimitiveFinished({'id': result})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'id': result})
|
|
|
|
|
+ yield [("RETURN", [{'id': result}])]
|
|
|
|
|
|
|
|
def is_physical_int(a, **remainder):
|
|
def is_physical_int(a, **remainder):
|
|
|
if "value" not in a:
|
|
if "value" not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
try:
|
|
try:
|
|
|
- raise PrimitiveFinished({'value': isinstance(a['value'], int) or isinstance(a['value'], long)})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': isinstance(a['value'], int) or isinstance(a['value'], long)})
|
|
|
|
|
+ yield [("RETURN", [{'value': isinstance(a['value'], int) or isinstance(a['value'], long)}])]
|
|
|
except NameError:
|
|
except NameError:
|
|
|
- raise PrimitiveFinished({'value': isinstance(a['value'], int)})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': isinstance(a['value'], int)})
|
|
|
|
|
+ yield [("RETURN", [{'value': isinstance(a['value'], int)}])]
|
|
|
|
|
|
|
|
def is_physical_string(a, **remainder):
|
|
def is_physical_string(a, **remainder):
|
|
|
if "value" not in a:
|
|
if "value" not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
try:
|
|
try:
|
|
|
- raise PrimitiveFinished({'value': isinstance(a['value'], str) or isinstance(a['value'], unicode)})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': isinstance(a['value'], str) or isinstance(a['value'], unicode)})
|
|
|
|
|
+ yield [("RETURN", [{'value': isinstance(a['value'], str) or isinstance(a['value'], unicode)}])]
|
|
|
except NameError:
|
|
except NameError:
|
|
|
- raise PrimitiveFinished({'value': isinstance(a['value'], str)})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': isinstance(a['value'], str)})
|
|
|
|
|
+ yield [("RETURN", [{'value': isinstance(a['value'], str)}])]
|
|
|
|
|
|
|
|
def is_physical_float(a, **remainder):
|
|
def is_physical_float(a, **remainder):
|
|
|
if "value" not in a:
|
|
if "value" not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
- raise PrimitiveFinished({'value': isinstance(a['value'], float)})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': isinstance(a['value'], float)})
|
|
|
|
|
+ yield [("RETURN", [{'value': isinstance(a['value'], float)}])]
|
|
|
|
|
|
|
|
def is_physical_boolean(a, **remainder):
|
|
def is_physical_boolean(a, **remainder):
|
|
|
if "value" not in a:
|
|
if "value" not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
- raise PrimitiveFinished({'value': isinstance(a['value'], bool)})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': isinstance(a['value'], bool)})
|
|
|
|
|
+ yield [("RETURN", [{'value': isinstance(a['value'], bool)}])]
|
|
|
|
|
|
|
|
def is_physical_action(a, **remainder):
|
|
def is_physical_action(a, **remainder):
|
|
|
if "value" not in a:
|
|
if "value" not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
- raise PrimitiveFinished({'value': isinstance(a['value'], dict) and a['value']["value"] in ["if", "while", "assign", "call", "break", "continue", "return", "resolve", "access", "constant", "global", "declare"]})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': isinstance(a['value'], dict) and a['value']["value"] in ["if", "while", "assign", "call", "break", "continue", "return", "resolve", "access", "constant", "global", "declare"]})
|
|
|
|
|
+ yield [("RETURN", [{'value': isinstance(a['value'], dict) and a['value']["value"] in ["if", "while", "assign", "call", "break", "continue", "return", "resolve", "access", "constant", "global", "declare"]}])]
|
|
|
|
|
|
|
|
def is_physical_none(a, **remainder):
|
|
def is_physical_none(a, **remainder):
|
|
|
if "value" not in a:
|
|
if "value" not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
- raise PrimitiveFinished({'value': isinstance(a['value'], dict) and a['value']["value"] == "none"})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': isinstance(a['value'], dict) and a['value']["value"] == "none"})
|
|
|
|
|
+ yield [("RETURN", [{'value': isinstance(a['value'], dict) and a['value']["value"] == "none"}])]
|
|
|
|
|
|
|
|
def create_node(**remainder):
|
|
def create_node(**remainder):
|
|
|
result, = yield [("CN", [])]
|
|
result, = yield [("CN", [])]
|
|
|
- raise PrimitiveFinished({'id': result})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'id': result})
|
|
|
|
|
+ yield [("RETURN", [{'id': result}])]
|
|
|
|
|
|
|
|
def create_edge(a, b, **remainder):
|
|
def create_edge(a, b, **remainder):
|
|
|
if "id" not in a:
|
|
if "id" not in a:
|
|
@@ -329,18 +375,21 @@ def create_edge(a, b, **remainder):
|
|
|
#print("MATERIALIZING B create_edge")
|
|
#print("MATERIALIZING B create_edge")
|
|
|
b['id'], = yield [("CNV", [b['value']])]
|
|
b['id'], = yield [("CNV", [b['value']])]
|
|
|
result, = yield [("CE", [a['id'], b['id']])]
|
|
result, = yield [("CE", [a['id'], b['id']])]
|
|
|
- raise PrimitiveFinished({'id': result})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'id': result})
|
|
|
|
|
+ yield [("RETURN", [{'id': result}])]
|
|
|
|
|
|
|
|
def create_value(a, **remainder):
|
|
def create_value(a, **remainder):
|
|
|
if "value" not in a:
|
|
if "value" not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
- raise PrimitiveFinished({'value': a['value']})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': a['value']})
|
|
|
|
|
+ yield [("RETURN", [{'value': a['value']}])]
|
|
|
|
|
|
|
|
def read_nr_out(a, **remainder):
|
|
def read_nr_out(a, **remainder):
|
|
|
if "id" not in a:
|
|
if "id" not in a:
|
|
|
a['id'], = yield [("CNV", [a['value']])]
|
|
a['id'], = yield [("CNV", [a['value']])]
|
|
|
outgoing, = yield [("RO", [a['id']])]
|
|
outgoing, = yield [("RO", [a['id']])]
|
|
|
- raise PrimitiveFinished({'value': len(outgoing)})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': len(outgoing)})
|
|
|
|
|
+ yield [("RETURN", [{'value': len(outgoing)}])]
|
|
|
|
|
|
|
|
def read_out(a, b, root, **remainder):
|
|
def read_out(a, b, root, **remainder):
|
|
|
if "id" not in a:
|
|
if "id" not in a:
|
|
@@ -349,13 +398,15 @@ def read_out(a, b, root, **remainder):
|
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
|
|
|
|
|
|
outgoing, = yield [("RO", [a['id']])]
|
|
outgoing, = yield [("RO", [a['id']])]
|
|
|
- raise PrimitiveFinished({'id': sorted(outgoing)[b['value']] if len(outgoing) > b['value'] else root})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'id': sorted(outgoing)[b['value']] if len(outgoing) > b['value'] else root})
|
|
|
|
|
+ yield [("RETURN", [{'id': sorted(outgoing)[b['value']] if len(outgoing) > b['value'] else root}])]
|
|
|
|
|
|
|
|
def read_nr_in(a, **remainder):
|
|
def read_nr_in(a, **remainder):
|
|
|
if "id" not in a:
|
|
if "id" not in a:
|
|
|
a['id'], = yield [("CNV", [a['value']])]
|
|
a['id'], = yield [("CNV", [a['value']])]
|
|
|
incoming, = yield [("RI", [a['id']])]
|
|
incoming, = yield [("RI", [a['id']])]
|
|
|
- raise PrimitiveFinished({'value': len(incoming)})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': len(incoming)})
|
|
|
|
|
+ yield [("RETURN", [{'value': len(incoming)}])]
|
|
|
|
|
|
|
|
def read_in(a, b, root, **remainder):
|
|
def read_in(a, b, root, **remainder):
|
|
|
if "id" not in a:
|
|
if "id" not in a:
|
|
@@ -364,50 +415,62 @@ def read_in(a, b, root, **remainder):
|
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
b['value'], = yield [("RV", [b['id']])]
|
|
|
|
|
|
|
|
incoming, = yield [("RI", [a['id']])]
|
|
incoming, = yield [("RI", [a['id']])]
|
|
|
- raise PrimitiveFinished({'id': sorted(incoming)[b['value']] if len(incoming) > b['value'] else root})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'id': sorted(incoming)[b['value']] if len(incoming) > b['value'] else root})
|
|
|
|
|
+ yield [("RETURN", [{'id': sorted(outgoing)[b['value']] if len(incoming) > b['value'] else root}])]
|
|
|
|
|
|
|
|
def read_edge_src(a, **remainder):
|
|
def read_edge_src(a, **remainder):
|
|
|
result, = yield [("RE", [a['id']])]
|
|
result, = yield [("RE", [a['id']])]
|
|
|
- raise PrimitiveFinished({'id': result[0]})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'id': result[0]})
|
|
|
|
|
+ yield [("RETURN", [{'id': result[0]}])]
|
|
|
|
|
|
|
|
def read_edge_dst(a, **remainder):
|
|
def read_edge_dst(a, **remainder):
|
|
|
result, = yield [("RE", [a['id']])]
|
|
result, = yield [("RE", [a['id']])]
|
|
|
- raise PrimitiveFinished({'id': result[1]})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'id': result[1]})
|
|
|
|
|
+ yield [("RETURN", [{'id': result[1]}])]
|
|
|
|
|
|
|
|
def delete_element(a, **remainder):
|
|
def delete_element(a, **remainder):
|
|
|
if "id" not in a:
|
|
if "id" not in a:
|
|
|
- raise PrimitiveFinished({'value': False})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': False})
|
|
|
|
|
+ yield [("RETURN", [{'value': False}])]
|
|
|
|
|
|
|
|
edge, = yield [("RE", [a['id']])]
|
|
edge, = yield [("RE", [a['id']])]
|
|
|
if edge[0] is None:
|
|
if edge[0] is None:
|
|
|
# Not an edge:
|
|
# Not an edge:
|
|
|
yield [("DN", [a['id']])]
|
|
yield [("DN", [a['id']])]
|
|
|
- raise PrimitiveFinished({'value': False})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': False})
|
|
|
|
|
+ yield [("RETURN", [{'value': False}])]
|
|
|
else:
|
|
else:
|
|
|
yield [("DE", [a['id']])]
|
|
yield [("DE", [a['id']])]
|
|
|
- raise PrimitiveFinished({'value': True})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': True})
|
|
|
|
|
+ yield [("RETURN", [{'value': True}])]
|
|
|
|
|
|
|
|
def read_root(root, **remainder):
|
|
def read_root(root, **remainder):
|
|
|
- raise PrimitiveFinished({'id': root})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'id': root})
|
|
|
|
|
+ yield [("RETURN", [{'id': root}])]
|
|
|
|
|
|
|
|
def is_edge(a, **remainder):
|
|
def is_edge(a, **remainder):
|
|
|
if "id" not in a:
|
|
if "id" not in a:
|
|
|
- raise PrimitiveFinished({'value': False})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': False})
|
|
|
|
|
+ yield [("RETURN", [{'value': False}])]
|
|
|
|
|
|
|
|
edge, = yield [("RE", [a['id']])]
|
|
edge, = yield [("RE", [a['id']])]
|
|
|
- raise PrimitiveFinished({'value': edge[0] is not None})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': edge[0] is not None})
|
|
|
|
|
+ yield [("RETURN", [{'value': edge[0] is not None}])]
|
|
|
|
|
|
|
|
def log(a, **remainder):
|
|
def log(a, **remainder):
|
|
|
if "value" not in a:
|
|
if "value" not in a:
|
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
a['value'], = yield [("RV", [a['id']])]
|
|
|
print("== LOG == " + str(a['value']))
|
|
print("== LOG == " + str(a['value']))
|
|
|
- raise PrimitiveFinished(a)
|
|
|
|
|
|
|
+ #raise PrimitiveFinished(a)
|
|
|
|
|
+ yield [("RETURN", [a])]
|
|
|
|
|
|
|
|
def read_taskroot(task_root, **remainder):
|
|
def read_taskroot(task_root, **remainder):
|
|
|
- raise PrimitiveFinished({'id': task_root})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'id': task_root})
|
|
|
|
|
+ yield [("RETURN", [{'id': task_root}])]
|
|
|
|
|
|
|
|
def time(**remainder):
|
|
def time(**remainder):
|
|
|
- raise PrimitiveFinished({'value': python_time.time()})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': python_time.time()})
|
|
|
|
|
+ yield [("RETURN", [{'value': python_time.time()}])]
|
|
|
|
|
|
|
|
def hash(a, **remainder):
|
|
def hash(a, **remainder):
|
|
|
if "value" not in a:
|
|
if "value" not in a:
|
|
@@ -418,7 +481,8 @@ def hash(a, **remainder):
|
|
|
value = hashlib.sha512(a['value']).hexdigest()
|
|
value = hashlib.sha512(a['value']).hexdigest()
|
|
|
except TypeError:
|
|
except TypeError:
|
|
|
value = hashlib.sha512(a['value'].encode()).hexdigest()
|
|
value = hashlib.sha512(a['value'].encode()).hexdigest()
|
|
|
- raise PrimitiveFinished({'value': value})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': value})
|
|
|
|
|
+ yield [("RETURN", [{'value': value}])]
|
|
|
|
|
|
|
|
def __sleep(a, b, **remainder):
|
|
def __sleep(a, b, **remainder):
|
|
|
if "value" not in a:
|
|
if "value" not in a:
|
|
@@ -428,10 +492,13 @@ def __sleep(a, b, **remainder):
|
|
|
timeout = a['value']
|
|
timeout = a['value']
|
|
|
interruptable = b['value']
|
|
interruptable = b['value']
|
|
|
yield [("SLEEP", [timeout, interruptable])]
|
|
yield [("SLEEP", [timeout, interruptable])]
|
|
|
- raise PrimitiveFinished(a)
|
|
|
|
|
|
|
+ #raise PrimitiveFinished(a)
|
|
|
|
|
+ yield [("RETURN", [a])]
|
|
|
|
|
|
|
|
def is_error(a, **remainder):
|
|
def is_error(a, **remainder):
|
|
|
if a['id'] is None:
|
|
if a['id'] is None:
|
|
|
- raise PrimitiveFinished({'value': True})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': True})
|
|
|
|
|
+ yield [("RETURN", [{'value': True}])]
|
|
|
else:
|
|
else:
|
|
|
- raise PrimitiveFinished({'value': False})
|
|
|
|
|
|
|
+ #raise PrimitiveFinished({'value': False})
|
|
|
|
|
+ yield [("RETURN", [{'value': False}])]
|