From b7a09d2b1d3c66e09dddd75cb7a586009d91dd0e Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Wed, 8 Jul 2020 15:56:01 -0500 Subject: [PATCH] Renamed 'scope' to 'localgroup' since scope didn't feel right --- include/onyxastnodes.h | 10 +++++----- include/onyxsempass.h | 3 ++- onyx | Bin 213816 -> 210568 bytes src/onyxparser.c | 4 ++-- src/onyxsempass.c | 14 +++++++------- src/onyxsymres.c | 28 +++++++++++++--------------- src/onyxtypecheck.c | 2 +- src/onyxutils.c | 6 ++++++ src/onyxwasm.c | 5 ++--- 9 files changed, 38 insertions(+), 34 deletions(-) diff --git a/include/onyxastnodes.h b/include/onyxastnodes.h index c1507514..cdb7a71c 100644 --- a/include/onyxastnodes.h +++ b/include/onyxastnodes.h @@ -10,7 +10,7 @@ typedef struct AstNodeBinOp AstNodeBinOp; typedef struct AstNodeAssign AstNodeAssign; typedef struct AstNodeNumLit AstNodeNumLit; typedef struct AstNodeLocal AstNodeLocal; -typedef struct AstNodeScope AstNodeScope; +typedef struct AstNodeLocalGroup AstNodeLocalGroup; typedef struct AstNodeReturn AstNodeReturn; typedef struct AstNodeBlock AstNodeBlock; typedef struct AstNodeIf AstNodeIf; @@ -30,7 +30,7 @@ typedef enum AstNodeKind { AST_NODE_KIND_FUNCTION, AST_NODE_KIND_FOREIGN, AST_NODE_KIND_BLOCK, - AST_NODE_KIND_SCOPE, + AST_NODE_KIND_LOCAL_GROUP, AST_NODE_KIND_LOCAL, AST_NODE_KIND_GLOBAL, AST_NODE_KIND_SYMBOL, @@ -178,10 +178,10 @@ struct AstNodeReturn { AstNodeTyped* expr; }; -struct AstNodeScope { +struct AstNodeLocalGroup { AstNode base; - AstNodeScope *prev_scope; + AstNodeLocalGroup *prev_group; AstNodeLocal *last_local; }; @@ -189,7 +189,7 @@ struct AstNodeBlock { AstNode base; AstNode *body; - AstNodeScope *scope; + AstNodeLocalGroup *locals; }; struct AstNodeIf { diff --git a/include/onyxsempass.h b/include/onyxsempass.h index a2bb7918..220fe8b2 100644 --- a/include/onyxsempass.h +++ b/include/onyxsempass.h @@ -19,11 +19,12 @@ typedef struct OnyxSemPassState { OnyxMessages *msgs; // NOTE: Used in symbol resolution phase - AstNodeScope* curr_scope; + AstNodeLocalGroup* curr_local_group; // NOTE: Used in type checking phase TypeInfo* expected_return_type; + // NOTE: All symbols a given point that we can resolve bh_table(SemPassSymbol *) symbols; } OnyxSemPassState; diff --git a/onyx b/onyx index e0cd5c77f1552d18e67b77a739aeb7e08a87196d..06e673ce731eb422696e94b4509f95882b577338 100755 GIT binary patch delta 58368 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%0DqJOf0P7&lmvg21b>tSf0P7&lmvg2 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 QTTrBvqfPZ`4=d|`0Qabhv;Y7A delta 63836 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 QZ+scope = scope; + AstNodeLocalGroup* lg = make_node(AstNodeLocalGroup, AST_NODE_KIND_LOCAL_GROUP); + block->locals = lg; // --- is for an empty block if (parser->curr_token->type == '-') { diff --git a/src/onyxsempass.c b/src/onyxsempass.c index d3b8c905..df81f551 100644 --- a/src/onyxsempass.c +++ b/src/onyxsempass.c @@ -9,7 +9,7 @@ OnyxSemPassState onyx_sempass_create(bh_allocator alloc, bh_allocator node_alloc .msgs = msgs, - .curr_scope = NULL, + .curr_local_group = NULL, .symbols = NULL, }; @@ -29,7 +29,7 @@ static void collapse_scopes(OnyxProgram* program) { bh_arr_set_length(traversal_queue, 0); bh_arr_each(AstNodeFunction *, func, program->functions) { - AstNodeScope* top_scope = (*func)->body->scope; + AstNodeLocalGroup* top_locals = (*func)->body->locals; bh_arr_push(traversal_queue, (*func)->body); while (!bh_arr_is_empty(traversal_queue)) { @@ -45,13 +45,13 @@ static void collapse_scopes(OnyxProgram* program) { } else { - if (block->scope != top_scope && block->scope->last_local != NULL) { - AstNodeLocal* last_local = block->scope->last_local; + if (block->locals != top_locals && block->locals->last_local != NULL) { + AstNodeLocal* last_local = block->locals->last_local; while (last_local && last_local->prev_local != NULL) last_local = last_local->prev_local; - last_local->prev_local = top_scope->last_local; - top_scope->last_local = block->scope->last_local; - block->scope->last_local = NULL; + last_local->prev_local = top_locals->last_local; + top_locals->last_local = block->locals->last_local; + block->locals->last_local = NULL; } AstNode* walker = block->body; diff --git a/src/onyxsymres.c b/src/onyxsymres.c index b91e93b6..463fff61 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -5,8 +5,8 @@ static void symbol_introduce(OnyxSemPassState* state, AstNode* symbol); static b32 symbol_unique_introduce(OnyxSemPassState* state, AstNode* symbol); static void symbol_remove(OnyxSemPassState* state, AstNode* symbol); static AstNode* symbol_resolve(OnyxSemPassState* state, AstNode* symbol); -static void scope_enter(OnyxSemPassState* state, AstNodeScope* scope); -static AstNodeScope* scope_leave(OnyxSemPassState* state); +static void local_group_enter(OnyxSemPassState* state, AstNodeLocalGroup* local_group); +static void local_group_leave(OnyxSemPassState* state); static void symres_local(OnyxSemPassState* state, AstNodeLocal** local); static void symres_call(OnyxSemPassState* state, AstNodeCall* call); static void symres_expression(OnyxSemPassState* state, AstNode** expr); @@ -34,8 +34,8 @@ static void symbol_introduce(OnyxSemPassState* state, AstNode* symbol) { if (symbol->kind == AST_NODE_KIND_LOCAL) { AstNodeLocal* local = (AstNodeLocal *) symbol; - local->prev_local = state->curr_scope->last_local; - state->curr_scope->last_local = local; + local->prev_local = state->curr_local_group->last_local; + state->curr_local_group->last_local = local; } onyx_token_null_toggle(symbol->token); @@ -74,21 +74,19 @@ static AstNode* symbol_resolve(OnyxSemPassState* state, AstNode* symbol) { return sp_sym->node; } -static void scope_enter(OnyxSemPassState* state, AstNodeScope* scope) { - scope->prev_scope = state->curr_scope; - state->curr_scope = scope; +static void local_group_enter(OnyxSemPassState* state, AstNodeLocalGroup* local_group) { + local_group->prev_group = state->curr_local_group; + state->curr_local_group = local_group; } -static AstNodeScope* scope_leave(OnyxSemPassState* state) { - // NOTE: Can't leave a scope if there is no scope - assert(state->curr_scope != NULL); +static void local_group_leave(OnyxSemPassState* state) { + assert(state->curr_local_group != NULL); - for (AstNodeLocal *walker = state->curr_scope->last_local; walker != NULL; walker = walker->prev_local) { + for (AstNodeLocal *walker = state->curr_local_group->last_local; walker != NULL; walker = walker->prev_local) { symbol_remove(state, (AstNode *) walker); } - state->curr_scope = state->curr_scope->prev_scope; - return state->curr_scope; + state->curr_local_group = state->curr_local_group->prev_group; } static b32 symbol_unique_introduce(OnyxSemPassState* state, AstNode* symbol) { @@ -230,10 +228,10 @@ static void symres_statement_chain(OnyxSemPassState* state, AstNode* walker, Ast } static void symres_block(OnyxSemPassState* state, AstNodeBlock* block) { - scope_enter(state, block->scope); + local_group_enter(state, block->locals); if (block->body) symres_statement_chain(state, block->body, &block->body); - scope_leave(state); + local_group_leave(state); } static void symres_function(OnyxSemPassState* state, AstNodeFunction* func) { diff --git a/src/onyxtypecheck.c b/src/onyxtypecheck.c index 04288c44..869e89af 100644 --- a/src/onyxtypecheck.c +++ b/src/onyxtypecheck.c @@ -311,7 +311,7 @@ static void typecheck_statement_chain(OnyxSemPassState* state, AstNode* start) { static void typecheck_block(OnyxSemPassState* state, AstNodeBlock* block) { typecheck_statement_chain(state, block->body); - forll(AstNodeLocal, local, block->scope->last_local, prev_local) { + forll(AstNodeLocal, local, block->locals->last_local, prev_local) { if (!local->base.type->is_known) { onyx_message_add(state->msgs, ONYX_MESSAGE_TYPE_UNRESOLVED_TYPE, diff --git a/src/onyxutils.c b/src/onyxutils.c index 60fba38f..7fff9577 100644 --- a/src/onyxutils.c +++ b/src/onyxutils.c @@ -45,6 +45,10 @@ const char* onyx_ast_node_kind_string(AstNodeKind kind) { } +void onyx_ast_print(AstNode* node, i32 indent) { + assert(0); +} +#if 0 #define print_indent { if (indent > 0) bh_printf("\n"); for (int i = 0; i < indent; i++) bh_printf(" "); } @@ -227,3 +231,5 @@ void onyx_ast_print(AstNode* node, i32 indent) { node = node->next; } } + +#endif diff --git a/src/onyxwasm.c b/src/onyxwasm.c index 9370999c..7f5a5061 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -280,7 +280,6 @@ static void compile_statement(OnyxWasmModule* mod, bh_arr(WasmInstruction)* pcod bh_arr(WasmInstruction) code = *pcode; switch (stmt->kind) { - case AST_NODE_KIND_SCOPE: break; case AST_NODE_KIND_RETURN: compile_return(mod, &code, (AstNodeReturn *) stmt); break; case AST_NODE_KIND_ASSIGNMENT: compile_assignment(mod, &code, (AstNodeAssign *) stmt); break; case AST_NODE_KIND_IF: compile_if(mod, &code, (AstNodeIf *) stmt); break; @@ -671,7 +670,7 @@ static i32 generate_type_idx(OnyxWasmModule* mod, AstNodeFunction* fd) { type->param_count = param_count; // HACK ish thing - memcpy(type->param_types, type_repr_buf, type->param_count); + memcpy(type->param_types, type_repr_buf, type->param_count); bh_arr_push(mod->functypes, type); @@ -728,7 +727,7 @@ static void compile_function(OnyxWasmModule* mod, AstNodeFunction* fd) { // is the same as the order of the local_types above u8* count = &wasm_func.locals.i32_count; fori (ti, 0, 3) { - forll (AstNodeLocal, local, fd->body->scope->last_local, prev_local) { + forll (AstNodeLocal, local, fd->body->locals->last_local, prev_local) { if (onyx_type_to_wasm_type(local->base.type) == local_types[ti]) { bh_imap_put(&mod->local_map, (u64) local, localidx++); -- 2.25.1