NJU 编译原理
课程简介
-
所属大学:南京大学
-
先修要求:离散数学
-
编程语言:Java
-
课程难度:🌟🌟🌟
-
预计学时:80 小时
南京大学的编译原理课程,设计者选用了当下热门的 ANTLR (ANother Tool for Language Recognition) v4 编程语言解析生成工具辅助教学,能让使用者专心词法或者语法分析的设计,而让 ANTLR 4 来生成重复的模板代码。IDE 也有其插件,装上后,可以实现即时的可视化语法树,方便学生理解。
ANTLR 4 是 LL 解析器生成器,比起 LR 和 LALR 解析器生成器,它可处理语法的范围相对狭窄。但另一方面其生成的解析器有易于理解和使用的优势。此外,因为其支持“无限长的 token 超前扫描”,所以可处理语法范围狭窄的问题也得到了很好的改善。
老师通过适当的图解和生活例子,幽默风趣地讲述编译原理,让人听来不算乏闷。尤其是今年这版,采取先实际使用 ANTLR 4 完成一些小例子,再补足理论知识的方式。让人能带着问题去找到适配的理论,更让人印象深刻。通过理论知识的学习,逐渐揭开 C 语言的“神秘面纱”。
理论部分基本按照龙书节奏叙述。包括词法分析、语法分析、语义分析、运行时环境、寄存器分配、代码优化与生成等内容。
实践则是本课程的亮点,一步步的,由简单到复杂地实现一个属于自己的编译器。
教授本课的老师极为慷慨,校外学生同样能享受到 Online Judge 以及参与课程讨论,老师还极为细心地整理历年来的学习资料,在课程网站里十分容易找到。
课程公开了教学班 Zulip 讨论区(地址变化时可查看课程网站),可用于查阅问答与交流课程问题。
课程资源
- 课程网站:http://docs.compilers.cpl.icu/
- 课程视频:https://space.bilibili.com/479141149/lists/2312309
- 课程教材:龙书等
- 课程作业:10 个书面作业 + 8 ~ 10 个编程作业带你实现一个编译器