1、我为什么要学习这门课?
“编译原理”这门课程一直以来是国内外大学计算机相关专业的重要课程,其知识结构贯穿程序设计语言、系统环境以及体系结构,能以相对独立的视角体现从软件到硬件以及软硬件协同的整机概念;同时其理论基础又涉及形式语言与自动机、数据结构与算法等计算机学科的许多重要方面,不愧为联系计算机科学理论和计算机系统的典范。正如世界著名计算机科学家Alfred V.Aho在他的经典著作《编译原理》开篇中说:“在每个计算机科学家的研究生涯中,本书的原理和技术都会反复用到。”
2、这门课的主题是关于什么?
形式语言与自动机、词法分析、语法分析及语法制导翻译
3、学习这门课可以获得什么?特别是对自己有什么帮助和应用。
该课程主要是介绍如何将高级语言翻译为低级语言(机器语言和汇编语言)的编译程序的工作原理和方法的课程。因此,可以说该课程是建立在高级语言或汇编语言基础上,综合运用编译理论及多门前修课程如“数据结构”“离散数学”等课程的相关知识来解决高级语言在机器上运行的实际问题的一门课程。该课程内容丰富,具有严密的逻辑性和抽象性,是一门“难教难学”的课程,但对提高学生计算机软件素质、逻辑思维能力、抽象思维能力和形式化能力具有很大作用,可以使学生真正了解计算机的工作过程,认识计算机信息处理的实质,并综合运用所学的编译技术与方法来分析解决问题。
4、这门课有什么特色和亮点。
理念上,遵循工程教育认证核心理念,强调能力培养;传授上,重理解、重思想方法、重应用、轻内容;教学上,以“问题”为导向,激发学生主动探究分析问题,增强教学深度。
目标1:掌握编译原理的基本概念、基本原理与基本方法,了解一个复杂软件系统——编译器的构造原理、方法和技术,提升解决复杂软件工程问题能力。
目标2:培养抽象思维和形式化描述问题的能力,有利于采用科学方法分析与研究软件复杂工程问题。
目标3:增强数字化、算法、模块化等软件工程专业核心意识,能够将编译原理的典型方法运用到解决实际复杂软件问题。
目标4:加深对程序设计语言本质的理解,从而更好地运用程序设计语言。
为积极响应国家低碳环保政策, 2021年秋季学期开始,中国大学MOOC平台将取消纸质版的认证证书,仅提供电子版的认证证书服务,证书申请方式和流程不变。
电子版认证证书支持查询验证,可通过扫描证书上的二维码进行有效性查询,或者访问 https://www.icourse163.org/verify,通过证书编号进行查询。学生可在“个人中心-证书-查看证书”页面自行下载、打印电子版认证证书。
完成课程教学内容学习和考核,成绩达到课程考核标准的学生(每门课程的考核标准不同,详见课程内的评分标准),具备申请认证证书资格,可在证书申请开放期间(以申请页面显示的时间为准),完成在线付费申请。
认证证书申请注意事项:
1. 根据国家相关法律法规要求,认证证书申请时要求进行实名认证,请保证所提交的实名认证信息真实完整有效。
2. 完成实名认证并支付后,系统将自动生成并发送电子版认证证书。电子版认证证书生成后不支持退费。
第1讲(第一周) 绪 论
1.1 什么是编译程序
绪论——知识回顾
1.2 编译程序逻辑结构
1.3 编译程序各阶段任务
第1次单元测验(6分)
第2讲 (第一周) 文法与语言1
2.1 语言与文法的直观概念
2.2 符号和符号串
2.3 文法的形式化定义
2.4 语言的形式定义
第3讲(第二周) 文法与语言2
2.5 文法的类型
2.6 上下文无关文法及其语法树
2.7 文法及语言的二义性
第4讲(第二周) 文法与语言3
2.8 句型分析方法
2.9 句型分析中几个概念
2.10 有关文法实用中的一些说明
文法与语言——知识回顾
第2次单元测验(10分)
第5讲(第三周) 词法分析1
3.1 词法分析程序的设计
3.2 正规文法与单词描述
3.3 正规式和正规集
3.4 正规文法与正规式的等价性
第6讲(第三周) 词法分析2
3.5 有穷自动机
3.6 确定的有穷自动机
3.7 不确定的有穷自动机
3.8 NFA的确定化
3.9 DFA的最小化
第7讲(第四周) 词法分析3
3.10 FA到正规式
3.11 正规式到FA
3.12 正规文法和有穷自动机间的转换
第3次 单元测验(8分)
第8讲(第四周) 自顶向下语法分析方法1
4.1确定的自顶向下分析思想
4.2 FIRST方法
4.3 FOLLOW方法
4.4 LL(1)文法定义
第9讲(第五周) 自顶向下语法分析方法2
4.6提取左公共因子
4.7消去左递归
4.5 LL(1)文法判定
4.8 预测分析表法
第4次单元测验(8分)
第10讲(第五周) 自底向上优先分析法1
5.1自底而上分析方法概述
5.2 简单优先文法
5.3 简单优先分析方法
第11讲(第六周) 自底向上优先分析法2
5.4 算法优先分析法
5.6 算法优先文法
5.5 算法优先关系
5.7 算符优先分析句型的性质
第5次 单元测试 (8分)
第12讲(第六周) LR分析法1
6.1 LR分析法
6.2活前缀及可归前缀
6.3 LR(0)项目
第13讲 (第七周)LR分析法2
6.4 LR(0)文法
6.5 LR(0)分析表的构造
6.6 SLR(1)分析
第14讲(第七周) LR分析法3
6.7 LR(1)分析
6.8 LALR(1)分析
6.9 四类LR分析方法关系
第6次单元测验(8分)
第15讲(第八周) 语法制导翻译和中间代码生成1
7.1 属性文法与语法制导翻译
7.2 中间代码的形式
7.3 简单赋值语句翻译
第16讲(第八周) 语法制导翻译和中间代码生成2
7.4 布尔表达式到四元式的翻译1
7.5 布尔表达式到四元式的翻译2
第17讲(第九周) 语法制导翻译和中间代码生成3
7.6.条件、while和复合语句的翻译1
7.7 条件、while和复合语句的翻译2
7.8 for循环语句的翻译
第7次单元测验(8分)
第18讲(第九周) 代码优化
8.1优化技术简介
8.2局部优化
8.3循化优化
第8次单元测验 (4分)
高级语言程序设计、数据结构、离散数学等计算机基础知识
[1]王生原,董渊,张素琴等,《编译原理》[M].第三版,北京:清华大学出版社,2015年.
[2]蒋立源、康慕宁,《编译原理》[M].第三版, 西安:西北工业大学出版社,2009年.
[3]陈火旺等,《程序设计语言编译原理》[M].第三版,长沙:国防工业出版,2002年.