编译原理与语言设计导论
摘要
一本由 Douglas Thain 教授编写的免费在线教材,介绍编译器构造,读者可学习如何为类 C 语言构建编译器,生成 X86 或 ARM 汇编代码。支持免费下载或购买纸质版。
暂无内容
查看缓存全文
缓存时间: 2026/07/05 13:30
# 编译原理与语言设计导论
来源:https://dthain.github.io/books/compiler/
## 圣母大学 Douglas Thain 教授
这是一本免费的在线教科书:欢迎直接点击下方章节 PDF 进行阅读。如果您更喜欢实体书,也可以购买精装或平装版本。本书及配套材料由圣母大学 Douglas Thain 教授(https://dthain.github.io/books/compiler/dthain.github.io)在其 CSE 40243 编译原理课程中开发完成。加入我们的邮件列表(https://groups.google.com/a/nd.edu/forum/#!forum/compilerbook-list),即可接收新版本及其他更新的不定期通知。
> 编译器能将高级语言编写的程序转换为低级语言编写的程序。对于计算机科学专业的学生而言,从零开始构建一个编译器是一次重要的历练:这是一个充满挑战且有趣的工程,能让你深入了解计算机科学的诸多方面——有些极为理论化,另一些则非常实用。本书提供了一学期的编译原理构建入门课程,使读者能够构建一个简单的编译器,该编译器可接受类似 C 的语言,并将其转换为可运行的 X86 或 ARM 汇编语言。本书最适合有 C 语言编程经验,并修过数据结构和计算机体系结构课程的高年级本科生。
## 编译原理与语言设计导论(第二版)
> 作者允许下载、打印并将这些 PDF 用于个人及学术用途。禁止商业印刷或分发。请勿在本地复制 PDF,而是引导学生访问本页面(compilerbook.org),以便他们获取最新版本。
全书完整版单一 PDF 下载(https://dthain.github.io/books/compiler/compilerbook.pdf)
第 0 章 前言(https://dthain.github.io/books/compiler/chapter0.pdf)
第 1 章 导论(https://dthain.github.io/books/compiler/chapter1.pdf)
第 2 章 快速预览(https://dthain.github.io/books/compiler/chapter2.pdf)
第 3 章 词法分析(https://dthain.github.io/books/compiler/chapter3.pdf)
第 4 章 语法分析(https://dthain.github.io/books/compiler/chapter4.pdf)
第 5 章 语法分析实践(https://dthain.github.io/books/compiler/chapter5.pdf)
第 6 章 抽象语法树(https://dthain.github.io/books/compiler/chapter6.pdf)
第 7 章 语义分析(https://dthain.github.io/books/compiler/chapter7.pdf)
第 8 章 中间表示(https://dthain.github.io/books/compiler/chapter8.pdf)
第 9 章 内存组织(https://dthain.github.io/books/compiler/chapter9.pdf)
第 10 章 汇编语言(https://dthain.github.io/books/compiler/chapter10.pdf)
第 11 章 代码生成(https://dthain.github.io/books/compiler/chapter11.pdf)
第 12 章 优化(https://dthain.github.io/books/compiler/chapter12.pdf)
附录 A 示例课程项目(https://dthain.github.io/books/compiler/chapterA.pdf)
附录 B B-Minor 语言(https://dthain.github.io/books/compiler/chapterB.pdf)
附录 C 编码规范(https://dthain.github.io/books/compiler/chapterC.pdf)
**代码资源。**compilerbook-examples(http://github.com/dthain/compilerbook-examples)GitHub 仓库包含与本书对应的额外资源,包括多个扫描器和解析器、项目编译器的起始代码结构,以及扫描器、解析器、类型检查器和代码生成器各阶段的示例测试用例。
**勘误。**发现了拼写错误或疏漏?请发送邮件至 `[email protected]`,标题为“Compiler Book Errata”,我将乐于修正并在下一版中致谢。
相似文章
高级编译器:自助式在线课程
CS 6120 是一门博士级别的自助式在线高级编译器课程,涵盖中间表示、数据流、优化,并包括论文阅读和使用 LLVM 和 Bril 的实现任务。
我讨厌编译器
一篇表达对编译器不满的个人观点文章,可能讨论其复杂性或缺点。
Xavier Leroy关于编程中控制结构的新书
Xavier Leroy宣布了一本关于编程语言中控制结构的新书,涵盖从goto到代数效应的内容,提供CC许可下的免费预览。
用 Zig 写一个 C 编译器
一位开发者记录了用 Zig 语言、按照 Nora Sandler 的教程系列构建名为 paella 的 C 编译器的全过程。
关于C扩展、可移植性和替代编译器
本文讨论了编写可移植C代码的实际挑战,这些挑战源于对非标准编译器扩展和glibc条件头文件的依赖,并通过构建C编译器的示例进行说明。