Explorar o código

made list of operations to un-primitive

Yentl Van Tendeloo %!s(int64=9) %!d(string=hai) anos
pai
achega
1eefba361f
Modificáronse 3 ficheiros con 9 adicións e 14 borrados
  1. 0 1
      bootstrap/bootstrap.py
  2. 9 7
      bootstrap/primitives.alc
  3. 0 6
      kernel/modelverse_kernel/primitives.py

+ 0 - 1
bootstrap/bootstrap.py

@@ -40,7 +40,6 @@ def bootstrap():
                     "string_substr": ["String", "String", "Integer", "Integer"],
                     "string_len": ["Integer", "String"],
                     "string_split": ["Element", "String", "String"],
-                    "string_startswith": ["Boolean", "String", "String"],
                     "value_eq":  ["Boolean", "Element", "Element"],
                     "value_neq": ["Boolean", "Element", "Element"],
                     "cast_i2f": ["Float", "Integer"],

+ 9 - 7
bootstrap/primitives.alc

@@ -46,18 +46,14 @@ Float function float_subtraction(a: Float, b: Float) = ?primitives/float_subtrac
 Float function float_multiplication(a: Float, b: Float) = ?primitives/float_multiplication
 Float function float_division(a: Float, b: Float) = ?primitives/float_division
 Boolean function float_gt(a: Float, b: Float) = ?primitives/float_gt
-Boolean function float_gte(a: Float, b: Float) = ?primitives/float_gte
 Boolean function float_lt(a: Float, b: Float) = ?primitives/float_lt
-Boolean function float_lte(a: Float, b: Float) = ?primitives/float_lte
 Boolean function float_neg(a: Float) = ?primitives/float_neg
 Integer function integer_addition(a: Integer, b: Integer) = ?primitives/integer_addition
 Integer function integer_subtraction(a: Integer, b: Integer) = ?primitives/integer_subtraction
 Integer function integer_multiplication(a: Integer, b: Integer) = ?primitives/integer_multiplication
 Integer function integer_division(a: Integer, b: Integer) = ?primitives/integer_division
 Boolean function integer_gt(a: Integer, b: Integer) = ?primitives/integer_gt
-Boolean function integer_gte(a: Integer, b: Integer) = ?primitives/integer_gte
 Boolean function integer_lt(a: Integer, b: Integer) = ?primitives/integer_lt
-Boolean function integer_lte(a: Integer, b: Integer) = ?primitives/integer_lte
 Boolean function integer_neg(a: Integer) = ?primitives/integer_neg
 Element function list_read(a: Element, b: Integer) = ?primitives/list_read
 Element function list_append(a: Element, b: Element) = ?primitives/list_append
@@ -72,9 +68,7 @@ Element function set_remove_node(a: Element, b: Element) = ?primitives/set_remov
 Element function set_in_node(a: Element, b: Element) = ?primitives/set_in_node
 String function string_join(a: String, b: String) = ?primitives/string_join
 String function string_get(a: String, b: Integer) = ?primitives/string_get
-String function string_substr(a: String, b: Integer, c: Integer) = ?primitives/string_substr
 Integer function string_len(a: String) = ?primitives/string_len
-Element function string_split(a: String, b: String) = ?primitives/string_split
 Element function deserialize(a: String) = ?primitives/deserialize
 Element function log(a: String) = ?primitives/log
 Element function read_root() = ?primitives/read_root
@@ -83,7 +77,6 @@ Boolean function is_physical_float(a: Element) = ?primitives/is_physical_float
 Boolean function is_physical_string(a: Element) = ?primitives/is_physical_string
 Boolean function is_physical_boolean(a: Element) = ?primitives/is_physical_boolean
 Boolean function is_physical_action(a: Element) = ?primitives/is_physical_action
-Boolean function has_value(a: Element) = ?primitives/has_value
 
 Element function exec(first_instr : Element):
 	// This does very ugly things, so beware!
@@ -122,3 +115,12 @@ Boolean function string_startswith(a: String, b: String):
 	 	i = i + 1
 	
 	return True
+
+// TODO: implement these explicitly and split off this code from the primitives completely
+Boolean function has_value(a: Element) = ?primitives/has_value
+Boolean function float_gte(a: Float, b: Float) = ?primitives/float_gte
+Boolean function float_lte(a: Float, b: Float) = ?primitives/float_lte
+Boolean function integer_lte(a: Integer, b: Integer) = ?primitives/integer_lte
+Boolean function integer_gte(a: Integer, b: Integer) = ?primitives/integer_gte
+String function string_substr(a: String, b: Integer, c: Integer) = ?primitives/string_substr
+Element function string_split(a: String, b: String) = ?primitives/string_split

+ 0 - 6
kernel/modelverse_kernel/primitives.py

@@ -136,12 +136,6 @@ def string_len(a, **remainder):
     result = yield [("CNV", [len(a_value)])]
     raise PrimitiveFinished(result)
 
-def string_startswith(a, b, **remainder):
-    #TODO implement in AL
-    a_value, b_value = yield [("RV", [a]), ("RV", [b])]
-    result = yield [("CNV", [a_value.startswith(b_value)])]
-    raise PrimitiveFinished(result)
-
 def value_eq(a, b, **remainder):
     a_value, b_value =  yield [("RV", [a]), ("RV", [b])]
     result = yield [("CNV", [a_value == b_value])]