started work on assignment operators

This commit is contained in:
SpookyDervish
2025-10-17 06:21:33 +11:00
parent 1d6c3db5e4
commit 24fcbb3fb7
10 changed files with 229 additions and 137 deletions

20
AST.py
View File

@@ -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