diff options
Diffstat (limited to 'Token.c')
-rw-r--r-- | Token.c | 35 |
1 files changed, 32 insertions, 3 deletions
@@ -5,7 +5,7 @@ void token_free(Token *tok) { switch (tok->type) { - case TOK_KEYWORD: + case TOK_WORD: if (tok != NULL && tok->v.s != NULL) free(tok->v.s); default: @@ -15,9 +15,9 @@ void token_free(Token *tok) void token_print(const Token *tok) { - printf("%d ", tok->line); + printf("%u:%u\t", tok->line, tok->column); switch (tok->type) { - case TOK_KEYWORD: printf("TOK_KEYWORD %s\n", tok->v.s); break; + case TOK_WORD: printf("TOK_WORD %s\n", tok->v.s); break; case TOK_STRING: printf("TOK_STRING \"%s\"\n", tok->v.s); break; case TOK_INTEGER: printf("TOK_INTEGER %d\n", tok->v.i); break; case TOK_PAREN_OPEN: printf("TOK_PAREN_OPEN\n"); break; @@ -39,3 +39,32 @@ void token_print(const Token *tok) default: printf("token_print TODO: type %d\n", tok->type); break; } } + +const char *token_type_str(unsigned int 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_STAR: return "TOK_STAR"; + case TOK_INCREMENT: return "TOK_INCREMENT"; + case TOK_COMP_EQ: return "TOK_COMP_EQ"; + case TOK_COMP_NEQ: return "TOK_COMP_NEQ"; + case TOK_KW_CONST: return "TOK_KW_CONST"; + case TOK_KW_VAR: return "TOK_KW_VAR"; + case TOK_KW_FN: return "TOK_KW_FN"; + default: return "TOK_?"; + } +} |