From a3607441cbd3aa52265fe159da4340601fa563b3 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Thu, 9 Jul 2020 12:49:39 -0500 Subject: [PATCH] Small refactor; Added more detailed error printing --- docs/plan | 7 ++++++- include/onyxlex.h | 5 +++-- include/onyxmsgs.h | 6 +++++- onyx | Bin 223408 -> 224840 bytes progs/test.onyx | 1 - src/onyx.c | 8 ++++---- src/onyxchecker.c | 20 ++++++++++---------- src/onyxlex.c | 19 ++++++++++--------- src/onyxmsgs.c | 28 +++++++++++++++++++++++++--- src/onyxparser.c | 14 +++++++------- src/onyxsymres.c | 24 ++++++++++++------------ src/onyxwasm.c | 8 ++++---- 12 files changed, 86 insertions(+), 54 deletions(-) diff --git a/docs/plan b/docs/plan index 26de694b..1c0078d9 100644 --- a/docs/plan +++ b/docs/plan @@ -84,10 +84,15 @@ HOW: - Changing output location - Viewing help screen - [ ] 'use' statements work + [X] 'use' statements work - Adds '.onyx' to the end of the file name list - Only searches in current directory for now + [ ] Completely overhaul the type system + - Keep the builtins + - Add pointers + - Add structs + [ ] Output 'drop' instruction for functions whose return value isn't used [ ] Devise and implement a simple set of implicit type casting rules. diff --git a/include/onyxlex.h b/include/onyxlex.h index 6b35fe61..f145b410 100644 --- a/include/onyxlex.h +++ b/include/onyxlex.h @@ -48,13 +48,14 @@ typedef enum TokenType { typedef struct OnyxFilePos { const char* filename; - u64 line, column; + char* line_start; + u32 line, column; } OnyxFilePos; typedef struct OnyxToken { TokenType type; i32 length; - char* token; + char* text; OnyxFilePos pos; } OnyxToken; diff --git a/include/onyxmsgs.h b/include/onyxmsgs.h index f30c5b46..8490bd06 100644 --- a/include/onyxmsgs.h +++ b/include/onyxmsgs.h @@ -42,12 +42,16 @@ typedef struct OnyxMessage { typedef struct OnyxMessages { bh_allocator allocator; + // NOTE: Pointer to a table mapping file paths to + // their file contents. Used for better error messages + bh_table(bh_file_contents)* file_contents; + OnyxMessage* first; } OnyxMessages; void onyx_message_add(OnyxMessages* msgs, OnyxMessageType type, OnyxFilePos pos, ...); void onyx_message_print(OnyxMessages* msgs); b32 onyx_message_has_errors(OnyxMessages* msgs); -void onyx_message_create(bh_allocator allocator, OnyxMessages* msgs); +void onyx_message_create(bh_allocator allocator, OnyxMessages* msgs, bh_table(bh_file_contents)* files); #endif diff --git a/onyx b/onyx index 11e0a223d083689be923236ac124cff10a443b56..c96373e52331992eb241a71850623ece26fa74f4 100755 GIT binary patch delta 76539 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 delta 74811 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 diff --git a/progs/test.onyx b/progs/test.onyx index 3858a7ad..5da6fd85 100644 --- a/progs/test.onyx +++ b/progs/test.onyx @@ -62,7 +62,6 @@ export main2 :: proc { // } export main :: proc { - print_i32(shl_i32(16, 2)); print_f32(sqrt_f32(2.0f)); print_i32(5 * 6 + 2 * 3); diff --git a/src/onyx.c b/src/onyx.c index f91500c8..680cff77 100644 --- a/src/onyx.c +++ b/src/onyx.c @@ -174,7 +174,7 @@ static CompilerProgress process_source_file(CompilerState* compiler_state, char* char* formatted_name = bh_aprintf( global_heap_allocator, "%b.onyx", - (*use_node)->filename->token, (*use_node)->filename->length); + (*use_node)->filename->text, (*use_node)->filename->length); bh_arr_push(compiler_state->queued_files, formatted_name); } @@ -198,7 +198,9 @@ static void compiler_state_init(CompilerState* compiler_state, OnyxCompileOption bh_arena_init(&compiler_state->msg_arena, opts->allocator, 4096); compiler_state->msg_alloc = bh_arena_allocator(&compiler_state->msg_arena); - onyx_message_create(compiler_state->msg_alloc, &compiler_state->msgs); + bh_table_init(opts->allocator, compiler_state->loaded_files, 15); + + onyx_message_create(compiler_state->msg_alloc, &compiler_state->msgs, &compiler_state->loaded_files); compiler_state->token_alloc = opts->allocator; @@ -210,8 +212,6 @@ static void compiler_state_init(CompilerState* compiler_state, OnyxCompileOption bh_arena_init(&compiler_state->sp_arena, opts->allocator, 16 * 1024); compiler_state->sp_alloc = bh_arena_allocator(&compiler_state->sp_arena); - bh_table_init(opts->allocator, compiler_state->loaded_files, 15); - bh_arr_new(opts->allocator, compiler_state->queued_files, 4); // NOTE: Add all files passed by command line to the queue diff --git a/src/onyxchecker.c b/src/onyxchecker.c index dfc905cc..b63ae843 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -18,7 +18,7 @@ static void check_assignment(OnyxSemPassState* state, AstNodeAssign* assign) { onyx_message_add(state->msgs, ONYX_MESSAGE_TYPE_UNRESOLVED_SYMBOL, assign->lval->token->pos, - assign->lval->token->token, assign->lval->token->length); + assign->lval->token->text, assign->lval->token->length); return; } @@ -26,7 +26,7 @@ static void check_assignment(OnyxSemPassState* state, AstNodeAssign* assign) { onyx_message_add(state->msgs, ONYX_MESSAGE_TYPE_ASSIGN_CONST, assign->base.token->pos, - assign->lval->token->token, assign->lval->token->length); + assign->lval->token->text, assign->lval->token->length); return; } @@ -34,7 +34,7 @@ static void check_assignment(OnyxSemPassState* state, AstNodeAssign* assign) { onyx_message_add(state->msgs, ONYX_MESSAGE_TYPE_NOT_LVAL, assign->base.token->pos, - assign->lval->token->token, assign->lval->token->length); + assign->lval->token->text, assign->lval->token->length); return; } @@ -107,7 +107,7 @@ static void check_call(OnyxSemPassState* state, AstNodeCall* call) { onyx_message_add(state->msgs, ONYX_MESSAGE_TYPE_UNRESOLVED_SYMBOL, callee->base.token->pos, - callee->base.token->token, callee->base.token->length); + callee->base.token->text, callee->base.token->length); return; } @@ -115,7 +115,7 @@ static void check_call(OnyxSemPassState* state, AstNodeCall* call) { onyx_message_add(state->msgs, ONYX_MESSAGE_TYPE_CALL_NON_FUNCTION, call->base.token->pos, - callee->base.token->token, callee->base.token->length); + callee->base.token->text, callee->base.token->length); return; } @@ -127,7 +127,7 @@ static void check_call(OnyxSemPassState* state, AstNodeCall* call) { onyx_token_null_toggle(callee->base.token); - char* intr_name = callee->base.token->token; + char* intr_name = callee->base.token->text; OnyxIntrinsic intrinsic = ONYX_INTRINSIC_UNDEFINED; if (!strcmp("memory_size", intr_name)) intrinsic = ONYX_INTRINSIC_MEMORY_SIZE; @@ -195,7 +195,7 @@ static void check_call(OnyxSemPassState* state, AstNodeCall* call) { onyx_message_add(state->msgs, ONYX_MESSAGE_TYPE_FUNCTION_PARAM_TYPE_MISMATCH, call->base.token->pos, - callee->base.token->token, callee->base.token->length, + callee->base.token->text, callee->base.token->length, formal_param->base.type->name, arg_pos, actual_param->base.type->name); return; @@ -284,7 +284,7 @@ static void check_expression(OnyxSemPassState* state, AstNodeTyped* expr) { onyx_message_add(state->msgs, ONYX_MESSAGE_TYPE_UNRESOLVED_SYMBOL, expr->token->pos, - expr->token->token, expr->token->length); + expr->token->text, expr->token->length); break; case AST_NODE_KIND_LOCAL: @@ -332,7 +332,7 @@ static void check_global(OnyxSemPassState* state, AstNodeGlobal* global) { onyx_message_add(state->msgs, ONYX_MESSAGE_TYPE_GLOBAL_TYPE_MISMATCH, global->base.token->pos, - global->base.token->token, global->base.token->length, + global->base.token->text, global->base.token->length, global->base.type->name, global->initial_value->type->name); return; } @@ -379,7 +379,7 @@ static void check_block(OnyxSemPassState* state, AstNodeBlock* block) { onyx_message_add(state->msgs, ONYX_MESSAGE_TYPE_UNRESOLVED_TYPE, local->base.token->pos, - local->base.token->token, local->base.token->length); + local->base.token->text, local->base.token->length); return; } } diff --git a/src/onyxlex.c b/src/onyxlex.c index 600d796d..ae206870 100644 --- a/src/onyxlex.c +++ b/src/onyxlex.c @@ -66,7 +66,7 @@ static b32 token_lit(OnyxTokenizer* tokenizer, OnyxToken* tk, char* lit, b32 is_ return 0; tk->type = type; - tk->token = tokenizer->curr; + tk->text = tokenizer->curr; tk->length = len; tk->pos.line = tokenizer->line_number; tk->pos.column = (i32)(tokenizer->curr - tokenizer->line_start) + 1; @@ -88,8 +88,8 @@ const char* onyx_get_token_type_name(TokenType tkn_type) { void onyx_token_null_toggle(OnyxToken* tkn) { static char backup = 0; - char tmp = tkn->token[tkn->length]; - tkn->token[tkn->length] = backup; + char tmp = tkn->text[tkn->length]; + tkn->text[tkn->length] = backup; backup = tmp; } @@ -101,8 +101,9 @@ OnyxToken* onyx_get_token(OnyxTokenizer* tokenizer) { INCREMENT_CURR_TOKEN(tokenizer) tk.type = TOKEN_TYPE_UNKNOWN; - tk.token = tokenizer->curr; + tk.text = tokenizer->curr; tk.length = 1; + tk.pos.line_start = tokenizer->line_start; tk.pos.filename = tokenizer->filename; tk.pos.line = tokenizer->line_number; tk.pos.column = (i32)(tokenizer->curr - tokenizer->line_start) + 1; @@ -116,13 +117,13 @@ OnyxToken* onyx_get_token(OnyxTokenizer* tokenizer) { if (*tokenizer->curr == '/' && *(tokenizer->curr + 1) == '/') { tokenizer->curr += 2; tk.type = TOKEN_TYPE_COMMENT; - tk.token = tokenizer->curr; + tk.text = tokenizer->curr; while (*tokenizer->curr != '\n') { INCREMENT_CURR_TOKEN(tokenizer); } - tk.length = tokenizer->curr - tk.token - 2; + tk.length = tokenizer->curr - tk.text - 2; goto token_parsed; } @@ -154,7 +155,7 @@ OnyxToken* onyx_get_token(OnyxTokenizer* tokenizer) { LITERAL_TOKEN("%=", 0, TOKEN_TYPE_PERCENT_EQUAL); // Symbols - if (char_is_alpha(*tk.token)) { + if (char_is_alpha(*tk.text)) { u64 len = 0; while (char_is_alphanum(*tokenizer->curr) || charset_contains("_$", *tokenizer->curr)) { len++; @@ -167,7 +168,7 @@ OnyxToken* onyx_get_token(OnyxTokenizer* tokenizer) { } // String literal - if (*tk.token == '"') { + if (*tk.text == '"') { u64 len = 0; u64 slash_count = 0; @@ -188,7 +189,7 @@ OnyxToken* onyx_get_token(OnyxTokenizer* tokenizer) { INCREMENT_CURR_TOKEN(tokenizer); - tk.token++; + tk.text++; tk.type = TOKEN_TYPE_LITERAL_STRING; tk.length = len; goto token_parsed; diff --git a/src/onyxmsgs.c b/src/onyxmsgs.c index b05432a2..959c7969 100644 --- a/src/onyxmsgs.c +++ b/src/onyxmsgs.c @@ -1,5 +1,6 @@ #include "onyxmsgs.h" +#include "onyxutils.h" static const char* msg_formats[] = { "%s", @@ -41,12 +42,32 @@ void onyx_message_add(OnyxMessages* msgs, OnyxMessageType type, OnyxFilePos pos, *walker = msg; } +static void print_detailed_message(OnyxMessage* msg, bh_file_contents* fc) { + bh_printf("(%s:%l:%l) %s\n", msg->pos.filename, msg->pos.line, msg->pos.column, msg->text); + + i32 linelength = 0; + char* walker = msg->pos.line_start; + while (*walker != '\n') linelength++, walker++; + + bh_printf("| %b\n", msg->pos.line_start, linelength); + + char* pointer_str = bh_alloc_array(global_scratch_allocator, char, linelength); + memset(pointer_str, 0, linelength); + memset(pointer_str, '~', msg->pos.column - 1); + pointer_str[msg->pos.column - 1] = '^'; + + bh_printf("|~%s\n", pointer_str); +} + void onyx_message_print(OnyxMessages* msgs) { OnyxMessage* msg = msgs->first; + i32 msg_count = 3; - while (msg) { + while (msg && msg_count--) { if (msg->pos.filename) { - bh_printf("(%s:%l:%l) %s\n", msg->pos.filename, msg->pos.line, msg->pos.column, msg->text); + bh_file_contents* fc = &bh_table_get(bh_file_contents, *msgs->file_contents, (char *) msg->pos.filename); + + print_detailed_message(msg, fc); } else { bh_printf("(%l:%l) %s\n", msg->pos.line, msg->pos.column, msg->text); } @@ -58,7 +79,8 @@ b32 onyx_message_has_errors(OnyxMessages* msgs) { return msgs->first != NULL; } -void onyx_message_create(bh_allocator allocator, OnyxMessages* msgs) { +void onyx_message_create(bh_allocator allocator, OnyxMessages* msgs, bh_table(bh_file_contents)* files) { msgs->allocator = allocator; msgs->first = NULL; + msgs->file_contents = files; } diff --git a/src/onyxparser.c b/src/onyxparser.c index 7fa72f6f..b286f4c2 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -97,7 +97,7 @@ static AstNodeNumLit* parse_numeric_literal(OnyxParser* parser) { onyx_token_null_toggle(lit_node->base.token); TypeInfo* type; - char* tok = lit_node->base.token->token; + char* tok = lit_node->base.token->text; // NOTE: charset_contains() behaves more like string_contains() // so I'm using it in this case @@ -427,7 +427,7 @@ static b32 parse_symbol_statement(OnyxParser* parser, AstNode** ret) { onyx_message_add(parser->msgs, ONYX_MESSAGE_TYPE_EXPECTED_EXPRESSION, assignment->base.token->pos, - parser->curr_token->token); + parser->curr_token->text); onyx_token_null_toggle(parser->curr_token); return 1; } @@ -629,10 +629,10 @@ static TypeInfo* parse_type(OnyxParser* parser) { onyx_token_null_toggle(symbol); - if (!bh_table_has(AstNode*, parser->identifiers, symbol->token)) { - onyx_message_add(parser->msgs, ONYX_MESSAGE_TYPE_UNKNOWN_TYPE, symbol->pos, symbol->token); + if (!bh_table_has(AstNode*, parser->identifiers, symbol->text)) { + onyx_message_add(parser->msgs, ONYX_MESSAGE_TYPE_UNKNOWN_TYPE, symbol->pos, symbol->text); } else { - AstNodeTyped* type_info_node = bh_table_get(AstNodeTyped*, parser->identifiers, symbol->token); + AstNodeTyped* type_info_node = bh_table_get(AstNodeTyped*, parser->identifiers, symbol->text); if (type_info_node->kind == AST_NODE_KIND_TYPE) { type_info = type_info_node->type; @@ -688,7 +688,7 @@ static b32 parse_possible_directive(OnyxParser* parser, const char* dir) { expect(parser, '#'); OnyxToken* sym = expect(parser, TOKEN_TYPE_SYMBOL); - return strncmp(dir, sym->token, sym->length) == 0; + return strncmp(dir, sym->text, sym->length) == 0; } static AstNodeFunction* parse_function_definition(OnyxParser* parser) { @@ -845,7 +845,7 @@ static AstNode* parse_top_level_statement(OnyxParser* parser) { onyx_message_add(parser->msgs, ONYX_MESSAGE_TYPE_UNEXPECTED_TOKEN, parser->curr_token->pos, - parser->curr_token->token); + parser->curr_token->text); onyx_token_null_toggle(parser->curr_token); } diff --git a/src/onyxsymres.c b/src/onyxsymres.c index 463fff61..accec6e5 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -26,11 +26,11 @@ static void symbol_introduce(OnyxSemPassState* state, AstNode* symbol) { sp_sym->node = symbol; sp_sym->shadowed = NULL; - if (bh_table_has(SemPassSymbol *, state->symbols, symbol->token->token)) { - sp_sym->shadowed = bh_table_get(SemPassSymbol *, state->symbols, symbol->token->token); + if (bh_table_has(SemPassSymbol *, state->symbols, symbol->token->text)) { + sp_sym->shadowed = bh_table_get(SemPassSymbol *, state->symbols, symbol->token->text); } - bh_table_put(SemPassSymbol *, state->symbols, symbol->token->token, sp_sym); + bh_table_put(SemPassSymbol *, state->symbols, symbol->token->text, sp_sym); if (symbol->kind == AST_NODE_KIND_LOCAL) { AstNodeLocal* local = (AstNodeLocal *) symbol; @@ -44,12 +44,12 @@ static void symbol_introduce(OnyxSemPassState* state, AstNode* symbol) { static void symbol_remove(OnyxSemPassState* state, AstNode* symbol) { onyx_token_null_toggle(symbol->token); - SemPassSymbol* sp_sym = bh_table_get(SemPassSymbol *, state->symbols, symbol->token->token); + SemPassSymbol* sp_sym = bh_table_get(SemPassSymbol *, state->symbols, symbol->token->text); if (sp_sym->shadowed) { - bh_table_put(SemPassSymbol *, state->symbols, symbol->token->token, sp_sym->shadowed); + bh_table_put(SemPassSymbol *, state->symbols, symbol->token->text, sp_sym->shadowed); } else { - bh_table_delete(SemPassSymbol *, state->symbols, symbol->token->token); + bh_table_delete(SemPassSymbol *, state->symbols, symbol->token->text); } onyx_token_null_toggle(symbol->token); @@ -58,17 +58,17 @@ static void symbol_remove(OnyxSemPassState* state, AstNode* symbol) { static AstNode* symbol_resolve(OnyxSemPassState* state, AstNode* symbol) { onyx_token_null_toggle(symbol->token); - if (!bh_table_has(SemPassSymbol *, state->symbols, symbol->token->token)) { + if (!bh_table_has(SemPassSymbol *, state->symbols, symbol->token->text)) { onyx_message_add(state->msgs, ONYX_MESSAGE_TYPE_UNKNOWN_SYMBOL, symbol->token->pos, - symbol->token->token); + symbol->token->text); onyx_token_null_toggle(symbol->token); return symbol; } - SemPassSymbol* sp_sym = bh_table_get(SemPassSymbol *, state->symbols, symbol->token->token); + SemPassSymbol* sp_sym = bh_table_get(SemPassSymbol *, state->symbols, symbol->token->text); onyx_token_null_toggle(symbol->token); return sp_sym->node; @@ -93,16 +93,16 @@ static b32 symbol_unique_introduce(OnyxSemPassState* state, AstNode* symbol) { onyx_token_null_toggle(symbol->token); // NOTE: If the function hasn't already been defined - if (!bh_table_has(SemPassSymbol *, state->symbols, symbol->token->token)) { + if (!bh_table_has(SemPassSymbol *, state->symbols, symbol->token->text)) { SemPassSymbol* sp_sym = bh_alloc_item(state->allocator, SemPassSymbol); sp_sym->node = symbol; sp_sym->shadowed = NULL; - bh_table_put(SemPassSymbol *, state->symbols, symbol->token->token, sp_sym); + bh_table_put(SemPassSymbol *, state->symbols, symbol->token->text, sp_sym); } else { onyx_message_add(state->msgs, ONYX_MESSAGE_TYPE_CONFLICTING_GLOBALS, symbol->token->pos, - symbol->token->token); + symbol->token->text); // NOTE: I really wish C had defer... onyx_token_null_toggle(symbol->token); diff --git a/src/onyxwasm.c b/src/onyxwasm.c index 20faa77a..3b4de695 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -801,7 +801,7 @@ static void compile_function(OnyxWasmModule* mod, AstNodeFunction* fd) { .kind = WASM_FOREIGN_FUNCTION, .idx = func_idx, }; - bh_table_put(WasmExport, mod->exports, fd->base.token->token, wasm_export); + bh_table_put(WasmExport, mod->exports, fd->base.token->text, wasm_export); mod->export_count++; onyx_token_null_toggle(fd->base.token); @@ -870,7 +870,7 @@ static void compile_global_declaration(OnyxWasmModule* module, AstNodeGlobal* gl .kind = WASM_FOREIGN_GLOBAL, .idx = global_idx, }; - bh_table_put(WasmExport, module->exports, global->base.token->token, wasm_export); + bh_table_put(WasmExport, module->exports, global->base.token->text, wasm_export); module->export_count++; onyx_token_null_toggle(global->base.token); @@ -1161,8 +1161,8 @@ static i32 output_importsection(OnyxWasmModule* module, bh_buffer* buff) { bh_buffer_append(&vec_buff, leb, leb_len); bh_arr_each(WasmImport, import, module->imports) { - output_name(import->mod->token, import->mod->length, &vec_buff); - output_name(import->name->token, import->name->length, &vec_buff); + output_name(import->mod->text, import->mod->length, &vec_buff); + output_name(import->name->text, import->name->length, &vec_buff); bh_buffer_write_byte(&vec_buff, (u8) import->kind); leb = uint_to_uleb128((u64) import->idx, &leb_len); -- 2.25.1