|
|
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 |
|
|
|
e79984592e
|
fix(argparse): 修复位置参数处理中的类型转换问题
在处理位置参数时,将 scc_vec_size 的返回值显式转换为 int,
以避免潜在的类型不匹配问题。
fix(pproc): 修复宏展开中的类型转换问题
在多个位置将 scc_vec_size 的返回值显式转换为 int,
确保比较操作的类型一致性。
fix(pproc): 修复头文件包含深度检查的类型转换
将文件栈大小检查中的 scc_vec_size 返回值转换为 int,
保持类型一致性。
fix(sstream): 修复位置日志中未使用的变量警告
更新未使用变量的声明方式,将逗号分隔改为分号分隔,
更好地抑制编译器警告。
|
2026-02-27 17:25:56 +08:00 |
|
|
|
b705e5d0ad
|
feat(argparse): 添加列表类型参数支持
新增 scc_argparse_list_t 类型用于处理多个字符串值的参数,
并添加相应的配置函数 scc_argparse_spec_setup_list。
fix(lexer): 调整关键字标记处理逻辑
将关键字子类型从 SCC_TOK_SUBTYPE_KEYWORD 改为
SCC_TOK_SUBTYPE_IDENTIFIER,并移除相关的枚举定义。
refactor(lexer): 优化跳过换行功能实现
修改 scc_lexer_skip_until_newline 函数实现,改进循环逻辑和错误处理。
feat(pproc): 完善预处理器条件编译支持
重构条件编译状态管理,添加对 #ifdef、#ifndef、#elifdef、
#else、#endif 等指令的支持,并实现嵌套条件处理。
refactor(pproc): 优化文件包含路径处理
添加最大包含深度限制,改进包含路径添加功能,
修复文件状态结构命名。
docs(log): 更新日志模块标准库依赖
调整 stdarg.h 包含逻辑,更新编译器内置宏定义名称。
feat(core): 扩展核心类型定义
添加基础数据类型别名定义,完善类型系统支持。
feat(main): 实现命令行包含路径参数
添加 -I/--include 参数支持,允许用户指定额外的头文件搜索路径。
|
2026-02-21 10:46:49 +08:00 |
|
|
|
681a15cb44
|
feat(lexer): 添加预处理器关键字支持并优化词法分析器
添加了完整的C预处理器关键字表,包括define、include、ifdef等关键字,
用于支持预处理器功能。
- 新增SCC_PPKEYWORD_TABLE宏定义所有预处理器关键字
- 在token类型枚举中包含预处理关键字
- 重构词法分析器以正确识别预处理关键字
- 添加scc_lexer_tok_drop函数用于清理token资源
refactor(lexer): 重构词法分析器内部结构
- 修复keywords数组字段名从tok到tok_type
- 优化scc_lexer_get_valid_token使用while循环替代do-while
- 修改fill_token和fill_valid_token返回类型为cbool
- 调整lexer_to_ring参数语义更清晰
fix(sstream): 修正环形缓冲区填充函数返回类型
- 将fill_func返回类型从int改为cbool以保持一致性
- 更新SCC_RING宏文档说明fill回调函数返回值含义
docs(argparse): 重命名examples目录修复路径错误
- 将libs/argparse/example重命名为libs/argparse/examples保持一致性
test(lexer): 更新测试用例适配新的流接口
- 修改测试代码中的scc_sstream_ref_ring为scc_sstream_to_ring
- 确保测试用例与新的API保持兼容
style(lexer): 更新示例程序日志级别和实现方式
- 将调试日志改为信息日志
- 使用环形缓冲区实现示例程序的token获取
|
2026-02-16 22:27:09 +08:00 |
|
|
|
088050c903
|
feat(argparse): 添加选择类型支持和错误处理优化
添加了 SCC_ARGPARSE_ERR_PNT_DEFAULT 错误类型用于默认操作处理,
实现了 scc_argparse_spec_setup_choices 函数支持枚举选择,
重构了错误处理流程使返回值更加一致。
修复了长选项名称匹配的逻辑错误。
feat(lexer): 添加换行符和注释符号的词法标记
新增 SCC_TOK_ENDLINE 和 SCC_TOK_SHARP 标记类型,
改进词法分析器对换行符和井号的识别处理。
feat(scc_core): 添加常用宏定义
添加 scc_min 和 scc_max 宏定义提供基础数值比较功能。
feat(main): 实现编译器主程序和命令行接口
创建主程序入口实现完整的编译流程,
集成预处理器、词法分析、语法分析和IR生成模块,
添加AST和IR输出功能支持调试查看中间表示。
chore(build): 配置项目构建依赖关系
创建 cbuild.toml 配置文件定义项目包信息和依赖库,
建立编译器各组件库之间的依赖关系管理。
|
2026-02-13 17:26:50 +08:00 |
|
|
|
191cdcef53
|
feat(argparse): 实现高级命令行参数解析库
- 添加完整的参数解析API,支持子命令、选项和参数定义
- 实现多种数据类型支持:字符串、布尔值、整数、浮点数、枚举等
- 添加约束规范结构体,支持必填项、多值、隐藏选项等功能
- 实现国际化支持,包含中英文错误提示和帮助信息
- 添加模糊匹配功能,当用户输入错误参数时提供相似建议
- 实现详细的帮助信息打印功能,包括使用方法、选项说明等
- 修改底层optparse库,优化选项处理和错误报告机制
- 添加向量类型支持用于管理参数、选项和子命令集合
|
2026-02-12 21:41:57 +08:00 |
|
|
|
34d7eb3c42
|
feat(argparse): 重构命令行参数解析器以支持更灵活的参数处理
将optparse库的API进行了重大改进,包括:
- 修改结构体字段为const类型以提高安全性
- 添加了宏定义SCC_OPTPARSE_OPT和SCC_OPTPARSE_OPT_END用于简化选项定义
- 重构了解析逻辑,引入greedy_mode和current状态跟踪
- 改进了短选项和长选项的解析机制
- 添加了参数计数验证功能(min_args/max_args检查)
- 调整了函数返回值,parse函数现在返回int类型表示是否还有更多参数
- 完善了错误处理和边界条件检查
|
2026-02-06 17:33:43 +08:00 |
|
|
|
d1b215861c
|
feat(argparse): 新增命令行参数解析库
新增 argparse 库的基础框架,包含以下组件:
- 创建了 argparse 库的 cbuild.toml 配置文件,定义包信息和依赖关系
- 实现了核心的参数解析功能,包括 optparse.h 和 optparse.c
- 定义了参数解析相关的数据结构和枚举类型
- 实现了完整的命令行选项解析逻辑,支持长短选项、参数绑定等功能
- 添加了全面的单元测试,覆盖各种使用场景和边界情况
- 包含对短选项连写、长选项等号形式、选项终止符等特性的支持
|
2026-02-03 12:35:45 +08:00 |
|