feat(ast2ir): 添加浮点类型支持和复合初始化功能

- 在ABI类型计算中添加FLOAT和DOUBLE类型的映射
- 修复AST操作符注释中的歧义描述
- 为ast2ir上下文添加类型缓存以解决递归结构体定义问题
- 实现复合初始化表达式的支持,包括数组和结构体初始化
- 添加前置和后置自增/自减操作符的IR转换
- 实现三元条件表达式的IR生成
- 添加类型转换(cast)和sizeof操作符的支持
- 重构数组长度推断逻辑并添加类型大小计算函数
- 实现结构体和联合体的递归类型解析
- 添加函数指针调用相关的IR节点类型定义

fix(ast): 修正间接操作符的注释说明

refactor(ast2ir): 优化代码结构并添加必要的断言验证
This commit is contained in:
zzy
2026-05-19 17:35:24 +08:00
parent 3df858fb85
commit 2c13ac54df
21 changed files with 808 additions and 177 deletions

View File

@@ -89,7 +89,9 @@ typedef enum scc_hir_value_tag {
SCC_HIR_VALUE_TAG_OP, ///< 二元运算
SCC_HIR_VALUE_TAG_BRANCH, ///< 有条件分支
SCC_HIR_VALUE_TAG_JUMP, ///< 无条件跳转
SCC_HIR_VALUE_TAG_JUMP_INDIRECT, ///< 无条件跳转(地址)
SCC_HIR_VALUE_TAG_CALL, ///< 调用函数
SCC_HIR_VALUE_TAG_CALL_INDIRECT, ///< 调用函数(地址)
SCC_HIR_VALUE_TAG_RET, ///< 函数返回
} scc_hir_value_tag_t;
@@ -222,11 +224,15 @@ struct scc_hir_value {
scc_hir_bblock_ref_t true_bblock;
scc_hir_bblock_ref_t false_bblock;
} branch;
struct {
union {
scc_hir_value_ref_t target_ptr;
scc_hir_bblock_ref_t target_bblock;
} jump;
struct {
scc_hir_func_ref_t callee; // TODO function pointer call
union {
scc_hir_func_ref_t func_ref;
scc_hir_value_ref_t ptr_ref;
} callee;
scc_hir_value_ref_vec_t args;
} call;
struct {