From e73a4c16a2269cdb2f5e7d66fb9839e4c44e14de Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Fri, 29 Oct 2021 15:37:28 +0200 Subject: Prepare third compiler implementation --- src/errors.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100755 src/errors.h (limited to 'src/errors.h') 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 @@ +#ifndef BDL_ERRORS_H +#define BDL_ERRORS_H + +#include "common.h" + +typedef enum ErrorType { + ERR_TYPE_LEXER, + ERR_TYPE_PARSER, + ERR_TYPE_COMPILER, + ERR_TYPE_RUNTIME, +} ErrorType; + +typedef enum ErrorValue { + ERR_UNKNOWN = 0, + ERR_UNMATCHED_STRING, + ERR_UNBALANCED_PAREN, + ERR_NOT_IMPLEMENTED, + ERR_EOF_REACHED, + ERR_UNKNOWN_TOKEN, + ERR_UNKNOWN_OBJ_TYPE, + ERR_NOT_A_SYMBOL, + ERR_SYMBOL_NOT_FOUND, + ERR_NOT_CALLABLE, + ERR_NOT_ENOUGH_ARGS, + ERR_TOO_MANY_ARGS, + ERR_WRONG_ARG_TYPE, + ERR_DIVISION_BY_ZERO, + ERR_AMBIGUOUS_PARAMS, +} ErrorValue; + +typedef struct Error { + ErrorType type; + ErrorValue value; + size_t line; + size_t col; +} Error; + +#define ERR_MAX_NUMBER 16 + +typedef struct Errors { + Error errors[ERR_MAX_NUMBER]; + size_t n; +} Errors; + +void error_push(Errors *errors, Error error); +void report_errors(Errors *errors, const char *file_name); + +#endif // BDL_ERRORS_H -- cgit v1.2.1