-
第一章引论
本章介绍了编译程序的概念以及编译程序的整体结构。
-
●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目标代码生成示例
通过实例对目标代码生成算法进行了说明。