#ifndef TOKEN_CC #define TOKEN_CC #include "source.cc" #include "common.cc" #define TOKEN_KINDS_NOLEX \ X(Eof) \ X(Invalid_Char) \ X(Invalid_Literal) #define TOKEN_KINDS_SLEX X(Hash, '#') #define TOKEN_KIND(name) Token_Kind_##name enum Token_Kind { #define X(name) TOKEN_KIND(name), TOKEN_KINDS_NOLEX #undef X #define X(name, _) TOKEN_KIND(name), TOKEN_KINDS_SLEX #undef X }; struct Token { Token_Kind kind; String text; Span span; }; #endif