仓库结构导览¶
为什么要单独讲目录结构¶
很多人第一次进一个编译器仓库,会立刻遇到两个问题:
- 我应该先看哪个文件
- 哪些目录是核心实现,哪些只是配套材料
这篇文档就是为了解决这个问题。
顶层目录怎么看¶
当前仓库最重要的几部分是:
src/c_core_compiler/tests/examples/docs-site/- 若干顶层说明文档
你可以把它们理解成四类内容:
- 编译器实现
- 测试验证
- 示例程序
- 项目文档
src/c_core_compiler/ 是真正的实现核心¶
这里放的是编译器主代码。
如果按编译阶段来看,重点文件包括:
tokens.py:Token 定义lexer.py:词法分析ast_nodes.py:AST 节点定义parser.py:语法分析symbol_table.py:符号表semantic.py:语义分析ir.py:IR 结构ir_builder.py:AST 到 IR 的 loweringoptimizer.py:保守优化codegen/:后端代码生成toolchain.py:系统工具链调用pipeline.py:统一编译流程封装cli.py:命令行入口
如果你只想理解“主链路”,优先看这几个:
pipeline.pycli.pylexer.pyparser.pysemantic.pyir_builder.pycodegen/_portable_c.py
tests/ 告诉你项目把哪些行为看作稳定边界¶
如果你想知道“哪些行为是作者明确想固定住的”,测试目录比 README 更直接。
这里大致对应:
- 词法测试
- 语法与 AST 测试
- 语义测试
- IR 测试
- 后端测试
- CLI 测试
- 端到端测试
读测试时,不只是看“有没有通过”,更要看“项目认为什么行为必须稳定”。
examples/ 是最直观的输入样本¶
这个目录里放的是示例 C 程序。
它们的用途包括:
- 给 CLI 提供最小可运行输入
- 给端到端测试和人工演示提供样本
- 帮助理解当前语言子集到底支持到了哪里
如果你对某个能力是否支持没有把握,先看这里通常比先猜代码更快。
docs-site/ 是文档工程目录¶
这里放的是 MkDocs 文档站点相关内容,包括:
- 文档页面
- 站点配置
- 依赖定义
- 文档建设 PRD
这部分和编译器核心实现分离,是为了让文档系统独立维护。
顶层文档文件分别干什么¶
仓库根目录下还有一些说明文件,例如:
README.md/README_CN.mdARCHITECTURE.mdTESTING.mdDEVELOPMENT.mdRELEASE.mdPRD.md
可以这样理解:
README*:对外总入口ARCHITECTURE.md:较短的架构摘要TESTING.md:测试策略摘要DEVELOPMENT.md:开发相关说明RELEASE.md:版本说明PRD.md:项目目标与需求背景
如果你第一次读源码,推荐顺序¶
建议不要从随机文件开始翻。
更好的顺序通常是:
- 先看
README.md或README_CN.md - 看
docs-site/里的项目总览文档 - 看
pipeline.py - 再按
lexer -> parser -> semantic -> ir_builder -> backend往下读 - 最后回头看测试
这样最不容易迷路。