- 将scc_ir_node_ref_t重命名为scc_ir_value_ref_t,并更新所有相关API - 修改IR定义中的节点标签枚举为值标签枚举(scc_ir_node_tag_t -> scc_ir_value_tag_t) - 更新AST到IR转换器中所有节点引用的类型声明 - 添加对内置类型(VOID, CHAR, INT等)的完整映射实现 - 实现字符串字面量的常量数组创建功能 - 更新项目名称从"Simple Modual C Compiler"为"Simple C Compiler" - 在Doxyfile中排除external目录的文档生成 - 移除未使用的strpool字段并重命名decl到IR的映射表 BREAKING CHANGE: IR节点引用类型已更改,所有使用scc_ir_node_ref_t的地方需 替换为scc_ir_value_ref_t。
28 lines
1.0 KiB
C
28 lines
1.0 KiB
C
#ifndef __SCC_IR_CTX_H__
|
||
#define __SCC_IR_CTX_H__
|
||
|
||
#include "ir_def.h"
|
||
#include "ir_prog.h"
|
||
#include <scc_hashtable.h>
|
||
|
||
typedef struct {
|
||
scc_ir_module_t *module; // 关联的模块(用于实际存储)
|
||
scc_hashtable_t type_uniquing; // 类型哈希表:hash -> type_ref
|
||
scc_hashtable_t const_pool; // 常量哈希表:hash -> node_ref
|
||
scc_hashtable_t func_decl_set; // 函数声明集合:name -> func_ref
|
||
} scc_ir_ctx_t;
|
||
|
||
void scc_ir_ctx_init(scc_ir_ctx_t *ctx, scc_ir_module_t *module);
|
||
void scc_ir_ctx_drop(scc_ir_ctx_t *ctx);
|
||
|
||
// 获取唯一类型,若不存在则创建并返回新引用
|
||
scc_ir_type_ref_t scc_ir_ctx_get_type(scc_ir_ctx_t *ctx,
|
||
const scc_ir_type_t *type_desc);
|
||
|
||
// 注册函数声明,若已存在则返回已有引用
|
||
scc_ir_func_ref_t scc_ir_ctx_declare_func(scc_ir_ctx_t *ctx,
|
||
scc_ir_type_ref_t type,
|
||
const char *name);
|
||
|
||
#endif /* __SCC_IR_CTX_H__ */
|