diff --git a/scripts/string.cpc b/scripts/string.cpc index 7997202..b3e4af4 100644 --- a/scripts/string.cpc +++ b/scripts/string.cpc @@ -194,3 +194,7 @@ FUNCTION ORD(s : CHAR) RETURNS INTEGER r <- PYTHON("_result=ord(s)", s) RETURN r ENDFUNCTION + +FUNCTION SUBSTRING(s : STRING, start : INTEGER, size : INTEGER) RETURNS STRING + RETURN MID(s, start, size) +ENDFUNCTION diff --git a/src/AST/insert_func.py b/src/AST/insert_func.py index c76301d..d8db84e 100644 --- a/src/AST/insert_func.py +++ b/src/AST/insert_func.py @@ -231,6 +231,8 @@ def exe(self): c = parameters[0] if c[1] == 'CHAR': return (c[0].lower(), 'CHAR') + elif c[1] == 'STRING': + return (c[0].lower(), 'STRING') else: add_error_message(f'Function `{self.type}` expect `CHAR`, but found `{c[1]}`', self) @@ -252,6 +254,8 @@ def exe(self): c = parameters[0] if c[1] == 'CHAR': return (c[0].upper(), 'CHAR') + elif c[1] == 'STRING': + return (c[0].upper(), 'STRING') else: add_error_message(f'Function `{self.type}` expect `CHAR`, but found `{c[1]}`', self)