1
This commit is contained in:
Christoph
2021-09-02 18:26:59 +02:00
parent cf92bc7804
commit 81e2dd0745
4 changed files with 14 additions and 8 deletions

View File

@ -69,6 +69,8 @@ object strtrait:
def add(other): def add(other):
self $str_add(other) self $str_add(other)
def substr(s, e):
self $str_subs(s, e)
def rev: def rev:
self $str_rev self $str_rev
def len: def len:

View File

@ -104,7 +104,7 @@ class PrimitiveObject(AbstractObject):
class W_Integer(PrimitiveObject): class W_Integer(PrimitiveObject):
def __init__(self, value, space=None): def __init__(self, value, space=None):
super().__init__(int(value), "inttrait", space) super().__init__(int(value), "inttrait", space=space)
class W_Boolean(PrimitiveObject): class W_Boolean(PrimitiveObject):
@ -119,12 +119,12 @@ class W_Boolean(PrimitiveObject):
class W_String(PrimitiveObject): class W_String(PrimitiveObject):
def __init__(self, value, space=None): def __init__(self, value, space=None):
super().__init__(str(value), "strtrait", space) super().__init__(str(value), "strtrait", space=space)
class W_Double(PrimitiveObject): class W_Double(PrimitiveObject):
def __init__(self, value, space=None): def __init__(self, value, space=None):
super().__init__(float(value), "doubletrait", space) super().__init__(float(value), "doubletrait", space=space)
# ------------- # -------------

View File

@ -173,6 +173,11 @@ def simple_str_add(a, b):
return a + b return a + b
@primitive("str_subs", [str, int, int], str)
def simple_str_subs(a, s, e):
return a[s:e]
@primitive("str_rev", [str], str) @primitive("str_rev", [str], str)
def simple_str_eq(a): def simple_str_eq(a):
return a[::-1] return a[::-1]

View File

@ -173,10 +173,10 @@ Plus = r'\+'
Minus = r'-' Minus = r'-'
Multiply = r'\*' Multiply = r'\*'
Divide = r'/' Divide = r'/'
Increment = r'\+\+'
Decrement = r'--'
Modulo = r'%' Modulo = r'%'
Increment = r'\+\+'
Decrement = r'--'
PlusInplace = r'\+=' PlusInplace = r'\+='
MinusInplace = r'-=' MinusInplace = r'-='
MultiplyInplace = r'\*=' MultiplyInplace = r'\*='
@ -206,15 +206,14 @@ Object = r'object'
tokens = ["If", "Else", "While", "Def", "Object", "Ignore", tokens = ["If", "Else", "While", "Def", "Object", "Ignore",
"String", "Boolean", "Double", "String", "Boolean", "Double",
"Number", # after Double "Number",
"GC", "GC",
"NewlineAndWhitespace", "OpenBracket", "CloseBracket", "Comma", "Colon", "NewlineAndWhitespace", "OpenBracket", "CloseBracket", "Comma", "Colon",
"And", "Or", "LessEqual", "Less", "GreaterEqual", "Greater", "Equal", "NotEqual", "And", "Or", "LessEqual", "Less", "GreaterEqual", "Greater", "Equal", "NotEqual",
"Decrement", "PlusInplace", "MinusInplace", "MultiplyInplace", "DivideInplace", "Decrement", "PlusInplace", "MinusInplace", "MultiplyInplace", "DivideInplace",
"Increment", "Plus", "Minus", "Multiply", "Divide", "Modulo", "Increment", "Plus", "Minus", "Multiply", "Divide", "Modulo",
"Assign", "Not", "Assign", "Not",
"Name", "PrimitiveName", "Name", "PrimitiveName"]
]
def make_lexer(): def make_lexer():