123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #include <sstream>
- #include "tokenizer/Token.h"
- Token::Token(TokenType tt, unsigned int line, const std::string& text, double number) :
- type(tt), line(line), text(text), number(number)
- {
- }
- Token::Token(TokenType tt, unsigned int line) : Token(tt, line, "", 0)
- {
- }
- Token::Token(TokenType tt, unsigned int line, double number) : Token(tt, line, "", number)
- {
- }
- Token::Token(TokenType tt, unsigned int line, const std::string& text) : Token(tt, line, text, 0)
- {
- }
- TokenType Token::getType() const
- {
- return type;
- }
- int Token::getLine() const
- {
- return line;
- }
- std::string Token::toString() const
- {
- std::stringstream ss;
- ss << '(';
- ss << line;
- ss << ", ";
- ss << TokenTypeUtils::getEnumName(type);
- if(type == TokenType::LITERAL || type == TokenType::STRING || type == TokenType::LABEL)
- {
- ss << ", \"";
- ss << text;
- ss << "\"";
- }
- else if(type == TokenType::NUMBER)
- {
- ss << ", ";
- char buffer[20];
- snprintf(buffer, 20, (number == (long) number) ? "%lg.0" : "%lg", number);
- ss << buffer;
- }
- ss << ')';
- return ss.str();
- }
|