diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-05-11 21:13:17 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-05-11 21:13:17 +0330 |
commit | e12086b3a9f2610425ca6fa73749453c762eb56e (patch) | |
tree | 89bc9e3e0f5a67c469bef24f8a2ff95af9e445ea /src/compiler/parser.c | |
parent | fe81eba1c232ab99bcfedf9546a82b06c796b086 (diff) |
added comptime keyword to variables
Diffstat (limited to 'src/compiler/parser.c')
-rw-r--r-- | src/compiler/parser.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/compiler/parser.c b/src/compiler/parser.c index 388e69a..139a0ff 100644 --- a/src/compiler/parser.c +++ b/src/compiler/parser.c @@ -1881,15 +1881,25 @@ ParserNode *parserVariable(LexerNode *node, LexerNode *begin, LexerNode *end, metadata->value = value; metadata->name = name; metadata->type = type; + metadata->isComptime = false; + metadata->isLazy = false; LexerNode *flagNode = nameNode - 1; - if (flagNode >= begin && flagNode->parserNode == NULL && - flagNode->token == LEXER_TOKEN_KEYWORD_LAZY) { - metadata->isLazy = true; + while (flagNode >= begin && flagNode->parserNode == NULL) { + switch (flagNode->token) { + case LEXER_TOKEN_KEYWORD_LAZY: + metadata->isLazy = true; + break; + case LEXER_TOKEN_KEYWORD_COMPTIME: + metadata->isComptime = true; + break; + default: + goto AFTER_WHILE; + } flagNode->parserNode = variableNode; - } else { - metadata->isLazy = false; + flagNode -= 1; } +AFTER_WHILE: variableNode->metadata = metadata; |