From c85ce38fbb02342d8ef00030d203ab6bcc690f73 Mon Sep 17 00:00:00 2001 From: A404M Date: Sat, 26 Apr 2025 15:14:45 +0330 Subject: add @isComptime to determine if code is running in comptime or not --- src/compiler/parser.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/compiler/parser.c') diff --git a/src/compiler/parser.c b/src/compiler/parser.c index 0f4a880..c4cbfee 100644 --- a/src/compiler/parser.c +++ b/src/compiler/parser.c @@ -15,6 +15,7 @@ const char *PARSER_TOKEN_STRINGS[] = { "PARSER_TOKEN_BUILTIN_CAST", "PARSER_TOKEN_BUILTIN_TYPE_OF", "PARSER_TOKEN_BUILTIN_IMPORT", + "PARSER_TOKEN_BUILTIN_IS_COMPTIME", "PARSER_TOKEN_VALUE_INT", "PARSER_TOKEN_VALUE_FLOAT", @@ -226,6 +227,7 @@ void parserNodePrint(const ParserNode *node, int indent) { case PARSER_TOKEN_BUILTIN_CAST: case PARSER_TOKEN_BUILTIN_TYPE_OF: case PARSER_TOKEN_BUILTIN_IMPORT: + case PARSER_TOKEN_BUILTIN_IS_COMPTIME: case PARSER_TOKEN_TYPE_TYPE: case PARSER_TOKEN_TYPE_VOID: case PARSER_TOKEN_TYPE_BOOL: @@ -512,6 +514,7 @@ void parserNodeDelete(ParserNode *node) { case PARSER_TOKEN_BUILTIN_CAST: case PARSER_TOKEN_BUILTIN_TYPE_OF: case PARSER_TOKEN_BUILTIN_IMPORT: + case PARSER_TOKEN_BUILTIN_IS_COMPTIME: case PARSER_TOKEN_TYPE_TYPE: case PARSER_TOKEN_TYPE_VOID: case PARSER_TOKEN_TYPE_BOOL: @@ -796,6 +799,8 @@ ParserNode *parseNode(LexerNode *node, LexerNode *begin, LexerNode *end, return parserNoMetadata(node, parent, PARSER_TOKEN_BUILTIN_TYPE_OF); case LEXER_TOKEN_BUILTIN_IMPORT: return parserNoMetadata(node, parent, PARSER_TOKEN_BUILTIN_IMPORT); + case LEXER_TOKEN_BUILTIN_IS_COMPTIME: + return parserNoMetadata(node, parent, PARSER_TOKEN_BUILTIN_IS_COMPTIME); case LEXER_TOKEN_KEYWORD_TYPE: return parserNoMetadata(node, parent, PARSER_TOKEN_TYPE_TYPE); case LEXER_TOKEN_KEYWORD_VOID: @@ -1531,6 +1536,7 @@ ParserNode *parserFunction(LexerNode *node, LexerNode *begin, LexerNode *end, case PARSER_TOKEN_BUILTIN_CAST: case PARSER_TOKEN_BUILTIN_TYPE_OF: case PARSER_TOKEN_BUILTIN_IMPORT: + case PARSER_TOKEN_BUILTIN_IS_COMPTIME: case PARSER_TOKEN_VALUE_INT: case PARSER_TOKEN_VALUE_FLOAT: case PARSER_TOKEN_VALUE_BOOL: @@ -1994,6 +2000,7 @@ bool isExpression(ParserNode *node) { case PARSER_TOKEN_BUILTIN_CAST: case PARSER_TOKEN_BUILTIN_TYPE_OF: case PARSER_TOKEN_BUILTIN_IMPORT: + case PARSER_TOKEN_BUILTIN_IS_COMPTIME: case PARSER_TOKEN_CONSTANT: case PARSER_TOKEN_VARIABLE: case PARSER_TOKEN_SYMBOL_PARENTHESIS: @@ -2106,6 +2113,7 @@ bool isType(ParserNode *node) { case PARSER_TOKEN_BUILTIN_CAST: case PARSER_TOKEN_BUILTIN_TYPE_OF: case PARSER_TOKEN_BUILTIN_IMPORT: + case PARSER_TOKEN_BUILTIN_IS_COMPTIME: case PARSER_TOKEN_OPERATOR_ADDRESS: case PARSER_TOKEN_KEYWORD_NULL: case PARSER_TOKEN_KEYWORD_UNDEFINED: @@ -2165,6 +2173,7 @@ bool isValue(ParserNode *node) { case PARSER_TOKEN_BUILTIN_CAST: case PARSER_TOKEN_BUILTIN_TYPE_OF: case PARSER_TOKEN_BUILTIN_IMPORT: + case PARSER_TOKEN_BUILTIN_IS_COMPTIME: case PARSER_TOKEN_OPERATOR_ACCESS: case PARSER_TOKEN_OPERATOR_ASSIGN: case PARSER_TOKEN_OPERATOR_SUM_ASSIGN: -- cgit v1.2.3