hi,小慕
课程

中国大学MOOC,为你提供一流的大学教育

hi,小mooc
编译原理
第5次开课
开课时间: 2020年08月31日 ~ 2021年01月25日
学时安排: 3-5小时每周
当前开课已结束 已有 11397 人参加
老师已关闭该学期,无法查看
课程详情
课程评价(423)
spContent=编译程序设计堪称计算机科学中理论和实践相结合的典范。在本课程中,您将学习编译程序构造的基本原理和设计方法,提高对计算机系统的总体认识,还可以从信息表示变换的角度理解计算、理解计算思维,拓广计算应用的视野。 欢迎大家参加编译原理课程,让我们在学习过程中,训练计算思维,享受计算之美!
编译程序设计堪称计算机科学中理论和实践相结合的典范。在本课程中,您将学习编译程序构造的基本原理和设计方法,提高对计算机系统的总体认识,还可以从信息表示变换的角度理解计算、理解计算思维,拓广计算应用的视野。 欢迎大家参加编译原理课程,让我们在学习过程中,训练计算思维,享受计算之美!
—— 课程团队
课程概述

《编译原理》课程是计算机科学与技术专业的必修课程。本课程主要介绍程序设计语言编译程序构造的基本原理和设计方法,包括:编译程序概述、高级语言及其语法描述、词法分析、语法分析、属性文法和语法制导翻译、语义分析和中间代码产生、符号表、运行时存储空间组织、优化、目标代码生成等。

 

理论和实践相结合是编译程序设计的重要特色。形式语言和自动机理论为编译程序的设计提供了坚实的理论基础,正是在科学理论的保证下,才形成了一系列先进的编译程序设计方法和工具,使得编译程序的构造具有很高的系统性和自动化程度。

 

本课程2007年被评为国家精品课程,2016年被评为国家精品资源共享课程。



授课目标

通这门课程的学习,您将能:

1.       在理解编译系统的结构、工作流程以及编译程序各组成部分的设计原理和实现技术的基础上,获得分析、设计、实现和维护编译系统的初步能力。

2.       深入理解程序语言和程序执行过程,提高对计算机系统的总体认识。

3.       从语言翻译和表示变换的角度理解计算。编译过程体现的诸如抽象、自动化、递归、分解、权衡等众多计算思维方法,可以广泛应用于自然语言处理、程序验证、网络信息处理等领域的问题求解。

课程大纲

第1讲 引论

1.5 编译程序的生成

1.6 小结

1.1 什么是编译程序

1.2 为什么要学习编译原理

1.3 编译过程

1.4 编译程序的结构

第2讲 高级程序设计语言概述

2.1 常用的高级程序设计语言

2.2 程序设计语言的定义

2.3 高级程序设计语言的一般特性

2.4 小结

第3讲 高级程序设计语言的语法描述

3.1 上下文无关文法

3.2 文法与语言

3.3 语法树与二义性

3.4 形式语言鸟瞰

3.5 小结

第4讲 词法分析1

4.1 词法分析概述

4.2 词法分析器的设计

4.3 小结

第5讲 词法分析2

5.1 词法规则形式化——正规集与正规式

5.2 确定有限自动机

5.3 非确定有限自动机

5.4 小结

第6讲 词法分析3

6.1 有限自动机的等价性

6.2 正规式与有限自动机的等价性

6.3 词法分析程序自动生成

第1次单元测试

第7讲 语法分析——自上而下分析1

7.1 自上而下分析的基本问题

7.2 LL(1)文法——消除文法的左递归

7.3 LL(1)文法——消除回溯

7.4  FIRST和FOLLOW集合的构造

7.5 小结

第8讲  语法分析——自上而下分析2

8.1 构造递归下降分析器

8.2 扩充的巴科斯范式和语法图

8.3 JavaCC简介

8.4 小结

第9讲  语法分析——自上而下分析3

9.1 预测分析程序

9.2 预测分析表的构造

9.3 小结

