diff options
Diffstat (limited to 'Token.c')
-rw-r--r-- | Token.c | 71 |
1 files changed, 41 insertions, 30 deletions
@@ -21,37 +21,48 @@ void token_print(const Token *tok) putchar('\n'); } -const char *token_type_str(unsigned int type) +#define CAS(t) case t: return #t +const char *token_type_str(TokenType type) { switch (type) { - case TOK_WORD: return "TOK_WORD"; - case TOK_STRING: return "TOK_STRING"; - case TOK_INTEGER: return "TOK_INTEGER"; - case TOK_PAREN_OPEN: return "TOK_PAREN_OPEN"; - case TOK_PAREN_CLOS: return "TOK_PAREN_CLOS"; - case TOK_CURL_OPEN: return "TOK_CURL_OPEN"; - case TOK_CURL_CLOS: return "TOK_CURL_CLOS"; - case TOK_SQUAR_OPEN: return "TOK_SQUAR_OPEN"; - case TOK_SQUAR_CLOS: return "TOK_SQUAR_CLOS"; - case TOK_COLON: return "TOK_COLON"; - case TOK_SEMICOLON: return "TOK_SEMICOLON"; - case TOK_ASSIGN: return "TOK_ASSIGN"; - case TOK_COMMA: return "TOK_COMMA"; - case TOK_COMP_LESS: return "TOK_COMP_LESS"; - case TOK_MODULO: return "TOK_MODULO"; - case TOK_MULT: return "TOK_MULT"; - case TOK_COMP_EQ: return "TOK_COMP_EQ"; - case TOK_COMP_NEQ: return "TOK_COMP_NEQ"; - case TOK_COMP_LESSEQ: return "TOK_COMP_LESSEQ"; - case TOK_COMP_MOREEQ: return "TOK_COMP_MOREEQ"; - case TOK_COMP_OR: return "TOK_COMP_OR"; - case TOK_COMP_AND: return "TOK_COMP_AND"; - case TOK_KW_CONST: return "TOK_KW_CONST"; - case TOK_KW_VAR: return "TOK_KW_VAR"; - case TOK_KW_FN: return "TOK_KW_FN"; - case TOK_KW_IF: return "TOK_KW_IF"; - case TOK_KW_ELSE: return "TOK_KW_ELSE"; - case TOK_KW_WHILE: return "TOK_KW_WHILE"; - default: return "TOK_?"; + CAS(TOK_NONE); + CAS(TOK_WORD); + CAS(TOK_STRING); + CAS(TOK_INTEGER); + CAS(TOK_PAREN_OPEN); + CAS(TOK_PAREN_CLOS); + CAS(TOK_CURL_OPEN); + CAS(TOK_CURL_CLOS); + CAS(TOK_SQUAR_OPEN); + CAS(TOK_SQUAR_CLOS); + CAS(TOK_COLON); + CAS(TOK_SEMICOLON); + CAS(TOK_ASSIGN); + CAS(TOK_COMMA); + CAS(TOK_COMP_LESS); + CAS(TOK_COMP_MORE); + CAS(TOK_ADD); + CAS(TOK_SUB); CAS(TOK_MUL); + CAS(TOK_DIV); + CAS(TOK_MOD); + CAS(TOK_AND); + CAS(TOK_OR); + CAS(TOK_XOR); + CAS(TOK_REF); + CAS(TOK_NOT); + CAS(TOK_COMMENT); + CAS(TOK_COMP_EQ); + CAS(TOK_COMP_NEQ); + CAS(TOK_COMP_LESSEQ); + CAS(TOK_COMP_MOREEQ); + CAS(TOK_COMP_OR); + CAS(TOK_COMP_AND); + CAS(TOK_KW_CONST); + CAS(TOK_KW_VAR); + CAS(TOK_KW_FN); + CAS(TOK_KW_IF); + CAS(TOK_KW_ELSE); + CAS(TOK_KW_WHILE); } + return "TOK_?"; } |