#ifndef TOKEN_H #define TOKEN_H #include #include #include #include #include "opcodes.h" #include "keywords.h" typedef enum { Empty, String, Number, Symbol, Register, Mnemonic, Keyword, LineEnd = '\n', Colon = ':', Comma = ',', Plus = '+', Minus = '-', Star = '*', Slash = '/', Carot = '^', OpenParen = '(', CloseParen = ')', OpenBracket = '[', CloseBracket = ']', FileEnd } TokenType; typedef struct _token { TokenType Type; union { char Operator[8]; char* String; int Number; Mnemonics Mnemonic; Registers Register; Keywords Keyword; } Value; int LineNumber; int ColumnNumber; bool Resolved; } Token; Token* TokenCreate(TokenType type, int lineNumber, int columnNumber, bool resolved); char* TokenStringify(const Token* token); int StringifyTokenType(TokenType type, char buffer[32]); #endif