Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Курсовая работа2 / ErrorHandler
.h
// Purpose: Обработка ошибок
#ifndef _ERROR_HANDLER_
#define _ERROR_HANDLER_
//-----------------------------------------------------------------------------
#include <list>
#include <string>
//-----------------------------------------------------------------------------
enum ENUM_ERRORS
{
ERR_UNKNOWN_SYMBOL,
ERR_SYNTAX_ERROR,
ERR_ID_UNDECLARED,
ERR_ID_REDEFINITION,
ERR_NON_NUMERICAL_TYPE,
ERR_NON_BOOLEAN_TYPE,
ERR_CONST_ASSIGN,
ERR_TYPE_MISMATCH,
ERR_UNTERM_STRING, // Незаконченная строка
ERR_NONCONST_EXPR, // Неконстантное выражение
ERR_TYPE_UNSUPPORTED, // Операция не определена для данного типа
ERR_OUT_OF_RANGE,
ERR_STRING_TOO_LONG,
ERR_QUANTITY
};
//-----------------------------------------------------------------------------
// Исключение, возбуждаемое при после обработки ошибки
class CCompilerException
{ };
//-----------------------------------------------------------------------------
struct CError
{
public:
ENUM_ERRORS ErrNum;
unsigned LineNum;
std::string Lexem;
CError(ENUM_ERRORS error, unsigned line, std::string lex = "")
: ErrNum(error), LineNum(line), Lexem(lex) { }
CError() {}
};
class CErrorHandler
{
std::list<CError> m_ErrorList;
const char* ErrorDesc(ENUM_ERRORS ErrNum);
public:
typedef std::list<CError>::iterator iterator;
void Error(CError err) throw(CCompilerException);
iterator begin() { return m_ErrorList.begin(); }
iterator end() { return m_ErrorList.end(); }
void Reset() { m_ErrorList.clear(); }
unsigned ErrorsCount() { return m_ErrorList.size(); }
};
extern CErrorHandler g_ErrorHandler;
//-----------------------------------------------------------------------------
#endif
Соседние файлы в папке Курсовая работа2