#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, Inc, Dec }; 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