#ifndef __SCC_SEMA_SYMTAB_H__ #define __SCC_SEMA_SYMTAB_H__ #include #include typedef struct scc_parser_scope { scc_hashtable_t symbols; struct scc_parser_scope *parent; } scc_sema_scope_t; typedef struct { scc_sema_scope_t root_scope; scc_sema_scope_t *current_scope; } scc_sema_symtab_t; void scc_sema_symtab_init(scc_sema_symtab_t *symtab); void scc_sema_symtab_drop(scc_sema_symtab_t *symtab); void scc_sema_symtab_enter_scope(scc_sema_symtab_t *symtab); void scc_sema_symtab_leave_scope(scc_sema_symtab_t *symtab); scc_ast_node_t *scc_sema_symtab_add_symbol(scc_sema_symtab_t *symtab, const char *name, scc_ast_node_t *ast_node_ref); scc_ast_node_t *scc_sema_symtab_lookup_symbol(scc_sema_symtab_t *symtab, const char *name); #endif /* __SCC_SEMA_SYMTAB_H__ */