编译原理(山东联盟)
编译原理(山东联盟)
1000+ 人选课
更新日期:2025/07/02
开课平台智慧树
开课高校青岛农业大学
开课教师李洪霞邓立苗于爱华
学科专业工学电子信息类
开课时间2025/01/21 - 2025/07/20
课程周期26 周
开课状态开课中
每周学时-
课程简介
本课程是计算机科学与技术、软件工程等计算机大类专业的一门重要专业课。 在层出不穷的编程语言中,像C、Pascal等,这些语言是如何成为计算机可以执行的代码的? 编译原理这门课将为你给出答案。编译原理在理论、技术、方法上都对学生提供了系统而有效的训练,从而有利于提高软件人员的素质和能力,并为进行其它软件设计打下良好的基础。
课程大纲

在线教程

章节简介教学计划
引论
登录后可预览视频
什么叫编译程序
于爱华
编译过程
于爱华
编译程序的结构
于爱华
高级语言及其语法描述
上下文无关文法
于爱华
推导
于爱华
语法树与二义性
于爱华
词法分析
词法分析器的输出形式
邓立苗
状态转换图
邓立苗
正规式与正规集
邓立苗
确定有限自动机(DFA)
邓立苗
非确定有限自动机(NFA)
邓立苗
从NFA到DFA的转换(1)
邓立苗
从NFA到DFA的转换(2)
邓立苗
确定有限自动机的化简
邓立苗
语法分析--自上而下分析
文法的左递归
李洪霞
直接左递归的消除
李洪霞
间接左递归的消除
李洪霞
FIRST集的定义
李洪霞
消除回溯
李洪霞
FOLLOW集的定义
李洪霞
LL(1)文法
李洪霞
FIRST集的构造算法
李洪霞
FIRST集的构造示例
李洪霞
FOLLOW集的构造算法及示例
李洪霞
预测分析表及其构造
李洪霞
语法分析--自下而上分析
移进-归约法
李洪霞
句柄与规范归约
李洪霞
LR分析过程
李洪霞
LR分析过程示例
李洪霞
活前缀与可归前缀
李洪霞
项目及其分类
李洪霞
项目集闭包及GO函数
李洪霞
LR(0)集项目集规范族的构造
李洪霞
LR(0)集项目集规范族的构造示例
李洪霞
LR(0)分析表的构造
李洪霞
SLR(0)冲突解决方案
李洪霞
属性文法与语法制导翻译
属性文法
李洪霞
综合属性值的计算
李洪霞
继承属性值的计算
李洪霞
L-属性文法及翻译模式
李洪霞
根据属性文法构造翻译模式
李洪霞
语义分析和中间代码产生
后缀式
李洪霞
三地址代码
李洪霞
三地址代码的具体表示形式
李洪霞
优化
代码优化概述
邓立苗
常用的代码优化方法
邓立苗
基本块
邓立苗
基本块的优化
邓立苗
目标代码生成
代码生成概述
李洪霞
目标代码生成算法
李洪霞
目标代码生成示例
李洪霞
  • 第一章引论

    本章介绍了编译程序的概念以及编译程序的整体结构。

  • 1.1什么叫编译程序

    编译程序的功能是将高级语言程序通过等价变换为机器语言程序或汇编语言程序。

  • 1.2编译过程

    "编译过程分为五个阶段:词法分析、语法分析、语义分析与中间代码产生、优化和目标代码产生。
    "

  • 1.3编译程序的结构

    编译程序的结构分五个模块设计

  • 第二章高级语言及其语法描述

    本章介绍了上下文无关文法的构成以及其所表示的语言。

  • 2.1上下文无关文法

    介绍了上下文无关文法的概念及构成。

  • 2.2推导

    介绍了一个文法所定义的语言。

  • 2.3语法树与二义性

    一个文法的句子的语法分析树及语法二义性的定义。

  • 第三章词法分析

    本章主要讨论词法分析程序的构造方法和工具,主要包括状态转换图、正规式与正规集、确定(非确定)有限自动机的定义及应用。

  • 3.1词法分析器的输出形式

    主要讲解词法分析器输出的单词符号的一般形式

  • 3.2状态转换图

    主要讲解状态转换图的概念、构造及程序实现

  • 3.3正规式与正规集

    主要介绍正规式与正规集的定义、性质及应用

  • 3.4确定有限自动机(DFA)

    主要介绍确定有限自动机的定义、表示和作用

  • 3.5非确定有限自动机(NFA)

    主要介绍非确定有限自动机的定义、表示以及与确定有限自动机的区别

  • 3.6从NFA到DFA的转换(1)

    主要介绍使用子集法将NFA转换为DFA的方法和步骤

  • 3.7从NFA到DFA的转换(2)

    主要介绍使用子集法将NFA转换为DFA的方法和步骤

  • 3.8确定有限自动机的化简

    主要介绍通过子集划分法对确定有限自动机的进行化简的方法

  • 第四章语法分析--自上而下分析

    分析了自上而下语法分析所面临的问题,并根据这些问题提出一种可进行确定的、无回溯语法分析的文法--LL(1)文法,最后给出了相应的分析方法。

  • 4.1文法的左递归

    什么是文法的左递归,一个文法存在左递归在自上而下语法分析中出现的问题。

  • 4.2直接左递归的消除

    什么是文法的直接左递归,如何消除文法的直接左递归。

  • 4.3间接左递归的消除

    什么是文法的间接左递归,如何将间接左递归转换成直接左递归再加以消除。

  • 4.4FIRST集的定义

    为消除回溯,给出文法符号FIRST集的定义.

  • 4.5消除回溯

    给出消除回溯的方法。

  • 4.6FOLLOW集的定义

    通过实例给出自上而下语法分析中可能出现的问题并引出FOLLOW集的定义。

  • 4.7LL(1)文法

    给出一种可以进行确定的、无回溯的自上而下语法分析的文法--LL(1)文法。

  • 4.8FIRST集的构造算法

    给出对任一文法符号及字符串的FIRST集的构造算法。

  • 4.9FIRST集的构造示例

    通过实例说明文法符号及字符串的FIRST集的构造方法。

  • 4.10FOLLOW集的构造算法及示例

    给出非终结符的FOLLOW集的构造算法,并用实例加以说明。

  • 4.11预测分析表及其构造

    构造LL(1)文法的预测分析表,并给出LL(1)文法的自上而下语法分析方法。

  • 第五章语法分析--自下而上分析

    介绍了自下而上语法分析可能面临的问题,并以LR分析法为例说明如何对文法里德自下而上语法分析。

  • 5.1移进-归约法

    通过移进-归约法对给定的文法进行自下而上语法分析。

  • 5.2句柄与规范归约

    句柄的概念以及规范归约的定义。

  • 5.3LR分析过程

    LR分析器的构成及工作过程。

  • 5.4LR分析过程示例

    通过实例对LR分析器工作过程进行说明。

  • 5.5活前缀与可归前缀

    什么是可归前缀及在LR分析过程中的作用。

  • 5.6项目及其分类

    如何由产生式构造出项目以及不同项目所代表的相应含义。

  • 5.7项目集闭包及GO函数

    项目集闭包及GO函数的概念。

  • 5.8LR(0)集项目集规范族的构造

    一个文法的拓广文法的LR(0)项目集规范族的构造算法。

  • 5.9LR(0)集项目集规范族的构造示例

    通过实例对LR(0)项目集规范族的构造进行说明。

  • 5.10LR(0)分析表的构造

    如何构造文法的LR分析器的核心--LR(0)分析表。

  • 5.11SLR(0)冲突解决方案

    对满足SLR(1)冲突解决方案的文法如何解决移进-归约和归约-归约冲突。

  • 第六章属性文法与语法制导翻译

    给出了两种不同的属性文法以及相应的属性值计算方法,可利用这些方法语义分析。

  • 6.1属性文法

    属性的分类及属性文法的定义。

  • 6.2综合属性值的计算

    综合属性值的计算一般是通过边进行自下而上语法分析、边进行属性值的计算来完成的。

  • 6.3继承属性值的计算

    继承属性值的计算一般是边进行自上而下语法分析、边进行属性值的计算来完成的。

  • 6.4L-属性文法及翻译模式

    进行了L-属性文法的定义并给出如何利用翻译模式进行L-属性文法的翻译。

  • 6.5根据属性文法构造翻译模式

    如何根据给定的属性文法构造出其相应的翻译模式。

  • 第七章语义分析和中间代码产生

    本章介绍常用的中间代码形式及如何对常用语句进行中间代码的翻译。

  • 7.1后缀式

    介绍后缀式的特点以及把表达式后缀式的属性文法。

  • 7.2三地址代码

    介绍常用的三地址语句种类

  • 7.3三地址代码的具体表示形式

    介绍三地址代码的不同实现形式及各自的优缺点。

  • 第八章优化

    本章主要讨论如何对程序进行各种等价变换,使得从变换后的程序出发,生成更有效的目标代码。

  • 8.1代码优化概述

    主要介绍代码优化概念、所遵循的原则和分类

  • 8.2常用的代码优化方法

    通过一个例子,介绍代码优化通过采用的基本方法

  • 8.3基本块

    主要介绍基本块的概念以及基本块的划分方法

  • 8.4基本块的优化

    主要介绍基本块的DAG表示方法以及如何采用DAG图进行基本块的优化

  • 第九章目标代码生成

    本章介绍目标代码的生成,包括目标代码生成中需注意的问题并给出了一种目标代码生成算法。

  • 9.1代码生成概述

    介绍了设计代码生成器要考虑的问题,如寄存器的分配、指令的选择等。

  • 9.2目标代码生成算法

    给出一种考虑寄存器分配的目标代码生成算法。

  • 9.3目标代码生成示例

    通过实例对目标代码生成算法进行了说明。

  • 开始学习
  • 第一章  作业测试
    第一章 引论

    1.1 什么叫编译程序

    1.2 编译过程

    1.3 编译程序的结构

    视频数3
  • 第二章  作业测试
    第二章 高级语言及其语法描述

    2.1 上下文无关文法

    2.2 推导

    2.3 语法树与二义性

    视频数3
  • 第三章  作业测试
    第三章 词法分析

    3.1 词法分析器的输出形式

    3.2 状态转换图

    3.3 正规式与正规集

    3.4 确定有限自动机(DFA)

    3.5 非确定有限自动机(NFA)

    3.6 从NFA到DFA的转换(1)

    3.7 从NFA到DFA的转换(2)

    3.8 确定有限自动机的化简

    视频数8
  • 第四章  作业测试
    第四章 语法分析--自上而下分析

    4.1 文法的左递归

    4.2 直接左递归的消除

    4.3 间接左递归的消除

    4.4 FIRST集的定义

    4.5 消除回溯

    4.6 FOLLOW集的定义

    4.7 LL(1)文法

    4.8 FIRST集的构造算法

    4.9 FIRST集的构造示例

    4.10 FOLLOW集的构造算法及示例

    4.11 预测分析表及其构造

    视频数11
  • 第五章  作业测试
    第五章 语法分析--自下而上分析

    5.1 移进-归约法

    5.2 句柄与规范归约

    5.3 LR分析过程

    5.4 LR分析过程示例

    5.5 活前缀与可归前缀

    5.6 项目及其分类

    5.7 项目集闭包及GO函数

    5.8 LR(0)集项目集规范族的构造

    5.9 LR(0)集项目集规范族的构造示例

    5.10 LR(0)分析表的构造

    5.11 SLR(0)冲突解决方案

    视频数11
  • 第六章  作业测试
    第六章 属性文法与语法制导翻译

    6.1 属性文法

    6.2 综合属性值的计算

    6.3 继承属性值的计算

    6.4 L-属性文法及翻译模式

    6.5 根据属性文法构造翻译模式

    视频数5
  • 第七章  作业测试
    第七章 语义分析和中间代码产生

    7.1 后缀式

    7.2 三地址代码

    7.3 三地址代码的具体表示形式

    视频数3
  • 第八章  作业测试
    第八章 优化

    8.1 代码优化概述

    8.2 常用的代码优化方法

    8.3 基本块

    8.4 基本块的优化

    视频数4
  • 第九章  作业测试
    第九章 目标代码生成

    9.1 代码生成概述

    9.2 目标代码生成算法

    9.3 目标代码生成示例

    视频数3
  • 期末考试