第10讲  语法分析——自下而上分析1

10.1 自下而上分析

10.2 短语与直接短语

10.3 分析过程描述

10.4 算符优先文法

10.5 构造优先关系表

10.6 算符优先分析算法

10.7 小结

第11讲 语法分析——自下而上分析2

11.1 句柄和规范归约

11.2 LR分析法

11.3 小结

第12讲 语法分析——自下而上分析3

12.1 活前缀

12.2 构造识别活前缀的DFA

12.3 构造LR(0)分析表

12.4 小结

第13讲 语法分析——自下而上分析4

13.1 SLR(1)分析法

13.2 LR(1)分析法

13.3 LR分析器产生工具

13.4 小结

第2次单元测试

第14讲 属性文法和语法制导翻译1

14.1 属性文法

14.2 属性计算

第15讲 属性文法和语法制导翻译2

15.1 S-属性文法

15.2 L-属性文法

15.3 翻译模式

15.4 递归下降翻译器的设计

15.5 小结

第16讲 语义分析和中间代码生成1

16.1 中间语言

16.2 常用的中间语言形式

16.3 小结

第3次单元测试

第17讲 语义分析和中间代码生成2

17.1 赋值语句的翻译

17.2 数组元素引用的翻译

17.3 类型转换

17.4 小结

第18讲 语义分析和中间代码生成3

18.1 布尔表达式及其计算

18.2 按数值表示法翻译布尔表达式

18.3 带优化翻译布尔表达式

18.4 小结

第19讲 语义分析和中间代码生成4

19.1 常用的控制语句

19.2 控制语句的属性文法

19.3 控制语句的属性计算

19.4 一遍扫描翻译控制语句

19.5 一遍扫描翻译控制语句示例

19.6 小结

第4次单元测试

第20讲 符号表

20.1 符号表的组织与操作

20.2 符号表的内容

20.3 利用符号表分析名字的作用域

20.4 小结

第21讲 运行时存储空间组织1

21.1 参数传递

21.2 目标程序运行时的活动

21.3 静态存储管理

第22讲 运行时存储空间组织2

22.1 动态存储管理概述

22.2 非嵌套过程语言的动态存储管理

22.3 嵌套过程语言的动态存储管理--静态链方法

22.4 嵌套过程语言的动态存储管理--Display表方法

22.5 小结

第23讲 优化1

23.1 优化概述

23.2 局部优化--基本块划分

23.3 局部优化--基本块优化

第24讲 优化2

24.1 循环优化概述

24.2 代码外提

24.3 强度消弱

24.4 小结

第25讲 目标代码生成

25.1 目标代码生成概述

25.2 目标机器模型

25.3 简单代码生成器

25.4 待用信息和活跃信息

25.5 变量地址描述和寄存器描述

25.6 代码生成与寄存器分配算法

25.7 小结

第5次单元测试

学习体会交流

讨论交流:编译原理课程学习体会

扩展学习资源

编译开发工具

在线实训项目

展开全部
预备知识

具备计算机程序设计语言和程序设计知识,对数据结构与算法、计算机原理、离散数学等相关知识有一定了解更好。

证书要求

课程考核评价达到“合格”(达到60分)或"优秀"(达到85分),可申请“认证书

参考资料

陈火旺、刘春林等,《程序设计语言编译原理》,国防工业出版社,第三版,2000

Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman. Compilers: Principles, Techniques and Tools (Second Edition). Pearson Education, Inc. 2006

国防科技大学
6 位授课老师
王挺

王挺

教授

唐晋韬

唐晋韬

副教授

李莎莎

李莎莎

讲师

推荐课程

编译原理期末冲刺-6小时突击编译原理

软件攻城狮

3500人参加

计组期末冲刺-9小时突击计算机组成原理

IT大成老师

6600人参加

计算机网络期末冲刺-4小时突击计算机网络

王道论坛

17794人参加

网络安全期末冲刺-3小时突击网络安全

GWG老师

398人参加
下载
下载

下载App