diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-02-18 23:42:10 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-02-18 23:42:10 +0330 |
commit | df4604f27bbd8ed42ea2c7026c7e4845aafd1a8b (patch) | |
tree | d877ced731ba28bf0ae8878d18b7eb392ff51404 /src/compiler/parser.h | |
parent | 9eb9be33d7623a4759b0794073bd32489b865b3d (diff) |
add while
fix some memory leaks
Diffstat (limited to 'src/compiler/parser.h')
-rw-r--r-- | src/compiler/parser.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/compiler/parser.h b/src/compiler/parser.h index 3af47e7..6fe6d6f 100644 --- a/src/compiler/parser.h +++ b/src/compiler/parser.h @@ -34,6 +34,7 @@ typedef enum ParserToken { PARSER_TOKEN_KEYWORD_PRINT_U64, PARSER_TOKEN_KEYWORD_RETURN, PARSER_TOKEN_KEYWORD_IF, + PARSER_TOKEN_KEYWORD_WHILE, PARSER_TOKEN_CONSTANT, PARSER_TOKEN_VARIABLE, @@ -131,6 +132,11 @@ typedef struct ParserNodeIfMetadata { ParserNode *elseBody; } ParserNodeIfMetadata; +typedef struct ParserNodeWhileMetadata { + ParserNode *condition; + ParserNode *body; +} ParserNodeWhileMetadata; + void parserNodePrint(const ParserNode *node, int indent); void parserNodeDelete(ParserNode *node); @@ -175,6 +181,7 @@ ParserNode *parserBinaryOrLeftOperator(LexerNode *node, LexerNode *begin, ParserToken token, LexerToken laterToken); ParserNode *parserIf(LexerNode *node, LexerNode *end, ParserNode *parent); +ParserNode *parserWhile(LexerNode *node, LexerNode *end, ParserNode *parent); bool isAllArguments(const ParserNodeArray *nodes); |