lexer_tools.c (3640B)
#include "lexer.h"
void print_tokens(Lexer* lex)
{
Token t;
Token_Type typ;
size_t i;
printf("------- print tokens (%zu) -------\n", lex->len);
for (i = 0; i < lex->len; i++) {
t = lex->tokens[i];
typ = t.type;
printf("%s: %zu:%zu ", t.filename, t.line, t.col);
switch (typ) {
case LIT_STRING:
printf("STRING LITERAL: %s\n", lex->tokens[i].lexeme.value);
break;
case LIT_DECIMAL:
printf("DECIMAL LITERAL: %s\n", lex->tokens[i].lexeme.value);
break;
case LIT_INT:
printf("DECIMAL LITERAL: %s\n", lex->tokens[i].lexeme.value);
break;
case LBRACE:
printf("LBRACE {\n");
break;
case RBRACE:
printf("RBRACE }\n");
break;
case LPAREN:
printf("LPAREN (\n");
break;
case RPAREN:
printf("RPAREN )\n");
break;
case BANG:
printf("BANG !\n");
break;
case BANG_EQ:
printf("BANG_EQ !=\n");
break;
case EQ:
printf("EQ =\n");
break;
case EQ_EQ:
printf("EQ_EQ ==\n");
break;
case EQ_GT:
printf("EQ_GT =>\n");
break;
case SEMICOL:
printf("SEMICOL ;\n");
break;
case LT_EQ:
printf("LT_EQ <=\n");
break;
case LT_LT:
printf("LT_LT <<\n");
break;
case LT_MINUS:
printf("LT_MINUS <-\n");
break;
case LT:
printf("LT <\n");
break;
case GT:
printf("GT >\n");
break;
case GT_EQ:
printf("GT_EQ >=\n");
break;
case GT_GT:
printf("GT_GT >>\n");
break;
case PLUS:
printf("PLUS +\n");
break;
case PLUS_PLUS:
printf("PLUS_PLUS ++\n");
break;
case PLUS_EQ:
printf("PLUS_EQ +=\n");
break;
case MINUS:
printf("MINUS -\n");
break;
case MINUS_EQ:
printf("MINUS_EQ -=\n");
break;
case MINUS_MINUS:
printf("MINUS_MINUS --\n");
break;
case MINUS_GT:
printf("MINUS_GT ->\n");
break;
case STAR:
printf("STAR *\n");
break;
case STAR_EQ:
printf("STAR_EQ *=\n");
break;
case PERCENT:
printf("PERCENT %%\n");
break;
case PERCENT_EQ:
printf("PERCENT_EQ %%=\n");
break;
case AMPERSAND:
printf("AMPERSAND &\n");
break;
case AMPERSAND_AMPERSAND:
printf("AMPERSAND_AMPERSAND &&\n");
break;
case AMPERSAND_EQ:
printf("AMPERSAND_EQ &=\n");
break;
case PIPE:
printf("PIPE |\n");
break;
case PIPE_PIPE:
printf("PIPE_PIPE ||\n");
break;
case PIPE_EQ:
printf("PIPE_EQ |=\n");
break;
case SLASH:
printf("SLASH /\n");
break;
case SLASH_EQ:
printf("SLASH_EQ /=\n");
break;
case IDENT:
printf("IDENT: %s\n", lex->tokens[i].lexeme.value);
break;
default:
printf("print_tokens: unhandled token %i\n", typ);
break;
}
}
}