52 lines
775 B
C
52 lines
775 B
C
#ifndef TOKEN_H
|
|
#define TOKEN_H
|
|
|
|
#include "stdlib.h"
|
|
#include <string.h>
|
|
#include <errno.h>
|
|
#include <stdio.h>
|
|
|
|
typedef enum {
|
|
PLUS,
|
|
MINUS,
|
|
STAR,
|
|
SLASH,
|
|
POWER,
|
|
LPARAM,
|
|
RPARAM,
|
|
LBRACKET,
|
|
RBracket,
|
|
COMMA,
|
|
STRING,
|
|
IDENTIFIER,
|
|
LABEL,
|
|
NUMBER,
|
|
//Keywords
|
|
DB, ORG,
|
|
//Opcodes
|
|
COPY, ADD, SUB, JZ, INT, YLD, RET,
|
|
CMP, IN, OUT,
|
|
//Registers
|
|
R1, R2, R3, R4, R5, R6, R7, R8
|
|
} TokenType;
|
|
|
|
typedef enum {
|
|
None = 0,
|
|
Reg = 1,
|
|
Immediate16 = 2,
|
|
Opcode = 4,
|
|
Directive = 8
|
|
} TokenClass;
|
|
|
|
typedef struct {
|
|
TokenType type;
|
|
char* lexeme;
|
|
void* value;
|
|
int line;
|
|
TokenClass token_class;
|
|
} Token;
|
|
|
|
Token* CreateToken(char*, void*, int, TokenType);
|
|
void FreeToken(Token*);
|
|
|
|
#endif |