eb969cdbf7
feat(parser): 添加声明列表支持并重构解析逻辑
...
- 添加 SCC_AST_DECL_LIST 节点类型用于表示声明列表
- 实现 scc_ast_decl_list_init 函数来初始化声明列表节点
- 重构 scc_parse_declaration 函数以支持逗号分隔的多个变量声明
- 分离类型说明符解析到独立的 scc_parse_declaration_specifiers 函数
- 支持 typedef 和多变量声明如 'int a, b;' 和 'int a = 1, b = 2;'
- 在 ast_dump 中添加对声明列表节点的打印支持
refactor(ast): 统一使用 scc_vec_foreach 宏替换手动循环
- 将 ast_dump.c 中的多个手动索引循环改为使用 scc_vec_foreach
- 提高代码可读性和安全性
- 避免索引越界错误
fix(parser): 修复语义分析中结构体符号表冲突
- 为结构体、联合体和枚举符号名添加前缀避免命名冲突
- 使用 '$S_'、'$U_'、'$E_' 前缀分别标识结构体、联合体和枚举
refactor(log): 统一终止处理方式
- 将 log_exit 替换为 log_abort 以更准确反映行为
- 更新相关依赖模块的实现
style(parser): 移除未使用的参数和清理代码
- 在 argparse.c 中添加 (void) 参数注释处理未使用的参数
- 清理 parse_expr.c 中未使用的函数声明
- 优化 parse_type.c 中的错误处理流程
2026-03-14 14:04:24 +08:00
e1cd8c5206
feat(lexer): 添加SCC语言扩展关键字支持并重构标准定义
...
- 将SCC_CEXT_ASM重命名为SCC_CEXT_SCC以更好地反映扩展类型
- 为asm关键字添加SCC_CEXT_SCC标准标识
- 新增atomic、auto、bool、complex四个关键字及其对应的token类型
- 所有新关键字都标记为SCC_CEXT_SCC扩展标准
fix(lexer): 修复数字字面量解析中的类型不匹配问题
- 将token->value.n更正为token->value.u以正确存储解析结果
- 统一了词法分析器中数值解析的字段访问
refactor(log): 重构日志系统API设计并增强功能
- 将日志处理器接口从void返回改为int返回类型
- 新增函数名记录功能,通过__func__宏获取当前函数名
- 引入可变参数支持,允许格式化字符串传递
- 重构内部宏实现,使用SCC_LOG_IMPL统一处理逻辑
- 改进缓冲区管理,优化日志消息格式化流程
- 重命名头文件保护宏从__SCC_LOG_H__到__SCC_LOG_IMPL_H__
- 替换snprintf为vsnprintf以支持可变参数处理
- 更新断言宏实现,提供更清晰的错误信息格式
2026-01-28 15:44:24 +08:00
94d3f46fac
refactor(lex_parser): replace core_pos_* functions with scc_pos_* equivalents
...
Update all position tracking calls in lex_parser.c to use the scc_pos_* function family (scc_pos_next, scc_pos_next_line) instead of the deprecated core_pos_* variants. This ensures consistency with the scc naming convention and prepares for future removal of the old core functions.
2025-12-12 21:33:51 +08:00
871d031ceb
feat(lex_parser): 初始化词法解析器模块
...
新增词法解析器库 `smcc_lex_parser`,包含基础的词法规则解析功能:
- 支持字符、字符串、数字、标识符的解析
- 支持跳过注释、空白符、行尾等辅助函数
- 提供对应的单元测试用例,覆盖各类合法与非法输入情况
该模块依赖 `libcore`,并被 `smcc_lex` 模块引用以支持更上层的词法分析逻辑。
2025-11-23 22:53:46 +08:00
fa5611dabd
fix(log): 修复默认日志实例命名冲突并优化宏定义
...
将 `logger_root` 重命名为 `__default_logger_root` 以避免潜在的符号冲突,
同时简化日志宏定义逻辑,提升代码可读性与维护性。此外,为防止 clang-format
格式化影响日志宏的排版,添加了 clang-format 开关注释。
refactor(memory): 优化 memcmp 函数中的 switch-case 结构
在 `smcc_memcmp` 函数中为每个 case 添加 `/* fall through */` 注释,
明确表示故意穿透到下一个 case,提高代码意图的清晰度,并增强静态分析工具的兼容性。
2025-11-22 16:59:28 +08:00
d1fafa830d
format using clang-format to formate code
2025-11-20 17:55:08 +08:00
9762cf8a2b
feat(log): 支持设置多个日志级别的组合
...
将 `log_set_level` 函数的参数类型从 `log_level_t` 改为 `int`,
以支持传入多个日志级别的按位或组合。
同时调整测试代码中的日志级别设置方式,并修复部分逻辑引用问题,以及#未知宏跳过更多的行的bug。
2025-11-20 14:30:14 +08:00
47b56d52f6
feat(core): 重构词法分析器流接口并迁移至 core 库
...
将 lexer_stream 抽象为 core_stream,统一运行时核心组件的输入流模型。
移除了旧的 `lexer_stream.h` 定义,并将其功能完整迁移至 `core_stream.h` 中。
更新了内存流实现以适配新的 core_stream 接口,并修复部分资源释放问题。
同时调整日志模块包含方式,增强模块间解耦能力。
此变更影响词法分析器对输入流的操作方式,所有涉及 stream 的类型与函数均已替换为 core 前缀版本。
测试用例同步更新并验证通过。
2025-11-20 14:17:03 +08:00