aboutsummaryrefslogtreecommitdiffstats
path: root/src/bootstrap/errors.c
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2021-10-12 10:53:20 +0200
committerBad Diode <bd@badd10de.dev>2021-10-12 10:53:20 +0200
commit3444b5b58a78c12a79365bb35e54cfa029fccd99 (patch)
treea9d86a93666b317d60183b9f7f8b2680628b6fe6 /src/bootstrap/errors.c
parent2627e81de26667b7bc9d88304473e2a234fee7fe (diff)
downloadbdl-3444b5b58a78c12a79365bb35e54cfa029fccd99.tar.gz
bdl-3444b5b58a78c12a79365bb35e54cfa029fccd99.zip
Add error dispatch procedurev0.2
Diffstat (limited to 'src/bootstrap/errors.c')
-rw-r--r--src/bootstrap/errors.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/bootstrap/errors.c b/src/bootstrap/errors.c
new file mode 100644
index 0000000..fcb629a
--- /dev/null
+++ b/src/bootstrap/errors.c
@@ -0,0 +1,33 @@
1typedef enum ErrorType {
2 ERR_TYPE_LEXER,
3 ERR_TYPE_PARSER,
4 ERR_TYPE_RUNTIME,
5} ErrorType;
6
7typedef enum ErrorValue {
8 ERR_UNKNOWN = 0,
9 ERR_UNMATCHED_STRING,
10} ErrorValue;
11
12typedef struct Error {
13 ErrorType type;
14 ErrorValue value;
15 size_t line;
16 size_t col;
17} Error;
18
19static const char* error_msgs[] = {
20 [ERR_UNKNOWN] = "error: something unexpected happened",
21 [ERR_UNMATCHED_STRING] = "error: unmatched string delimiter",
22};
23
24#define ERR_MAX_NUMBER 16
25static Error errors[ERR_MAX_NUMBER];
26static size_t errors_n = 0;
27
28void
29error_push(Error error) {
30 if (errors_n < ERR_MAX_NUMBER) {
31 errors[errors_n++] = error;
32 }
33}