Files

56 lines
1.0 KiB
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);
void TokenTypeStringify(TokenType type, char buffer[32]);
#endif