#pragma once #include "symbol.h" #include "type.h" struct symtab { struct symtab *parent; int cap,len; struct symbol **syms; }; struct symtab* symtab_make(); void symtab_delete_recursive(struct symtab *symtab); struct symbol* symtab_find(const struct symtab *symtab, const char *name); struct symbol* symtab_find_local(const struct symtab *symtab, const char *name); void symtab_insert(struct symtab *symtab, struct symbol *sym); struct symtab* symtab_root(struct symtab *symtab); struct symtab* symtab_sub(struct symtab *symtab); struct symtab* symtab_delete_get_parent(struct symtab *symtab);