From 3ca413d03a3a7d7162f0a36e73f05db5b7552b74 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Fri, 11 Dec 2020 17:34:23 -0600 Subject: [PATCH] use statements are now more universal --- docs/todo | 2 +- include/onyxastnodes.h | 1 + onyx | Bin 502252 -> 502356 bytes progs/foo_test.onyx | 2 + progs/odin_example.onyx | 9 ++- src/onyx.c | 7 ++ src/onyxparser.c | 159 ++++++++++++++++++++++------------------ src/onyxsymres.c | 31 +++++--- 8 files changed, 124 insertions(+), 87 deletions(-) diff --git a/docs/todo b/docs/todo index def77412..5c6c3303 100644 --- a/docs/todo +++ b/docs/todo @@ -51,7 +51,7 @@ Language Cohesion: var := some.packages.nested.here.StructName.{ value1, value2, ... }; - [ ] 'use' statements have two different variations and should be unified. + [X] 'use' statements have two different variations and should be unified. They can be used to include a package, 'use package', and they can be used to add names from a namespace to the current scope. The problem is that 'use package' can only be at the top level, and 'use' can only diff --git a/include/onyxastnodes.h b/include/onyxastnodes.h index 9018dfd9..70b19294 100644 --- a/include/onyxastnodes.h +++ b/include/onyxastnodes.h @@ -754,6 +754,7 @@ typedef struct Entity { AstEnumType *enum_type; AstMemRes *mem_res; AstPolyProc *poly_proc; + AstUse *use; }; } Entity; diff --git a/onyx b/onyx index e06f4f93635afe6515cae6b5fbcbb251f8087f2d..9b9eec7bcad59e6b03d35baa93c37b6d28ccad04 100755 GIT binary patch delta 82454 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 diff --git a/progs/foo_test.onyx b/progs/foo_test.onyx index 08e0f2a9..f395f2f5 100644 --- a/progs/foo_test.onyx +++ b/progs/foo_test.onyx @@ -5,3 +5,5 @@ use package core TestFoo :: struct { a: i32; } print_foo :: proc () do println("Foo!"); + +SomeEnum :: enum #flags { Val1; Val2; Val3; } diff --git a/progs/odin_example.onyx b/progs/odin_example.onyx index 76fb770d..e3dea714 100644 --- a/progs/odin_example.onyx +++ b/progs/odin_example.onyx @@ -2,8 +2,6 @@ #include_file "progs/foo_test" use package core -use package test { foo as foo_pkg } -use package test as test Foo :: struct { data1 : i32; @@ -59,6 +57,13 @@ make_bar :: proc () -> Bar { } main :: proc (args: [] cstr) { + use package test { foo as foo_pkg } + use package test as test + use test.foo.SomeEnum + + printf("Val2: %i\n", cast(i32) Val2); + printf("Val3: %i\n", cast(i32) Val3); + foo_pkg.print_foo(); foo := test.foo.TestFoo.{ a = 1234 }; printf("foo.a: %i\n", foo.a); diff --git a/src/onyx.c b/src/onyx.c index a649da20..0229d810 100644 --- a/src/onyx.c +++ b/src/onyx.c @@ -360,6 +360,13 @@ static void merge_parse_results(CompilerState* compiler_state, ParseResults* res break; } + case Ast_Kind_Use: { + ent.type = Entity_Type_Use; + ent.use = (AstUse *) node; + entity_heap_insert(&compiler_state->prog_info.entities, ent); + break; + } + case Ast_Kind_Memres: { ent.type = Entity_Type_Memory_Reservation; ent.mem_res = (AstMemRes *) node; diff --git a/src/onyxparser.c b/src/onyxparser.c index a2028659..67e4c8a2 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -32,7 +32,8 @@ static AstIfWhile* parse_while_stmt(OnyxParser* parser); static AstFor* parse_for_stmt(OnyxParser* parser); static AstSwitch* parse_switch_stmt(OnyxParser* parser); static b32 parse_possible_symbol_declaration(OnyxParser* parser, AstNode** ret); -static AstReturn* parse_return_statement(OnyxParser* parser); +static AstReturn* parse_return_stmt(OnyxParser* parser); +static AstNode* parse_use_stmt(OnyxParser* parser); static AstBlock* parse_block(OnyxParser* parser); static AstNode* parse_statement(OnyxParser* parser); static AstType* parse_type(OnyxParser* parser); @@ -1013,7 +1014,7 @@ static b32 parse_possible_symbol_declaration(OnyxParser* parser, AstNode** ret) } // 'return' ? -static AstReturn* parse_return_statement(OnyxParser* parser) { +static AstReturn* parse_return_stmt(OnyxParser* parser) { AstReturn* return_node = make_node(AstReturn, Ast_Kind_Return); return_node->token = expect_token(parser, Token_Type_Keyword_Return); @@ -1032,6 +1033,82 @@ static AstReturn* parse_return_statement(OnyxParser* parser) { return return_node; } +static AstNode* parse_use_stmt(OnyxParser* parser) { + OnyxToken* use_token = expect_token(parser, Token_Type_Keyword_Use); + + if (parser->curr->type == Token_Type_Keyword_Package) { + expect_token(parser, Token_Type_Keyword_Package); + + AstUsePackage* upack = make_node(AstUsePackage, Ast_Kind_Use_Package); + upack->token = use_token; + + AstNode* pack_symbol = make_node(AstNode, Ast_Kind_Symbol); + pack_symbol->token = expect_token(parser, Token_Type_Symbol); + + // CLEANUP: This is just gross. + if (parser->curr->type == '.') { + consume_token(parser); + pack_symbol->token->length += 1; + + while (1) { + if (parser->hit_unexpected_token) break; + + OnyxToken* symbol = expect_token(parser, Token_Type_Symbol); + pack_symbol->token->length += symbol->length; + + if (parser->curr->type == '.') { + pack_symbol->token->length += 1; + consume_token(parser); + } else { + break; + } + } + } + + upack->package = (AstPackage *) pack_symbol; + + if (parser->curr->type == Token_Type_Keyword_As) { + consume_token(parser); + upack->alias = expect_token(parser, Token_Type_Symbol); + } + + if (parser->curr->type == '{') { + consume_token(parser); + + bh_arr_new(global_heap_allocator, upack->only, 4); + + while (parser->curr->type != '}') { + if (parser->hit_unexpected_token) return NULL; + + AstAlias* alias = make_node(AstAlias, Ast_Kind_Alias); + alias->token = expect_token(parser, Token_Type_Symbol); + + if (parser->curr->type == Token_Type_Keyword_As) { + consume_token(parser); + alias->alias = expect_token(parser, Token_Type_Symbol); + } else { + alias->alias = alias->token; + } + + bh_arr_push(upack->only, alias); + + if (parser->curr->type != '}') + expect_token(parser, ','); + } + + consume_token(parser); + } + + return (AstNode *) upack; + + } else { + AstUse* use_node = make_node(AstUse, Ast_Kind_Use); + use_node->token = use_token; + use_node->expr = parse_expression(parser); + return (AstNode *) use_node; + } +} + // ; // // ; @@ -1046,7 +1123,7 @@ static AstNode* parse_statement(OnyxParser* parser) { switch ((u16) parser->curr->type) { case Token_Type_Keyword_Return: - retval = (AstNode *) parse_return_statement(parser); + retval = (AstNode *) parse_return_stmt(parser); break; case '{': @@ -1152,11 +1229,12 @@ static AstNode* parse_statement(OnyxParser* parser) { } case Token_Type_Keyword_Use: { - AstUse* use_node = make_node(AstUse, Ast_Kind_Use); - use_node->token = expect_token(parser, Token_Type_Keyword_Use); - use_node->expr = parse_expression(parser); + // AstUse* use_node = make_node(AstUse, Ast_Kind_Use); + // use_node->token = expect_token(parser, Token_Type_Keyword_Use); + // use_node->expr = parse_expression(parser); - retval = (AstNode *) use_node; + needs_semicolon = 0; + retval = (AstNode *) parse_use_stmt(parser); break; } @@ -1835,71 +1913,8 @@ static AstNode* parse_top_level_statement(OnyxParser* parser) { switch ((u16) parser->curr->type) { case Token_Type_Keyword_Use: { - OnyxToken* use_token = expect_token(parser, Token_Type_Keyword_Use); - - expect_token(parser, Token_Type_Keyword_Package); - - AstUsePackage* upack = make_node(AstUsePackage, Ast_Kind_Use_Package); - upack->token = use_token; - - AstNode* pack_symbol = make_node(AstNode, Ast_Kind_Symbol); - pack_symbol->token = expect_token(parser, Token_Type_Symbol); - - // CLEANUP: This is just gross. - if (parser->curr->type == '.') { - consume_token(parser); - pack_symbol->token->length += 1; - - while (1) { - if (parser->hit_unexpected_token) break; - - OnyxToken* symbol = expect_token(parser, Token_Type_Symbol); - pack_symbol->token->length += symbol->length; - - if (parser->curr->type == '.') { - pack_symbol->token->length += 1; - consume_token(parser); - } else { - break; - } - } - } - - upack->package = (AstPackage *) pack_symbol; - - if (parser->curr->type == Token_Type_Keyword_As) { - consume_token(parser); - upack->alias = expect_token(parser, Token_Type_Symbol); - } - - if (parser->curr->type == '{') { - consume_token(parser); - - bh_arr_new(global_heap_allocator, upack->only, 4); - - while (parser->curr->type != '}') { - if (parser->hit_unexpected_token) return NULL; - - AstAlias* alias = make_node(AstAlias, Ast_Kind_Alias); - alias->token = expect_token(parser, Token_Type_Symbol); - - if (parser->curr->type == Token_Type_Keyword_As) { - consume_token(parser); - alias->alias = expect_token(parser, Token_Type_Symbol); - } else { - alias->alias = alias->token; - } - - bh_arr_push(upack->only, alias); - - if (parser->curr->type != '}') - expect_token(parser, ','); - } - - consume_token(parser); - } - - add_node_to_process(parser, (AstNode *) upack); + AstNode* use_node = parse_use_stmt(parser); + add_node_to_process(parser, use_node); return NULL; } diff --git a/src/onyxsymres.c b/src/onyxsymres.c index 7d054a2e..f1683e3c 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -517,17 +517,18 @@ cannot_use: // NOTE: Returns 1 if the statment should be removed static b32 symres_statement(AstNode** stmt) { switch ((*stmt)->kind) { - case Ast_Kind_Local: symres_local((AstLocal **) stmt); return 1; - case Ast_Kind_Return: symres_return((AstReturn *) *stmt); return 0; - case Ast_Kind_If: symres_if((AstIfWhile *) *stmt); return 0; - case Ast_Kind_While: symres_while((AstIfWhile *) *stmt); return 0; - case Ast_Kind_For: symres_for((AstFor *) *stmt); return 0; - case Ast_Kind_Switch: symres_switch((AstSwitch *) *stmt); return 0; - case Ast_Kind_Call: symres_call((AstCall *) *stmt); return 0; - case Ast_Kind_Argument: symres_expression((AstTyped **) &((AstArgument *) *stmt)->value); return 0; - case Ast_Kind_Block: symres_block((AstBlock *) *stmt); return 0; - case Ast_Kind_Defer: symres_statement(&((AstDefer *) *stmt)->stmt); return 0; - case Ast_Kind_Use: symres_use((AstUse *) *stmt); return 1; + case Ast_Kind_Local: symres_local((AstLocal **) stmt); return 1; + case Ast_Kind_Return: symres_return((AstReturn *) *stmt); return 0; + case Ast_Kind_If: symres_if((AstIfWhile *) *stmt); return 0; + case Ast_Kind_While: symres_while((AstIfWhile *) *stmt); return 0; + case Ast_Kind_For: symres_for((AstFor *) *stmt); return 0; + case Ast_Kind_Switch: symres_switch((AstSwitch *) *stmt); return 0; + case Ast_Kind_Call: symres_call((AstCall *) *stmt); return 0; + case Ast_Kind_Argument: symres_expression((AstTyped **) &((AstArgument *) *stmt)->value); return 0; + case Ast_Kind_Block: symres_block((AstBlock *) *stmt); return 0; + case Ast_Kind_Defer: symres_statement(&((AstDefer *) *stmt)->stmt); return 0; + case Ast_Kind_Use: symres_use((AstUse *) *stmt); return 1; + case Ast_Kind_Use_Package: symres_use_package((AstUsePackage *) *stmt); return 1; case Ast_Kind_Jump: return 0; @@ -787,6 +788,8 @@ void symres_entity(Entity* ent) { semstate.curr_package = ent->package; } + EntityState next_state = Entity_State_Check_Types; + switch (ent->type) { case Entity_Type_Foreign_Function_Header: case Entity_Type_Function: symres_function(ent->function); break; @@ -795,6 +798,10 @@ void symres_entity(Entity* ent) { case Entity_Type_Global_Header: symres_global(ent->global); break; case Entity_Type_Use_Package: symres_use_package(ent->use_package); break; + case Entity_Type_Use: symres_use(ent->use); + next_state = Entity_State_Finalized; + break; + case Entity_Type_Overloaded_Function: symres_overloaded_function(ent->overloaded_function); break; case Entity_Type_Expression: symres_expression(&ent->expr); break; case Entity_Type_Type_Alias: ent->type_alias = symres_type(ent->type_alias); break; @@ -806,7 +813,7 @@ void symres_entity(Entity* ent) { default: break; } - ent->state = Entity_State_Check_Types; + ent->state = next_state; if (ent->package) scope_leave(); } -- 2.25.1