summaryrefslogtreecommitdiff
path: root/Token.c
diff options
context:
space:
mode:
Diffstat (limited to 'Token.c')
-rw-r--r--Token.c71
1 files changed, 41 insertions, 30 deletions
diff --git a/Token.c b/Token.c
index ac549bb..e1e5e50 100644
--- a/Token.c
+++ b/Token.c
@@ -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_?";
}