aboutsummaryrefslogtreecommitdiffstats
path: root/src/bootstrap/errors.c
diff options
context:
space:
mode:
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}