diff options
author | Bad Diode <bd@badd10de.dev> | 2022-02-01 18:36:52 +0100 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2022-02-01 18:36:52 +0100 |
commit | ee1a5de91c875fb66724dc21c02333bfebe2a812 (patch) | |
tree | d3eaa226816d295bb9dc48a2aed27044832ec413 /src/bytecode/errors.c | |
parent | 3156265c7b2da8cc43fee996c0518ea274d39c8a (diff) | |
download | bdl-ee1a5de91c875fb66724dc21c02333bfebe2a812.tar.gz bdl-ee1a5de91c875fb66724dc21c02333bfebe2a812.zip |
Add new syntax to lexer and prepare refactor
Diffstat (limited to 'src/bytecode/errors.c')
-rwxr-xr-x | src/bytecode/errors.c | 52 |
1 files changed, 0 insertions, 52 deletions
diff --git a/src/bytecode/errors.c b/src/bytecode/errors.c deleted file mode 100755 index b2aab93..0000000 --- a/src/bytecode/errors.c +++ /dev/null | |||
@@ -1,52 +0,0 @@ | |||
1 | #include "errors.h" | ||
2 | |||
3 | static const char* error_msgs[] = { | ||
4 | [ERR_UNKNOWN] = "error: something unexpected happened", | ||
5 | [ERR_UNMATCHED_STRING] = "error: unmatched string delimiter", | ||
6 | [ERR_UNBALANCED_PAREN] = "error: unbalanced parentheses", | ||
7 | [ERR_NOT_IMPLEMENTED] = "error: not implemented", | ||
8 | [ERR_EOF_REACHED] = "error: EOF reached", | ||
9 | [ERR_UNKNOWN_TOKEN] = "error: unknown token", | ||
10 | [ERR_UNKNOWN_OBJ_TYPE] = "error: can't eval unknown object type", | ||
11 | [ERR_NOT_A_SYMBOL] = "error: object is not a symbol", | ||
12 | [ERR_SYMBOL_NOT_FOUND] = "error: symbol not found", | ||
13 | [ERR_OBJ_NOT_CALLABLE] = "error: object is not callable", | ||
14 | [ERR_NOT_ENOUGH_ARGS] = "error: not enough arguments", | ||
15 | [ERR_TOO_MANY_ARGS] = "error: too many arguments", | ||
16 | [ERR_WRONG_ARG_TYPE] = "error: wrong argument type", | ||
17 | [ERR_DIVISION_BY_ZERO] = "error: division by zero", | ||
18 | [ERR_PC_OOB] = "error: pc out of bounds", | ||
19 | [ERR_EMPTY_CHUNK] = "error: empty chunk", | ||
20 | [ERR_AMBIGUOUS_PARAMS] = "error: ambiguous parameter names", | ||
21 | }; | ||
22 | |||
23 | static Error errors[ERR_MAX_NUMBER]; | ||
24 | static size_t errors_n = 0; | ||
25 | static bool supress_errors = false; | ||
26 | |||
27 | void | ||
28 | error_push(Error error) { | ||
29 | if (errors_n < ERR_MAX_NUMBER) { | ||
30 | errors[errors_n++] = error; | ||
31 | } | ||
32 | } | ||
33 | |||
34 | void | ||
35 | report_errors(char *file_name) { | ||
36 | for (size_t i = 0; i < errors_n; i++) { | ||
37 | Error err = errors[i]; | ||
38 | fprintf(stderr, "%s", file_name); | ||
39 | if (err.line != 0) { | ||
40 | fprintf(stderr, ":%ld:%ld", err.line, err.col); | ||
41 | } | ||
42 | switch (err.type) { | ||
43 | case ERR_TYPE_LEXER: { fprintf(stderr, ": [lexer]"); } break; | ||
44 | case ERR_TYPE_COMPILER: { fprintf(stderr, ": [compiler]"); } break; | ||
45 | case ERR_TYPE_RUNTIME: { fprintf(stderr, ": [runtime]"); } break; | ||
46 | case ERR_TYPE_PARSER: { fprintf(stderr, ": [parser]"); } break; | ||
47 | default: break; | ||
48 | } | ||
49 | fprintf(stderr, " %s\n", error_msgs[err.value]); | ||
50 | } | ||
51 | errors_n = 0; | ||
52 | } | ||