aboutsummaryrefslogtreecommitdiff
path: root/exc.h
diff options
context:
space:
mode:
Diffstat (limited to 'exc.h')
-rw-r--r--exc.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/exc.h b/exc.h
new file mode 100644
index 0000000..7a6879d
--- /dev/null
+++ b/exc.h
@@ -0,0 +1,37 @@
+#ifndef EXC_H
+#define EXC_H
+
+#include "consts.h"
+#include <string>
+
+using std::string;
+
+/** @class GeneralError
+ * The top-level exception
+ */
+class GeneralError {
+ public:
+ virtual string get_msg() = 0; /**< Extract error message */
+};
+
+class SyntaxError : public GeneralError {
+ protected:
+ string msg; /**< Error mesg */
+ ErrCode code; /**< Error code */
+ public:
+
+ SyntaxError(ErrCode code); /**< Construct an SyntaxError */
+ string get_msg(); /**< Get the error message */
+};
+
+class TokenError : public SyntaxError {
+ public:
+ TokenError(string token, ErrCode code); /**< Construct an TokenError */
+};
+
+class NormalError : public SyntaxError {
+ public:
+ NormalError(ErrCode code);
+};
+
+#endif