diff options
author | Bad Diode <bd@badd10de.dev> | 2021-10-29 15:37:28 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2021-10-29 15:37:28 +0200 |
commit | e73a4c16a2269cdb2f5e7d66fb9839e4c44e14de (patch) | |
tree | c44721b005b7a0623e7acc7103ca8e21a25ff422 /src/errors.h | |
parent | fcc131afdd029c606ea39f3557bc3d33a075b1de (diff) | |
download | bdl-e73a4c16a2269cdb2f5e7d66fb9839e4c44e14de.tar.gz bdl-e73a4c16a2269cdb2f5e7d66fb9839e4c44e14de.zip |
Prepare third compiler implementation
Diffstat (limited to 'src/errors.h')
-rwxr-xr-x | src/errors.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/errors.h b/src/errors.h new file mode 100755 index 0000000..7d8e977 --- /dev/null +++ b/src/errors.h | |||
@@ -0,0 +1,48 @@ | |||
1 | #ifndef BDL_ERRORS_H | ||
2 | #define BDL_ERRORS_H | ||
3 | |||
4 | #include "common.h" | ||
5 | |||
6 | typedef enum ErrorType { | ||
7 | ERR_TYPE_LEXER, | ||
8 | ERR_TYPE_PARSER, | ||
9 | ERR_TYPE_COMPILER, | ||
10 | ERR_TYPE_RUNTIME, | ||
11 | } ErrorType; | ||
12 | |||
13 | typedef enum ErrorValue { | ||
14 | ERR_UNKNOWN = 0, | ||
15 | ERR_UNMATCHED_STRING, | ||
16 | ERR_UNBALANCED_PAREN, | ||
17 | ERR_NOT_IMPLEMENTED, | ||
18 | ERR_EOF_REACHED, | ||
19 | ERR_UNKNOWN_TOKEN, | ||
20 | ERR_UNKNOWN_OBJ_TYPE, | ||
21 | ERR_NOT_A_SYMBOL, | ||
22 | ERR_SYMBOL_NOT_FOUND, | ||
23 | ERR_NOT_CALLABLE, | ||
24 | ERR_NOT_ENOUGH_ARGS, | ||
25 | ERR_TOO_MANY_ARGS, | ||
26 | ERR_WRONG_ARG_TYPE, | ||
27 | ERR_DIVISION_BY_ZERO, | ||
28 | ERR_AMBIGUOUS_PARAMS, | ||
29 | } ErrorValue; | ||
30 | |||
31 | typedef struct Error { | ||
32 | ErrorType type; | ||
33 | ErrorValue value; | ||
34 | size_t line; | ||
35 | size_t col; | ||
36 | } Error; | ||
37 | |||
38 | #define ERR_MAX_NUMBER 16 | ||
39 | |||
40 | typedef struct Errors { | ||
41 | Error errors[ERR_MAX_NUMBER]; | ||
42 | size_t n; | ||
43 | } Errors; | ||
44 | |||
45 | void error_push(Errors *errors, Error error); | ||
46 | void report_errors(Errors *errors, const char *file_name); | ||
47 | |||
48 | #endif // BDL_ERRORS_H | ||