diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-02-12 11:55:38 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-02-12 11:55:38 +0330 |
commit | 5c336962d3d0a885a870708076f154ee422fee12 (patch) | |
tree | 6f24bf2de914d94fd309d34c7c82e8025692154b /src/compiler/parser.h | |
parent | 217b2c70adfd60756591dd6b06b60279f805a596 (diff) |
add if
Diffstat (limited to 'src/compiler/parser.h')
-rw-r--r-- | src/compiler/parser.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/compiler/parser.h b/src/compiler/parser.h index 2d57538..cb90b71 100644 --- a/src/compiler/parser.h +++ b/src/compiler/parser.h @@ -20,6 +20,7 @@ typedef enum ParserToken { PARSER_TOKEN_KEYWORD_PRINT_U64, PARSER_TOKEN_KEYWORD_RETURN, + PARSER_TOKEN_KEYWORD_IF, PARSER_TOKEN_CONSTANT, PARSER_TOKEN_VARIABLE, @@ -103,6 +104,11 @@ typedef struct ParserNodeReturnMetadata { typedef bool ParserNodeBoolMetadata; +typedef struct ParserNodeIfMetadata { + ParserNode *condition; + ParserNode *body; +}ParserNodeIfMetadata; + void parserNodePrint(const ParserNode *node, int indent); void parserNodeDelete(ParserNode *node); @@ -116,6 +122,7 @@ ParserNode *parseNode(LexerNode *node, LexerNode *begin, LexerNode *end, ParserNode *parent, bool *conti); ParserNode *getUntilCommonParent(ParserNode *node, ParserNode *parent); +ParserNode *getNextUsingCommonParent(LexerNode *node,LexerNode *end, ParserNode *parent); ParserNode *parserIdentifier(LexerNode *node, ParserNode *parent); ParserNode *parserType(LexerNode *node, ParserNode *parent); @@ -143,6 +150,8 @@ ParserNode *parserBinaryOrLeftOperator(LexerNode *node, LexerNode *begin, LexerNode *end, ParserNode *parent, ParserToken token, LexerToken laterToken); +ParserNode *parserIf(LexerNode *node, LexerNode *end, + ParserNode *parent); bool isAllArguments(const ParserNodeArray *nodes); |