#ifndef TOKEN_H #define TOKEN_H #include "stdlib.h" #include #include #include #define REGISTEROFFSET 29 typedef enum { PLUS, MINUS, STAR, SLASH, POWER, LPARAM, RPARAM, LBRACKET, RBracket, COMMA, STRING, IDENTIFIER, LABEL, NUMBER, LineEnd, //Keywords DB, ORG, //Opcodes COPY, ADD, SUB, JZ, INT, YLD, RET, CMP, NOP, JMP, IN, OUT, //Registers R1, R2, R3, R4, R5, R6, R7, R8 } TokenType; typedef enum { None = 0, Reg = 1, Constant = 2, Address = 4, Opcode = 8, Directive = 16 } TokenClass; typedef struct { TokenType type; char* lexeme; void* value; int line; TokenClass token_class; } Token; Token* CreateToken(char*, void*, int, TokenType); void FreeToken(Token*); #endif