#ifndef X_TOKENIZER_TOKEN_HPP #define X_TOKENIZER_TOKEN_HPP #include <string> #include <cinttypes> #include <string_util.hpp> #include <token_type.hpp> #include <keyword.hpp> namespace xtokenizer { /** * トークン。 */ class Token { public: Token(int line, int column, TokenType type, const std::string &str, Keyword keyword = Keyword::K_UNKNOWN) noexcept; virtual ~Token() noexcept = default; bool operator==(const Token &token) const noexcept; int line; //!< 行番号 int column; //!< カラム TokenType type; //!< トークン種別 std::string str; //!< トークン文字列 Keyword keyword; //!< キーワード union { uint64_t i; double f; } value; }; } // namespace xtokenizer #endif // XTOKENIZER_TOKEN_HPP