summaryrefslogtreecommitdiff
path: root/Token.c
blob: 0f259a1190faf16488c89e1d58303ae580069058 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "Token.h"
#include <stdlib.h>
#include <stdio.h>

void token_free(Token *tok)
{
	switch (tok->type) {
	case TOK_KEYWORD:
		if (tok != NULL && tok->v.s != NULL)
			free(tok->v.s);
	default:
		break;
	}
}

void token_print(const Token *tok)
{
	printf("%d ", tok->line);
	switch (tok->type) {
	case TOK_KEYWORD: printf("TOK_KEYWORD     %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;
	case TOK_PAREN_CLOS: printf("TOK_PAREN_CLOS\n"); break;
	case TOK_CURL_OPEN: printf("TOK_CURL_OPEN\n"); break;
	case TOK_CURL_CLOS: printf("TOK_CURL_CLOS\n"); break;
	case TOK_SQUAR_OPEN: printf("TOK_SQUAR_OPEN\n"); break;
	case TOK_SQUAR_CLOS: printf("TOK_SQUAR_CLOS\n"); break;
	case TOK_SEMICOLON: printf("TOK_SEMICOLON\n"); break;
	case TOK_ASSIGN: printf("TOK_ASSIGN\n"); break;
	case TOK_COMMA: printf("TOK_COMMA\n"); break;
	case TOK_COMP_LESS: printf("TOK_COMP_LESS\n"); break;
	case TOK_MODULO: printf("TOK_MODULO\n"); break;
	case TOK_INCREMENT: printf("TOK_INCREMENT\n"); break;
	default: printf("token_print TODO: type %d\n", tok->type); break;
	}
}