From d38eb782db6cf9a79146493f53f8ee49733cfda2 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Thu, 4 Jun 2020 21:11:25 -0500 Subject: [PATCH] Changed comment syntax --- include/onyxwasm.h | 7 ++++--- onyx | Bin 96992 -> 92680 bytes progs/minimal.onyx | 8 ++++---- src/onyxlex.c | 22 ++-------------------- src/onyxwasm.c | 11 +++++++---- 5 files changed, 17 insertions(+), 31 deletions(-) diff --git a/include/onyxwasm.h b/include/onyxwasm.h index 8c05fe52..030dfa67 100644 --- a/include/onyxwasm.h +++ b/include/onyxwasm.h @@ -16,14 +16,14 @@ typedef enum WasmType : char { typedef struct WasmFuncType { // NOTE: For now, WASM only allows for 1 return value. // This may be lifted in the future. - WasmType return_type; i32 param_count; + WasmType return_type; WasmType param_types[]; } WasmFuncType; typedef struct WasmFunc { - WasmFuncType* type; i32 idx; + i32 type_idx; } WasmFunc; typedef struct OnyxWasmModule { @@ -33,8 +33,9 @@ typedef struct OnyxWasmModule { // 0x7f 0x7f : 0x7f ( (i32, i32) -> i32 ) // to the function type index if it has been created. bh_hash(i32) type_map; - i32 curr_type_idx; + i32 next_type_idx; + // NOTE: This have to be pointers because the type is variadic in size bh_arr(WasmFuncType*) functypes; bh_arr(WasmFunc) funcs; } OnyxWasmModule; diff --git a/onyx b/onyx index 00d2cd3c93fcdf532de7d98d1471af68940c5e44..9aa7cdd2befeeb8ce1182c390ca6a2105ad0ae42 100755 GIT binary patch delta 29027 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 delta 29434 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 diff --git a/progs/minimal.onyx b/progs/minimal.onyx index 433a220a..b228c230 100644 --- a/progs/minimal.onyx +++ b/progs/minimal.onyx @@ -4,12 +4,12 @@ export add :: proc (a i32, b i32) -> i32 { } export mul :: proc (a i32, b i32) -> i64 { - /* Typechecked */ + // Typechecked c: const i64 = ((a as i64) - (b as i64)); - /* Don't love this syntax, but it's easy to parse so whatever - Inferred type, but constant */ - /* a and b are both i32, so i32 + i32 is i32 so d is i32 */ + // Don't love this syntax, but it's easy to parse so whatever + // Inferred type, but constant + // a and b are both i32, so i32 + i32 is i32 so d is i32 d: const = a + b; e: i32 = 10 as i32; diff --git a/src/onyxlex.c b/src/onyxlex.c index d76c93f3..7fdc4370 100644 --- a/src/onyxlex.c +++ b/src/onyxlex.c @@ -118,33 +118,15 @@ OnyxToken* onyx_get_token(OnyxTokenizer* tokenizer) { } // Comments - if (*tokenizer->curr == '/' && *(tokenizer->curr + 1) == '*') { + if (*tokenizer->curr == '/' && *(tokenizer->curr + 1) == '/') { tokenizer->curr += 2; tk.type = TOKEN_TYPE_COMMENT; tk.token = tokenizer->curr; - u16 layers = 1; - while (layers >= 1) { + while (*tokenizer->curr != '\n') { INCREMENT_CURR_TOKEN(tokenizer); - - if (tokenizer->curr == tokenizer->end) { - tk.type = TOKEN_TYPE_END_STREAM; - break; - } - - if (*tokenizer->curr == '/' && *(tokenizer->curr + 1) == '*') { - layers++; - INCREMENT_CURR_TOKEN(tokenizer); - } - - if (*tokenizer->curr == '*' && *(tokenizer->curr + 1) == '/') { - layers--; - INCREMENT_CURR_TOKEN(tokenizer); - } } - INCREMENT_CURR_TOKEN(tokenizer); - tk.length = tokenizer->curr - tk.token - 2; goto token_parsed; } diff --git a/src/onyxwasm.c b/src/onyxwasm.c index a210a605..3c1f5fa7 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -23,6 +23,8 @@ static void process_function_definition(OnyxWasmModule* mod, OnyxAstNodeFuncDef* OnyxAstNodeParam* param = fd->params; i32 param_count = 0; while (param) { + // HACK: Using these directly as part of a string feels weird but they are + // valid characters so I don't think it is going to be much of an issue *(t++) = (char) onyx_type_to_wasm_type(param->type); param_count++; param = param->next; @@ -38,6 +40,7 @@ static void process_function_definition(OnyxWasmModule* mod, OnyxAstNodeFuncDef* type_idx = bh_hash_get(i32, mod->type_map, type_repr_buf); } else { // NOTE: Make a new type + // TODO: Ensure that this isn't going to break things because of alignment WasmFuncType* type = (WasmFuncType*) bh_alloc(mod->allocator, sizeof(WasmFuncType) + sizeof(WasmType) * param_count); type->return_type = return_type; type->param_count = param_count; @@ -47,9 +50,9 @@ static void process_function_definition(OnyxWasmModule* mod, OnyxAstNodeFuncDef* bh_arr_push(mod->functypes, type); - bh_hash_put(i32, mod->type_map, type_repr_buf, mod->curr_type_idx); - type_idx = mod->curr_type_idx; - mod->curr_type_idx++; + bh_hash_put(i32, mod->type_map, type_repr_buf, mod->next_type_idx); + type_idx = mod->next_type_idx; + mod->next_type_idx++; } } @@ -58,7 +61,7 @@ OnyxWasmModule onyx_wasm_generate_module(bh_allocator alloc, OnyxAstNode* progra .allocator = alloc, .type_map = NULL, - .curr_type_idx = 0, + .next_type_idx = 0, .functypes = NULL, .funcs = NULL, -- 2.25.1