aboutsummaryrefslogtreecommitdiff
path: root/structs.py
diff options
context:
space:
mode:
Diffstat (limited to 'structs.py')
-rw-r--r--structs.py108
1 files changed, 0 insertions, 108 deletions
diff --git a/structs.py b/structs.py
deleted file mode 100644
index b5ea24a..0000000
--- a/structs.py
+++ /dev/null
@@ -1,108 +0,0 @@
-from dataclasses import dataclass
-from enum import Enum, auto
-from typing import Any
-from typeclass import TypeEnum
-
-# tokens and types
-# NOTE: this can probably be simplified
-class TokenType(Enum):
-
- OPEN_PAREN = auto()
- CLOSE_PAREN = auto()
-
- EOF = auto()
-
- # literals
- INT = auto()
- FLOAT = auto()
- STRING = auto()
- TRUE = auto()
- FALSE = auto()
-
- # keywords
- IF = auto()
- FOR_COUNT = auto()
- DEF = auto()
- LAMBDA = auto()
- FUNC = auto()
-
- # symbols
- SYMBOL = auto()
-
- # types
- INT_TYPE = auto()
- FLOAT_TYPE = auto()
- NUMBER_TYPE = auto()
- STRING_TYPE = auto()
- ANY_TYPE = auto()
- LIST_TYPE = auto()
- LITERAL_TYPE = auto()
- BOOL_TYPE = auto()
-
- MANY = auto()
-
-@dataclass
-class Token:
- type_: TokenType
- text: str
- value: Any
- line: int
-
- def __str__(self):
- return f"{self.type_.name} {self.text} {self.line}"
-
-class Literal:
- def __init__(self, value, type_=None):
- self.value = value
- if type_ is None:
- self.type_ = TypeEnum.ANY
- else:
- self.type_ = type_
- def __str__(self):
- return f"{self.value}:literal"
-
-class Int(Literal):
- def __init__(self, value):
- super().__init__(value, TypeEnum.INT)
- def __str__(self):
- return f"{self.value}"
-
-class Float(Literal):
- def __init__(self, value):
- super().__init__(value, TypeEnum.FLOAT)
- def __str__(self):
- return f"{self.value}"
-
-class Bool(Literal):
- def __init__(self, value):
- super().__init__(value, TypeEnum.BOOL)
- def __str__(self):
- return f"#{str(self.value).lower()}"
-
-class String(Literal):
- def __init__(self, value):
- super().__init__(value, TypeEnum.STRING)
- def __str__(self):
- return f'"{repr(self.value)[1:-1]}"'
-
-class Type:
- def __init__(self, name):
- self.name = name
- def __str__(self):
- return self.name
-
-class Symbol:
- def __init__(self, name, line):
- self.name = name
- self.line = line
- def __str__(self):
- return f"'{self.name}"
-
-class List:
- def __init__(self, args, data=False):
- self.args = args
- self.data = data
- self.type_ = TypeEnum.LIST
- def __str__(self):
- return "(" + " ".join(f"{arg}" for arg in self.args) + ")"
-