Clean up ppp_stdlib.py
This commit is contained in:
parent
04fff7514e
commit
9e68c529bf
@ -1,5 +1,3 @@
|
||||
# This file exists because I wanted to keep ppp_stdlib.py and ppp_interpreter.py seperate but they both rely on this one class.
|
||||
|
||||
from abc import ABC, abstractmethod
|
||||
from dataclasses import dataclass
|
||||
from typing import Callable, Dict, List as List_, Tuple as Tuple_
|
||||
|
@ -42,7 +42,13 @@ def len_impl(list_: Object) -> Object:
|
||||
assert False
|
||||
|
||||
# TODO: Use polymorphism to make this work for both list<T> and str
|
||||
# Len = PythonFunction("len", [('list', UnionType([ListType(VariableType("")), StrType]))], IntType, len_impl)
|
||||
Len = PythonFunction("len", [('list', ListType(VariableType("")))], IntType, len_impl)
|
||||
|
||||
def str_len_impl(str_: Object) -> Object:
|
||||
assert isinstance(str_, Str)
|
||||
return Int(len(str_.str))
|
||||
|
||||
StrLen = PythonFunction("strlen", [('string', StrType)], IntType, str_len_impl)
|
||||
|
||||
def str_to_int_impl(str_: Object) -> Object:
|
||||
assert isinstance(str_, Str)
|
||||
@ -100,7 +106,8 @@ variables: Dict[str, Object] = {
|
||||
'void': VoidTypeObj,
|
||||
'debug_print': DebugPrint,
|
||||
'read': Read,
|
||||
# 'len': Len,
|
||||
'len': Len,
|
||||
'str_len': StrLen,
|
||||
'str_to_int': StrToInt,
|
||||
'none': NoneObj,
|
||||
'range': Range,
|
||||
|
Loading…
Reference in New Issue
Block a user