#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