Files
assm-test/includes/token.h
T

72 lines
1.3 KiB
C

#ifndef TOKEN_H
#define TOKEN_H
#include "stdlib.h"
#include <string.h>
#include <errno.h>
#include <stdio.h>
#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