function arguments are getting added to the AST!

This commit is contained in:
SpookyDervish
2025-10-15 07:16:15 +11:00
parent 049db7c53a
commit 3c24b50a80
8 changed files with 123 additions and 25 deletions

22
AST.py
View File

@@ -24,6 +24,9 @@ class NodeType(Enum):
IdentifierLiteral = "IdentifierLiteral"
BooleanLiteral = "BooleanLiteral"
# Helper
FunctionParameter = "FunctionParameter"
class Node:
@abstractmethod
def type(self) -> NodeType:
@@ -52,6 +55,23 @@ class Program(Node):
"statements": [{stmt.type().value: stmt.json()} for stmt in self.statements]
}
# region Helpers
class FunctionParameter(Expression):
def __init__(self, name: str, value_type: str = None) -> None:
self.name = name
self.value_type = value_type
def type(self) -> NodeType:
return NodeType.FunctionParameter
def json(self) -> dict:
return {
"type": self.type().value,
"name": self.name,
"value_type": self.value_type
}
# endregion
# region Literals
class IntegerLiteral(Expression):
def __init__(self, value: int = None) -> None:
@@ -164,7 +184,7 @@ class ReturnStatement(Statement):
}
class FunctionStatement(Statement):
def __init__(self, parameters: list = [], body: BlockStatement = None, name: IdentifierLiteral = None, return_type: str = None):
def __init__(self, parameters: list[FunctionParameter] = [], body: BlockStatement = None, name: IdentifierLiteral = None, return_type: str = None):
self.parameters = parameters
self.body = body
self.name = name