Скачиваний:
11
Добавлен:
01.05.2014
Размер:
2.04 Кб
Скачать

// 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