started work on assignment operators
This commit is contained in:
20
AST.py
20
AST.py
@@ -21,6 +21,7 @@ class NodeType(Enum):
|
||||
# Expressions
|
||||
InfixExpression = "InfixExpression"
|
||||
CallExpression = "CallExpression"
|
||||
PrefixExpression = "PrefixExpression"
|
||||
|
||||
# Literals
|
||||
IntegerLiteral = "IntegerLiteral"
|
||||
@@ -221,8 +222,9 @@ class FunctionStatement(Statement):
|
||||
}
|
||||
|
||||
class ReassignStatement(Statement):
|
||||
def __init__(self, ident: Expression = None, right_value: Expression = None) -> None:
|
||||
def __init__(self, ident: Expression = None, operator: str = "", right_value: Expression = None) -> None:
|
||||
self.ident = ident
|
||||
self.operator = operator
|
||||
self.right_value = right_value
|
||||
|
||||
def type(self) -> NodeType:
|
||||
@@ -232,6 +234,7 @@ class ReassignStatement(Statement):
|
||||
return {
|
||||
"type": self.type().value,
|
||||
"ident": self.ident.json(),
|
||||
"operator": self.operator,
|
||||
"right_value": self.right_value.json()
|
||||
}
|
||||
|
||||
@@ -342,4 +345,19 @@ class CallExpression(Expression):
|
||||
"function": self.function.json(),
|
||||
"arguments": [arg.json() for arg in self.arguments]
|
||||
}
|
||||
|
||||
class PrefixExpression(Expression):
|
||||
def __init__(self, operator: str, right_node: Expression = None) -> None:
|
||||
self.operator = operator
|
||||
self.right_node = right_node
|
||||
|
||||
def type(self) -> NodeType:
|
||||
return NodeType.PrefixExpression
|
||||
|
||||
def json(self) -> dict:
|
||||
return {
|
||||
"type": self.type().value,
|
||||
"operator": self.operator,
|
||||
"right_node": self.right_node.json()
|
||||
}
|
||||
# endregion
|
||||
Reference in New Issue
Block a user