|
|
02a6c684f1
|
feat(ast2ir): 添加左值标识支持以改善表达式处理
- 在 scc_ast2ir_expr 函数中添加 is_lvalue 参数来区分左值和右值表达式
- 更新二元表达式处理逻辑,特别是赋值操作符的处理
- 改进标识符表达式的处理,根据是否为左值决定返回存储位置还是加载值
- 修复哈希比较函数的实现
- 移除调试相关的注释代码
refactor(parser): 优化语法分析器错误处理和控制流
- 移除不必要的错误恢复辅助注释
- 修改表达式解析的控制流程,将直接返回改为使用 break 语句
- 添加语义分析回调,在解析完成后进行标识符查找和验证
refactor(sema): 增强语义分析阶段的符号表管理
- 改进标识符查找逻辑,增加对非变量标识符的检查
- 扩展声明处理范围,包括变量和参数声明的符号表注册
- 为函数声明添加作用域管理
fix(parser): 修正单元测试中的类型定义
- 将 long long 类型定义改为 int 类型,解决测试兼容性问题
refactor(sccf): 重构文件格式定义和构建器实现
- 重命名符号类型枚举值 OBJECT 为 EXTERN
- 重命名段类型枚举值 RELOC 为 RELOCS
- 修正结构体字段命名的一致性问题
- 重新设计 SCCF 构建器的数据结构和API
- 添加符号表、字符串表和重定位表的构建支持
refactor(target): 重命名Windows PE相关类型定义
- 将 scc_winpe_* 类型重命名为 scc_pe_* 以保持命名一致性
chore: 添加 sccf2target 模块用于格式转换
- 创建新的库模块用于 SCCF 到目标格式的转换
- 实现 PE 格式转换的基本功能
- 添加示例程序演示格式转换过程
|
2026-03-19 12:11:57 +08:00 |
|
|
|
5f915ba8d3
|
refactor(ast): 移除内置类型头文件并优化类型初始化
移除了独立的ast_builtin.h头文件,将内置类型定义整合到现有结构中,
同时修复了类型初始化函数命名不一致的问题。
BREAKING CHANGE: 原有的ast_builtin.h头文件已被移除,
相关内置类型声明已重构为新的接口形式。
fix(parser): 修复表达式解析中的位置信息处理
确保条件表达式和逗号表达式的解析正确获取并传递位置信息,
避免在语法树构建过程中丢失源码位置。
refactor(ir): 修复IR转储中的类型转换问题
添加必要的类型转换以防止整数溢出,并优化代码格式以提高可读性。
feat(parser): 添加表达式解析测试套件
引入全面的表达式解析测试框架,覆盖从基本表达式到复杂嵌套表达式
的各种场景,确保解析器功能的正确性和稳定性。
|
2026-03-18 12:18:56 +08:00 |
|
|
|
2e5e98868d
|
feat(ast): 添加汇编器模块并改进AST定义和IR转换
- 在README.md中添加asm汇编器模块说明
- 更新ast_def.h中的枚举注释,添加sema相关信息以明确语义分析作用域
- 重命名函数参数param_types为params,使命名更清晰
- 移除call表达式中的_target字段,简化结构
- 为member、identifier等字段添加///< fill by sema注释说明填充时机
- 为jump语句添加_target字段用于语义分析
- 更新所有AST初始化函数,接受位置信息参数以改进错误定位
- 修复alignof表达式的类型应为ALIGN_OF而非SIZE_OF的问题
- 重构ast2ir.h,引入scc_ast2ir_ctx_t上下文结构体统一管理转换状态
- 添加符号表、节点到IR映射等必要的转换上下文信息
|
2026-03-17 20:29:40 +08:00 |
|
|
|
45c59e0b65
|
feat(ast2ir): 添加AST到IR转换功能并完善类型ABI支持
- 添加了ast2ir库用于将AST转换为IR中间表示
- 实现了Windows x64 ABI类型定义文件
- 完善了IR库中的类型定义,添加了无符号整数类型和操作符枚举
- 更新了IR转储功能以支持新的节点类型
- 在主程序中集成了AST到IR的转换流程
- 修改了PE目标文件生成功能以修正节区标志
- 更新了向量实现的日志和错误处理机制
fix(ir): 修复IR库中的操作符枚举和类型处理问题
- 修复了IR操作符枚举的命名空间问题,统一使用SCC_IR前缀
- 添加了无符号整数类型的哈希和比较支持
- 修正了常量整数节点的打印函数调用
- 更新了各种IR节点的转储输出格式
- 删除了测试文件中的冗余代码
refactor: 重构项目依赖配置和构建设置
- 启用了ast2ir和ir库的依赖配置
- 添加了def文件到.gitignore中
- 重命名了部分测试文件
|
2026-03-15 15:44:50 +08:00 |
|
|
|
4015acd866
|
refactor(hashtable): 简化哈希表初始化接口并优化文件打开模式
- 将哈希表初始化从两步设置改为一步完成,直接传递哈希函数和比较函数
- 重构scc_hashtable_init函数签名,接受函数指针参数
- 更新内部字段名从key_cmp为cmp_func以保持一致性
- 添加类型定义scc_hashtable_hash_func_t和scc_hashtable_equal_func_t
- 修改PAL层文件操作接口,使用枚举模式替代固定只读模式
- 更新IR上下文、预处理器宏表等组件使用新的初始化方式
- 移除AST头文件中未使用的语义分析回调类型定义
- 修复预处理器中的空指针访问问题
|
2026-03-04 16:47:28 +08:00 |
|
|
|
ffee07a03d
|
feat(ir): 添加线性IR转储功能并改进AST转储
- 实现了IR的线性转储功能,包括类型、节点、基本块和函数的线性表示
- 添加了scc_ir_dump_ctx_init函数用于初始化转储上下文
- 为AST函数类型添加了变参标记注释说明
- 改进了AST转储中函数类型的参数和返回值显示逻辑
- 统一了AST解析中节点类型的声明为通用的scc_ast_node_t指针类型
fix(lexer): 改进词法分析器错误信息显示
- 在不支持字符的错误信息中添加十六进制编码显示
- 便于调试时识别特殊不可打印字符
|
2026-02-13 09:56:42 +08:00 |
|
|
|
2a90e165a5
|
feat(ast): 重构AST转储功能并创建AST到IR转换器
- 重构ast_dump.c中的宏定义,简化PRINT_VALUE、PRINT_NODE、
PRINT_QUOTED_VALUE等宏的实现
- 移除冗余的PRINT_COLORED宏定义
- 统一使用SCC_TREE_DUMP_PRINT_PURE和SCC_TREE_DUMP_PRINT_AROUND
宏进行转储输出
- 在dump_stmt_impl函数中优化节点转储逻辑,统一使用end_node_dump
替代手动换行
- 添加对未知节点类型的警告日志输出
- 创建新的ast2ir模块,包含AST到IR的基本转换功能
- 实现ast_type_to_ir_type、ast_expr_to_ir、ast_stmt_to_ir、
ast_decl_to_ir等核心转换函数
- 更新IR库依赖配置,添加scc_utils和tree_dump依赖
- 新增IR基础接口定义文件ir_base.h和IR构建器接口ir_builder.h
|
2026-01-30 23:01:55 +08:00 |
|
|
|
c01e6e1db4
|
feat(ir): 添加IR库的基础结构和定义
- 创建IR库的cbuild.toml配置文件,添加对scc_core的依赖
- 新增ir_def.h头文件,定义IR类型、节点、基本块和函数的数据结构
- 添加ir_builtin.h和ir_builtin.c,提供内置的i32类型和零值常量
- 实现ir_dump.h和ir_dump.c,提供IR转储功能的接口
- 创建scc_ir.h和scc_ir.c,实现IR对象的初始化和分配功能
- 添加测试文件test_ir.c用于验证IR库功能
- 定义了完整的IR节点类型枚举和操作类型枚举
|
2026-01-08 13:43:35 +08:00 |
|