summaryrefslogtreecommitdiff
path: root/src/compiler/ast-tree.h
diff options
context:
space:
mode:
authorA404M <ahmadmahmoudiprogrammer@gmail.com>2025-01-25 20:53:59 +0330
committerA404M <ahmadmahmoudiprogrammer@gmail.com>2025-01-25 20:53:59 +0330
commitb945815a225c3efdef5df03af52f921f98f9ed90 (patch)
treed70bc30bba6f0267596e9bac47be0882d7fe19b6 /src/compiler/ast-tree.h
parent6a2b633d6fdc10ffb496f90912f57ec72daf25f6 (diff)
add function call
Diffstat (limited to 'src/compiler/ast-tree.h')
-rw-r--r--src/compiler/ast-tree.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/compiler/ast-tree.h b/src/compiler/ast-tree.h
index 23f0b9c..ae97ca2 100644
--- a/src/compiler/ast-tree.h
+++ b/src/compiler/ast-tree.h
@@ -8,6 +8,8 @@ typedef enum AstTreeToken {
AST_TREE_TOKEN_KEYWORD_PRINT,
AST_TREE_TOKEN_TYPE_FUNCTION,
AST_TREE_TOKEN_TYPE_VOID,
+ AST_TREE_TOKEN_FUNCTION_CALL,
+ AST_TREE_TOKEN_IDENTIFIER,
AST_TREE_TOKEN_NONE,
} AstTreeToken;
@@ -52,6 +54,14 @@ typedef struct AstTreeTypeFunction {
AstTree *returnType;
} AstTreeTypeFunction;
+typedef struct AstTreeFunctionCall {
+ AstTree *function;
+ AstTree **parameters;
+ size_t parameters_size;
+} AstTreeFunctionCall;
+
+typedef AstTreeVariable AstTreeIdentifier;
+
extern const char *AST_TREE_TOKEN_STRINGS[];
void astTreePrint(const AstTree *tree, int indent);
@@ -67,6 +77,8 @@ AstTreeRoot *makeAstTree(ParserNode *parsedRoot);
void pushVariable(AstTreeVariables *variables, size_t *variables_size,
AstTreeVariable *variable);
+AstTreeVariable *getVariable(AstTreeVariables *variables, size_t variables_size,
+ char *name_begin, char *name_end);
AstTree *astTreeParse(ParserNode *parserNode, AstTreeVariables *variables,
size_t variables_size);
@@ -79,5 +91,13 @@ AstTree *astTreeParseTypeFunction(ParserNode *parserNode,
AstTreeVariables *variables,
size_t variables_size);
+AstTree *astTreeParseFunctionCall(ParserNode *parserNode,
+ AstTreeVariables *variables,
+ size_t variables_size);
+
+AstTree *astTreeParseIdentifier(ParserNode *parserNode,
+ AstTreeVariables *variables,
+ size_t variables_size);
+
bool hasTypeOf(AstTree *value, AstTree *type);
bool typeIsEqual(AstTree *type0, AstTree *type1);