#include "../includes/token.h" TokenClass GetTokenClass(TokenType); Token* CreateToken(char* lexeme, void* value, int lineNumber, TokenType type) { Token* token = calloc(1, sizeof(Token)); if (!token) { fprintf(stderr, "Failed to calloc memory for Token. %s.\n", strerror(errno)); return NULL; } token->type = type; token->line = lineNumber; token->lexeme = lexeme; token->value = value; token->token_class = GetTokenClass(type); return token; } TokenClass GetTokenClass(TokenType type) { if (type >= R1 && type <= R8) return Reg; if (type >= COPY && type <= OUT) return Opcode; if (type >= DB && type <= ORG) return Directive; switch(type) { case STRING: case IDENTIFIER: case LABEL: case NUMBER: return Immediate16; default: return None; } } void FreeToken(Token* token) { if (!token) return; if (token->value && token->type >= STRING) free(token->value); free(token); }