From 093c3bece426686b175db9ddaecd6abc8908fd87 Mon Sep 17 00:00:00 2001 From: A404M Date: Fri, 23 May 2025 09:59:14 +0330 Subject: add @size_of --- src/compiler/parser.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/compiler/parser.c') diff --git a/src/compiler/parser.c b/src/compiler/parser.c index e8772fb..ba7a4a0 100644 --- a/src/compiler/parser.c +++ b/src/compiler/parser.c @@ -14,6 +14,7 @@ const char *PARSER_TOKEN_STRINGS[] = { "PARSER_TOKEN_BUILTIN_CAST", "PARSER_TOKEN_BUILTIN_TYPE_OF", + "PARSER_TOKEN_BUILTIN_SIZE_OF", "PARSER_TOKEN_BUILTIN_IMPORT", "PARSER_TOKEN_BUILTIN_IS_COMPTIME", "PARSER_TOKEN_BUILTIN_STACK_ALLOC", @@ -31,6 +32,8 @@ const char *PARSER_TOKEN_STRINGS[] = { "PARSER_TOKEN_BUILTIN_GREATER_OR_EQUAL", "PARSER_TOKEN_BUILTIN_SMALLER_OR_EQUAL", "PARSER_TOKEN_BUILTIN_PUTC", + "PARSER_TOKEN_BUILTIN_C_LIBRARY", + "PARSER_TOKEN_BUILTIN_C_FUNCTION", "PARSER_TOKEN_VALUE_INT", "PARSER_TOKEN_VALUE_FLOAT", @@ -244,6 +247,7 @@ void parserNodePrint(const ParserNode *node, int indent) { case PARSER_TOKEN_IDENTIFIER: case PARSER_TOKEN_BUILTIN_CAST: case PARSER_TOKEN_BUILTIN_TYPE_OF: + case PARSER_TOKEN_BUILTIN_SIZE_OF: case PARSER_TOKEN_BUILTIN_IMPORT: case PARSER_TOKEN_BUILTIN_IS_COMPTIME: case PARSER_TOKEN_BUILTIN_STACK_ALLOC: @@ -261,6 +265,8 @@ void parserNodePrint(const ParserNode *node, int indent) { case PARSER_TOKEN_BUILTIN_GREATER_OR_EQUAL: case PARSER_TOKEN_BUILTIN_SMALLER_OR_EQUAL: case PARSER_TOKEN_BUILTIN_PUTC: + case PARSER_TOKEN_BUILTIN_C_LIBRARY: + case PARSER_TOKEN_BUILTIN_C_FUNCTION: case PARSER_TOKEN_TYPE_TYPE: case PARSER_TOKEN_TYPE_VOID: case PARSER_TOKEN_TYPE_BOOL: @@ -549,6 +555,7 @@ void parserNodeDelete(ParserNode *node) { case PARSER_TOKEN_IDENTIFIER: case PARSER_TOKEN_BUILTIN_CAST: case PARSER_TOKEN_BUILTIN_TYPE_OF: + case PARSER_TOKEN_BUILTIN_SIZE_OF: case PARSER_TOKEN_BUILTIN_IMPORT: case PARSER_TOKEN_BUILTIN_IS_COMPTIME: case PARSER_TOKEN_BUILTIN_STACK_ALLOC: @@ -566,6 +573,8 @@ void parserNodeDelete(ParserNode *node) { case PARSER_TOKEN_BUILTIN_GREATER_OR_EQUAL: case PARSER_TOKEN_BUILTIN_SMALLER_OR_EQUAL: case PARSER_TOKEN_BUILTIN_PUTC: + case PARSER_TOKEN_BUILTIN_C_LIBRARY: + case PARSER_TOKEN_BUILTIN_C_FUNCTION: case PARSER_TOKEN_TYPE_TYPE: case PARSER_TOKEN_TYPE_VOID: case PARSER_TOKEN_TYPE_BOOL: @@ -854,6 +863,8 @@ ParserNode *parseNode(LexerNode *node, LexerNode *begin, LexerNode *end, return parserNoMetadata(node, parent, PARSER_TOKEN_BUILTIN_CAST); case LEXER_TOKEN_BUILTIN_TYPE_OF: return parserNoMetadata(node, parent, PARSER_TOKEN_BUILTIN_TYPE_OF); + case LEXER_TOKEN_BUILTIN_SIZE_OF: + return parserNoMetadata(node, parent, PARSER_TOKEN_BUILTIN_SIZE_OF); case LEXER_TOKEN_BUILTIN_IMPORT: return parserNoMetadata(node, parent, PARSER_TOKEN_BUILTIN_IMPORT); case LEXER_TOKEN_BUILTIN_IS_COMPTIME: @@ -890,6 +901,10 @@ ParserNode *parseNode(LexerNode *node, LexerNode *begin, LexerNode *end, PARSER_TOKEN_BUILTIN_SMALLER_OR_EQUAL); case LEXER_TOKEN_BUILTIN_PUTC: return parserNoMetadata(node, parent, PARSER_TOKEN_BUILTIN_PUTC); + case LEXER_TOKEN_BUILTIN_C_LIBRARY: + return parserNoMetadata(node, parent, PARSER_TOKEN_BUILTIN_C_LIBRARY); + case LEXER_TOKEN_BUILTIN_C_FUNCTION: + return parserNoMetadata(node, parent, PARSER_TOKEN_BUILTIN_C_FUNCTION); case LEXER_TOKEN_KEYWORD_TYPE: return parserNoMetadata(node, parent, PARSER_TOKEN_TYPE_TYPE); case LEXER_TOKEN_KEYWORD_VOID: @@ -1659,6 +1674,7 @@ ParserNode *parserFunction(LexerNode *node, LexerNode *begin, LexerNode *end, case PARSER_TOKEN_IDENTIFIER: case PARSER_TOKEN_BUILTIN_CAST: case PARSER_TOKEN_BUILTIN_TYPE_OF: + case PARSER_TOKEN_BUILTIN_SIZE_OF: case PARSER_TOKEN_BUILTIN_IMPORT: case PARSER_TOKEN_BUILTIN_IS_COMPTIME: case PARSER_TOKEN_BUILTIN_STACK_ALLOC: @@ -1676,6 +1692,8 @@ ParserNode *parserFunction(LexerNode *node, LexerNode *begin, LexerNode *end, case PARSER_TOKEN_BUILTIN_GREATER_OR_EQUAL: case PARSER_TOKEN_BUILTIN_SMALLER_OR_EQUAL: case PARSER_TOKEN_BUILTIN_PUTC: + case PARSER_TOKEN_BUILTIN_C_LIBRARY: + case PARSER_TOKEN_BUILTIN_C_FUNCTION: case PARSER_TOKEN_VALUE_INT: case PARSER_TOKEN_VALUE_FLOAT: case PARSER_TOKEN_VALUE_BOOL: @@ -2160,6 +2178,7 @@ bool isExpression(ParserNode *node) { case PARSER_TOKEN_IDENTIFIER: case PARSER_TOKEN_BUILTIN_CAST: case PARSER_TOKEN_BUILTIN_TYPE_OF: + case PARSER_TOKEN_BUILTIN_SIZE_OF: case PARSER_TOKEN_BUILTIN_IMPORT: case PARSER_TOKEN_BUILTIN_IS_COMPTIME: case PARSER_TOKEN_BUILTIN_STACK_ALLOC: @@ -2177,6 +2196,8 @@ bool isExpression(ParserNode *node) { case PARSER_TOKEN_BUILTIN_GREATER_OR_EQUAL: case PARSER_TOKEN_BUILTIN_SMALLER_OR_EQUAL: case PARSER_TOKEN_BUILTIN_PUTC: + case PARSER_TOKEN_BUILTIN_C_LIBRARY: + case PARSER_TOKEN_BUILTIN_C_FUNCTION: case PARSER_TOKEN_CONSTANT: case PARSER_TOKEN_VARIABLE: case PARSER_TOKEN_SYMBOL_PARENTHESIS: @@ -2293,6 +2314,7 @@ bool isType(ParserNode *node) { return true; case PARSER_TOKEN_BUILTIN_CAST: case PARSER_TOKEN_BUILTIN_TYPE_OF: + case PARSER_TOKEN_BUILTIN_SIZE_OF: case PARSER_TOKEN_BUILTIN_IMPORT: case PARSER_TOKEN_BUILTIN_IS_COMPTIME: case PARSER_TOKEN_BUILTIN_STACK_ALLOC: @@ -2310,6 +2332,8 @@ bool isType(ParserNode *node) { case PARSER_TOKEN_BUILTIN_GREATER_OR_EQUAL: case PARSER_TOKEN_BUILTIN_SMALLER_OR_EQUAL: case PARSER_TOKEN_BUILTIN_PUTC: + case PARSER_TOKEN_BUILTIN_C_LIBRARY: + case PARSER_TOKEN_BUILTIN_C_FUNCTION: case PARSER_TOKEN_OPERATOR_ADDRESS: case PARSER_TOKEN_KEYWORD_NULL: case PARSER_TOKEN_KEYWORD_UNDEFINED: @@ -2369,6 +2393,7 @@ bool isValue(ParserNode *node) { case PARSER_TOKEN_IDENTIFIER: case PARSER_TOKEN_BUILTIN_CAST: case PARSER_TOKEN_BUILTIN_TYPE_OF: + case PARSER_TOKEN_BUILTIN_SIZE_OF: case PARSER_TOKEN_BUILTIN_IMPORT: case PARSER_TOKEN_BUILTIN_IS_COMPTIME: case PARSER_TOKEN_BUILTIN_STACK_ALLOC: @@ -2386,6 +2411,8 @@ bool isValue(ParserNode *node) { case PARSER_TOKEN_BUILTIN_GREATER_OR_EQUAL: case PARSER_TOKEN_BUILTIN_SMALLER_OR_EQUAL: case PARSER_TOKEN_BUILTIN_PUTC: + case PARSER_TOKEN_BUILTIN_C_LIBRARY: + case PARSER_TOKEN_BUILTIN_C_FUNCTION: case PARSER_TOKEN_OPERATOR_ACCESS: case PARSER_TOKEN_OPERATOR_ASSIGN: case PARSER_TOKEN_OPERATOR_SUM_ASSIGN: -- cgit v1.2.3