55 lines
984 B
C
55 lines
984 B
C
#ifndef TOKEN_H
|
|
#define TOKEN_H
|
|
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <stdbool.h>
|
|
#include "opcodes.h"
|
|
#include "keywords.h"
|
|
|
|
typedef enum {
|
|
Empty = 0,
|
|
String,
|
|
Number,
|
|
Symbol,
|
|
Register,
|
|
Mnemonic,
|
|
Keyword,
|
|
Label,
|
|
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;
|
|
|
|
extern const Token TokenEmpty;
|
|
|
|
Token* TokenCreate(TokenType type, int lineNumber, int columnNumber, bool resolved);
|
|
char* TokenStringify(const Token* token);
|
|
|
|
#endif |