function arguments are getting added to the AST!
This commit is contained in:
22
AST.py
22
AST.py
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user