#ifndef TOKEN_H #define TOKEN_H #include "stdlib.h" #include #include #include #include "opcodes.h" typedef enum { Plus = '+', Minus = '-', Star = '*', Slash = '/', Power = '^', LParan = '(', RParan = ')', LBracket = '[', RBracket = ']', Comma = ',', NewLine = '\n' } TokenPunctuation; typedef enum { DB, Include, Byte } Directive; typedef enum { RegisterClass = 0, NumberClass = 1, CharacterClass = 2, MnemonicClass = 4, DirectiveClass = 8, PunctuationClass = 16, IdentifierClass = 32, LabelClass = 64, AddressClass = LabelClass | IdentifierClass } TokenClass; typedef struct __token { char* Lemexe; TokenClass Class; int LineNumber; int EndOfFile; union { TokenPunctuation Punctuation; Registers Register; Mnemonic Mnemonic; Directive Directive; unsigned short Number; } Value; struct __token* Prev; struct __token* Next; } Token; typedef struct { Token** content; int size; int capacity; } TokenList; Token* CreateToken(int lineNumber, TokenClass tokenClass); TokenList* CreateTokenList(void); int AddToken(Token* token, TokenList* list); void RemoveToken(int index, TokenList* list); void FreeToken(Token* token); #endif