编译原理¶
编译原理完整覆盖从源代码到机器指令的全流程。前端部分从正则表达式出发,经历 Thompson 构造(RE→NFA)、子集构造(NFA→DFA)、DFA 最小化到表驱动实现,完成词法分析器的自动生成。语法分析涵盖上下文无关文法、LL 与 LR 分析方法、抽象语法树的构造。语义分析处理类型检查与符号表管理,引入活动记录来管理栈帧。后端部分以 Tiger 编译器为实例:生成树形 IR(CONST/NAME/TEMP/BINOP/MEM/CALL/ESEQ/MOVE/JUMP/CJUMP 节点),转换为基本块与轨迹,指令选择(树覆盖/最大吞并算法),活跃性分析与寄存器分配(图着色→Chaitin-Briggs 算法的完整流程:Build-Simplify-Coalesce-Freeze-Spill-Select-Rewrite)。最后覆盖垃圾回收(标记-清除、拷贝收集、分代收集)、面向对象特性编译和循环优化。
2025-2026 春夏 专业课笔记,授课老师:姚培森。