- 将scc_ast_type_t替换为scc_ast_qual_type_t,引入规范类型概念 - 添加scc_ast_canonical_type_t联合体用于表示规范类型 - 修改头文件结构,移除大量内联初始化函数,改为使用AST上下文分配器 - 添加SCC_AST_ALLOC宏用于统一节点分配管理 - 更新builtin类型枚举定义,添加类型计数常量 feat(ast): 引入AST上下文管理器 - 创建scc_ast_ctx_t结构体用于管理AST节点生命周期 - 实现类型池化机制,支持内置类型的统一管理 - 添加canonical类型获取和分配接口 refactor(abi): 适配新的AST类型系统 - 更新头文件包含,从<scc_ir.h>改为<scc_hir.h> - 适配函数参数类型,使用qual_type替代原始type - 使用scc_ast_canon_type()函数获取规范类型进行处理 Co-authored-by: Copilot <copilot@github.com>
32 lines
851 B
C
32 lines
851 B
C
#ifndef __SCC_SEMA_H__
|
|
#define __SCC_SEMA_H__
|
|
|
|
#include <scc_ast.h>
|
|
|
|
/**
|
|
* @brief 语义分析回调函数类型
|
|
*/
|
|
typedef void (*scc_sema_callback_t)(void *context,
|
|
scc_ast_node_kind_t node_type, void *node);
|
|
|
|
typedef const scc_ast_qual_type_t *(*scc_sema_got_type_t)(void *context,
|
|
const char *name);
|
|
|
|
/**
|
|
* @brief 语义分析回调集合
|
|
*/
|
|
typedef struct scc_sema_ctx {
|
|
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;
|
|
scc_ast_ctx_t *ast_ctx;
|
|
void *context;
|
|
} scc_sema_ctx_t;
|
|
|
|
void scc_sema_init(scc_sema_ctx_t *sema_ctx, scc_ast_ctx_t *ast_ctx);
|
|
void scc_sema_drop(scc_sema_ctx_t *sema_ctx);
|
|
|
|
#endif /* __SCC_SEMA_H__ */
|