From df4604f27bbd8ed42ea2c7026c7e4845aafd1a8b Mon Sep 17 00:00:00 2001 From: A404M Date: Tue, 18 Feb 2025 23:42:10 +0330 Subject: add while fix some memory leaks --- src/compiler/ast-tree.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/compiler/ast-tree.h') diff --git a/src/compiler/ast-tree.h b/src/compiler/ast-tree.h index eaf8b07..b58d413 100644 --- a/src/compiler/ast-tree.h +++ b/src/compiler/ast-tree.h @@ -10,6 +10,7 @@ typedef enum AstTreeToken { AST_TREE_TOKEN_KEYWORD_PRINT_U64, AST_TREE_TOKEN_KEYWORD_RETURN, AST_TREE_TOKEN_KEYWORD_IF, + AST_TREE_TOKEN_KEYWORD_WHILE, AST_TREE_TOKEN_TYPE_FUNCTION, AST_TREE_TOKEN_TYPE_TYPE, @@ -149,6 +150,11 @@ typedef struct AstTreeIf { AstTree *elseBody; } AstTreeIf; +typedef struct AstTreeWhile { + AstTree *condition; + AstTree *body; +} AstTreeWhile; + typedef struct AstTreeHelper { AstTreeVariables **variables; size_t variables_size; @@ -198,6 +204,7 @@ AstTree *astTreeParseUnaryOperator(ParserNode *parserNode, bool astTreeParseConstant(ParserNode *parserNode, AstTreeHelper *helper); AstTree *astTreeParseVariable(ParserNode *parserNode, AstTreeHelper *helper); AstTree *astTreeParseIf(ParserNode *parserNode, AstTreeHelper *helper); +AstTree *astTreeParseWhile(ParserNode *parserNode, AstTreeHelper *helper); AstTree *astTreeParseCurlyBracket(ParserNode *parserNode, AstTreeHelper *helper); AstTree *astTreeParseParenthesis(ParserNode *parserNode, AstTreeHelper *helper); @@ -230,6 +237,8 @@ bool setTypesOperatorUnary(AstTree *tree, AstTreeSetTypesHelper helper); bool setTypesVariableDefine(AstTree *tree, AstTreeSetTypesHelper helper); bool setTypesIf(AstTree *tree, AstTreeSetTypesHelper helper, AstTreeFunction *function); +bool setTypesWhile(AstTree *tree, AstTreeSetTypesHelper helper, + AstTreeFunction *function); bool setTypesScope(AstTree *tree, AstTreeSetTypesHelper helper, AstTreeFunction *function); -- cgit v1.2.3