From 3444b5b58a78c12a79365bb35e54cfa029fccd99 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Tue, 12 Oct 2021 10:53:20 +0200 Subject: Add error dispatch procedure --- src/bootstrap/errors.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/bootstrap/errors.c (limited to 'src/bootstrap/errors.c') 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 @@ +typedef enum ErrorType { + ERR_TYPE_LEXER, + ERR_TYPE_PARSER, + ERR_TYPE_RUNTIME, +} ErrorType; + +typedef enum ErrorValue { + ERR_UNKNOWN = 0, + ERR_UNMATCHED_STRING, +} ErrorValue; + +typedef struct Error { + ErrorType type; + ErrorValue value; + size_t line; + size_t col; +} Error; + +static const char* error_msgs[] = { + [ERR_UNKNOWN] = "error: something unexpected happened", + [ERR_UNMATCHED_STRING] = "error: unmatched string delimiter", +}; + +#define ERR_MAX_NUMBER 16 +static Error errors[ERR_MAX_NUMBER]; +static size_t errors_n = 0; + +void +error_push(Error error) { + if (errors_n < ERR_MAX_NUMBER) { + errors[errors_n++] = error; + } +} -- cgit v1.2.1