From 5161d109ed2d92ffc2a6096c7ea6ccecc3da5db9 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Sat, 18 Jul 2020 12:43:20 -0500 Subject: [PATCH] Completely refactored scope logic --- include/onyxastnodes.h | 15 +++- include/onyxmsgs.h | 2 +- include/onyxsempass.h | 11 +-- onyx | Bin 254616 -> 254120 bytes src/onyxchecker.c | 10 +-- src/onyxmsgs.c | 2 +- src/onyxparser.c | 2 - src/onyxsempass.c | 8 +-- src/onyxsymres.c | 155 ++++++++++++++++------------------------- src/onyxutils.c | 12 ++++ 10 files changed, 97 insertions(+), 120 deletions(-) diff --git a/include/onyxastnodes.h b/include/onyxastnodes.h index 3333e0a9..f2976489 100644 --- a/include/onyxastnodes.h +++ b/include/onyxastnodes.h @@ -4,6 +4,7 @@ #include "onyxlex.h" #include "onyxtypes.h" + typedef struct AstNode AstNode; typedef struct AstTyped AstTyped; @@ -22,7 +23,6 @@ typedef struct AstReturn AstReturn; typedef struct AstBlock AstBlock; typedef struct AstIf AstIf; typedef struct AstWhile AstWhile; -typedef struct AstLocalGroup AstLocalGroup; typedef struct AstType AstType; typedef struct AstBasicType AstBasicType; @@ -35,6 +35,15 @@ typedef struct AstGlobal AstGlobal; typedef struct AstFunction AstFunction; typedef struct AstOverloadedFunction AstOverloadedFunction; + +typedef struct Scope { + struct Scope *parent; + bh_table(AstNode *) symbols; +} Scope; + +extern Scope* scope_create(bh_allocator a, Scope* parent); + + typedef enum AstKind { Ast_Kind_Error, Ast_Kind_Program, @@ -195,8 +204,7 @@ struct AstArrayAccess { AstTyped_base; AstTyped *addr; AstTyped *expr; u64 ele struct AstReturn { AstNode_base; AstTyped* expr; }; // Structure Nodes -struct AstLocalGroup { AstNode_base; AstLocalGroup *prev_group; AstLocal *last_local; }; -struct AstBlock { AstNode_base; AstNode *body; AstLocalGroup *locals; }; +struct AstBlock { AstNode_base; AstNode *body; Scope *scope; }; struct AstWhile { AstNode_base; AstTyped *cond; AstNode *stmt; }; struct AstIf { AstNode_base; @@ -240,6 +248,7 @@ struct AstGlobal { struct AstFunction { AstTyped_base; + Scope *scope; AstBlock *body; AstLocal *params; bh_arr(AstLocal *) locals; diff --git a/include/onyxmsgs.h b/include/onyxmsgs.h index 9c23a1a4..8c9afeee 100644 --- a/include/onyxmsgs.h +++ b/include/onyxmsgs.h @@ -18,7 +18,7 @@ typedef enum OnyxMessageType { ONYX_MESSAGE_TYPE_UNKNOWN_SYMBOL, ONYX_MESSAGE_TYPE_UNKNOWN_DIRECTIVE, - ONYX_MESSAGE_TYPE_CONFLICTING_GLOBALS, + ONYX_MESSAGE_TYPE_REDECLARE_SYMBOL, ONYX_MESSAGE_TYPE_BINOP_MISMATCH_TYPE, ONYX_MESSAGE_TYPE_ASSIGNMENT_TYPE_MISMATCH, ONYX_MESSAGE_TYPE_GLOBAL_TYPE_MISMATCH, diff --git a/include/onyxsempass.h b/include/onyxsempass.h index 97114bcf..c9227a04 100644 --- a/include/onyxsempass.h +++ b/include/onyxsempass.h @@ -7,11 +7,6 @@ #include "onyxastnodes.h" #include "onyxmsgs.h" -typedef struct SemSymbol { - AstNode *node; - struct SemSymbol *shadowed; -} SemSymbol; - typedef struct SemState { // NOTE: Adding node_allocator in case we need // to make any more node in the tree @@ -19,14 +14,12 @@ typedef struct SemState { OnyxMessages *msgs; // NOTE: Used in symbol resolution phase - AstLocalGroup* curr_local_group; + Scope* global_scope; + Scope* curr_scope; AstFunction* curr_function; // NOTE: Used in type checking phase Type* expected_return_type; - - // NOTE: All symbols a given point that we can resolve - bh_table(SemSymbol *) symbols; } SemState; // NOTE: Resolving all symbols in the tree diff --git a/onyx b/onyx index c54562e335a7617c2e847d83a3e31385ae978865..b356f8a4dedf47c866d40633a76409a632a8a61c 100755 GIT binary patch delta 91681 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 delta 93897 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 QM|PbTmoPn6b)KaDKPjlH_5c6? diff --git a/src/onyxchecker.c b/src/onyxchecker.c index c8b4761b..709a7682 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -509,15 +509,15 @@ CHECK(statement_chain, AstNode* start) { CHECK(block, AstBlock* block) { if (check_statement_chain(state, block->body)) return 1; - forll(AstLocal, local, block->locals->last_local, prev_local) { - if (local->type == NULL) { + bh_table_each_start(AstTyped *, block->scope->symbols); + if (value->type == NULL) { onyx_message_add(state->msgs, ONYX_MESSAGE_TYPE_UNRESOLVED_TYPE, - local->token->pos, - local->token->text, local->token->length); + value->token->pos, + value->token->text, value->token->length); return 1; } - } + bh_table_each_end; return 0; } diff --git a/src/onyxmsgs.c b/src/onyxmsgs.c index f7a6e52b..15768a38 100644 --- a/src/onyxmsgs.c +++ b/src/onyxmsgs.c @@ -14,7 +14,7 @@ static const char* msg_formats[] = { "unknown symbol '%s'", "unknown directive '%b'", - "conflicting declarations of global '%s'", + "redeclaration of symbol '%s'", "mismatched types for binary operator, '%s', '%s'", "mismatched types on assignment, expected '%s', got '%s'", "mismatched types for global '%b'; expected '%s', got '%s'", diff --git a/src/onyxparser.c b/src/onyxparser.c index 8895cc42..641c32d9 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -615,8 +615,6 @@ static AstNode* parse_statement(OnyxParser* parser) { // '{' '}' static AstBlock* parse_block(OnyxParser* parser) { AstBlock* block = make_node(AstBlock, Ast_Kind_Block); - AstLocalGroup* lg = make_node(AstLocalGroup, Ast_Kind_Local_Group); - block->locals = lg; // NOTE: --- is for an empty block if (parser->curr->type == Token_Type_Empty_Block) { diff --git a/src/onyxsempass.c b/src/onyxsempass.c index 0b502c6e..6d793680 100644 --- a/src/onyxsempass.c +++ b/src/onyxsempass.c @@ -7,14 +7,12 @@ SemState onyx_sempass_create(bh_allocator alloc, bh_allocator node_alloc, OnyxMe .allocator = alloc, .node_allocator = node_alloc, - .msgs = msgs, + .global_scope = NULL, + .curr_scope = NULL, - .curr_local_group = NULL, - .symbols = NULL, + .msgs = msgs, }; - bh_table_init(global_heap_allocator, state.symbols, 61); - return state; } diff --git a/src/onyxsymres.c b/src/onyxsymres.c index 37fa5307..c9779517 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -1,13 +1,11 @@ #define BH_DEBUG #include "onyxsempass.h" -static void symbol_introduce(SemState* state, OnyxToken* tkn, AstNode* symbol); -static void symbol_basic_type_introduce(SemState* state, AstBasicType* basic_type); -static b32 symbol_unique_introduce(SemState* state, OnyxToken* tkn, AstNode* symbol); -static void symbol_remove(SemState* state, OnyxToken* tkn); +static b32 symbol_introduce(SemState* state, OnyxToken* tkn, AstNode* symbol); static AstNode* symbol_resolve(SemState* state, OnyxToken* tkn); -static void local_group_enter(SemState* state, AstLocalGroup* local_group); -static void local_group_leave(SemState* state); +static void symbol_basic_type_introduce(SemState* state, AstBasicType* basic_type); +static void scope_enter(SemState* state, Scope* new_scope); +static void scope_leave(SemState* state); static AstType* symres_type(SemState* state, AstType* type); static void symres_local(SemState* state, AstLocal** local); @@ -23,113 +21,71 @@ static void symres_function(SemState* state, AstFunction* func); static void symres_global(SemState* state, AstGlobal* global); static void symres_overloaded_function(SemState* state, AstOverloadedFunction* ofunc); -static void symbol_introduce(SemState* state, OnyxToken* tkn, AstNode* symbol) { +static b32 symbol_introduce(SemState* state, OnyxToken* tkn, AstNode* symbol) { token_toggle_end(tkn); - SemSymbol* sp_sym = (SemSymbol *) bh_alloc_item(state->allocator, SemSymbol); - sp_sym->node = symbol; - sp_sym->shadowed = NULL; - - if (bh_table_has(SemSymbol *, state->symbols, tkn->text)) { - sp_sym->shadowed = bh_table_get(SemSymbol *, state->symbols, tkn->text); + if (bh_table_has(AstNode *, state->curr_scope->symbols, tkn->text)) { + onyx_message_add(state->msgs, + ONYX_MESSAGE_TYPE_REDECLARE_SYMBOL, + tkn->pos, + tkn->text); + token_toggle_end(tkn); + return 0; } - bh_table_put(SemSymbol *, state->symbols, tkn->text, sp_sym); + bh_table_put(AstNode *, state->curr_scope->symbols, tkn->text, symbol); - if (symbol->kind == Ast_Kind_Local) { - AstLocal* local = (AstLocal *) symbol; - local->prev_local = state->curr_local_group->last_local; - state->curr_local_group->last_local = local; - - bh_arr_push(state->curr_function->locals, local); - } + if (symbol->kind == Ast_Kind_Local) + bh_arr_push(state->curr_function->locals, (AstLocal *) symbol); token_toggle_end(tkn); + return 1; } -static void symbol_remove(SemState* state, OnyxToken* tkn) { - token_toggle_end(tkn); - - SemSymbol* sp_sym = bh_table_get(SemSymbol *, state->symbols, tkn->text); - - if (sp_sym->shadowed) { - bh_table_put(SemSymbol *, state->symbols, tkn->text, sp_sym->shadowed); - } else { - bh_table_delete(SemSymbol *, state->symbols, tkn->text); - } - - token_toggle_end(tkn); +static void symbol_basic_type_introduce(SemState* state, AstBasicType* basic_type) { + bh_table_put(AstNode *, state->curr_scope->symbols, basic_type->name, (AstNode *) basic_type); } static AstNode* symbol_resolve(SemState* state, OnyxToken* tkn) { - AstNode* res = NULL; - - while (res == NULL || res->kind == Ast_Kind_Symbol) { - token_toggle_end(tkn); + token_toggle_end(tkn); - if (!bh_table_has(SemSymbol *, state->symbols, tkn->text)) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_UNKNOWN_SYMBOL, - tkn->pos, - tkn->text); + AstNode* res = NULL; + Scope* scope = state->curr_scope; - token_toggle_end(tkn); - return NULL; + while (res == NULL && scope != NULL) { + if (bh_table_has(AstNode *, scope->symbols, tkn->text)) { + res = bh_table_get(AstNode *, scope->symbols, tkn->text); + } else { + scope = scope->parent; } - - res = bh_table_get(SemSymbol *, state->symbols, tkn->text)->node; - token_toggle_end(tkn); - - tkn = res->token; } - return res; -} - -static void local_group_enter(SemState* state, AstLocalGroup* local_group) { - local_group->prev_group = state->curr_local_group; - state->curr_local_group = local_group; -} - -static void local_group_leave(SemState* state) { - assert(state->curr_local_group != NULL); - - for (AstLocal *walker = state->curr_local_group->last_local; walker != NULL; walker = walker->prev_local) { - symbol_remove(state, walker->token); - } - - state->curr_local_group = state->curr_local_group->prev_group; -} - -static void symbol_basic_type_introduce(SemState* state, AstBasicType* basic_type) { - SemSymbol* sp_sym = bh_alloc_item(state->allocator, SemSymbol); - sp_sym->node = (AstNode *) basic_type; - sp_sym->shadowed = NULL; - bh_table_put(SemSymbol *, state->symbols, basic_type->name, sp_sym); -} - -static b32 symbol_unique_introduce(SemState* state, OnyxToken* tkn, AstNode* symbol) { - token_toggle_end(tkn); - - // NOTE: If the function hasn't already been defined - if (!bh_table_has(SemSymbol *, state->symbols, tkn->text)) { - SemSymbol* sp_sym = bh_alloc_item(state->allocator, SemSymbol); - sp_sym->node = symbol; - sp_sym->shadowed = NULL; - bh_table_put(SemSymbol *, state->symbols, tkn->text, sp_sym); - } else { + if (res == NULL ) { onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_CONFLICTING_GLOBALS, + ONYX_MESSAGE_TYPE_UNKNOWN_SYMBOL, tkn->pos, tkn->text); - // NOTE: I really wish C had defer... token_toggle_end(tkn); - return 0; + return NULL; + } + + if (res->kind == Ast_Kind_Symbol) { + token_toggle_end(tkn); + return symbol_resolve(state, res->token); } token_toggle_end(tkn); - return 1; + return res; +} + +static void scope_enter(SemState* state, Scope* new_scope) { + new_scope->parent = state->curr_scope; + state->curr_scope = new_scope; +} + +static void scope_leave(SemState* state) { + state->curr_scope = state->curr_scope->parent; } static AstType* symres_type(SemState* state, AstType* type) { @@ -290,13 +246,23 @@ static void symres_statement_chain(SemState* state, AstNode* walker, AstNode** t } static void symres_block(SemState* state, AstBlock* block) { - local_group_enter(state, block->locals); + if (block->scope == NULL) + block->scope = scope_create(state->node_allocator, state->curr_scope); + + scope_enter(state, block->scope); + if (block->body) symres_statement_chain(state, block->body, &block->body); - local_group_leave(state); + + scope_leave(state); } static void symres_function(SemState* state, AstFunction* func) { + if (func->scope == NULL) + func->scope = scope_create(state->node_allocator, state->curr_scope); + + scope_enter(state, func->scope); + for (AstLocal *param = func->params; param != NULL; param = (AstLocal *) param->next) { param->type_node = symres_type(state, param->type_node); @@ -310,9 +276,7 @@ static void symres_function(SemState* state, AstFunction* func) { state->curr_function = func; symres_block(state, func->body); - for (AstLocal *param = func->params; param != NULL; param = (AstLocal *) param->next) { - symbol_remove(state, param->token); - } + scope_leave(state); } static void symres_global(SemState* state, AstGlobal* global) { @@ -357,6 +321,9 @@ static void symres_top_node(SemState* state, AstNode** node) { void onyx_resolve_symbols(SemState* state, ParserOutput* program) { + state->global_scope = scope_create(state->node_allocator, NULL); + scope_enter(state, state->global_scope); + // NOTE: Add types to global scope symbol_basic_type_introduce(state, &basic_type_void); symbol_basic_type_introduce(state, &basic_type_bool); @@ -373,7 +340,7 @@ void onyx_resolve_symbols(SemState* state, ParserOutput* program) { symbol_basic_type_introduce(state, &basic_type_rawptr); bh_arr_each(AstBinding *, binding, program->top_level_bindings) - if (!symbol_unique_introduce(state, (*binding)->token, (*binding)->node)) return; + if (!symbol_introduce(state, (*binding)->token, (*binding)->node)) return; bh_arr_each(AstNode *, node, program->nodes_to_process) symres_top_node(state, node); diff --git a/src/onyxutils.c b/src/onyxutils.c index 24487a7b..96163faf 100644 --- a/src/onyxutils.c +++ b/src/onyxutils.c @@ -52,6 +52,18 @@ const char* onyx_ast_node_kind_string(AstKind kind) { } + + +Scope* scope_create(bh_allocator a, Scope* parent) { + Scope* scope = bh_alloc_item(a, Scope); + scope->parent = parent; + scope->symbols = NULL; + + bh_table_init(global_heap_allocator, scope->symbols, 16); + + return scope; +} + void onyx_ast_print(AstNode* node, i32 indent) { assert(0); } -- 2.25.1