From d92b4d49b1875d157813abf474b6115fb9a3e38a Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Tue, 7 Jul 2020 18:21:41 -0500 Subject: [PATCH] Slight refactoring and adding compiler directives --- include/onyxastnodes.h | 11 +++++++++-- onyx | Bin 213024 -> 213744 bytes progs/test.onyx | 6 ++++++ src/onyxparser.c | 38 +++++++++++++++++++++++++++----------- src/onyxsempass.c | 16 ++++++++-------- src/onyxsymres.c | 20 ++++++++++---------- src/onyxtypecheck.c | 4 ++-- src/onyxutils.c | 8 ++++---- src/onyxwasm.c | 22 +++++++++++----------- 9 files changed, 77 insertions(+), 48 deletions(-) diff --git a/include/onyxastnodes.h b/include/onyxastnodes.h index a46ef31d..c1507514 100644 --- a/include/onyxastnodes.h +++ b/include/onyxastnodes.h @@ -91,6 +91,10 @@ typedef enum OnyxAstFlags { ONYX_AST_FLAG_LVAL = BH_BIT(1), ONYX_AST_FLAG_CONST = BH_BIT(2), ONYX_AST_FLAG_COMPTIME = BH_BIT(3), + + // Function flags + ONYX_AST_FLAG_INLINE = BH_BIT(8), + ONYX_AST_FLAG_INTRINSIC = BH_BIT(9), } OnyxAstFlags; typedef enum OnyxUnaryOp { @@ -192,8 +196,11 @@ struct AstNodeIf { AstNode base; AstNodeTyped *cond; - AstNode *true_block; - AstNode *false_block; + + union { + AstNodeIf *as_if; + AstNodeBlock* as_block; + } true_block, false_block; }; struct AstNodeWhile { diff --git a/onyx b/onyx index 283c8b4757ba6fae35aa15d501aed108cc124665..5b8ecd947fd64cc24d11ac298b2521f261bdeaa2 100755 GIT binary patch delta 68651 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.t?OFL}a`N4v=I}MlCMPtWDAv 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 bool { return (x * x) + (y * y) < 1.0f; } +sqrt_f32 :: + proc #intrinsic #inline + (val: f32) -> f32 --- + // This is the entry point export main2 :: proc { i := 0; @@ -49,6 +53,8 @@ export main2 :: proc { } export main :: proc { + print_f32(sqrt_f32(2.0f)); + print_i32(5 * 6 + 2 * 3); print_bool(in_unit_circle(0.5f, 0.5f)); big_num := fib(factorial(4)); diff --git a/src/onyxparser.c b/src/onyxparser.c index 4391ab51..f0590eb2 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -38,7 +38,6 @@ static void insert_identifier(OnyxParser* parser, AstNode* ident, b32 is_local); static void remove_identifier(OnyxParser* parser, AstNode* ident); static AstNodeNumLit* parse_numeric_literal(OnyxParser* parser); static AstNodeTyped* parse_factor(OnyxParser* parser); -static AstNodeTyped* parse_bin_op(OnyxParser* parser, AstNode* left); static AstNodeTyped* parse_expression(OnyxParser* parser); static AstNodeIf* parse_if_stmt(OnyxParser* parser); static AstNodeWhile* parse_while_stmt(OnyxParser* parser); @@ -343,36 +342,36 @@ static AstNodeIf* parse_if_stmt(OnyxParser* parser) { expect(parser, TOKEN_TYPE_KEYWORD_IF); AstNodeTyped* cond = parse_expression(parser); - AstNode* true_block = (AstNode *) parse_block(parser); + AstNodeBlock* true_block = parse_block(parser); AstNodeIf* if_node = make_node(AstNodeIf, AST_NODE_KIND_IF); AstNodeIf* root_if = if_node; if_node->cond = cond; if (true_block != NULL) - if_node->true_block = true_block; + if_node->true_block.as_block = true_block; while (parser->curr_token->type == TOKEN_TYPE_KEYWORD_ELSEIF) { parser_next_token(parser); AstNodeIf* elseif_node = make_node(AstNodeIf, AST_NODE_KIND_IF); cond = parse_expression(parser); - true_block = (AstNode *) parse_block(parser); + true_block = parse_block(parser); elseif_node->cond = cond; if (true_block != NULL) - elseif_node->true_block = true_block; + elseif_node->true_block.as_block = true_block; - if_node->false_block = (AstNode *) elseif_node; + if_node->false_block.as_if = elseif_node; if_node = elseif_node; } if (parser->curr_token->type == TOKEN_TYPE_KEYWORD_ELSE) { parser_next_token(parser); - AstNode* false_block = (AstNode *) parse_block(parser); + AstNodeBlock* false_block = parse_block(parser); if (false_block != NULL) - if_node->false_block = false_block; + if_node->false_block.as_block = false_block; } return root_if; @@ -687,11 +686,30 @@ static AstNodeLocal* parse_function_params(OnyxParser* parser) { return first_param; } +static b32 parse_possible_directive(OnyxParser* parser, const char* dir) { + if (parser->curr_token->type != '#') return 0; + + expect(parser, '#'); + OnyxToken* sym = expect(parser, TOKEN_TYPE_SYMBOL); + + return strncmp(dir, sym->token, sym->length) == 0; +} + static AstNodeFunction* parse_function_definition(OnyxParser* parser) { expect(parser, TOKEN_TYPE_KEYWORD_PROC); AstNodeFunction* func_def = make_node(AstNodeFunction, AST_NODE_KIND_FUNCTION); + while (parser->curr_token->type == '#') { + if (parse_possible_directive(parser, "intrinsic")) { + func_def->base.flags |= ONYX_AST_FLAG_INTRINSIC; + } + + else if (parse_possible_directive(parser, "inline")) { + func_def->base.flags |= ONYX_AST_FLAG_INLINE; + } + } + AstNodeLocal* params = parse_function_params(parser); func_def->params = params; @@ -875,9 +893,7 @@ 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.msgs = msgs; - + parser.prev_token = NULL; parser.msgs = msgs; return parser; } diff --git a/src/onyxsempass.c b/src/onyxsempass.c index 6bc95533..d3b8c905 100644 --- a/src/onyxsempass.c +++ b/src/onyxsempass.c @@ -37,11 +37,11 @@ static void collapse_scopes(OnyxProgram* program) { if (block->base.kind == AST_NODE_KIND_IF) { AstNodeIf* if_node = (AstNodeIf *) block; - if (if_node->true_block) - bh_arr_push(traversal_queue, (AstNodeBlock *) if_node->true_block); + if (if_node->true_block.as_block != NULL) + bh_arr_push(traversal_queue, if_node->true_block.as_block); - if (if_node->false_block) - bh_arr_push(traversal_queue, (AstNodeBlock *) if_node->false_block); + if (if_node->false_block.as_block != NULL) + bh_arr_push(traversal_queue, if_node->false_block.as_block); } else { @@ -63,11 +63,11 @@ static void collapse_scopes(OnyxProgram* program) { bh_arr_push(traversal_queue, ((AstNodeWhile *) walker)->body); } else if (walker->kind == AST_NODE_KIND_IF) { - if (((AstNodeIf *) walker)->true_block) - bh_arr_push(traversal_queue, (AstNodeBlock *) ((AstNodeIf *) walker)->true_block); + if (((AstNodeIf *) walker)->true_block.as_block != NULL) + bh_arr_push(traversal_queue, ((AstNodeIf *) walker)->true_block.as_block); - if (((AstNodeIf *) walker)->false_block) - bh_arr_push(traversal_queue, (AstNodeBlock *) ((AstNodeIf *) walker)->false_block); + if (((AstNodeIf *) walker)->false_block.as_block != NULL) + bh_arr_push(traversal_queue, ((AstNodeIf *) walker)->false_block.as_block); } walker = walker->next; diff --git a/src/onyxsymres.c b/src/onyxsymres.c index 32abbbb8..b91e93b6 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -172,22 +172,22 @@ static void symres_return(OnyxSemPassState* state, AstNodeReturn* ret) { static void symres_if(OnyxSemPassState* state, AstNodeIf* ifnode) { symres_expression(state, (AstNode **) &ifnode->cond); - if (ifnode->true_block) { - if (ifnode->true_block->kind == AST_NODE_KIND_BLOCK) - symres_block(state, (AstNodeBlock *) ifnode->true_block); + if (ifnode->true_block.as_if != NULL) { + if (ifnode->true_block.as_if->base.kind == AST_NODE_KIND_BLOCK) + symres_block(state, ifnode->true_block.as_block); - else if (ifnode->true_block->kind == AST_NODE_KIND_IF) - symres_if(state, (AstNodeIf *) ifnode->true_block); + else if (ifnode->true_block.as_if->base.kind == AST_NODE_KIND_IF) + symres_if(state, ifnode->true_block.as_if); else DEBUG_HERE; } - if (ifnode->false_block) { - if (ifnode->false_block->kind == AST_NODE_KIND_BLOCK) - symres_block(state, (AstNodeBlock *) ifnode->false_block); + if (ifnode->false_block.as_if != NULL) { + if (ifnode->false_block.as_if->base.kind == AST_NODE_KIND_BLOCK) + symres_block(state, ifnode->false_block.as_block); - else if (ifnode->false_block->kind == AST_NODE_KIND_IF) - symres_if(state, (AstNodeIf *) ifnode->false_block); + else if (ifnode->false_block.as_if->base.kind == AST_NODE_KIND_IF) + symres_if(state, ifnode->false_block.as_if); else DEBUG_HERE; } diff --git a/src/onyxtypecheck.c b/src/onyxtypecheck.c index 1cc14cde..04288c44 100644 --- a/src/onyxtypecheck.c +++ b/src/onyxtypecheck.c @@ -83,8 +83,8 @@ static void typecheck_if(OnyxSemPassState* state, AstNodeIf* ifnode) { return; } - if (ifnode->true_block) typecheck_statement(state, ifnode->true_block); - if (ifnode->false_block) typecheck_statement(state, ifnode->false_block); + if (ifnode->true_block.as_if) typecheck_statement(state, (AstNode *) ifnode->true_block.as_block); + if (ifnode->false_block.as_if) typecheck_statement(state, (AstNode *) ifnode->false_block.as_block); } static void typecheck_while(OnyxSemPassState* state, AstNodeWhile* whilenode) { diff --git a/src/onyxutils.c b/src/onyxutils.c index 53c2f0ff..60fba38f 100644 --- a/src/onyxutils.c +++ b/src/onyxutils.c @@ -196,15 +196,15 @@ void onyx_ast_print(AstNode* node, i32 indent) { bh_printf("Condition:"); onyx_ast_print((AstNode *) if_node->cond, indent + 1); } - if (if_node->true_block) { + if (if_node->true_block.as_if) { print_indent; bh_printf("True block:"); - onyx_ast_print(if_node->true_block, indent + 1); + onyx_ast_print((AstNode *) if_node->true_block.as_if, indent + 1); } - if (if_node->false_block) { + if (if_node->false_block.as_if) { print_indent; bh_printf("False block:"); - onyx_ast_print(if_node->false_block, indent + 1); + onyx_ast_print((AstNode *) if_node->false_block.as_if, indent + 1); } break; diff --git a/src/onyxwasm.c b/src/onyxwasm.c index f8796556..9370999c 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -324,29 +324,29 @@ static void compile_if(OnyxWasmModule* mod, bh_arr(WasmInstruction)* pcode, AstN bh_arr_push(mod->structured_jump_target, 0); - if (if_node->true_block) { + if (if_node->true_block.as_if) { // NOTE: This is kind of gross, but making a function for this doesn't feel right - if (if_node->true_block->kind == AST_NODE_KIND_IF) { - forll (AstNode, stmt, if_node->true_block, next) { + if (if_node->true_block.as_if->base.kind == AST_NODE_KIND_IF) { + forll (AstNode, stmt, (AstNode *) if_node->true_block.as_if, next) { compile_statement(mod, &code, stmt); } - } else if (if_node->true_block->kind == AST_NODE_KIND_BLOCK) { - forll (AstNode, stmt, ((AstNodeBlock *) if_node->true_block)->body, next) { + } else if (if_node->true_block.as_if->base.kind == AST_NODE_KIND_BLOCK) { + forll (AstNode, stmt, if_node->true_block.as_block->body, next) { compile_statement(mod, &code, stmt); } } } - if (if_node->false_block) { + if (if_node->false_block.as_if) { bh_arr_push(code, ((WasmInstruction){ WI_ELSE, 0x00 })); - if (if_node->false_block->kind == AST_NODE_KIND_IF) { - forll (AstNode, stmt, if_node->false_block, next) { + if (if_node->false_block.as_if->base.kind == AST_NODE_KIND_IF) { + forll (AstNode, stmt, (AstNode *) if_node->false_block.as_if, next) { compile_statement(mod, &code, stmt); } - } else if (if_node->false_block->kind == AST_NODE_KIND_BLOCK) { - forll (AstNode, stmt, ((AstNodeBlock *) if_node->false_block)->body, next) { + } else if (if_node->false_block.as_if->base.kind == AST_NODE_KIND_BLOCK) { + forll (AstNode, stmt, if_node->false_block.as_block->body, next) { compile_statement(mod, &code, stmt); } } @@ -875,7 +875,7 @@ void onyx_wasm_module_compile(OnyxWasmModule* module, OnyxProgram* program) { } else if (import_kind == AST_NODE_KIND_GLOBAL) { module->next_global_idx++; - bh_imap_put(&module->global_map, (u64) (*foreign)->import, module->next_import_func_idx++); + bh_imap_put(&module->global_map, (u64) (*foreign)->import, module->next_import_global_idx++); } compile_foreign(module, *foreign); -- 2.25.1