summaryrefslogtreecommitdiff
path: root/src/compiler/parser.h
diff options
context:
space:
mode:
authorA404M <ahmadmahmoudiprogrammer@gmail.com>2025-02-18 23:42:10 +0330
committerA404M <ahmadmahmoudiprogrammer@gmail.com>2025-02-18 23:42:10 +0330
commitdf4604f27bbd8ed42ea2c7026c7e4845aafd1a8b (patch)
treed877ced731ba28bf0ae8878d18b7eb392ff51404 /src/compiler/parser.h
parent9eb9be33d7623a4759b0794073bd32489b865b3d (diff)
add while
fix some memory leaks
Diffstat (limited to 'src/compiler/parser.h')
-rw-r--r--src/compiler/parser.h7
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);