#define MLEN 4096 #define NSIZE 256 struct lpc_predef_s { char *flag; struct lpc_predef_s *next; }; extern struct lpc_predef_s * lpc_predefs; #define NELEM(a) (sizeof (a) / sizeof (a)[0]) #define lookup_predef(p) (p->type == I_TYPE_GLOBAL ? p->u.global.efun : -1) #define I_TYPE_UNKNOWN 0 #define I_TYPE_GLOBAL 2 /* function, variable AND efuns/simul_efuns */ #define I_TYPE_LOCAL 3 #define I_TYPE_RESWORD 4 #define I_TYPE_DEFINE 5 struct defn { union { char *str; char *(*fun)(); } exps; short nargs; char permanent; char special; }; struct s_reswords { char *name; int code; }; struct ident { char *name; short type; short hash; struct ident *next; /* next in hash chain */ struct ident *inferior; union { struct defn define; int code; struct { short function, variable, efun, sim_efun; } global; int local; } u; struct ident *next_all; }; struct efun_shadow { struct ident *shadow; struct efun_shadow *next; }; extern struct ident *make_shared_identifier PROT((char *, int)); extern void free_shared_identifier PROT((struct ident*));