2025-11-22 22:22:43 +01:00
|
|
|
#ifndef TYPES_H
|
|
|
|
|
#define TYPES_H
|
|
|
|
|
|
|
|
|
|
#define MAX_SRC 100000
|
|
|
|
|
#define MAX_TOK 10000
|
|
|
|
|
#define VAR_MAX 500
|
|
|
|
|
#define MEM_SIZE 10000
|
|
|
|
|
#define STR_POOL_SIZE 100000
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
Num = 128, Str, Id, Int, Char, Else, If, While, Return, Printf,
|
2025-11-23 00:17:01 +01:00
|
|
|
Assign, Eq, Ne, Lt, Gt, Le, Ge, Or, And, Inc, Dec
|
2025-11-22 22:22:43 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
int type;
|
|
|
|
|
long val;
|
|
|
|
|
char *text;
|
|
|
|
|
} Token;
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
char name[32];
|
|
|
|
|
int type;
|
|
|
|
|
int addr;
|
|
|
|
|
int is_array;
|
|
|
|
|
} Symbol;
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
char name[32];
|
|
|
|
|
int entry_point;
|
|
|
|
|
int param_count;
|
|
|
|
|
} Func;
|
|
|
|
|
|
|
|
|
|
typedef long (*NativeFunc)(long*, int);
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
|
char name[32];
|
|
|
|
|
NativeFunc func;
|
|
|
|
|
} NativeFuncDef;
|
|
|
|
|
|
|
|
|
|
extern Token tokens[MAX_TOK];
|
|
|
|
|
extern int tk_idx;
|
|
|
|
|
extern int pc;
|
|
|
|
|
extern long memory[MEM_SIZE];
|
|
|
|
|
extern int sp;
|
|
|
|
|
extern int bp;
|
|
|
|
|
extern Symbol locals[VAR_MAX];
|
|
|
|
|
extern int loc_cnt;
|
|
|
|
|
extern Func funcs[100];
|
|
|
|
|
extern int func_cnt;
|
|
|
|
|
extern NativeFuncDef native_funcs[100];
|
|
|
|
|
extern int native_func_cnt;
|
|
|
|
|
extern char *src_code;
|
|
|
|
|
extern char str_pool[STR_POOL_SIZE];
|
|
|
|
|
extern int str_pool_idx;
|
|
|
|
|
extern long ax;
|
|
|
|
|
|
|
|
|
|
#endif
|