aboutsummaryrefslogtreecommitdiffstats
path: root/src/errors.h
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2021-10-29 15:37:28 +0200
committerBad Diode <bd@badd10de.dev>2021-10-29 15:37:28 +0200
commite73a4c16a2269cdb2f5e7d66fb9839e4c44e14de (patch)
treec44721b005b7a0623e7acc7103ca8e21a25ff422 /src/errors.h
parentfcc131afdd029c606ea39f3557bc3d33a075b1de (diff)
downloadbdl-e73a4c16a2269cdb2f5e7d66fb9839e4c44e14de.tar.gz
bdl-e73a4c16a2269cdb2f5e7d66fb9839e4c44e14de.zip
Prepare third compiler implementation
Diffstat (limited to 'src/errors.h')
-rwxr-xr-xsrc/errors.h48
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
6typedef enum ErrorType {
7 ERR_TYPE_LEXER,
8 ERR_TYPE_PARSER,
9 ERR_TYPE_COMPILER,
10 ERR_TYPE_RUNTIME,
11} ErrorType;
12
13typedef 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
31typedef 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
40typedef struct Errors {
41 Error errors[ERR_MAX_NUMBER];
42 size_t n;
43} Errors;
44
45void error_push(Errors *errors, Error error);
46void report_errors(Errors *errors, const char *file_name);
47
48#endif // BDL_ERRORS_H