diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-06-12 18:03:30 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2025-06-12 18:03:30 +0330 |
commit | d8d12f033831a6ed76049209d52450a7001a6879 (patch) | |
tree | ab5e6aef5975d14ccd54df293f59ae0122ffd56e /src/compiler | |
parent | b80c60e53699c5bc8744269f0664ba07956e4614 (diff) |
removing lazy because macro can do the job
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/ast-tree.c | 6 | ||||
-rw-r--r-- | src/compiler/ast-tree.h | 1 | ||||
-rw-r--r-- | src/compiler/lexer.c | 66 | ||||
-rw-r--r-- | src/compiler/lexer.h | 1 | ||||
-rw-r--r-- | src/compiler/parser.c | 6 | ||||
-rw-r--r-- | src/compiler/parser.h | 1 |
6 files changed, 39 insertions, 42 deletions
diff --git a/src/compiler/ast-tree.c b/src/compiler/ast-tree.c index 8cea6f7..3dd2308 100644 --- a/src/compiler/ast-tree.c +++ b/src/compiler/ast-tree.c @@ -1784,7 +1784,6 @@ AstTreeVariables copyAstTreeVariables(AstTreeVariables variables, result.data[i]->name_begin = variables.data[i]->name_begin; result.data[i]->name_end = variables.data[i]->name_end; result.data[i]->isConst = variables.data[i]->isConst; - result.data[i]->isLazy = variables.data[i]->isLazy; result.data[i]->type = copyAstTreeBack(variables.data[i]->type, new_oldVariables, new_newVariables, new_variables_size, safetyCheck); @@ -2115,7 +2114,6 @@ AstTreeRoot *makeAstRoot(const ParserNode *parsedRoot, char *filePath) { variable->name_begin = node_metadata->name->str_begin; variable->name_end = node_metadata->name->str_end; variable->isConst = node->token == PARSER_TOKEN_CONSTANT; - variable->isLazy = node_metadata->isLazy; if (node_metadata->isComptime && !variable->isConst) { printError(node->str_begin, node->str_end, "Bad comptime %s", @@ -2678,7 +2676,6 @@ AstTree *astTreeParseFunction(const ParserNode *parserNode) { argument->name_begin = arg_metadata->name->str_begin; argument->name_end = arg_metadata->name->str_end; argument->isConst = arg_metadata->isComptime; - argument->isLazy = arg_metadata->isLazy; if (!pushVariable(&function->arguments, argument)) { astTreeVariableDelete(argument); @@ -3329,7 +3326,6 @@ bool astTreeParseConstant(const ParserNode *parserNode, variable->name_begin = node_metadata->name->str_begin; variable->name_end = node_metadata->name->str_end; variable->isConst = true; - variable->isLazy = node_metadata->isLazy; if (!pushVariable(variables, variable)) { astTreeVariableDelete(variable); @@ -3381,7 +3377,6 @@ AstTree *astTreeParseVariable(const ParserNode *parserNode, variable->name_begin = node_metadata->name->str_begin; variable->name_end = node_metadata->name->str_end; variable->isConst = false; - variable->isLazy = node_metadata->isLazy; if (!pushVariable(variables, variable)) { astTreeVariableDelete(variable); @@ -3703,7 +3698,6 @@ AstTree *astTreeParseStruct(const ParserNode *parserNode) { variable->initValue = NULL; variable->isConst = false; } - variable->isLazy = node_variable->isLazy; variables.data[i] = variable; } diff --git a/src/compiler/ast-tree.h b/src/compiler/ast-tree.h index 7ee62ff..7d4eb84 100644 --- a/src/compiler/ast-tree.h +++ b/src/compiler/ast-tree.h @@ -173,7 +173,6 @@ typedef struct AstTreeVariable { AstTree *value; AstTree *initValue; bool isConst; - bool isLazy; } AstTreeVariable; typedef struct AstTreeVariables { diff --git a/src/compiler/lexer.c b/src/compiler/lexer.c index 869f62f..d6d4c55 100644 --- a/src/compiler/lexer.c +++ b/src/compiler/lexer.c @@ -137,7 +137,6 @@ const char *LEXER_TOKEN_STRINGS[] = { "LEXER_TOKEN_SYMBOL_OPEN_PARENTHESIS", "LEXER_TOKEN_SYMBOL_OPEN_BRACKET", "LEXER_TOKEN_SYMBOL_OPEN_CURLY_BRACKET", - "LEXER_TOKEN_KEYWORD_LAZY", "LEXER_TOKEN_KEYWORD_MACRO", "LEXER_TOKEN_NONE", @@ -192,40 +191,54 @@ static const size_t LEXER_SYMBOL_SIZE = sizeof(LEXER_SYMBOL_TOKENS) / sizeof(*LEXER_SYMBOL_TOKENS); static const char *LEXER_KEYWORD_STRINGS[] = { - "type", "anytype", "void", "i8", - "u8", "i16", "u16", "i32", - "u32", "i64", "u64", + "type", "anytype", "void", "i8", "u8", + "i16", "u16", "i32", "u32", "i64", + "u64", #ifdef FLOAT_16_SUPPORT "f16", #endif - "f32", "f64", "f128", "bool", - "return", "true", "false", "if", - "else", "while", "comptime", "null", - "struct", "undefined", "code", "lazy", - "namespace", "shape_shifter", "break", "continue", - "c_library", "c_function", "macro", + "f32", "f64", "f128", "bool", "return", + "true", "false", "if", "else", "while", + "comptime", "null", "struct", "undefined", "code", + "namespace", "shape_shifter", "break", "continue", "c_library", + "c_function", "macro", }; static const LexerToken LEXER_KEYWORD_TOKENS[] = { - LEXER_TOKEN_KEYWORD_TYPE, LEXER_TOKEN_KEYWORD_ANY_TYPE, - LEXER_TOKEN_KEYWORD_VOID, LEXER_TOKEN_KEYWORD_I8, - LEXER_TOKEN_KEYWORD_U8, LEXER_TOKEN_KEYWORD_I16, - LEXER_TOKEN_KEYWORD_U16, LEXER_TOKEN_KEYWORD_I32, - LEXER_TOKEN_KEYWORD_U32, LEXER_TOKEN_KEYWORD_I64, + LEXER_TOKEN_KEYWORD_TYPE, + LEXER_TOKEN_KEYWORD_ANY_TYPE, + LEXER_TOKEN_KEYWORD_VOID, + LEXER_TOKEN_KEYWORD_I8, + LEXER_TOKEN_KEYWORD_U8, + LEXER_TOKEN_KEYWORD_I16, + LEXER_TOKEN_KEYWORD_U16, + LEXER_TOKEN_KEYWORD_I32, + LEXER_TOKEN_KEYWORD_U32, + LEXER_TOKEN_KEYWORD_I64, LEXER_TOKEN_KEYWORD_U64, #ifdef FLOAT_16_SUPPORT LEXER_TOKEN_KEYWORD_F16, #endif - LEXER_TOKEN_KEYWORD_F32, LEXER_TOKEN_KEYWORD_F64, - LEXER_TOKEN_KEYWORD_F128, LEXER_TOKEN_KEYWORD_BOOL, - LEXER_TOKEN_KEYWORD_RETURN, LEXER_TOKEN_KEYWORD_TRUE, - LEXER_TOKEN_KEYWORD_FALSE, LEXER_TOKEN_KEYWORD_IF, - LEXER_TOKEN_KEYWORD_ELSE, LEXER_TOKEN_KEYWORD_WHILE, - LEXER_TOKEN_KEYWORD_COMPTIME, LEXER_TOKEN_KEYWORD_NULL, - LEXER_TOKEN_KEYWORD_STRUCT, LEXER_TOKEN_KEYWORD_UNDEFINED, - LEXER_TOKEN_KEYWORD_CODE, LEXER_TOKEN_KEYWORD_LAZY, - LEXER_TOKEN_KEYWORD_NAMESPACE, LEXER_TOKEN_KEYWORD_SHAPE_SHIFTER, - LEXER_TOKEN_KEYWORD_BREAK, LEXER_TOKEN_KEYWORD_CONTINUE, - LEXER_TOKEN_KEYWORD_C_LIBRARY, LEXER_TOKEN_KEYWORD_C_FUNCTION, + LEXER_TOKEN_KEYWORD_F32, + LEXER_TOKEN_KEYWORD_F64, + LEXER_TOKEN_KEYWORD_F128, + LEXER_TOKEN_KEYWORD_BOOL, + LEXER_TOKEN_KEYWORD_RETURN, + LEXER_TOKEN_KEYWORD_TRUE, + LEXER_TOKEN_KEYWORD_FALSE, + LEXER_TOKEN_KEYWORD_IF, + LEXER_TOKEN_KEYWORD_ELSE, + LEXER_TOKEN_KEYWORD_WHILE, + LEXER_TOKEN_KEYWORD_COMPTIME, + LEXER_TOKEN_KEYWORD_NULL, + LEXER_TOKEN_KEYWORD_STRUCT, + LEXER_TOKEN_KEYWORD_UNDEFINED, + LEXER_TOKEN_KEYWORD_CODE, + LEXER_TOKEN_KEYWORD_NAMESPACE, + LEXER_TOKEN_KEYWORD_SHAPE_SHIFTER, + LEXER_TOKEN_KEYWORD_BREAK, + LEXER_TOKEN_KEYWORD_CONTINUE, + LEXER_TOKEN_KEYWORD_C_LIBRARY, + LEXER_TOKEN_KEYWORD_C_FUNCTION, LEXER_TOKEN_KEYWORD_MACRO, }; static const size_t LEXER_KEYWORD_SIZE = @@ -502,7 +515,6 @@ lexerPushClear(LexerNodeArray *array, size_t *array_size, char const *iter, case LEXER_TOKEN_KEYWORD_UNDEFINED: case LEXER_TOKEN_KEYWORD_CODE: case LEXER_TOKEN_KEYWORD_NAMESPACE: - case LEXER_TOKEN_KEYWORD_LAZY: case LEXER_TOKEN_KEYWORD_MACRO: case LEXER_TOKEN_NUMBER: case LEXER_TOKEN_CHAR: diff --git a/src/compiler/lexer.h b/src/compiler/lexer.h index 568fabc..bf53b75 100644 --- a/src/compiler/lexer.h +++ b/src/compiler/lexer.h @@ -149,7 +149,6 @@ typedef enum LexerToken { LEXER_TOKEN_SYMBOL_OPEN_PARENTHESIS, LEXER_TOKEN_SYMBOL_OPEN_BRACKET, LEXER_TOKEN_SYMBOL_OPEN_CURLY_BRACKET, - LEXER_TOKEN_KEYWORD_LAZY, LEXER_TOKEN_KEYWORD_MACRO, LEXER_TOKEN_NONE, diff --git a/src/compiler/parser.c b/src/compiler/parser.c index ea54e52..a58b19c 100644 --- a/src/compiler/parser.c +++ b/src/compiler/parser.c @@ -353,7 +353,6 @@ void parserNodePrint(const ParserNode *node, int indent) { case PARSER_TOKEN_CONSTANT: case PARSER_TOKEN_VARIABLE: { const ParserNodeVariableMetadata *metadata = node->metadata; - printf("isLazy=%b,\n", metadata->isLazy); for (int i = 0; i < indent; ++i) printf(" "); printf("name=\n"); @@ -1177,7 +1176,6 @@ ParserNode *parseNode(LexerNode *node, LexerNode *begin, LexerNode *end, return parserComptime(node, end, parent); case LEXER_TOKEN_KEYWORD_STRUCT: return parserStruct(node, end, parent); - case LEXER_TOKEN_KEYWORD_LAZY: case LEXER_TOKEN_KEYWORD_ELSE: case LEXER_TOKEN_KEYWORD_MACRO: case LEXER_TOKEN_BUILTIN: @@ -2071,14 +2069,10 @@ ParserNode *parserVariable(LexerNode *node, LexerNode *begin, LexerNode *end, metadata->name = name; metadata->type = type; metadata->isComptime = false; - metadata->isLazy = false; LexerNode *flagNode = nameNode - 1; 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; diff --git a/src/compiler/parser.h b/src/compiler/parser.h index 3db1d3d..9a7ac74 100644 --- a/src/compiler/parser.h +++ b/src/compiler/parser.h @@ -156,7 +156,6 @@ typedef struct ParserNodeVariableMetadata { ParserNode *name; ParserNode *type; ParserNode *value; - bool isLazy; bool isComptime; } ParserNodeVariableMetadata; |