|
|
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 |
|
|
|
1fceeca011
|
feat(parser): 启用parser和ast模块并重构解析器结构
- 在cbuild.toml中启用parser和ast依赖项
- 将AST内置类型枚举重命名为SCC_AST_BUILTIN_TYPE_*前缀格式
- 修复ast_def.h中的类型字段命名,将builtin改为type
- 添加逗号操作符支持到表达式操作符枚举中
- 更新字面量表达式的lexeme字段为const char*指针和owned标志
- 重构解析器头文件结构,分离为parser.h、parser_utils.h、scc_sema.h等
- 实现新的解析器工具函数,包括预览、消费、回溯等功能
- 更新声明解析逻辑,使用新的解析器接口进行token处理
- 添加符号表语义分析功能框架
- 修复词法分析器中token移动时的空指针检查
- 统一使用scc_tree_dump_printf替代直接的scc_printf调用
|
2026-03-09 15:25:12 +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 |
|
|
|
c8bf98525d
|
chore(build): 更新构建脚本和配置文件
- 修改justfile中的构建命令,将build-lexer重命名为build_lexer
- 添加count命令用于统计代码行数
- 更新docs命令依赖关系
feat(docs): 完善README文档内容
- 更新项目名称为Simple C Compiler,简化为`scc`
- 添加详细的构建说明,介绍cbuild构建工具
- 补充标准C语言文档链接
- 重新组织项目特点描述
refactor(tree_dump): 修复未使用的返回值警告
- 在tree_dump_pop_level函数中添加(void)强制转换
- 解决scc_vec_pop返回值未被使用的问题
chore(gitignore): 添加新的忽略文件类型
- 增加.dot和.svg文件类型的忽略规则
- 保持.gitignore文件结构清晰
|
2026-01-30 14:18:07 +08:00 |
|
|
|
135e874a76
|
feat(ast): 重构AST转储功能并添加tree_dump依赖
- 添加tree_dump库作为依赖项到ast模块
- 将ast_dump.h中的转储上下文结构替换为tree_dump.h中的统一实现
- 更新scc_ast_block_item_vec_t类型定义,支持stmt或decl的泛型指针
- 移除ast_dump.c中重复的缩进和上下文管理代码,使用tree_dump提供的功能
- 修改dump函数参数类型从scc_ast_dump_ctx_t为scc_tree_dump_ctx_t
- 在libs目录下新增tree_dump库,包含完整的树形结构转储功能
|
2026-01-28 17:29:56 +08:00 |
|