Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Курсовая работа2 / ErrorHandler
.cpp
// File: ErrorHandler.cpp
#include "StdAfx.h"
#include "ErrorHandler.h"
#include "Interfaces.h"
#include <assert.h>
//-----------------------------------------------------------------------------
CErrorHandler g_ErrorHandler;
//-----------------------------------------------------------------------------
const char* CErrorHandler::ErrorDesc(ENUM_ERRORS ErrNum)
{
switch(ErrNum)
{
case ERR_UNKNOWN_SYMBOL: return "Неизвестный символ";
case ERR_SYNTAX_ERROR : return "Синтаксическая ошибка";
case ERR_ID_UNDECLARED : return "Необъявленный идентификатор";
case ERR_ID_REDEFINITION: return "Переопределение идентификатора";
case ERR_NON_NUMERICAL_TYPE: return "Нечисловой операнд в арифметической операции";
case ERR_NON_BOOLEAN_TYPE: return "Нелогический операнд в логической операции";
case ERR_CONST_ASSIGN: return "Присваивание константе";
case ERR_TYPE_MISMATCH: return "Несоответствие типов";
case ERR_UNTERM_STRING: return "Незавершенная строка";
case ERR_NONCONST_EXPR: return "Неконстантное выражение";
case ERR_TYPE_UNSUPPORTED: return "Операция не определена для данного типа";
case ERR_OUT_OF_RANGE: return "Значение не входит в допустимый диапазон";
case ERR_STRING_TOO_LONG: return "Длина строки превышает максимально допустимую";
default:
assert(false);
return "";
}
}
//-----------------------------------------------------------------------------
void CErrorHandler::Error( struct CError err )
{
m_ErrorList.push_back(err);
g_pOutput->Printf("Line %u: error %u - %s",
err.LineNum, err.ErrNum, ErrorDesc(err.ErrNum));
if (err.Lexem.length() > 0) g_pOutput->Printf(" \'%s\'", err.Lexem.c_str());
g_pOutput->Printf("\r\n");
CCompilerException exptn;
throw exptn;
}
Соседние файлы в папке Курсовая работа2