Initial commit - fix problems & refactor code
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
from __future__ import annotations
|
||||
from enum import Enum
|
||||
from typing import Any, TYPE_CHECKING
|
||||
|
||||
# from core.environment import Environment
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from core.environment import Environment
|
||||
|
||||
class Lambda:
|
||||
"""Lambda function with arguments, body, and closure environment"""
|
||||
|
||||
args: Any
|
||||
body: Any
|
||||
env: Environment
|
||||
|
||||
def __init__(self, args: Any, body: Any, env: Environment) -> None:
|
||||
self.args: Any = args
|
||||
self.body: Any = body
|
||||
self.env: Environment = env
|
||||
|
||||
class Dambda:
|
||||
"""Dambda function"""
|
||||
|
||||
args: Any
|
||||
body: Any
|
||||
|
||||
def __init__(self, args: Any, body: Any) -> None:
|
||||
self.args: Any = args
|
||||
self.body: Any = body
|
||||
|
||||
class Macro:
|
||||
"""Macro definition"""
|
||||
|
||||
args: Any
|
||||
body: Any
|
||||
|
||||
def __init__(self, args: Any, body: Any) -> None:
|
||||
self.args: Any = args
|
||||
self.body: Any = body
|
||||
|
||||
class Pure():
|
||||
"""Pure definition"""
|
||||
|
||||
args: Any
|
||||
body: Any
|
||||
|
||||
def __init__(self, args: Any, body: Any) -> None:
|
||||
self.args: Any = args
|
||||
self.body: Any = body
|
||||
|
||||
class BaseToken(Enum):
|
||||
"""Base class for enumerations"""
|
||||
|
||||
class SpecialForm(BaseToken):
|
||||
EVAL = "eval"
|
||||
IF = "if"
|
||||
DO = "do"
|
||||
PRINT = "print"
|
||||
READ = "read"
|
||||
SYMBOL = "symbol"
|
||||
DEF = "def"
|
||||
SET = "set!"
|
||||
FLUSH = "flush"
|
||||
PURE = "pure"
|
||||
LAMBDA = "lambda"
|
||||
DAMBDA = "dambda"
|
||||
MACRO = "macro"
|
||||
RAISE = "raise"
|
||||
QUOTE = "quote"
|
||||
CONS = "cons"
|
||||
CAR = "car"
|
||||
CDR = "cdr"
|
||||
TYPEOF = "typeof"
|
||||
|
||||
class BinaryOperator(BaseToken):
|
||||
ADD = "_+_"
|
||||
SUB = "_-_"
|
||||
MUL = "_*_"
|
||||
DIV = "_/_"
|
||||
MOD = "_%_"
|
||||
STRCONCAT = "_++_"
|
||||
|
||||
class BinaryPredicate(BaseToken):
|
||||
LT = "_<_"
|
||||
GT = "_>_"
|
||||
EQ = "_=_"
|
||||
Reference in New Issue
Block a user