brought back namespaces because i think i get it

now
This commit is contained in:
Karma Riuk
2025-06-29 10:14:04 +02:00
parent 65792464bb
commit 09a0dc7b6d
2 changed files with 26 additions and 21 deletions

View File

@ -4,7 +4,9 @@
#include <string>
namespace token {
struct token {
TokenType type;
token::Type type;
std::string literal;
};
} // namespace token

View File

@ -4,6 +4,8 @@
#include <ostream>
#include <string_view>
namespace token {
// X-macro list of token types and their string representations
#define TOKEN_LIST \
X(ILLEGAL, "ILLEGAL") \
@ -22,7 +24,7 @@
X(LET, "LET")
// Define the TokenType enum using the X-macro
enum class TokenType {
enum class type {
#define X(name, str) name,
TOKEN_LIST
#undef X
@ -30,7 +32,7 @@ enum class TokenType {
// Array mapping enum values to their string representations
static constexpr std::
array<std::string_view, static_cast<size_t>(TokenType::LET) + 1>
array<std::string_view, static_cast<size_t>(type::LET) + 1>
tokenTypeStrings = {
#define X(name, str) str,
TOKEN_LIST
@ -38,9 +40,10 @@ static constexpr std::
};
// Stream insertion operator using the lookup array
inline std::ostream& operator<<(std::ostream& os, TokenType type) {
inline std::ostream& operator<<(std::ostream& os, type type) {
auto idx = static_cast<size_t>(type);
if (idx < tokenTypeStrings.size())
return os << tokenTypeStrings[idx];
return os << "Unknown";
}
} // namespace token