编译原理与技术¶
说明
本课程主页为 2024 秋季学期李诚老师班《编译原理与技术》课程主页,包含了理论课与实验课的相关信息。
课程简介¶
本课程是计算机科学与技术专业的核心课,旨在深入探讨程序设计语言的设计和实现技术,涵盖与程序设计语言理论相关的知识,并培养学生将课程中学到的概念和技术应用于软件设计和开发的能力。内容包括编译器构建的基本原理,包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成。同时,本课程结合现代编译技术和趋势,使用 LLVM 和龙芯后端,基于自主设计的教学实验框架“建木”,设计现代化的编译器工具。
课程信息¶
上课时间与地点¶
时间:1~15 周,1(6,7) 和 3(3,4)
地点:高新校区 GT-B212
联系方式¶
教师
- 主讲教师:李诚 (chengli7@ustc.edu.cn)
助教
- 金泽文(zevin@mail.ustc.edu.cn)
- 贺嘉(hej148@mail.ustc.edu.cn)
- 李晓奇(lxq@mail.ustc.edu.cn)
- 李宇哲(lyz1810@mail.ustc.edu.cn)
- 周瓯翔(zox@mail.ustc.edu.cn)
- 刘睿博(liuruibo21@mail.ustc.edu.cn)
其它
- QQ 群:726310461
公告¶
- 2024-09-02:课程平台介绍 已发布
- 2024-09-06:Lab0 已发布,Deadline:2024 年 9 月 18 日
- 2024-09-18:第一次作业已发布,Deadline:2024 年 9 月 20 日
- 2024-09-18:Lab1 已发布,Deadline:Phase1 : 2024 年 9 月 28 日 / Phase2 : 2024 年 10 月 7 日
- 2024-09-25:第二次作业已发布,Deadline:2024 年 9 月 30 日
- 2024-10-08:Lab2 已发布,Deadline:
- Phase1 : 2024 年 10 月 18 日
- Phase2 : 2024 年 10 月 27 日
- Phase3 : 2024 年 11 月 2 日
- 2024-11-03:Lab3 已发布,Deadline:
- Phase1 : 2024 年 11 月 13 日
- Phase2 : 2024 年 11 月 27 日
教学课件¶
日期 | 标题 | 课件 |
---|---|---|
2024-09-02 | 编译原理和技术导论 | Lecture1_Intro |
2024-09-04 | 词法分析 | Lexical-analysis |
2024-09-11 | 语法分析 - 上下文无关文法 | Parser-part1 |
2024-09-14 | 语法分析 - 自顶向下 - 递归下降 | Parser-part2 |
2024-09-16 | 语法分析 - 自顶向下 - LL(1) 文法 | Parser-part3 |
2024-09-18 | 语法分析 - 自底向上 - 移进规约 & LR 分析器的简单模型 | Parser-part4, Parser-part5 |
2024-09-23 | 语法分析 - 简单的 LR 方法 | Parser-part6 |
2024-09-25 | 语法分析 - 简单的 LR 方法 & 规范的 LR 方法 | Parser-part6, Parser-part7 |
2024-09-30 | 语法分析 - 规范的 LR 方法 | Parser-part7 |
2024-10-09 | 中间代码表示 | IR |
2024-10-12 | 习题课 | HW1, HW2, Lab2 |
2024-10-14 | 语法制导翻译 - 语法制导定义 & S/L 属性的定义 | Translation-part1, Translation-part2 |
2024-10-16 | 语法制导翻译 - 语法制导翻译方案 & L 属性定义的翻译方案 | Translation-part2, Translation-part3 |
2024-10-21 | 语法制导翻译 - L 属性定义的翻译方案 | Translation-part4 |
2024-10-23 | 中间代码翻译 - 简单语句翻译 & 控制流与布尔表达式翻译 | IR-Translation-part1, IR-Translation-part2 |
2024-10-28 | 中间代码翻译 - 布尔表达式 & 控制流语句 | IR-Translation-part3, IR-Translation-part4 |
2024-10-30 | 中间代码翻译 - 类型表达式及自动构造 | IR-Translation-part5 |
2024-11-04 | 中间代码翻译 - 类型表达式 & 符号表与声明语句 | IR-Translation-part6 |
2024-11-06 | 中间代码翻译 - 数组寻址 & 运行时管理 - 存储组织 | IR-Translation-part7, Runtime-part1 |
2024-11-11 | 运行时管理 - 栈式分配 | Runtime-part2, Runtime-part3 |
2024-11-13 | 代码生成 - 简单机器模型 | CodeGen-part1 |
2024-11-18 | 机器无关代码优化 - 常见优化方法 | IR Opt-part1 |
2024-11-20 | 机器无关代码优化 - 数据流与到达定值分析 | IR Opt-part2 |
参考资料¶
教材和参考书¶
- [1] 陈意云、张昱,编译原理(第 3 版),高等教育出版社,2014
- [2] 李诚、徐伟,现代编译器设计与实现(实验讲义版本,高等教育出版社待出版,2024)。教材资源及实验框架
- A. V. Aho, M. S. Lam, R. Sethi, and J. D. Ullman 著,赵建华等译,编译原理,机械工业出版社,2017
其他资料¶
- Stanford 课程主页:http://web.stanford.edu/class/cs143/
- MIT 课程主页:http://6.035.scripts.mit.edu/fa18/
如何使用本文档?¶
关于提示框¶
为了便于标识,我们在文档中提供了若干提示框。它们有着不同的形式与作用。例如:
一般的提示框长这样
里面是这样的文字。
有的提示框默认是折叠的,需要点击才能展开
然后看到里面的内容。
有的提示框则是默认展开的
如果觉得碍事可以点击折叠。
大家可以在后续的文档中接触到它们。
关于搜索¶
你可以在右上角搜索框中输入想要查询的关键词,文档会给出对应的查询结果与跳转链接。
Tips
如果在阅读文档时发现有自己不清楚的知识点,可以先用搜索框查询其是否在先前的文档中出现过。