Add operator<< implementation for Token for debugging purposes
This commit is contained in:
@@ -19,6 +19,7 @@ struct Token {
|
||||
enum TokenType type;
|
||||
std::variant<int64_t, std::string> value;
|
||||
};
|
||||
std::ostream &operator<<(std::ostream &os, Token const &t);
|
||||
|
||||
class Lexer {
|
||||
private:
|
||||
|
16
src/lex.cpp
16
src/lex.cpp
@@ -8,6 +8,22 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
std::ostream &operator<<(std::ostream &os, Token const &t) {
|
||||
os << "Token(";
|
||||
switch (t.type) {
|
||||
case TokenType::OpenParen: os << "OpenParen)"; break;
|
||||
case TokenType::CloseParen: os << "CloseParen)"; break;
|
||||
case TokenType::Dollar: os << "Dollar)"; break;
|
||||
case TokenType::Symbol: os << "Symbol, " << get<string>(t.value) << ")"; break;
|
||||
case TokenType::String: os << "String, \"" << get<string>(t.value) << "\")"; break;
|
||||
case TokenType::Int: os << "Int, " << get<int64_t>(t.value) << ")"; break;
|
||||
case TokenType::End: os << "END)"; break;
|
||||
default:
|
||||
os << ")";
|
||||
}
|
||||
return os;
|
||||
}
|
||||
|
||||
bool ispunct(char c) {
|
||||
for (char i : "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~") {
|
||||
if (i == c) return true;
|
||||
|
Reference in New Issue
Block a user