diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-01-25 20:53:59 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-01-25 20:53:59 +0330 |
commit | b945815a225c3efdef5df03af52f921f98f9ed90 (patch) | |
tree | d70bc30bba6f0267596e9bac47be0882d7fe19b6 /src/compiler/ast-tree.h | |
parent | 6a2b633d6fdc10ffb496f90912f57ec72daf25f6 (diff) |
add function call
Diffstat (limited to 'src/compiler/ast-tree.h')
-rw-r--r-- | src/compiler/ast-tree.h | 20 |
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); |