编译器把「人能读的程序」翻译成「机器能跑的东西」——这中间的每一层(词法、语法、语义、优化、生成)都是抽象与权衡的艺术。理解编译器的各个阶段,是深入语言运行时与性能优化的钥匙。
本专题共收录 12 篇深度文章,从词法分析器出发,依次展开语法分析与 AST、语义分析与中间表示、中间代码优化、目标代码生成,最终落到解释器与 JIT 编译,形成「前端 → IR → 优化 → 后端 → 运行时」的完整编译器实现链路。扩展部分进一步覆盖手写 AST 解释器的求值语义、LLVM 与 LLVM IR 后端、类型系统与类型推断、现代优化 Pass 管线、运行时与内存管理,以及错误恢复与诊断,补齐了从求值模型到内存子系统的关键拼图。
📌 相关专题:计算机基础专题(算法与数据结构)、C++ 专题(底层实现语言)、Rust 专题(系统编程)、Java 专题(JVM 运行时)
一、编译器前端
- 词法分析器实现 — 正则到 NFA、Thompson 构造、子集构造、DFA 最小化、最长匹配
- 语法分析与 AST 构建 — 递归下降、FIRST/FOLLOW、LR 冲突消解、Pratt 解析
- 类型系统与类型推断 — 静态类型判定规则、Hindley-Milner 合一、泛型与约束求解、联合类型
- 错误恢复与诊断 — 错误恢复策略、诊断信息设计、lint 与静态分析、增量编译
二、IR 与优化
- 语义分析与中间表示 — 符号表与作用域、类型检查与合一、三地址码、控制流图与 SSA
- 中间代码优化 — 常量折叠与传播、死代码消除、公共子表达式、循环优化与数据流分析
- 现代优化 Pass 管线 — 函数内联、循环展开与向量化、SSA 常量传播、PGO 与 pass 调度
- LLVM 与 LLVM IR 后端 — SSA 形式、IRBuilder 生成、优化 Pass 管线、目标代码生成与前端桥接
三、后端与运行时
- 目标代码生成 — 指令选择、图着色寄存器分配、栈帧与 ABI、指令调度与窥孔优化
- 解释器与 JIT 编译 — AST 解释、字节码虚拟机、内联缓存、热点探测与分层编译
- 手写 AST 解释器与求值语义 — 树遍历求值、环境与作用域、闭包与递归、引用与值、求值顺序
- 运行时与内存管理 — 栈帧与调用约定、堆与逃逸分析、GC 策略、内存安全边界
延伸阅读
专题统计
- 文章数量: 12 篇核心教程
- 覆盖领域: 词法、语法、语义、类型推断、IR、优化、代码生成、解释器、JIT、LLVM、运行时、内存管理、错误恢复、诊断
- 难度分布: 入门 17% → 中级 50% → 进阶 33%
- 先修要求: 数据结构与算法基础、任一编程语言
- 总预估阅读时间: 约 510 分钟