编译原理(Principles and Techniques of Compilers)

教学目标:编译原理的教学目标是使得学生掌握如下知识:和编译器设计相关的形式语言理论基础;编译程序的体系结构,编译器的各个组成部分的原理和技术,包括词法分析、语法分析、语义分析和目标代码生成、代码优化,以及设计环境与程序错误的检查和校正;初步了解一些编译器生成工具的基础理论和应用。另外,该课程将通过上机实验使得学生初步了解一个设计编译器的过程。

授课老师:许畅(计算机科学技术楼807室;

课程助教:张灵毓(;分管实验),周意可(;分管作业)

使用课本:《编译原理》,Alfred V. Aho等著,赵建华等译(也称“龙书”,就是封面上有条紫龙,还有个屠龙武士),有两个版本,完整版和本科教学版均可,当然后者便宜些;实验使用《编译原理实践与指导教程》,许畅等著,但建议看随实验发布的讲义(每学期更新)

说点什么:通常这是门困难的课程,这当然是指自己闷头看书的情况,如果在课堂上,你大概会过得比较轻松愉快 :-)


课程安排

学期:2022-2023学年第二学期(共17周)

班级:普通班(22010120)

时间:周一5-6节、周三5-6节

地点:仙II-503

交流(QQ群):群号 496679320(老师和助教们都在,用于即时/离线交流;请各位同学使用“学号-姓名”格式作为名片/昵称)


动态新闻

以下是重要通知、以及书面作业或上机实验的重要变化

2023-03-15:实验二发布,完成时间四周(与实验一重叠一周)

2023-02-17:实验一发布,完成时间四周(考试周不计入在内)

2023-02-15:请同学们在本周五(02-17)之前完成实验分组信息填报,具体信息见QQ群

2023-02-12:收到通知,上课教室调至仙II-503

2023-01-09:课程网站设立,撒花!


课程讲义

一般上课前给出,但可能随时会更新,注意看更新时间,以确保自己下载的是最新版(抱佛脚专用)

第一章讲义(2023年02月12日下午更新)

第三章讲义(2023年02月12日下午更新)

第四章讲义(2023年03月12日下午更新)

第五章讲义(2023年03月19日上午更新)


书面作业(课堂收取)

上课布置后,在这里也会再次公布,以确保不会错过作业(不适用于既不上课也不看课程网站的学霸们)

第01次作业(2023年02月15日布置,03月01日收取)

第02次作业 (1) (2)(2023年03月01日布置,03月08日收取)

第03次作业(2023年03月08日布置,03月15日收取)

第04次作业(2023年03月15日布置,03月22日收取)

第05次作业 (1) (2)(2023年03月22日布置,03月29日收取)


上机实验(OJ平台收取)

编译原理的实验内容是为一个小型的类C语言(C--)实现一个编译器。如果你顺利完成了本实验任务,那么不仅你的编程能力将会得到大幅提高,而且你最终会得到一个比较完整的、能将C--源代码转换成MIPS汇编代码的编译器,所得到的汇编代码可以在SPIM Simulator上运行。实习总共分为五个阶段:词法和语法分析、语义分析、中间代码生成、中间代码优化、以及目标代码生成。每个阶段的输出是下一个阶段的输入,后一个阶段总是在前一个阶段的基础上完成。

(注意实验可能会打补丁,所以请根据提示定期检查版本)

注意事项:

实验提交要求(2023年01月09日更新)

实验任务分配(以此为准,做错实验的会扣分;实验一、二、三和五特别注意查看)(2023年03月15日更新)

代码结构及Makefile(以此为准,不遵要求的无法得分)(2023年01月09日更新)

实验内容:

实验语法(五次实验共用)(2023年02月17日更新)

第一次实验(实验要求及指导攻略)(2023年02月17日布置,03月24日收取)

第二次实验(实验要求及指导攻略)(2023年03月15日布置,04月14日收取)


请按Ctrl+F5强制刷新页面以获取最新版;最后更新日期:2023-03-19