51 lines
744 B
C
51 lines
744 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,
|
|
Reg,
|
|
Immediate16,
|
|
Opcode
|
|
} 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 |