#ifndef SYMTABLE_H #define SYMTABLE_H #define S_FIELD (1<<0) #define S_VAR (1<<1) #define S_PARM (1<<2) #define SYMNULL (struct symbol *)NULL struct symbol { char *ident; struct symbol *next; short type; int param_index; int soffset; }; struct symbol *tab_clone(struct symbol *tab); struct symbol *tab_new(void); struct symbol *tab_add_symbol(struct symbol *tab, char *ident, short type, short check, int param_index, int soffset); struct symbol *tab_lookup(struct symbol *tab, char *ident, short type); struct symbol *tab_remove_symbol(struct symbol *tab, char *ident, short type); struct symbol *tab_merge(struct symbol *tab, struct symbol *to_add, short check); void check(struct symbol *tab, char *ident, short type); #endif