From 9f1f2ff307bb3da8bfc6809ae05be589e1e37ed9 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Tue, 26 Oct 2021 08:55:12 +0200 Subject: Add OP_DROP and improve error reporting --- src/bytecode/errors.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/bytecode/errors.c') diff --git a/src/bytecode/errors.c b/src/bytecode/errors.c index c2ab77f..b4595a1 100755 --- a/src/bytecode/errors.c +++ b/src/bytecode/errors.c @@ -29,3 +29,23 @@ error_push(Error error) { errors[errors_n++] = error; } } + +void +report_errors(char *file_name) { + for (size_t i = 0; i < errors_n; i++) { + Error err = errors[i]; + fprintf(stderr, "%s", file_name); + if (err.line != 0) { + fprintf(stderr, ":%ld:%ld", err.line, err.col); + } + switch (err.type) { + case ERR_TYPE_LEXER: { fprintf(stderr, ": [lexer]"); } break; + case ERR_TYPE_COMPILER: { fprintf(stderr, ": [compiler]"); } break; + case ERR_TYPE_RUNTIME: { fprintf(stderr, ": [runtime]"); } break; + case ERR_TYPE_PARSER: { fprintf(stderr, ": [parser]"); } break; + default: break; + } + fprintf(stderr, " %s\n", error_msgs[err.value]); + } + errors_n = 0; +} -- cgit v1.2.1