#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, Origin, 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 { char* Lemexe; TokenClass Class; int LineNumber; int EndOfFile; union { TokenPunctuation Punctuation; Registers Register; Mnemonic Mnemonic; Directive Directive; int Number; } Value; } Token; Token* CreateToken(int lineNumber, TokenClass tokenClass); void FreeToken(Token* token); #endif