]> git.localhorst.tv Git - l2e.git/commitdiff
introduced exception type for tokenizer
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Sun, 26 Aug 2012 14:47:44 +0000 (16:47 +0200)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Sun, 26 Aug 2012 14:47:44 +0000 (16:47 +0200)
src/loader/Tokenizer.cpp
src/loader/Tokenizer.h

index 76a3a14e5fc67b3a8c10f9706ed30d84af6863ec..2b87d9c5be43077c186418d75df1cbf041ae93d4 100644 (file)
@@ -8,7 +8,6 @@
 #include "Tokenizer.h"
 
 #include <istream>
-#include <stdexcept>
 
 namespace loader {
 
@@ -18,7 +17,7 @@ bool Tokenizer::HasMore() {
 
 void Tokenizer::Putback(const Token &t) {
        if (isPutback) {
-               throw std::runtime_error("Tokenizer: double putback not supported");
+               throw LexerError("Tokenizer: double putback not supported");
        } else {
                putback = t;
                isPutback = true;
@@ -65,7 +64,7 @@ Tokenizer::Token Tokenizer::ReadToken() {
                                } else if (std::islower(c)) {
                                        CheckKeyword(t);
                                } else {
-                                       throw std::runtime_error(std::string("Tokenizer: cannot parse token: ") + c);
+                                       throw LexerError(std::string("Tokenizer: cannot parse token: ") + c);
                                }
                                return t;
                        }
@@ -105,7 +104,7 @@ Tokenizer::Token Tokenizer::ReadString() {
        std::istream::char_type c;
        in.get(c);
        if (c != '"') {
-               throw std::runtime_error("Tokenizer: strings must begin with '\"'");
+               throw LexerError("Tokenizer: strings must begin with '\"'");
        }
 
        while (in.get(c)) {
index 15eadf8710e20b4d42ed550ad9b72f7697d3e2e7..f2ab4aaaadd2fb5883741f8641f24917e0cff5ab 100644 (file)
@@ -10,6 +10,7 @@
 
 #include <iosfwd>
 #include <ostream>
+#include <stdexcept>
 #include <string>
 
 namespace loader {
@@ -55,6 +56,11 @@ public:
 
        };
 
+       class LexerError: public std::runtime_error {
+       public:
+               explicit LexerError(const std::string &msg) : std::runtime_error(msg) { }
+       };
+
        bool HasMore();
        Token GetNext();
        void Putback(const Token &);