You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.6 KiB
C++
69 lines
1.6 KiB
C++
15 years ago
|
|
||
|
#ifndef COMPILER_ERRORHANDLER_H_INCLUDED
|
||
|
#define COMPILER_ERRORHANDLER_H_INCLUDED
|
||
|
|
||
|
#include <string>
|
||
|
|
||
|
namespace Compiler
|
||
|
{
|
||
|
struct TokenLoc;
|
||
|
|
||
|
/// \brief Error handling
|
||
|
///
|
||
|
/// This class collects errors and provides an interface for reporting them to the user.
|
||
|
|
||
|
class ErrorHandler
|
||
|
{
|
||
|
int mWarnings;
|
||
|
int mErrors;
|
||
|
|
||
|
protected:
|
||
|
|
||
|
enum Type
|
||
|
{
|
||
|
WarningMessage, ErrorMessage
|
||
|
};
|
||
|
|
||
|
private:
|
||
|
|
||
|
// mutators
|
||
|
|
||
|
virtual void report (const std::string& message, const TokenLoc& loc, Type type) = 0;
|
||
|
///< Report error to the user.
|
||
|
|
||
|
virtual void report (const std::string& message, Type type) = 0;
|
||
|
///< Report a file related error
|
||
|
|
||
|
public:
|
||
|
|
||
|
ErrorHandler();
|
||
|
///< constructor
|
||
|
|
||
|
virtual ~ErrorHandler();
|
||
|
///< destructor
|
||
|
|
||
|
bool isGood() const;
|
||
|
///< Was compiling successful?
|
||
|
|
||
|
int countErrors() const;
|
||
|
///< Return number of errors
|
||
|
|
||
|
int countWarnings() const;
|
||
|
///< Return number of warnings
|
||
|
|
||
|
void warning (const std::string& message, const TokenLoc& loc);
|
||
|
///< Generate a warning message.
|
||
|
|
||
|
void error (const std::string& message, const TokenLoc& loc);
|
||
|
///< Generate an error message.
|
||
|
|
||
|
void endOfFile();
|
||
|
///< Generate an error message for an unexpected EOF.
|
||
|
|
||
|
virtual void reset();
|
||
|
///< Remove all previous error/warning events
|
||
|
};
|
||
|
}
|
||
|
|
||
|
#endif
|