59 lines
1.0 KiB
C
Raw Normal View History

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,
Assign, Eq, Ne, Lt, Gt, Le, Ge, Or, And
};
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