From c8981a401661ffa2e451b4552aabf8ae6fc9c14b Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Thu, 16 Jul 2020 23:24:13 -0500 Subject: [PATCH] Added back WASM globals; small name changes --- .vimspector.json | 2 +- include/onyxastnodes.h | 26 ++- include/onyxlex.h | 6 +- include/onyxparser.h | 4 +- misc/onyx.vim | 2 +- onyx | Bin 240192 -> 240984 bytes progs/basic.onyx | 14 +- progs/test.onyx | 8 +- src/onyx.c | 2 + src/onyxchecker.c | 38 ++-- src/onyxir.c | 16 +- src/onyxlex.c | 9 +- src/onyxparser.c | 448 +++++++++++++++++++++++------------------ src/onyxsymres.c | 59 ++++-- src/onyxwasm.c | 109 +++++----- 15 files changed, 412 insertions(+), 331 deletions(-) diff --git a/.vimspector.json b/.vimspector.json index e309f7f9..88493853 100644 --- a/.vimspector.json +++ b/.vimspector.json @@ -6,7 +6,7 @@ "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/onyx", - "args": ["progs/test.onyx"], + "args": ["progs/basic.onyx"], "stopAtEntry": true, "cwd": "${workspaceFolder}", "environment": [], diff --git a/include/onyxastnodes.h b/include/onyxastnodes.h index 189a3f0f..7f6278f0 100644 --- a/include/onyxastnodes.h +++ b/include/onyxastnodes.h @@ -180,8 +180,21 @@ struct AstFunctionType { AstType base; AstType* return_type; u64 param_count; A // Top level nodes struct AstBinding { AstTyped base; AstNode* node; }; struct AstForeign { AstNode base; OnyxToken *mod_token, *name_token; AstNode *import; }; -struct AstGlobal { AstTyped base; AstTyped *initial_value; }; struct AstUse { AstNode base; OnyxToken *filename; }; +struct AstGlobal { + AstTyped base; + + union { + // NOTE: Used when a global is exported with a specific name + OnyxToken* exported_name; + + // NOTE: Used when the global is declared as foreign + struct { + OnyxToken* foreign_module; + OnyxToken* foreign_name; + }; + }; +}; struct AstFunction { AstTyped base; @@ -192,11 +205,13 @@ struct AstFunction { // NOTE: Used when a function is exported with a specific name OnyxToken* exported_name; OnyxToken* intrinsic_name; - }; - // NOTE: Used when the function is declared as foreign - OnyxToken* foreign_module; - OnyxToken* foreign_name; + // NOTE: Used when the function is declared as foreign + struct { + OnyxToken* foreign_module; + OnyxToken* foreign_name; + }; + }; }; typedef enum OnyxIntrinsic { @@ -237,6 +252,7 @@ typedef struct ParserOutput { bh_arr(AstNode *) nodes_to_process; bh_arr(AstFunction *) functions; + bh_arr(AstGlobal *) globals; } ParserOutput; diff --git a/include/onyxlex.h b/include/onyxlex.h index 9a6d407a..87e957e7 100644 --- a/include/onyxlex.h +++ b/include/onyxlex.h @@ -17,7 +17,7 @@ typedef enum TokenType { Token_Type_Keyword_Else = 263, Token_Type_Keyword_Elseif = 264, Token_Type_Keyword_Return = 265, - Token_Type_Keyword_Foreign = 266, + Token_Type_Keyword_Global = 266, Token_Type_Keyword_Proc = 267, Token_Type_Keyword_Cast = 268, Token_Type_Keyword_While = 269, @@ -71,8 +71,8 @@ typedef struct OnyxTokenizer { bh_arr(OnyxToken) tokens; } OnyxTokenizer; -const char* onyx_get_token_type_name(TokenType tkn_type); -void onyx_token_null_toggle(OnyxToken* tkn); +const char* token_name(TokenType tkn_type); +void token_toggle_end(OnyxToken* tkn); OnyxToken* onyx_get_token(OnyxTokenizer* tokenizer); OnyxTokenizer onyx_tokenizer_create(bh_allocator allocator, bh_file_contents *fc); void onyx_tokenizer_free(OnyxTokenizer* tokenizer); diff --git a/include/onyxparser.h b/include/onyxparser.h index fba6bfaf..74ad6030 100644 --- a/include/onyxparser.h +++ b/include/onyxparser.h @@ -23,8 +23,8 @@ typedef struct OnyxParser { // NOTE: not used since all tokens are lexed before parsing starts OnyxTokenizer *tokenizer; - OnyxToken *prev_token; - OnyxToken *curr_token; + OnyxToken *prev; + OnyxToken *curr; OnyxMessages *msgs; diff --git a/misc/onyx.vim b/misc/onyx.vim index 23ebf5b7..bf1fdd66 100644 --- a/misc/onyx.vim +++ b/misc/onyx.vim @@ -10,7 +10,7 @@ endif let s:cpo_save = &cpo set cpo&vim -syn keyword onyxKeyword struct proc use +syn keyword onyxKeyword struct proc use global syn keyword onyxKeyword if elseif else syn keyword onyxKeyword for while do syn keyword onyxKeyword break continue return diff --git a/onyx b/onyx index 9d590f0dfd7a1948f0226e39658a488e6c90b6b0..fd4bedcb20862c19a59c7121606cc59296155794 100755 GIT binary patch literal 240984 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 U;W-)e@BK~9e_vXLv`6p%18nze&j0`b literal 240192 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

=A)%&3Oif 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 Cza8)Z diff --git a/progs/basic.onyx b/progs/basic.onyx index fdba0aec..1d10f18e 100644 --- a/progs/basic.onyx +++ b/progs/basic.onyx @@ -1,5 +1,3 @@ -use "progs/intrinsics" - pointer_test :: proc { p := 0 as ^i32; } @@ -23,16 +21,19 @@ foo :: proc (n: i32) -> i32 { // OR // This could be immediately substituted in the expression tree. i.e. // 4 + global => 4 + (5 * 2 + 6) -global :: 5 * 2 + 6 +global_value :: 5 * 2 + 6 // WASM globals would be declared as such: -// wasm_global :: global i32 +wasm_global :: global i32 main :: proc #export { a := 16; print(clz_i32(a)); - print(4 + global); + wasm_global = 5 + global_value; + print(wasm_global); + + print(4 + global_value); b := 1 + foo(2); print(b); @@ -45,3 +46,6 @@ main :: proc #export { cond :: true; print(test(cond) as i32); } + +use "progs/intrinsics" + diff --git a/progs/test.onyx b/progs/test.onyx index 1e6a9277..3d546c15 100644 --- a/progs/test.onyx +++ b/progs/test.onyx @@ -17,8 +17,9 @@ echo :: proc (n: i32) -> i32 { global_value :: echo(fib(4) * 2); -local_brute :: proc { +test_proc :: local_brute; +local_brute :: proc { a := 123; b := 123.0f; c := 123.0; @@ -36,10 +37,6 @@ local_brute :: proc { print_f64(c); } -main3 :: proc #export { - local_brute(); -} - // This is the entry point main2 :: proc #export { i := 0; @@ -90,6 +87,7 @@ main2 :: proc #export { // } main :: proc #export { + test_proc(); local_brute(); print_i32(clz_i32(16)); diff --git a/src/onyx.c b/src/onyx.c index 93824ca0..d0a6da5f 100644 --- a/src/onyx.c +++ b/src/onyx.c @@ -172,6 +172,7 @@ static void compiler_state_init(CompilerState* compiler_state, OnyxCompileOption bh_arr_new(global_heap_allocator, compiler_state->parse_output.top_level_bindings, 4); bh_arr_new(global_heap_allocator, compiler_state->parse_output.nodes_to_process, 4); bh_arr_new(global_heap_allocator, compiler_state->parse_output.functions, 4); + bh_arr_new(global_heap_allocator, compiler_state->parse_output.globals, 4); bh_arena_init(&compiler_state->msg_arena, opts->allocator, 4096); compiler_state->msg_alloc = bh_arena_allocator(&compiler_state->msg_arena); @@ -271,6 +272,7 @@ int main(int argc, char *argv[]) { .nodes_to_process = NULL, .functions = NULL, + .globals = NULL, }, .wasm_mod = { 0 } }; diff --git a/src/onyxchecker.c b/src/onyxchecker.c index 51e3d552..05f34e44 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -146,7 +146,7 @@ static b32 check_call(OnyxSemPassState* state, AstCall* call) { call->base.kind = Ast_Kind_Intrinsic_Call; call->callee = NULL; - onyx_token_null_toggle(callee->intrinsic_name); + token_toggle_end(callee->intrinsic_name); char* intr_name = callee->intrinsic_name->text; OnyxIntrinsic intrinsic = ONYX_INTRINSIC_UNDEFINED; @@ -200,7 +200,7 @@ static b32 check_call(OnyxSemPassState* state, AstCall* call) { ((AstIntrinsicCall *)call)->intrinsic = intrinsic; - onyx_token_null_toggle(callee->intrinsic_name); + token_toggle_end(callee->intrinsic_name); } call->base.type = callee->base.type->Function.return_type; @@ -379,34 +379,16 @@ static b32 check_expression(OnyxSemPassState* state, AstTyped* expr) { } static b32 check_global(OnyxSemPassState* state, AstGlobal* global) { - if (global->initial_value) { - if (check_expression(state, global->initial_value)) return 1; - - if (global->base.type == NULL) { - global->base.type = type_build_from_ast(state->node_allocator, global->base.type_node); - } - - if (global->base.type != NULL) { - if (!types_are_compatible(global->base.type, global->initial_value->type)) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_GLOBAL_TYPE_MISMATCH, - global->base.token->pos, - global->base.token->text, global->base.token->length, - type_get_name(global->base.type), - type_get_name(global->initial_value->type)); - return 1; - } - } else { - if (global->initial_value->type) - global->base.type = global->initial_value->type; - } - } + if (global->base.type == NULL) + global->base.type = type_build_from_ast(state->allocator, global->base.type_node); if (global->base.type == NULL) { onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_LITERAL, + ONYX_MESSAGE_TYPE_UNRESOLVED_TYPE, global->base.token->pos, - "global variable with unknown type"); + global->exported_name->text, + global->exported_name->length); + return 1; } @@ -541,5 +523,9 @@ void onyx_type_check(OnyxSemPassState* state, ParserOutput* program) { if ((*node)->kind == Ast_Kind_Function) { bh_arr_push(program->functions, (AstFunction *) *node); } + + if ((*node)->kind == Ast_Kind_Global) { + bh_arr_push(program->globals, (AstGlobal *) *node); + } } } diff --git a/src/onyxir.c b/src/onyxir.c index 1002249b..e326eed7 100644 --- a/src/onyxir.c +++ b/src/onyxir.c @@ -90,25 +90,25 @@ IR_FUNC(ir_function, AstFunction* ast_func) { func->is_intrinsic = (ast_func->base.flags & Ast_Flag_Intrinsic) != 0; if (func->is_intrinsic) { - onyx_token_null_toggle(ast_func->base.token); + token_toggle_end(ast_func->base.token); func->intrinsic = intrinsic_lookup(ast_func->base.token->text); - onyx_token_null_toggle(ast_func->base.token); + token_toggle_end(ast_func->base.token); } else if (func->is_exported) { - onyx_token_null_toggle(ast_func->base.token); + token_toggle_end(ast_func->base.token); func->exported_name = bh_aprintf(c->allocator, "%s", ast_func->base.token->text); - onyx_token_null_toggle(ast_func->base.token); + token_toggle_end(ast_func->base.token); } else if (func->is_foreign) { - onyx_token_null_toggle(ast_func->foreign_module); + token_toggle_end(ast_func->foreign_module); func->foreign_module = bh_aprintf(c->allocator, "%s", ast_func->foreign_module); - onyx_token_null_toggle(ast_func->foreign_module); + token_toggle_end(ast_func->foreign_module); - onyx_token_null_toggle(ast_func->foreign_name); + token_toggle_end(ast_func->foreign_name); func->foreign_module = bh_aprintf(c->allocator, "%s", ast_func->foreign_name); - onyx_token_null_toggle(ast_func->foreign_name); + token_toggle_end(ast_func->foreign_name); } if (func->body != NULL) { diff --git a/src/onyxlex.c b/src/onyxlex.c index 6987e51b..1c6edea8 100644 --- a/src/onyxlex.c +++ b/src/onyxlex.c @@ -15,7 +15,7 @@ static const char* token_type_names[] = { "else", "elseif", "return", - "foreign", + "global", "proc", "as", "while", @@ -79,7 +79,7 @@ static b32 token_lit(OnyxTokenizer* tokenizer, OnyxToken* tk, char* lit, b32 is_ return 0; } -const char* onyx_get_token_type_name(TokenType tkn_type) { +const char* token_name(TokenType tkn_type) { if (tkn_type < Token_Type_Ascii_End) { return bh_aprintf(global_scratch_allocator, "%c", (char) tkn_type); } else { @@ -87,7 +87,7 @@ const char* onyx_get_token_type_name(TokenType tkn_type) { } } -void onyx_token_null_toggle(OnyxToken* tkn) { +void token_toggle_end(OnyxToken* tkn) { static char backup = 0; char tmp = tkn->text[tkn->length]; tkn->text[tkn->length] = backup; @@ -129,12 +129,11 @@ OnyxToken* onyx_get_token(OnyxTokenizer* tokenizer) { } LITERAL_TOKEN("struct", 1, Token_Type_Keyword_Struct); -// LITERAL_TOKEN("export", 1, Token_Type_Keyword_Export); LITERAL_TOKEN("use", 1, Token_Type_Keyword_Use); LITERAL_TOKEN("if", 1, Token_Type_Keyword_If); LITERAL_TOKEN("elseif", 1, Token_Type_Keyword_Elseif); LITERAL_TOKEN("else", 1, Token_Type_Keyword_Else); - // LITERAL_TOKEN("foreign", 1, Token_Type_Keyword_Foreign); + LITERAL_TOKEN("global", 1, Token_Type_Keyword_Global); LITERAL_TOKEN("return", 1, Token_Type_Keyword_Return); LITERAL_TOKEN("proc", 1, Token_Type_Keyword_Proc); LITERAL_TOKEN("as", 1, Token_Type_Keyword_Cast); diff --git a/src/onyxparser.c b/src/onyxparser.c index 48799935..a8ef82ec 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -23,10 +23,10 @@ AstBasicType basic_type_f64 = { { Ast_Kind_Basic_Type, 0, "f64" }, &basic_ AstBasicType basic_type_rawptr = { { Ast_Kind_Basic_Type, 0, "rawptr" }, &basic_types[Basic_Kind_Rawptr] }; // NOTE: Forward declarations -static void parser_next_token(OnyxParser* parser); -static void parser_prev_token(OnyxParser* parser); +static void consume_token(OnyxParser* parser); +static void unconsume_token(OnyxParser* parser); static b32 is_terminating_token(TokenType token_type); -static OnyxToken* expect(OnyxParser* parser, TokenType token_type); +static OnyxToken* expect_token(OnyxParser* parser, TokenType token_type); static AstNumLit* parse_numeric_literal(OnyxParser* parser); static AstTyped* parse_factor(OnyxParser* parser); @@ -40,19 +40,21 @@ static AstNode* parse_statement(OnyxParser* parser); static AstType* parse_type(OnyxParser* parser); static AstLocal* parse_function_params(OnyxParser* parser); static AstFunction* parse_function_definition(OnyxParser* parser); +static AstTyped* parse_global_declaration(OnyxParser* parser); +static AstTyped* parse_top_level_expression(OnyxParser* parser); static AstNode* parse_top_level_statement(OnyxParser* parser); -static void parser_next_token(OnyxParser* parser) { - parser->prev_token = parser->curr_token; - parser->curr_token++; - while (parser->curr_token->type == Token_Type_Comment) parser->curr_token++; +static void consume_token(OnyxParser* parser) { + parser->prev = parser->curr; + parser->curr++; + while (parser->curr->type == Token_Type_Comment) parser->curr++; } -static void parser_prev_token(OnyxParser* parser) { +static void unconsume_token(OnyxParser* parser) { // TODO: This is probably wrong - while (parser->prev_token->type == Token_Type_Comment) parser->prev_token--; - parser->curr_token = parser->prev_token; - parser->prev_token--; + while (parser->prev->type == Token_Type_Comment) parser->prev--; + parser->curr = parser->prev; + parser->prev--; } static b32 is_terminating_token(TokenType token_type) { @@ -63,21 +65,21 @@ static b32 is_terminating_token(TokenType token_type) { } static void find_token(OnyxParser* parser, TokenType token_type) { - while (parser->curr_token->type != token_type && !is_terminating_token(parser->curr_token->type)) { - parser_next_token(parser); + while (parser->curr->type != token_type && !is_terminating_token(parser->curr->type)) { + consume_token(parser); } } // Advances to next token no matter what -static OnyxToken* expect(OnyxParser* parser, TokenType token_type) { - OnyxToken* token = parser->curr_token; - parser_next_token(parser); +static OnyxToken* expect_token(OnyxParser* parser, TokenType token_type) { + OnyxToken* token = parser->curr; + consume_token(parser); if (token->type != token_type) { onyx_message_add(parser->msgs, ONYX_MESSAGE_TYPE_EXPECTED_TOKEN, token->pos, - onyx_get_token_type_name(token_type), onyx_get_token_type_name(token->type)); + token_name(token_type), token_name(token->type)); return NULL; } @@ -86,12 +88,12 @@ static OnyxToken* expect(OnyxParser* parser, TokenType token_type) { static AstNumLit* parse_numeric_literal(OnyxParser* parser) { AstNumLit* lit_node = make_node(AstNumLit, Ast_Kind_Literal); - lit_node->base.token = expect(parser, Token_Type_Literal_Numeric); + lit_node->base.token = expect_token(parser, Token_Type_Literal_Numeric); lit_node->base.flags |= Ast_Flag_Comptime; lit_node->value.l = 0ll; AstType* type; - onyx_token_null_toggle(lit_node->base.token); + token_toggle_end(lit_node->base.token); char* tok = lit_node->base.token->text; // NOTE: charset_contains() behaves more like string_contains() @@ -116,26 +118,35 @@ static AstNumLit* parse_numeric_literal(OnyxParser* parser) { } lit_node->base.type_node = type; - onyx_token_null_toggle(lit_node->base.token); + token_toggle_end(lit_node->base.token); return lit_node; } +// ( ) +// - +// ! +// proc ... +// ( '(' ')' )? +// +// 'true' +// 'false' +// All of these could be followed by a cast static AstTyped* parse_factor(OnyxParser* parser) { AstTyped* retval = NULL; - switch ((u16) parser->curr_token->type) { + switch ((u16) parser->curr->type) { case '(': { - parser_next_token(parser); + consume_token(parser); AstTyped* expr = parse_expression(parser); - expect(parser, ')'); + expect_token(parser, ')'); retval = expr; break; } case '-': { - parser_next_token(parser); + consume_token(parser); AstTyped* factor = parse_factor(parser); AstUnaryOp* negate_node = make_node(AstUnaryOp, Ast_Kind_Unary_Op); @@ -154,7 +165,7 @@ static AstTyped* parse_factor(OnyxParser* parser) { { AstUnaryOp* not_node = make_node(AstUnaryOp, Ast_Kind_Unary_Op); not_node->operation = Unary_Op_Not; - not_node->base.token = expect(parser, '!'); + not_node->base.token = expect_token(parser, '!'); not_node->expr = parse_factor(parser); if ((not_node->expr->flags & Ast_Flag_Comptime) != 0) { @@ -167,25 +178,25 @@ static AstTyped* parse_factor(OnyxParser* parser) { case Token_Type_Symbol: { - OnyxToken* sym_token = expect(parser, Token_Type_Symbol); + OnyxToken* sym_token = expect_token(parser, Token_Type_Symbol); AstTyped* sym_node = make_node(AstTyped, Ast_Kind_Symbol); sym_node->token = sym_token; - if (parser->curr_token->type != '(') { + if (parser->curr->type != '(') { retval = sym_node; break; } // NOTE: Function call AstCall* call_node = make_node(AstCall, Ast_Kind_Call); - call_node->base.token = expect(parser, '('); + call_node->base.token = expect_token(parser, '('); call_node->callee = (AstNode *) sym_node; AstArgument** prev = &call_node->arguments; AstArgument* curr = NULL; - while (parser->curr_token->type != ')') { + while (parser->curr->type != ')') { curr = make_node(AstArgument, Ast_Kind_Argument); - curr->base.token = parser->curr_token; + curr->base.token = parser->curr; curr->value = parse_expression(parser); if (curr != NULL && curr->base.kind != Ast_Kind_Error) { @@ -193,21 +204,21 @@ static AstTyped* parse_factor(OnyxParser* parser) { prev = (AstArgument **) &curr->base.next; } - if (parser->curr_token->type == ')') + if (parser->curr->type == ')') break; - if (parser->curr_token->type != ',') { + if (parser->curr->type != ',') { onyx_message_add(parser->msgs, ONYX_MESSAGE_TYPE_EXPECTED_TOKEN, - parser->curr_token->pos, - onyx_get_token_type_name(','), - onyx_get_token_type_name(parser->curr_token->type)); + parser->curr->pos, + token_name(','), + token_name(parser->curr->type)); return (AstTyped *) &error_node; } - parser_next_token(parser); + consume_token(parser); } - parser_next_token(parser); + consume_token(parser); retval = (AstTyped *) call_node; break; @@ -221,7 +232,7 @@ static AstTyped* parse_factor(OnyxParser* parser) { { AstNumLit* bool_node = make_node(AstNumLit, Ast_Kind_Literal); bool_node->base.type_node = (AstType *) &basic_type_bool; - bool_node->base.token = expect(parser, Token_Type_Literal_True); + bool_node->base.token = expect_token(parser, Token_Type_Literal_True); bool_node->value.i = 1; retval = (AstTyped *) bool_node; break; @@ -231,32 +242,22 @@ static AstTyped* parse_factor(OnyxParser* parser) { { AstNumLit* bool_node = make_node(AstNumLit, Ast_Kind_Literal); bool_node->base.type_node = (AstType *) &basic_type_bool; - bool_node->base.token = expect(parser, Token_Type_Literal_False); + bool_node->base.token = expect_token(parser, Token_Type_Literal_False); bool_node->value.i = 0; retval = (AstTyped *) bool_node; break; } - case Token_Type_Keyword_Proc: - { - AstFunction* func_node = parse_function_definition(parser); - - bh_arr_push(parser->results.nodes_to_process, (AstNode *) func_node); - - retval = (AstTyped *) func_node; - break; - } - default: onyx_message_add(parser->msgs, ONYX_MESSAGE_TYPE_UNEXPECTED_TOKEN, - parser->curr_token->pos, - onyx_get_token_type_name(parser->curr_token->type)); + parser->curr->pos, + token_name(parser->curr->type)); return NULL; } - while (parser->curr_token->type == Token_Type_Keyword_Cast) { - parser_next_token(parser); + while (parser->curr->type == Token_Type_Keyword_Cast) { + consume_token(parser); AstUnaryOp* cast_node = make_node(AstUnaryOp, Ast_Kind_Unary_Op); cast_node->base.type_node = parse_type(parser); @@ -289,6 +290,18 @@ static inline i32 get_precedence(BinaryOp kind) { } } +// + +// - +// * +// / +// % +// == +// != +// <= +// >= +// < +// > +// With expected precedence rules static AstTyped* parse_expression(OnyxParser* parser) { bh_arr(AstBinaryOp*) tree_stack = NULL; bh_arr_new(global_scratch_allocator, tree_stack, 4); @@ -303,7 +316,7 @@ static AstTyped* parse_expression(OnyxParser* parser) { while (1) { bin_op_kind = -1; - switch ((u16) parser->curr_token->type) { + switch ((u16) parser->curr->type) { case Token_Type_Equal_Equal: bin_op_kind = Binary_Op_Equal; break; case Token_Type_Not_Equal: bin_op_kind = Binary_Op_Not_Equal; break; case Token_Type_Less_Equal: bin_op_kind = Binary_Op_Less_Equal; break; @@ -320,8 +333,8 @@ static AstTyped* parse_expression(OnyxParser* parser) { } if (bin_op_kind != -1) { - bin_op_tok = parser->curr_token; - parser_next_token(parser); + bin_op_tok = parser->curr; + consume_token(parser); AstBinaryOp* bin_op = make_node(AstBinaryOp, Ast_Kind_Binary_Op); bin_op->operation = bin_op_kind; @@ -355,8 +368,9 @@ expression_done: return root; } +// 'if' ('elseif' )* ('else' )? static AstIf* parse_if_stmt(OnyxParser* parser) { - expect(parser, Token_Type_Keyword_If); + expect_token(parser, Token_Type_Keyword_If); AstTyped* cond = parse_expression(parser); AstBlock* true_block = parse_block(parser); @@ -368,8 +382,8 @@ static AstIf* parse_if_stmt(OnyxParser* parser) { if (true_block != NULL) if_node->true_block.as_block = true_block; - while (parser->curr_token->type == Token_Type_Keyword_Elseif) { - parser_next_token(parser); + while (parser->curr->type == Token_Type_Keyword_Elseif) { + consume_token(parser); AstIf* elseif_node = make_node(AstIf, Ast_Kind_If); cond = parse_expression(parser); @@ -383,8 +397,8 @@ static AstIf* parse_if_stmt(OnyxParser* parser) { if_node = elseif_node; } - if (parser->curr_token->type == Token_Type_Keyword_Else) { - parser_next_token(parser); + if (parser->curr->type == Token_Type_Keyword_Else) { + consume_token(parser); AstBlock* false_block = parse_block(parser); if (false_block != NULL) @@ -394,8 +408,9 @@ static AstIf* parse_if_stmt(OnyxParser* parser) { return root_if; } +// 'while' static AstWhile* parse_while_stmt(OnyxParser* parser) { - OnyxToken* while_token = expect(parser, Token_Type_Keyword_While); + OnyxToken* while_token = expect_token(parser, Token_Type_Keyword_While); AstTyped* cond = parse_expression(parser); AstBlock* body = parse_block(parser); @@ -410,20 +425,30 @@ static AstWhile* parse_while_stmt(OnyxParser* parser) { // Returns 1 if the symbol was consumed. Returns 0 otherwise // ret is set to the statement to insert +// : = +// : : +// := +// :: +// = +// += +// -= +// *= +// /= +// %= static b32 parse_symbol_statement(OnyxParser* parser, AstNode** ret) { - if (parser->curr_token->type != Token_Type_Symbol) return 0; - OnyxToken* symbol = expect(parser, Token_Type_Symbol); + if (parser->curr->type != Token_Type_Symbol) return 0; + OnyxToken* symbol = expect_token(parser, Token_Type_Symbol); - switch ((u16) parser->curr_token->type) { + switch ((u16) parser->curr->type) { // NOTE: Declaration case ':': { - parser_next_token(parser); + consume_token(parser); AstType* type_node = NULL; // NOTE: var: type - if (parser->curr_token->type != ':' - && parser->curr_token->type != '=') { + if (parser->curr->type != ':' + && parser->curr->type != '=') { type_node = parse_type(parser); } @@ -433,24 +458,24 @@ static b32 parse_symbol_statement(OnyxParser* parser, AstNode** ret) { local->base.flags |= Ast_Flag_Lval; // NOTE: DELETE *ret = (AstNode *) local; - if (parser->curr_token->type == '=' || parser->curr_token->type == ':') { - if (parser->curr_token->type == ':') { + if (parser->curr->type == '=' || parser->curr->type == ':') { + if (parser->curr->type == ':') { local->base.flags |= Ast_Flag_Const; } AstAssign* assignment = make_node(AstAssign, Ast_Kind_Assignment); local->base.next = (AstNode *) assignment; - assignment->base.token = parser->curr_token; - parser_next_token(parser); + assignment->base.token = parser->curr; + consume_token(parser); AstTyped* expr = parse_expression(parser); if (expr == NULL) { - onyx_token_null_toggle(parser->curr_token); + token_toggle_end(parser->curr); onyx_message_add(parser->msgs, ONYX_MESSAGE_TYPE_EXPECTED_EXPRESSION, assignment->base.token->pos, - parser->curr_token->text); - onyx_token_null_toggle(parser->curr_token); + parser->curr->text); + token_toggle_end(parser->curr); return 1; } assignment->expr = expr; @@ -466,8 +491,8 @@ static b32 parse_symbol_statement(OnyxParser* parser, AstNode** ret) { case '=': { AstAssign* assignment = make_node(AstAssign, Ast_Kind_Assignment); - assignment->base.token = parser->curr_token; - parser_next_token(parser); + assignment->base.token = parser->curr; + consume_token(parser); AstNode* lval = make_node(AstNode, Ast_Kind_Symbol); lval->token = symbol; @@ -486,17 +511,17 @@ static b32 parse_symbol_statement(OnyxParser* parser, AstNode** ret) { case Token_Type_Percent_Equal: { BinaryOp bin_op; - if (parser->curr_token->type == Token_Type_Plus_Equal) bin_op = Binary_Op_Add; - else if (parser->curr_token->type == Token_Type_Minus_Equal) bin_op = Binary_Op_Minus; - else if (parser->curr_token->type == Token_Type_Star_Equal) bin_op = Binary_Op_Multiply; - else if (parser->curr_token->type == Token_Type_Fslash_Equal) bin_op = Binary_Op_Divide; - else if (parser->curr_token->type == Token_Type_Percent_Equal) bin_op = Binary_Op_Modulus; + if (parser->curr->type == Token_Type_Plus_Equal) bin_op = Binary_Op_Add; + else if (parser->curr->type == Token_Type_Minus_Equal) bin_op = Binary_Op_Minus; + else if (parser->curr->type == Token_Type_Star_Equal) bin_op = Binary_Op_Multiply; + else if (parser->curr->type == Token_Type_Fslash_Equal) bin_op = Binary_Op_Divide; + else if (parser->curr->type == Token_Type_Percent_Equal) bin_op = Binary_Op_Modulus; AstBinaryOp* bin_op_node = make_node(AstBinaryOp, Ast_Kind_Binary_Op); bin_op_node->operation = bin_op; - bin_op_node->base.token = parser->curr_token; + bin_op_node->base.token = parser->curr; - parser_next_token(parser); + consume_token(parser); AstTyped* expr = parse_expression(parser); AstNode* bin_op_left = make_node(AstNode, Ast_Kind_Symbol); @@ -519,19 +544,20 @@ static b32 parse_symbol_statement(OnyxParser* parser, AstNode** ret) { } default: - parser_prev_token(parser); + unconsume_token(parser); } return 0; } +// 'return' ? static AstReturn* parse_return_statement(OnyxParser* parser) { AstReturn* return_node = make_node(AstReturn, Ast_Kind_Return); - return_node->base.token = expect(parser, Token_Type_Keyword_Return); + return_node->base.token = expect_token(parser, Token_Type_Keyword_Return); AstTyped* expr = NULL; - if (parser->curr_token->type != ';') { + if (parser->curr->type != ';') { expr = parse_expression(parser); if (expr == NULL || expr == (AstTyped *) &error_node) { @@ -544,11 +570,19 @@ static AstReturn* parse_return_statement(OnyxParser* parser) { return return_node; } +// ; +// +// ; +// ; +// +// +// 'break' ; +// 'continue' ; static AstNode* parse_statement(OnyxParser* parser) { b32 needs_semicolon = 1; AstNode* retval = NULL; - switch ((u16) parser->curr_token->type) { + switch ((u16) parser->curr->type) { case Token_Type_Keyword_Return: retval = (AstNode *) parse_return_statement(parser); break; @@ -583,12 +617,12 @@ static AstNode* parse_statement(OnyxParser* parser) { case Token_Type_Keyword_Break: retval = make_node(AstNode, Ast_Kind_Break); - retval->token = expect(parser, Token_Type_Keyword_Break); + retval->token = expect_token(parser, Token_Type_Keyword_Break); break; case Token_Type_Keyword_Continue: retval = make_node(AstNode, Ast_Kind_Break); - retval->token = expect(parser, Token_Type_Keyword_Continue); + retval->token = expect_token(parser, Token_Type_Keyword_Continue); break; default: @@ -596,37 +630,39 @@ static AstNode* parse_statement(OnyxParser* parser) { } if (needs_semicolon) { - if (parser->curr_token->type != ';') { + if (parser->curr->type != ';') { onyx_message_add(parser->msgs, ONYX_MESSAGE_TYPE_EXPECTED_TOKEN, - parser->curr_token->pos, - onyx_get_token_type_name(';'), - onyx_get_token_type_name(parser->curr_token->type)); + parser->curr->pos, + token_name(';'), + token_name(parser->curr->type)); find_token(parser, ';'); } - parser_next_token(parser); + consume_token(parser); } return retval; } +// '---' +// '{' '}' 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_token->type == Token_Type_Empty_Block) { - expect(parser, Token_Type_Empty_Block); + if (parser->curr->type == Token_Type_Empty_Block) { + expect_token(parser, Token_Type_Empty_Block); return block; } - expect(parser, '{'); + expect_token(parser, '{'); AstNode** next = &block->body; AstNode* stmt = NULL; - while (parser->curr_token->type != '}') { + while (parser->curr->type != '}') { stmt = parse_statement(parser); if (stmt != NULL && stmt->kind != Ast_Kind_Error) { @@ -637,40 +673,42 @@ static AstBlock* parse_block(OnyxParser* parser) { } } - expect(parser, '}'); + expect_token(parser, '}'); return block; } +// +// '^' static AstType* parse_type(OnyxParser* parser) { AstType* root = NULL; AstType** next_insertion = &root; while (1) { - if (parser->curr_token->type == '^') { - parser_next_token(parser); + if (parser->curr->type == '^') { + consume_token(parser); AstPointerType* new = make_node(AstPointerType, Ast_Kind_Pointer_Type); new->base.flags |= Basic_Flag_Pointer; *next_insertion = (AstType *) new; next_insertion = &new->elem; } - else if (parser->curr_token->type == Token_Type_Symbol) { + else if (parser->curr->type == Token_Type_Symbol) { AstNode* symbol_node = make_node(AstNode, Ast_Kind_Symbol); - symbol_node->token = expect(parser, Token_Type_Symbol); + symbol_node->token = expect_token(parser, Token_Type_Symbol); *next_insertion = (AstType *) symbol_node; next_insertion = NULL; } else { - onyx_token_null_toggle(parser->curr_token); + token_toggle_end(parser->curr); onyx_message_add(parser->msgs, ONYX_MESSAGE_TYPE_UNEXPECTED_TOKEN, - parser->curr_token->pos, - parser->curr_token->text); - onyx_token_null_toggle(parser->curr_token); + parser->curr->pos, + parser->curr->text); + token_toggle_end(parser->curr); - parser_next_token(parser); + consume_token(parser); break; } @@ -680,14 +718,16 @@ static AstType* parse_type(OnyxParser* parser) { return root; } +// e +// '(' (: ,?)* ')' static AstLocal* parse_function_params(OnyxParser* parser) { - if (parser->curr_token->type != '(') + if (parser->curr->type != '(') return NULL; - expect(parser, '('); + expect_token(parser, '('); - if (parser->curr_token->type == ')') { - parser_next_token(parser); + if (parser->curr->type == ')') { + consume_token(parser); return NULL; } @@ -696,11 +736,11 @@ static AstLocal* parse_function_params(OnyxParser* parser) { AstLocal* trailer = NULL; OnyxToken* symbol; - while (parser->curr_token->type != ')') { - if (parser->curr_token->type == ',') parser_next_token(parser); + while (parser->curr->type != ')') { + if (parser->curr->type == ',') consume_token(parser); - symbol = expect(parser, Token_Type_Symbol); - expect(parser, ':'); + symbol = expect_token(parser, Token_Type_Symbol); + expect_token(parser, ':'); curr_param = make_node(AstLocal, Ast_Kind_Param); curr_param->base.token = symbol; @@ -715,35 +755,38 @@ static AstLocal* parse_function_params(OnyxParser* parser) { trailer = curr_param; } - parser_next_token(parser); // Skip the ) + consume_token(parser); // Skip the ) return first_param; } +// e +// '#' static b32 parse_possible_directive(OnyxParser* parser, const char* dir) { - if (parser->curr_token->type != '#') return 0; + if (parser->curr->type != '#') return 0; - expect(parser, '#'); - OnyxToken* sym = expect(parser, Token_Type_Symbol); + expect_token(parser, '#'); + OnyxToken* sym = expect_token(parser, Token_Type_Symbol); b32 match = (strlen(dir) == sym->length) && (strncmp(dir, sym->text, sym->length) == 0); if (!match) { - parser_prev_token(parser); - parser_prev_token(parser); + unconsume_token(parser); + unconsume_token(parser); } return match; } +// 'proc' * ('->' )? static AstFunction* parse_function_definition(OnyxParser* parser) { AstFunction* func_def = make_node(AstFunction, Ast_Kind_Function); - func_def->base.token = expect(parser, Token_Type_Keyword_Proc); + func_def->base.token = expect_token(parser, Token_Type_Keyword_Proc); - while (parser->curr_token->type == '#') { + while (parser->curr->type == '#') { if (parse_possible_directive(parser, "intrinsic")) { func_def->base.flags |= Ast_Flag_Intrinsic; - if (parser->curr_token->type == Token_Type_Literal_String) { - OnyxToken* str_token = expect(parser, Token_Type_Literal_String); + if (parser->curr->type == Token_Type_Literal_String) { + OnyxToken* str_token = expect_token(parser, Token_Type_Literal_String); func_def->intrinsic_name = str_token; } } @@ -753,8 +796,8 @@ static AstFunction* parse_function_definition(OnyxParser* parser) { } else if (parse_possible_directive(parser, "foreign")) { - func_def->foreign_module = expect(parser, Token_Type_Literal_String); - func_def->foreign_name = expect(parser, Token_Type_Literal_String); + func_def->foreign_module = expect_token(parser, Token_Type_Literal_String); + func_def->foreign_name = expect_token(parser, Token_Type_Literal_String); func_def->base.flags |= Ast_Flag_Foreign; } @@ -762,15 +805,15 @@ static AstFunction* parse_function_definition(OnyxParser* parser) { else if (parse_possible_directive(parser, "export")) { func_def->base.flags |= Ast_Flag_Exported; - if (parser->curr_token->type == Token_Type_Literal_String) { - OnyxToken* str_token = expect(parser, Token_Type_Literal_String); + if (parser->curr->type == Token_Type_Literal_String) { + OnyxToken* str_token = expect_token(parser, Token_Type_Literal_String); func_def->exported_name = str_token; } } else { - OnyxToken* directive_token = expect(parser, '#'); - OnyxToken* symbol_token = expect(parser, Token_Type_Symbol); + OnyxToken* directive_token = expect_token(parser, '#'); + OnyxToken* symbol_token = expect_token(parser, Token_Type_Symbol); onyx_message_add(parser->msgs, ONYX_MESSAGE_TYPE_UNKNOWN_DIRECTIVE, @@ -783,8 +826,8 @@ static AstFunction* parse_function_definition(OnyxParser* parser) { func_def->params = params; AstType* return_type = (AstType *) &basic_type_void; - if (parser->curr_token->type == Token_Type_Right_Arrow) { - expect(parser, Token_Type_Right_Arrow); + if (parser->curr->type == Token_Type_Right_Arrow) { + expect_token(parser, Token_Type_Right_Arrow); return_type = parse_type(parser); } @@ -815,80 +858,99 @@ static AstFunction* parse_function_definition(OnyxParser* parser) { return func_def; } -// static AstNode* parse_foreign(OnyxParser* parser) { -// expect(parser, Token_Type_Keyword_Foreign); -// -// AstForeign* foreign = make_node(AstForeign, Ast_Kind_Foreign); -// foreign->mod_token = expect(parser, Token_Type_Literal_String); -// foreign->name_token = expect(parser, Token_Type_Literal_String); -// -// if (parser->curr_token->type == Token_Type_Keyword_Proc) { -// foreign->import = (AstNode *) parse_function_definition(parser); -// -// } else { -// AstType* type = parse_type(parser); -// -// AstGlobal* global = make_node(AstGlobal, Ast_Kind_Global); -// global->base.type_node = type; -// global->base.flags |= Ast_Flag_Lval; -// -// foreign->import = (AstNode *) global; -// } -// -// return (AstNode *) foreign; -// } - -static AstTyped* parse_top_level_constant_symbol(OnyxParser* parser) { -// if (parser->curr_token->type == Token_Type_Keyword_Proc) { -// return (AstNode *) parse_function_definition(parser); -// -// } else if (parser->curr_token->type == Token_Type_Keyword_Struct) { -// // Handle struct case -// assert(0); -// -// } else if (parser->curr_token->type == Token_Type_Keyword_Foreign) { -// return (AstNode *) parse_foreign(parser); -// -// } else { -// // Global constant with initial value -// AstGlobal* global = make_node(AstGlobal, Ast_Kind_Global); -// global->initial_value = parse_expression(parser); -// global->base.flags |= Ast_Flag_Const; -// global->base.flags |= Ast_Flag_Lval; -// global->base.flags |= Ast_Flag_Comptime; -// -// return (AstNode *) global; -// } - - return parse_expression(parser); +// 'global' +static AstTyped* parse_global_declaration(OnyxParser* parser) { + AstGlobal* global_node = make_node(AstGlobal, Ast_Kind_Global); + global_node->base.token = expect_token(parser, Token_Type_Keyword_Global); + + while (parser->curr->type == '#') { + if (parse_possible_directive(parser, "foreign")) { + global_node->foreign_module = expect_token(parser, Token_Type_Literal_String); + global_node->foreign_name = expect_token(parser, Token_Type_Literal_String); + + global_node->base.flags |= Ast_Flag_Foreign; + } + + else if (parse_possible_directive(parser, "export")) { + global_node->base.flags |= Ast_Flag_Exported; + + if (parser->curr->type == Token_Type_Literal_String) { + OnyxToken* str_token = expect_token(parser, Token_Type_Literal_String); + global_node->exported_name = str_token; + } + } + + else { + OnyxToken* directive_token = expect_token(parser, '#'); + OnyxToken* symbol_token = expect_token(parser, Token_Type_Symbol); + + onyx_message_add(parser->msgs, + ONYX_MESSAGE_TYPE_UNKNOWN_DIRECTIVE, + directive_token->pos, + symbol_token->text, symbol_token->length); + } + } + + global_node->base.type_node = parse_type(parser); + global_node->base.flags |= Ast_Flag_Lval; + + + bh_arr_push(parser->results.nodes_to_process, (AstNode *) global_node); + + return (AstTyped *) global_node; +} + +static AstTyped* parse_top_level_expression(OnyxParser* parser) { + if (parser->curr->type == Token_Type_Keyword_Proc) { + AstFunction* func_node = parse_function_definition(parser); + + bh_arr_push(parser->results.nodes_to_process, (AstNode *) func_node); + + return (AstTyped *) func_node; + } + else if (parser->curr->type == Token_Type_Keyword_Global) { + return parse_global_declaration(parser); + } + else { + return parse_expression(parser); + } } +// 'use' +// :: static AstNode* parse_top_level_statement(OnyxParser* parser) { - switch (parser->curr_token->type) { + switch (parser->curr->type) { case Token_Type_Keyword_Use: { AstUse* use_node = make_node(AstUse, Ast_Kind_Use); - use_node->base.token = expect(parser, Token_Type_Keyword_Use); - use_node->filename = expect(parser, Token_Type_Literal_String); + use_node->base.token = expect_token(parser, Token_Type_Keyword_Use); + use_node->filename = expect_token(parser, Token_Type_Literal_String); return (AstNode *) use_node; } case Token_Type_Symbol: { - OnyxToken* symbol = parser->curr_token; - parser_next_token(parser); + OnyxToken* symbol = parser->curr; + consume_token(parser); - expect(parser, ':'); - expect(parser, ':'); + expect_token(parser, ':'); + expect_token(parser, ':'); - AstTyped* node = parse_top_level_constant_symbol(parser); + AstTyped* node = parse_top_level_expression(parser); if (node->kind == Ast_Kind_Function) { AstFunction* func = (AstFunction *) node; if (func->exported_name == NULL) func->exported_name = symbol; + + } else if (node->kind == Ast_Kind_Global) { + AstGlobal* global = (AstGlobal *) node; + + if (global->exported_name == NULL) + global->exported_name = symbol; + } else { // HACK bh_arr_push(parser->results.nodes_to_process, (AstNode *) node); @@ -904,7 +966,7 @@ static AstNode* parse_top_level_statement(OnyxParser* parser) { default: break; } - parser_next_token(parser); + consume_token(parser); return NULL; } @@ -927,8 +989,8 @@ OnyxParser onyx_parser_create(bh_allocator alloc, OnyxTokenizer *tokenizer, Onyx parser.allocator = alloc; parser.tokenizer = tokenizer; - parser.curr_token = tokenizer->tokens; - parser.prev_token = NULL; + parser.curr = tokenizer->tokens; + parser.prev = NULL; parser.msgs = msgs; parser.results = (ParseResults) { @@ -950,7 +1012,7 @@ void onyx_parser_free(OnyxParser* parser) { } ParseResults onyx_parse(OnyxParser *parser) { - while (parser->curr_token->type != Token_Type_End_Stream) { + while (parser->curr->type != Token_Type_End_Stream) { AstNode* curr_stmt = parse_top_level_statement(parser); if (curr_stmt != NULL && curr_stmt != &error_node) { diff --git a/src/onyxsymres.c b/src/onyxsymres.c index 7a9a5857..2aa84b35 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -9,6 +9,7 @@ static AstNode* symbol_resolve(OnyxSemPassState* state, OnyxToken* tkn); static void local_group_enter(OnyxSemPassState* state, AstLocalGroup* local_group); static void local_group_leave(OnyxSemPassState* state); +static AstType* symres_type(OnyxSemPassState* state, AstType* type); static void symres_local(OnyxSemPassState* state, AstLocal** local); static void symres_call(OnyxSemPassState* state, AstCall* call); static void symres_expression(OnyxSemPassState* state, AstTyped** expr); @@ -20,10 +21,10 @@ static void symres_statement_chain(OnyxSemPassState* state, AstNode* walker, Ast static b32 symres_statement(OnyxSemPassState* state, AstNode* stmt); static void symres_block(OnyxSemPassState* state, AstBlock* block); static void symres_function(OnyxSemPassState* state, AstFunction* func); -static AstType* symres_type(OnyxSemPassState* state, AstType* type); +static void symres_global(OnyxSemPassState* state, AstGlobal* global); static void symbol_introduce(OnyxSemPassState* state, OnyxToken* tkn, AstNode* symbol) { - onyx_token_null_toggle(tkn); + token_toggle_end(tkn); SemPassSymbol* sp_sym = (SemPassSymbol *) bh_alloc_item(state->allocator, SemPassSymbol); sp_sym->node = symbol; @@ -41,11 +42,11 @@ static void symbol_introduce(OnyxSemPassState* state, OnyxToken* tkn, AstNode* s state->curr_local_group->last_local = local; } - onyx_token_null_toggle(tkn); + token_toggle_end(tkn); } static void symbol_remove(OnyxSemPassState* state, OnyxToken* tkn) { - onyx_token_null_toggle(tkn); + token_toggle_end(tkn); SemPassSymbol* sp_sym = bh_table_get(SemPassSymbol *, state->symbols, tkn->text); @@ -55,26 +56,32 @@ static void symbol_remove(OnyxSemPassState* state, OnyxToken* tkn) { bh_table_delete(SemPassSymbol *, state->symbols, tkn->text); } - onyx_token_null_toggle(tkn); + token_toggle_end(tkn); } static AstNode* symbol_resolve(OnyxSemPassState* state, OnyxToken* tkn) { - onyx_token_null_toggle(tkn); + AstNode* res = NULL; - if (!bh_table_has(SemPassSymbol *, state->symbols, tkn->text)) { - onyx_message_add(state->msgs, - ONYX_MESSAGE_TYPE_UNKNOWN_SYMBOL, - tkn->pos, - tkn->text); + while (res == NULL || res->kind == Ast_Kind_Symbol) { + token_toggle_end(tkn); - onyx_token_null_toggle(tkn); - return NULL; - } + if (!bh_table_has(SemPassSymbol *, state->symbols, tkn->text)) { + onyx_message_add(state->msgs, + ONYX_MESSAGE_TYPE_UNKNOWN_SYMBOL, + tkn->pos, + tkn->text); - SemPassSymbol* sp_sym = bh_table_get(SemPassSymbol *, state->symbols, tkn->text); + token_toggle_end(tkn); + return NULL; + } + + res = bh_table_get(SemPassSymbol *, state->symbols, tkn->text)->node; + token_toggle_end(tkn); + + tkn = res->token; + } - onyx_token_null_toggle(tkn); - return sp_sym->node; + return res; } static void local_group_enter(OnyxSemPassState* state, AstLocalGroup* local_group) { @@ -100,7 +107,7 @@ static void symbol_basic_type_introduce(OnyxSemPassState* state, AstBasicType* b } static b32 symbol_unique_introduce(OnyxSemPassState* state, OnyxToken* tkn, AstNode* symbol) { - onyx_token_null_toggle(tkn); + token_toggle_end(tkn); // NOTE: If the function hasn't already been defined if (!bh_table_has(SemPassSymbol *, state->symbols, tkn->text)) { @@ -115,11 +122,11 @@ static b32 symbol_unique_introduce(OnyxSemPassState* state, OnyxToken* tkn, AstN tkn->text); // NOTE: I really wish C had defer... - onyx_token_null_toggle(tkn); + token_toggle_end(tkn); return 0; } - onyx_token_null_toggle(tkn); + token_toggle_end(tkn); return 1; } @@ -165,12 +172,12 @@ static void symres_call(OnyxSemPassState* state, AstCall* call) { if (callee) call->callee = callee; else { - onyx_token_null_toggle(call->callee->token); + token_toggle_end(call->callee->token); onyx_message_add(state->msgs, ONYX_MESSAGE_TYPE_UNKNOWN_SYMBOL, call->callee->token->pos, call->callee->token->text); - onyx_token_null_toggle(call->callee->token); + token_toggle_end(call->callee->token); return; } @@ -315,6 +322,10 @@ static void symres_function(OnyxSemPassState* state, AstFunction* func) { } } +static void symres_global(OnyxSemPassState* state, AstGlobal* global) { + global->base.type_node = symres_type(state, global->base.type_node); +} + static void symres_top_node(OnyxSemPassState* state, AstNode** node) { switch ((*node)->kind) { case Ast_Kind_Call: @@ -325,6 +336,10 @@ static void symres_top_node(OnyxSemPassState* state, AstNode** node) { symres_expression(state, (AstTyped **) node); break; + case Ast_Kind_Global: + symres_global(state, (AstGlobal *) *node); + break; + case Ast_Kind_Function: symres_function(state, (AstFunction *) *node); break; diff --git a/src/onyxwasm.c b/src/onyxwasm.c index 66123bff..56a9a025 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -5,17 +5,17 @@ // NOTE: Allows easier testing of types since most of the characters // corresponding to these values are not printable #if 1 -const WasmType WASM_TYPE_INT32 = 0x7F; -const WasmType WASM_TYPE_INT64 = 0x7E; -const WasmType WASM_TYPE_FLOAT32 = 0x7D; -const WasmType WASM_TYPE_FLOAT64 = 0x7C; -const WasmType WASM_TYPE_VOID = 0x00; +#define WASM_TYPE_INT32 0x7F +#define WASM_TYPE_INT64 0x7E +#define WASM_TYPE_FLOAT32 0x7D +#define WASM_TYPE_FLOAT64 0x7C +#define WASM_TYPE_VOID 0x00 #else -const WasmType WASM_TYPE_INT32 = 'A'; -const WasmType WASM_TYPE_INT64 = 'B'; -const WasmType WASM_TYPE_FLOAT32 = 'C'; -const WasmType WASM_TYPE_FLOAT64 = 'D'; -const WasmType WASM_TYPE_VOID = '\0'; +#define WASM_TYPE_INT32 'A' +#define WASM_TYPE_INT64 'B' +#define WASM_TYPE_FLOAT32 'C' +#define WASM_TYPE_FLOAT64 'D' +#define WASM_TYPE_VOID 'E' #endif static const char* wi_string(WasmInstructionType wit) { @@ -826,7 +826,7 @@ static void compile_function(OnyxWasmModule* mod, AstFunction* fd) { bh_arr_new(mod->allocator, wasm_func.code, 4); if (fd->base.flags & Ast_Flag_Exported) { - onyx_token_null_toggle(fd->exported_name); + token_toggle_end(fd->exported_name); i32 func_idx = (i32) bh_imap_get(&mod->func_map, (u64) fd); @@ -837,7 +837,7 @@ static void compile_function(OnyxWasmModule* mod, AstFunction* fd) { bh_table_put(WasmExport, mod->exports, fd->exported_name->text, wasm_export); mod->export_count++; - onyx_token_null_toggle(fd->exported_name); + token_toggle_end(fd->exported_name); } // If there is no body then don't process the code @@ -880,22 +880,28 @@ static void compile_function(OnyxWasmModule* mod, AstFunction* fd) { } static void compile_global_declaration(OnyxWasmModule* module, AstGlobal* global) { + WasmType global_type = onyx_type_to_wasm_type(global->base.type); + + if (global->base.flags & Ast_Flag_Foreign) { + WasmImport import = { + .kind = WASM_FOREIGN_GLOBAL, + .idx = global_type, + .mod = global->foreign_module, + .name = global->foreign_name, + }; + + bh_arr_push(module->imports, import); + return; + } + WasmGlobal glob = { - .type = onyx_type_to_wasm_type(global->base.type), + .type = global_type, .mutable = (global->base.flags & Ast_Flag_Const) == 0, .initial_value = NULL, }; - if (!global->initial_value) { - onyx_message_add(module->msgs, - ONYX_MESSAGE_TYPE_LITERAL, - global->base.token->pos, - "global without initial value"); - return; - } - if ((global->base.flags & Ast_Flag_Exported) != 0) { - onyx_token_null_toggle(global->base.token); + token_toggle_end(global->exported_name); i32 global_idx = (i32) bh_imap_get(&module->func_map, (u64) global); @@ -903,46 +909,24 @@ static void compile_global_declaration(OnyxWasmModule* module, AstGlobal* global .kind = WASM_FOREIGN_GLOBAL, .idx = global_idx, }; - bh_table_put(WasmExport, module->exports, global->base.token->text, wasm_export); + bh_table_put(WasmExport, module->exports, global->exported_name->text, wasm_export); module->export_count++; - onyx_token_null_toggle(global->base.token); + token_toggle_end(global->exported_name); } - compile_expression(module, &glob.initial_value, global->initial_value); - bh_arr_push(module->globals, glob); -} + bh_arr_new(global_heap_allocator, glob.initial_value, 1); -static void compile_foreign(OnyxWasmModule* module, AstForeign* foreign) { - if (foreign->import->kind == Ast_Kind_Function) { - i32 type_idx = generate_type_idx(module, (AstFunction *) foreign->import); + switch (global_type) { + case WASM_TYPE_INT32: bh_arr_push(glob.initial_value, ((WasmInstruction) { WI_I32_CONST, 0 })); break; + case WASM_TYPE_INT64: bh_arr_push(glob.initial_value, ((WasmInstruction) { WI_I64_CONST, 0 })); break; + case WASM_TYPE_FLOAT32: bh_arr_push(glob.initial_value, ((WasmInstruction) { WI_F32_CONST, 0 })); break; + case WASM_TYPE_FLOAT64: bh_arr_push(glob.initial_value, ((WasmInstruction) { WI_F64_CONST, 0 })); break; - WasmImport import = { - .kind = WASM_FOREIGN_FUNCTION, - .idx = type_idx, - .mod = foreign->mod_token, - .name = foreign->name_token, - }; - - bh_arr_push(module->imports, import); - - } else if (foreign->import->kind == Ast_Kind_Global) { - WasmType global_type = onyx_type_to_wasm_type(((AstGlobal *) foreign->import)->base.type); - - WasmImport import = { - .kind = WASM_FOREIGN_GLOBAL, - .idx = global_type, - .mod = foreign->mod_token, - .name = foreign->name_token, - }; - - bh_arr_push(module->imports, import); - - } else { - DEBUG_HERE; - // NOTE: Invalid foreign - assert(0); + default: assert(("Invalid global type", 0)); break; } + + bh_arr_push(module->globals, glob); } OnyxWasmModule onyx_wasm_module_create(bh_allocator alloc, OnyxMessages* msgs) { @@ -994,6 +978,12 @@ void onyx_wasm_module_compile(OnyxWasmModule* module, ParserOutput* program) { } } + bh_arr_each(AstGlobal *, global, program->globals) { + if ((*global)->base.flags & Ast_Flag_Foreign) { + bh_imap_put(&module->global_map, (u64) *global, module->next_global_idx++); + } + } + bh_arr_each(AstFunction *, function, program->functions) { if ((*function)->base.flags & Ast_Flag_Foreign) continue; @@ -1001,7 +991,16 @@ void onyx_wasm_module_compile(OnyxWasmModule* module, ParserOutput* program) { bh_imap_put(&module->func_map, (u64) *function, module->next_func_idx++); } + bh_arr_each(AstGlobal *, global, program->globals) { + if ((*global)->base.flags & Ast_Flag_Foreign) continue; + + bh_imap_put(&module->global_map, (u64) *global, module->next_global_idx++); + } + // NOTE: Then, compile everything + bh_arr_each(AstGlobal *, global, program->globals) + compile_global_declaration(module, *global); + bh_arr_each(AstFunction *, function, program->functions) compile_function(module, *function); -- 2.25.1