62 lines
1.1 KiB
C
62 lines
1.1 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,
|
|
Load,
|
|
Store
|
|
} 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 |