Commit Graph

4 Commits

Author SHA1 Message Date
zzy
46f5328183 fix(pproc): 修复宏参数解析中的空白字符处理问题
- 在宏参数解析过程中使用 scc_lexer_next_non_blank 替代直接的 ring 操作,
  确保正确跳过空白字符

- 更新 scc_pproc_expand_by_src 和 rescan 函数中使用
  scc_lexer_peek_non_blank 替代原来的 scc_ring_peek,
  以正确处理预处理器展开时的空白字符

- 修正测试用例中的预期输出,移除多余的空格
2026-03-01 16:02:04 +08:00
zzy
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
zzy
8cbb9e6987 feat(pproc): 添加宏定义禁用机制和defined操作符解析功能
添加SCC_TOK_DISABLED标记类型用于表示被禁用的token
实现disable/enable/need_skip函数来管理宏展开过程中的递归控制
重构defined操作符解析逻辑到独立的parse_defined函数中
移除原有的need_rescan标志和相关重扫描逻辑

fix(sstream): 修复位置日志中行列号格式化问题

将snprintf格式字符串中的%u替换为%llu以支持更大的行列数值

test(pproc): 补充宏定义相关的单元测试用例

添加嵌套宏、自引用宏和无参数宏的测试用例
2026-03-01 12:16:23 +08:00
zzy
0fede5f46e feat(pproc): 实现预处理器宏连接操作符功能
- 修改concatenate_tokens函数以支持null参数检查,避免空指针访问
- 添加concact辅助函数来处理##连接操作的逻辑
- 重构expand_function_macro中##操作符的实现,支持GNU扩展特性
- 实现对可变参数宏中##操作的正确处理,包括逗号删除逻辑
- 改进object宏中的##连接操作处理
- 添加多个单元测试用例验证连接操作符的正确性
- 修复字符串连接时的边界条件处理

refactor(tests): 重命名预处理器单元测试文件

- 将test_unit.c重命名为test_pproc_unit.c以更明确标识测试范围
2026-02-27 21:00:14 +08:00