#ifndef BDL_ERRORS_H #define BDL_ERRORS_H #include "common.h" typedef enum ErrorType { ERR_TYPE_LEXER, ERR_TYPE_PARSER, } ErrorType; typedef enum ErrorValue { ERR_UNKNOWN = 0, ERR_UNMATCHED_STRING, ERR_UNKNOWN_TOK_TYPE, ERR_UNMATCHED_PAREN, ERR_MALFORMED_NUMBER, ERR_MALFORMED_EXPR, ERR_UNIMPLEMENTED, ERR_NOT_A_NUMBER, ERR_NOT_A_SYMBOL, ERR_NOT_A_STRING, ERR_NOT_A_TYPE, ERR_NOT_A_BOOL, ERR_NOT_A_LPAREN, ERR_NOT_A_RPAREN, ERR_SYMBOL_REDEF, ERR_UNKNOWN_SYMBOL, ERR_TYPE_REDEF, ERR_UNKNOWN_TYPE, ERR_WRONG_RET_TYPE, ERR_WRONG_COND_TYPE, ERR_WRONG_TYPE_T_F, ERR_WRONG_TYPE_NUM, ERR_WRONG_TYPE_BOOL, ERR_WRONG_TYPE_FUN, ERR_TYPE_MISMATCH, ERR_BAD_ARGS, ERR_OK, } ErrorValue; typedef struct Error { ErrorType type; ErrorValue value; size_t line; size_t col; } Error; void push_error(ErrorType type, ErrorValue value, size_t line, size_t col); void check_errors(const char *file_name); bool has_errors(void); #endif // BDL_ERRORS_H