X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=src%2Floader%2FTokenizer.h;h=15eadf8710e20b4d42ed550ad9b72f7697d3e2e7;hb=996552758ec3bc748081b65b26b4a61bcd619324;hp=f363af70bd0169684a247c3bb45262b6dbe6542a;hpb=93971b3ba23e6b51319b07d7d82dcbcf976f8b9a;p=l2e.git diff --git a/src/loader/Tokenizer.h b/src/loader/Tokenizer.h index f363af7..15eadf8 100644 --- a/src/loader/Tokenizer.h +++ b/src/loader/Tokenizer.h @@ -9,6 +9,7 @@ #define LOADER_TOKENIZER_H_ #include +#include #include namespace loader { @@ -16,7 +17,7 @@ namespace loader { class Tokenizer { public: - Tokenizer(std::istream &in) : in(in), isPutback(false) { } + explicit Tokenizer(std::istream &in) : in(in), isPutback(false) { } ~Tokenizer() { } private: Tokenizer(const Tokenizer &); @@ -46,7 +47,7 @@ public: }; Token() : type(UNKNOWN), number(0) { } - Token(Type t) : type(t), number(0) { } + explicit Token(Type t) : type(t), number(0) { } Type type; std::string str; @@ -74,6 +75,50 @@ private: }; +inline const char *TokenTypeToString(Tokenizer::Token::Type t) { + switch (t) { + case Tokenizer::Token::ANGLE_BRACKET_OPEN: + return "ANGLE_BRACKET_OPEN"; + case Tokenizer::Token::ANGLE_BRACKET_CLOSE: + return "ANGLE_BRACKET_CLOSE"; + case Tokenizer::Token::CHEVRON_OPEN: + return "CHEVRON_OPEN"; + case Tokenizer::Token::CHEVRON_CLOSE: + return "CHEVRON_CLOSE"; + case Tokenizer::Token::COLON: + return "COLON"; + case Tokenizer::Token::COMMA: + return "COMMA"; + case Tokenizer::Token::BRACKET_OPEN: + return "BRACKET_OPEN"; + case Tokenizer::Token::BRACKET_CLOSE: + return "BRACKET_CLOSE"; + case Tokenizer::Token::NUMBER: + return "NUMBER"; + case Tokenizer::Token::STRING: + return "STRING"; + case Tokenizer::Token::KEYWORD_EXPORT: + return "KEYWORD_EXPORT"; + case Tokenizer::Token::KEYWORD_FALSE: + return "KEYWORD_FALSE"; + case Tokenizer::Token::KEYWORD_INCLUDE: + return "KEYWORD_INCLUDE"; + case Tokenizer::Token::KEYWORD_TRUE: + return "KEYWORD_TRUE"; + case Tokenizer::Token::IDENTIFIER: + return "IDENTIFIER"; + case Tokenizer::Token::TYPE_NAME: + return "TYPE_NAME"; + default: + return "UNKNOWN"; + } +} + +inline std::ostream &operator <<(std::ostream &out, Tokenizer::Token::Type t) { + out << TokenTypeToString(t); + return out; +} + } #endif /* LOADER_TOKENIZER_H_ */