2025-06-08 15:08:45 +01:00

134 lines
3.1 KiB
C++

#include "token.hh"
#include <stdint.h>
std::ostream &operator<<(std::ostream &os, const TokenType &type) {
switch (type) {
case TokenType::LEFT_PAREN:
os << "TokenType::LEFT_PAREN";
break;
case TokenType::RIGHT_PAREN:
os << "TokenType::RIGHT_PAREN";
break;
case TokenType::LEFT_BRACE:
os << "TokenType::LEFT_BRACE";
break;
case TokenType::RIGHT_BRACE:
os << "TokenType::RIGHT_BRACE";
break;
case TokenType::COMMA:
os << "TokenType::COMMA";
break;
case TokenType::DOT:
os << "TokenType::DOT";
break;
case TokenType::MINUS:
os << "TokenType::MINUS";
break;
case TokenType::PLUS:
os << "TokenType::PLUS";
break;
case TokenType::SEMICOLON:
os << "TokenType::SEMICOLON";
break;
case TokenType::SLASH:
os << "TokenType::SLASH";
break;
case TokenType::STAR:
os << "TokenType::STAR";
break;
case TokenType::BANG:
os << "TokenType::BANG";
break;
case TokenType::BANG_EQUAL:
os << "TokenType::BANG_EQUAL";
break;
case TokenType::EQUAL:
os << "TokenType::EQUAL";
break;
case TokenType::EQUAL_EQUAL:
os << "TokenType::EQUAL_EQUAL";
break;
case TokenType::GREATER:
os << "TokenType::GREATER";
break;
case TokenType::GREATER_EQUAL:
os << "TokenType::GREATER_EQUAL";
break;
case TokenType::LESS:
os << "TokenType::LESS";
break;
case TokenType::LESS_EQUAL:
os << "TokenType::LESS_EQUAL";
break;
case TokenType::IDENTIFIER:
os << "TokenType::IDENTIFIER";
break;
case TokenType::STRING:
os << "TokenType::STRING";
break;
case TokenType::NUMBER:
os << "TokenType::NUMBER";
break;
case TokenType::AND:
os << "TokenType::AND";
break;
case TokenType::CLASS:
os << "TokenType::CLASS";
break;
case TokenType::ELSE:
os << "TokenType::ELSE";
break;
case TokenType::FALSE:
os << "TokenType::FALSE";
break;
case TokenType::FUN:
os << "TokenType::FUN";
break;
case TokenType::FOR:
os << "TokenType::FOR";
break;
case TokenType::IF:
os << "TokenType::IF";
break;
case TokenType::NIL:
os << "TokenType::NIL";
break;
case TokenType::OR:
os << "TokenType::OR";
break;
case TokenType::PRINT:
os << "TokenType::PRINT";
break;
case TokenType::RETURN:
os << "TokenType::RETURN";
break;
case TokenType::SUPER:
os << "TokenType::SUPER";
break;
case TokenType::THIS:
os << "TokenType::THIS";
break;
case TokenType::TRUE:
os << "TokenType::TRUE";
break;
case TokenType::VAR:
os << "TokenType::VAR";
break;
case TokenType::WHILE:
os << "TokenType::WHILE";
break;
case TokenType::EOFILE:
os << "TokenType::EOFILE";
break;
}
return os;
}
std::ostream &operator<<(std::ostream &os, const Token &token) {
os << token.type << ' ';
os << token.lexeme << ' ';
os << token.literal;
return os;
}