#ifndef __SPL_AST2IR_H__ #define __SPL_AST2IR_H__ #include "spl_ir.h" #include "spl_sema.h" /* 全局 var/const 的 def → gdata 向量中的 value 节点索引 */ typedef struct { spl_def_id_t def_id; usize gdata_idx; } spl_ast2ir_gref_t; typedef struct { const spl_sema_t *sema; spl_ir_t ir; VEC(char *) owned_names; /* 本模块 malloc 的函数名,drop 时释放 */ VEC(spl_ast2ir_gref_t) gdata_ref; /* def_id → gdata value 节点索引 */ int err_count; } spl_ast2ir_t; void spl_ast2ir_init(spl_ast2ir_t *ast2ir, const spl_sema_t *sema); void spl_ast2ir_drop(spl_ast2ir_t *ast2ir); void spl_ast2ir_run(spl_ast2ir_t *ast2ir); #endif /* __SPL_AST2IR_H__ */