|
@@ -59,10 +59,12 @@ def integer_division(a, b, **remainder):
|
|
|
result, = yield [("CNV", [int(a_value) / b_value])]
|
|
|
raise PrimitiveFinished(result)
|
|
|
|
|
|
+"""
|
|
|
def integer_gt(a, b, **remainder):
|
|
|
a_value, b_value = yield [("RV", [a]), ("RV", [b])]
|
|
|
result, = yield [("CNV", [a_value > b_value])]
|
|
|
raise PrimitiveFinished(result)
|
|
|
+"""
|
|
|
|
|
|
def integer_lt(a, b, **remainder):
|
|
|
# TODO make non-primitive, though compiled
|
|
@@ -70,11 +72,13 @@ def integer_lt(a, b, **remainder):
|
|
|
result, = yield [("CNV", [a_value < b_value])]
|
|
|
raise PrimitiveFinished(result)
|
|
|
|
|
|
+"""
|
|
|
def integer_neg(a, **remainder):
|
|
|
# TODO make non-primitive, though compiled
|
|
|
a_value, = yield [("RV", [a])]
|
|
|
result, = yield [("CNV", [-a_value])]
|
|
|
raise PrimitiveFinished(result)
|
|
|
+"""
|
|
|
|
|
|
def bool_and(a, b, **remainder):
|
|
|
a_value, b_value = yield [("RV", [a]), ("RV", [b])]
|
|
@@ -111,10 +115,12 @@ def float_division(a, b, **remainder):
|
|
|
result, = yield [("CNV", [float(a_value) / float(b_value)])]
|
|
|
raise PrimitiveFinished(result)
|
|
|
|
|
|
+"""
|
|
|
def float_gt(a, b, **remainder):
|
|
|
a_value, b_value = yield [("RV", [a]), ("RV", [b])]
|
|
|
result, = yield [("CNV", [a_value > b_value])]
|
|
|
raise PrimitiveFinished(result)
|
|
|
+"""
|
|
|
|
|
|
def float_lt(a, b, **remainder):
|
|
|
# TODO make non-primitive, though compiled
|
|
@@ -122,11 +128,13 @@ def float_lt(a, b, **remainder):
|
|
|
result, = yield [("CNV", [a_value < b_value])]
|
|
|
raise PrimitiveFinished(result)
|
|
|
|
|
|
+"""
|
|
|
def float_neg(a, **remainder):
|
|
|
# TODO make non-primitive, though compiled
|
|
|
a_value, = yield [("RV", [a])]
|
|
|
result, = yield [("CNV", [-a_value])]
|
|
|
raise PrimitiveFinished(result)
|
|
|
+"""
|
|
|
|
|
|
def string_join(a, b, **remainder):
|
|
|
a_value, b_value = yield [("RV", [a]), ("RV", [b])]
|
|
@@ -157,20 +165,24 @@ def value_eq(a, b, **remainder):
|
|
|
result, = yield [("CNV", [a_value == b_value])]
|
|
|
raise PrimitiveFinished(result)
|
|
|
|
|
|
+"""
|
|
|
def value_neq(a, b, **remainder):
|
|
|
# TODO make non-primitive, though compiled
|
|
|
a_value, b_value = yield [("RV", [a]), ("RV", [b])]
|
|
|
result, = yield [("CNV", [a_value != b_value])]
|
|
|
raise PrimitiveFinished(result)
|
|
|
+"""
|
|
|
|
|
|
def element_eq(a, b, **remainder):
|
|
|
result, = yield [("CNV", [a == b])]
|
|
|
raise PrimitiveFinished(result)
|
|
|
|
|
|
+"""
|
|
|
def element_neq(a, b, **remainder):
|
|
|
# TODO make non-primitive, though compiled
|
|
|
result, = yield [("CNV", [a != b])]
|
|
|
raise PrimitiveFinished(result)
|
|
|
+"""
|
|
|
|
|
|
def cast_a2s(a, **remainder):
|
|
|
a_value, = yield [("RV", [a])]
|
|
@@ -257,11 +269,13 @@ def cast_id2s(a, **remainder):
|
|
|
result, = yield [("CNV", ["%s" % (a)])]
|
|
|
raise PrimitiveFinished(result)
|
|
|
|
|
|
+"""
|
|
|
def list_append(a, b, **remainder):
|
|
|
# TODO make non-primitive, though compiled
|
|
|
a_outgoing, = yield [("RO", [a])]
|
|
|
_ = yield [("CD", [a, len(a_outgoing), b])]
|
|
|
raise PrimitiveFinished(a)
|
|
|
+"""
|
|
|
|
|
|
def list_insert(a, b, c, **remainder):
|
|
|
# TODO make non-primitive, though compiled
|
|
@@ -286,6 +300,7 @@ def list_delete(a, b, **remainder):
|
|
|
[("DE", [i]) for i in edges]
|
|
|
raise PrimitiveFinished(a)
|
|
|
|
|
|
+"""
|
|
|
def list_read(a, b, **remainder):
|
|
|
# TODO same as dictionary read
|
|
|
b_value, = yield [("RV", [b])]
|
|
@@ -293,17 +308,22 @@ def list_read(a, b, **remainder):
|
|
|
if result is None:
|
|
|
raise Exception("List read out of bounds: %s" % b_value)
|
|
|
raise PrimitiveFinished(result)
|
|
|
+"""
|
|
|
|
|
|
+"""
|
|
|
def list_len(a, **remainder):
|
|
|
# TODO same as read_nr_out
|
|
|
outgoings, = yield [("RO", [a])]
|
|
|
result, = yield [("CNV", [len(outgoings)])]
|
|
|
raise PrimitiveFinished(result)
|
|
|
+"""
|
|
|
|
|
|
+"""
|
|
|
def dict_add(a, b, c, **remainder):
|
|
|
new_edge, = yield [("CE", [a, c])]
|
|
|
yield [("CE", [new_edge, b])]
|
|
|
raise PrimitiveFinished(a)
|
|
|
+"""
|
|
|
|
|
|
def dict_add_fast(a, b, c, **remainder):
|
|
|
# TODO deprecate, as dict_add is now also efficient
|
|
@@ -355,31 +375,19 @@ def dict_in_node(a, b, **remainder):
|
|
|
result, = yield [("CNV", [value is not None])]
|
|
|
raise PrimitiveFinished(result)
|
|
|
|
|
|
+"""
|
|
|
def dict_len(a, **remainder):
|
|
|
# TODO same as read_nr_out
|
|
|
outgoings, = yield [("RO", [a])]
|
|
|
result, = yield [("CNV", [len(outgoings)])]
|
|
|
raise PrimitiveFinished(result)
|
|
|
+"""
|
|
|
|
|
|
def dict_keys(a, **remainder):
|
|
|
keys, result = yield [("RDK", [a]), ("CN", [])]
|
|
|
yield [("CE", [result, v]) for v in keys]
|
|
|
raise PrimitiveFinished(result)
|
|
|
|
|
|
-def dict_reverse(a, b, **remainder):
|
|
|
- # TODO remove as unused
|
|
|
- edges, = yield [("RO", [a])]
|
|
|
- expanded_edges, = yield [("RE", [i]) for i in edges]
|
|
|
- for i, edge in enumerate(expanded_edges):
|
|
|
- if b == edge[1]:
|
|
|
- # Found our edge: edges[i]
|
|
|
- outgoing, = yield [("RO", [edges[i]])]
|
|
|
- result, = yield [("RE", [outgoing[0]])]
|
|
|
- raise PrimitiveFinished(result[1])
|
|
|
-
|
|
|
- result, = yield [("CNV", ["(unknown: %s)" % b])]
|
|
|
- raise PrimitiveFinished(result)
|
|
|
-
|
|
|
def is_physical_int(a, **remainder):
|
|
|
t, = yield [("RV", [a])]
|
|
|
result, = yield [("CNV", [isinstance(t, int) or isinstance(t, long)])]
|
|
@@ -459,6 +467,7 @@ def delete_element(a, **remainder):
|
|
|
def read_root(root, **remainder):
|
|
|
raise PrimitiveFinished(root)
|
|
|
|
|
|
+"""
|
|
|
def set_add(a, b, **remainder):
|
|
|
# TODO make non-primitive, though compiled
|
|
|
|
|
@@ -479,7 +488,9 @@ def set_add(a, b, **remainder):
|
|
|
else:
|
|
|
yield [("CE", [a, b])]
|
|
|
raise PrimitiveFinished(a)
|
|
|
+"""
|
|
|
|
|
|
+"""
|
|
|
def set_pop(a, **remainder):
|
|
|
# TODO make non-primitive, though compiled
|
|
|
outgoing, = yield [("RO", [a])]
|
|
@@ -489,6 +500,7 @@ def set_pop(a, **remainder):
|
|
|
else:
|
|
|
print("Pop from empty set!")
|
|
|
raise PrimitiveFinished(remainder["root"])
|
|
|
+"""
|
|
|
|
|
|
def set_remove(a, b, **remainder):
|
|
|
outgoing, b_value = yield [("RO", [a]), ("RV", [b])]
|