|
|
60cdfd2c33
|
feat(pproc): 修改宏展开器以支持连续函数式宏调用
修改了预处理器宏展开功能,将输出类型从环形缓冲区改为向量,
并实现了对连续函数式宏调用的支持。现在可以正确处理像
g(z) -> f(x * (z)) 这样的宏替换场景,其中标识符可能被重新
定义为新的函数式宏。
BREAKING CHANGE: 函数签名 scc_pproc_expand_by_vec 的输出参数
从 scc_lexer_tok_ring_t* 改为 scc_lexer_tok_vec_t*
|
2026-03-01 14:23:17 +08:00 |
|
|
|
f56b13da2c
|
refactor(format): 移除SCF格式相关文件
移除了libs/format目录下的所有文件,包括:
- cbuild.toml构建配置文件
- include/scf.h头文件
- include/scf_impl.h实现头文件
- src/scf.c源文件
- tests/test_scf.c测试文件
- tests/test_scf_x64.c x64架构测试文件
这些文件包含了SCF(scc format)格式的完整实现,但现在不再需要。
feat(lexer): 添加布尔字面量数字生成函数
在lexer工具头文件中添加了两个内联函数用于生成布尔值的数字字面量:
- scc_lexer_gen_number_true: 将token类型设为整数字面量,值为"1"
- scc_lexer_gen_number_false: 将token类型设为整数字面量,值为"0"
refactor(lexer): 改进词法分析器错误处理
- 移除了多余的头文件包含
- 更新错误报告方式,使用SCC_ERROR宏替代LEX_ERROR,提供更准确的错误位置信息
refactor(pproc): 更新预处理器扩展器数据结构
- 将need_rescan字段类型从int改为cbool
- 添加need_parse_defined字段用于控制defined操作符解析
- 更新函数签名以支持defined操作符解析参数
|
2026-02-26 10:25:45 +08:00 |
|
|
|
a52ff33e30
|
feat(ast): 更新AST字面量表示方式
更新AST定义以使用词素字符串代替常量值,
并修改AST转储功能以正确显示字面量内容。
BREAKING CHANGE: AST表达式结构体中literal成员从value改为lexme字段。
refactor(pproc): 重构宏展开和文件包含逻辑
将宏展开函数重构为独立接口,实现文件包含处理逻辑,
改进预处理器的状态管理机制。
fix(sstream): 修复文件流初始化错误码返回
修正文件打开失败时的错误码返回值,确保调用方能正确处理异常情况。
|
2026-02-19 15:56:05 +08:00 |
|
|
|
08a60e6e8a
|
feat: 添加预处理器宏定义的字符串化和连接操作支持
- 实现了 # 和 ## 预处理器操作符的功能
- 添加了 token 深拷贝和移动函数以支持宏展开
- 修改预处理器展开逻辑以正确处理宏参数替换
- 增加了宏参数分割时对空白字符的处理
fix: 修复预处理器宏展开中的内存管理和逻辑错误
- 修正了宏展开集合的数据结构初始化方式
- 修复了函数式宏调用时括号匹配的判断逻辑
- 改进了宏参数解析过程中空白字符的处理
- 解决了 token 在宏展开过程中的所有权管理问题
chore: 为 justfile 添加文件统计命令并优化构建配置
- 新增 count-file 命令用于统计代码文件数量
- 调整了输出文件的默认命名规则
- 优化了词法分析器 token 释放时的字段重置逻辑
|
2026-02-19 11:20:01 +08:00 |
|
|
|
c86071416d
|
feat(pproc): 实现宏展开功能并重构宏定义接口
- 新增 pproc_expand.h 头文件,定义宏展开相关的数据结构和函数接口
- 重命名宏相关类型和函数,将 scc_pp_* 前缀统一改为 scc_pproc_*
- 修改宏参数解析逻辑,支持更灵活的参数处理方式
- 实现完整的宏展开功能,包括对象宏和函数宏的展开
- 添加字符串化操作符 (#) 的支持
- 改进预处理器主循环逻辑,优化宏展开流程
- 更新单元测试用例,增加对宏参数解析和字符串化的测试
|
2026-02-18 18:18:57 +08:00 |
|