[DevState] Changed Parsing
This commit is contained in:
@@ -1,9 +1,30 @@
|
||||
from typing import List
|
||||
|
||||
from Models.Interpreter.Token import Token
|
||||
from Models.Interpreter.Datatypes import Datatypes
|
||||
from Models.Token.Token import Token
|
||||
from Models.Token.TokenTypes import TokenTypes
|
||||
from Models.Token.TokenValueTypes import ExpressionCharacters
|
||||
|
||||
|
||||
class AbstractSyntaxTree:
|
||||
class ValueNode:
|
||||
def __init__(self, value: Token = 'empty', datatype: Token = Token(TokenTypes.Type, Datatypes.strings.value[Datatypes.Empty.value])):
|
||||
self.value = value
|
||||
self.type = datatype
|
||||
|
||||
|
||||
class BinaryOperationNode:
|
||||
def __init__(self, left: Token, op_token: Token, right: Token):
|
||||
self.left = left
|
||||
self.op_token = op_token
|
||||
self.right = right
|
||||
|
||||
self.operation_chars = [
|
||||
ExpressionCharacters.chars.value[ExpressionCharacters.Plus.value],
|
||||
ExpressionCharacters.chars.value[ExpressionCharacters.Minus.value],
|
||||
ExpressionCharacters.chars.value[ExpressionCharacters.Asterisk.value],
|
||||
ExpressionCharacters.chars.value[ExpressionCharacters.Slash.value],
|
||||
ExpressionCharacters.chars.value[ExpressionCharacters.Caret.value]
|
||||
]
|
||||
|
||||
def eval(self):
|
||||
if self.op_token.value not in self.operation_chars:
|
||||
return eval(f'{self.left.value} {self.op_token.value} {self.right.value}')
|
||||
|
||||
def __init__(self):
|
||||
self.tokens: List[Token] = []
|
||||
|
Reference in New Issue
Block a user