#ifndef __SCC_SEMA_H__ #define __SCC_SEMA_H__ #include /** * @brief 语义分析回调函数类型 */ typedef void (*scc_sema_callback_t)(void *context, scc_ast_node_kind_t node_type, void *node); typedef scc_ast_type_t *(*scc_sema_got_type_t)(void *context, const char *name); /** * @brief 语义分析回调集合 */ typedef struct scc_sema_callbacks { scc_sema_callback_t on_decl; scc_sema_callback_t on_stmt; scc_sema_callback_t on_expr; scc_sema_callback_t on_type; scc_sema_got_type_t got_type; void *context; } scc_sema_callbacks_t; void scc_sema_init(scc_sema_callbacks_t *callbacks); void scc_sema_drop(scc_sema_callbacks_t *callbacks); #endif /* __SCC_SEMA_H__ */