编译原理
编译原理
1000+ 人选课
更新日期:2025/06/06
开课时间2025/03/08 - 2025/05/31
课程周期12 周
开课状态已结课
每周学时-
课程简介

1、我为什么要学习这门课?

“编译原理”这门课程一直以来是国内外大学计算机相关专业的重要课程,其知识结构贯穿程序设计语言、系统环境以及体系结构,能以相对独立的视角体现从软件到硬件以及软硬件协同的整机概念;同时其理论基础又涉及形式语言与自动机、数据结构与算法等计算机学科的许多重要方面,不愧为联系计算机科学理论和计算机系统的典范。正如世界著名计算机科学家Alfred V.Aho在他的经典著作《编译原理》开篇中说:“在每个计算机科学家的研究生涯中,本书的原理和技术都会反复用到。”


2、这门课的主题是关于什么?

形式语言与自动机、词法分析、语法分析及语法制导翻译


3、学习这门课可以获得什么?特别是对自己有什么帮助和应用。

该课程主要是介绍如何将高级语言翻译为低级语言(机器语言和汇编语言)的编译程序的工作原理和方法的课程。因此,可以说该课程是建立在高级语言或汇编语言基础上,综合运用编译理论及多门前修课程如“数据结构”“离散数学”等课程的相关知识来解决高级语言在机器上运行的实际问题的一门课程。该课程内容丰富,具有严密的逻辑性和抽象性,是一门“难教难学”的课程,但对提高学生计算机软件素质、逻辑思维能力、抽象思维能力和形式化能力具有很大作用,可以使学生真正了解计算机的工作过程,认识计算机信息处理的实质,并综合运用所学的编译技术与方法来分析解决问题。


4、这门课有什么特色和亮点。

理念上,遵循“价值引领、学生中心、问题导向、持续改进”教育理念,强调能力培养;传授上,重理解、重思想方法、重应用、轻内容;教学上,以“问题”为导向,激发学生主动探究分析问题,增强教学深度。

课程大纲

课时课时目标:正确理解编译程序概念;了解编译程序工作的基本过程及其各阶段的基本任务;熟悉编译程序总体框架。

1.1 什么是编译程序

1.2 编译程序逻辑结构

1.3 编译程序各阶段任务

1.4 问题思考

1.5 单元测验

文法与语言

课时目标:了解符号和符号串等相关概念;掌握形式语言基本知识:文法、句型、句子、语言、推导/归约、语法树、二义性、上下文无关文法、正规文法等基本概念;掌握语法树的构建,句型推导/归约;正确理解句型的短语、直接短语、句柄;掌握较简单的文法与语言互求。

2.1 语言与文法的直观概念

2.2 符号和符号串

2.3 文法形式化定义

2.4 语言形式化定义

2.5 文法的类型

2.6 上下文无关文法及其语法树

2.7 文法与语言的二义性

2.8 句型分析方法

2.9 句型分析中几个概念

2.10 有关文法实用说明

2.11 问题思考

2.12 单元测验

词法分析

课时目标:理解词法分析器功能及形式;掌握正规式描述工具;正确理解有限自动机基本理论及工作原理;掌握NFA的确定化、DFA的最小化;了解FA和正规式、FA和正规文法的等价变换。

3.1词法分析程序的设计

3.2正规文法与单词描述

3.3正规式与正规集

3.4正规式与正规文法等价

3.5 有穷自动机

3.6 确定的有穷自动机

3.7 不确定的有穷自动机

3.8 NFA的确定化

3.9 DFA的最小化

3.10 FA到正规式

3.11 正规式到FA

3.12 正规文法和有穷自动机间的转换

3.13 问题思考

3.14 单元测验

自顶向下语法分析方法

课时目标:正确理解自顶而下分析的基本思想;理解LL(1)方法的定义;掌握预测分析程序的基本原理;掌握预测分析表的构造;了解非LL(1)文法到LL(1)文法的转换方法。

4.1确定的自顶向下分析思想

4.2 FIRST方法

4.3 FOLLOW方法

4.4 LL(1)文法定义

4.5 LL(1)文法判定

4.6 提取左公共因子

4.7 消去左递归

4.8 预测分析表法

4.9 问题思考

4.10 单元测验

自底向上优先分析法

课时目标:正确理解自底而上语法分析的基本思想;了解简单优先分析法;掌握算符优先分析基本方法及算符优先表构造技术。

5.1 自底而上分析方法概述

5.2 简单优先文法

5.3 简单优先分析方法

5.4 算法优先分析法

5.5 算法优先关系

5.6 算法优先文法

5.7 算符优先分析句型的性质

5.8 问题思考

5.9 单元测验

LR分析法

课时目标:正确理解LR分析法基本原理;掌握LR分析表构造技术;掌握LR(0)、SLR(1)项目集规范族的构造,识别活前缀的DFA的构造,分析表的构造,及输入串的分析;了解LR(0)、SLR(1)、LR(1)、LALR(1)分析法之间的关系和区别。

6.1 LR分析法

6.2活前缀及可归前缀

6.3 LR(0)项目

6.4 LR(0)文法

6.5 LR(0)分析表的构造

6.6 SLR(1)分析

6.7 LR(1)分析

6.8 LALR(1)分析

6.9 四类LR分析方法关系

6.10 问题思考

6.11 单元测验

语法制导翻译和中间代码生成

课时目标:掌握语义分析基本思想;正确理解语法制导翻译基本原理;熟悉常见的几种中间语言:四元式、三元式、逆波兰表示;掌握常用语句到四元式的翻译方法。

7.1 属性文法与语法制导翻译

7.2 中间代码的形式

7.3 简单赋值语句翻译

7.4 布尔表达式到四元式的翻译1

7.5 布尔表达式到四元式的翻译2

7.6.条件、while和复合语句的翻译1

7.7 条件、while和复合语句的翻译2

7.8 for循环语句的翻译

7.9 问题思考

7.10 单元测验

代码优化

课时目标:了解常用的代码优化技术;掌握局部优化及循化优化处理方法。

8.1 优化技术简介

8.2 局部优化

8.3 循化优化

8.4 问题思考

8.5 单元测验