Abstract syntax tree
This commit is contained in:
45
token.py
45
token.py
@@ -7,31 +7,38 @@ class TokenType(Enum):
|
||||
CHAR = 4
|
||||
BOOLEAN = 5
|
||||
|
||||
FUNCTION = 6
|
||||
VARIABLE = 7
|
||||
IF = 8
|
||||
ELSE = 9
|
||||
WHILE = 10
|
||||
LET = 11
|
||||
END = 12
|
||||
VARIABLE = 8
|
||||
IF = 9
|
||||
ELSE = 10
|
||||
WHILE = 11
|
||||
LET = 12
|
||||
END = 13
|
||||
|
||||
ADD = 13
|
||||
SUBTRACT = 14
|
||||
MULTIPLY = 15
|
||||
DIVIDE = 16
|
||||
ADD = 14
|
||||
SUBTRACT = 15
|
||||
MULTIPLY = 16
|
||||
DIVIDE = 17
|
||||
|
||||
SET = 17
|
||||
SET = 18
|
||||
|
||||
EQUAL = 18
|
||||
GREATER = 19
|
||||
LESSER = 20
|
||||
EQUAL = 19
|
||||
GREATER = 20
|
||||
LESSER = 21
|
||||
|
||||
PARAMOPEN = 22
|
||||
PARAMCLOSE = 23
|
||||
|
||||
ROOT = 24
|
||||
|
||||
UNKNOWN = 0
|
||||
|
||||
class Token:
|
||||
def __init__(self, tok: str):
|
||||
def __init__(self, tok: str, isroot = False):
|
||||
self.value = tok
|
||||
self.type = get_type(tok)
|
||||
if isroot:
|
||||
self.type = TokenType.ROOT
|
||||
else:
|
||||
self.type = get_type(tok)
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"Token(type={self.type.name}, value='{self.value}')"
|
||||
@@ -69,6 +76,10 @@ def get_type(process: str) -> TokenType:
|
||||
return TokenType.GREATER
|
||||
case "<":
|
||||
return TokenType.LESSER
|
||||
case "(":
|
||||
return TokenType.PARAMOPEN
|
||||
case ")":
|
||||
return TokenType.PARAMCLOSE
|
||||
|
||||
# String/Char Literals
|
||||
if len(process) >= 2:
|
||||
|
Reference in New Issue
Block a user