一、课程性质、目的与任务编译原理课程是计算机科学与技术专业学生的专业骨干课之一。
通过学习这门课程,使学生掌握编译程序的基本原理、方法和实现技术,使学生更好的理解程序语言的内部机制,培养学生初步掌握设计大型系统软件的方法、技术以及设计大型软件的能力。
二、教学基本要求1)正确理解什么是编译程序;了解编译程序工作的基本过程及其各阶段的基本任务;熟悉编译程序总框;了解编译程序的生成过程和构造工具。
2)正确理解上下文无关文法基本概念,包括:文法的定义、编写、句型、句子、语言、语法树、二义性等;能进行各种文法等价变换;熟练掌握NFA、DFA、正则表达式和正则文法之间的等价关系,能够进行相互转换,掌握DFA的最小化算法。
3)理解词法分析器功能及形式;熟练掌握词法分析器设计的原理,掌握运用状态转换图进行词法分析器设计。
4)正确理解自上而下分析的基本思想;熟练掌握递归下降分析基本方法:消除左递归和公共前缀,消除回溯,构造递归下降子程序;掌握LL(1)分析程序的基本原理和LL(1)分析表构造;理解LL(1)方法的定义。
5)正确理解自下而上语法分析的基本思想,以及归约、短语、句柄、分析树等概念;掌握简单优先分析基本方法:简单优先关系矩阵;LR类语法分析的基本思想及其分析表的构造,掌握LR类语法分析的基本过程。
6)理解符号表的作用及符号表组织和使用方法,了解名字的作用范围,了解符号表中一般应包含的内容。
7)正确理解语法制导翻译基本原理;熟悉常见的几种中间语言:四元式、三元式、逆波兰表示;掌握各种语句到四元式的翻译方法,包括:简单算术表达式,布尔表达式,控制语句,数组引用,过程调用等。
了解自上而下分析制导翻译基本思想和实现方法。
8)正确理解代码优化的定义和各种可能的优化概念;掌握基于基本块的局部优化方法。
9)正确理解目标程序运行进存储空间的使用和组织管理方式;理解静态分配和动态存储分配基本思想;掌握栈式存储分配的处理方式;掌握栈式动态分配中活动记录和DISPLAY表作用、组织、内容及使用;了解嵌套过程语言程序运行时整个运行栈的内容的组织。
10)正确理解代码生成过程的基本问题,理解临时变量、寄存器描述和地址模式等概念;掌握简单代码生成算法。
三、各章节内容及学时分配第一章编译引论(2学时)主要内容:编译程序,编译过程概述,编译程序的结构,编译程序生成,学习构造编译程序。
重点:编译程序工作的基本过程及其各阶段的基本任务,编译程序框架。
1.1 程序设计语言和编译程序1.2.1 编译程序构成1.2.2 遍1.2.3 编译程序的前端和后端1.3 编译程序和程序设计环境1.4 编译程序的实现第二章形式语言与有限自动机(8学时)主要内容:上下文无关文法,文法等价变换,语法树与文法二义性,正规表达式与有限自动机。
重点:上下文无关文法,正则表达式与有限自动机。
2.1 基本概念2.2 文法2.2.1 文法的定义2.2.2 文法分类2.2.3 推导和归约2.2.4 语法树与文法二义性2.2.5 文法等价变换2.3 有限自动机(FA)2.3.1 确定有限自动机(DFA)2.3.2 非确定有限自动机(NFA)2.3.3 DFA与NFA的等价2.3.4 DFA的化简2.4 正则表达式2.4.1 正则表达式与正则集2.4.2 正则表达式与有限自动机的相互转换第三章词法分析(2学时)主要内容:词法分析器任务,词法分析器设计,词法分析器自动生成。
重点:词法分析器的任务与设计,状态转换图。
3.1 词法分析介绍3.1.1 词法分析程序的功能3.1.2 词法分析程序的接口3.2 词法分析程序的设计3.2.1 单词分类3.2.2 单词的内部表示3.2.3 单词的形式描述3.2.4 自动机的实现3.3 词法分析程序的实现3.3.1 实现词法分析程序应注意的问题3.3.2单词结构3.3.3 实现算法3.4 词法分析程序自动生成3.4.1 LEX简介3.4.2 LEX工作原理3.4.3 LEX源文件结构3.4.4 LEX系统中的正则式3.4.5 LEX的使用方式3.4.6应用实例第四章语法分析—自顶向下分析方法(8学时)主要内容:上下文无关文法,自上而下语法分析(递归下降分析法,LL(1)方法)。
重点:上下文无关文法,递归下降子程序,LL(1)分析表构造,LL(1)文法。
4.1 语法分析程序介绍4.1.1 语法分析程序的功能4.1.2 语法错误类别及错误处理4.1.3 自顶向下语法分析基本思想4.1.4 三个重要的集合4.1.5 自顶向下语法分析条件4.2 递归下降法4.2.1 递归下降法语法分析原理4.2.2 递归下降法语法分析程序的构造4.3 LL(1)分析方法4.3.1 LL(1)分析法原理4.3.2 LL(1)分析表的构造4.3.3 LL(1)驱动程序构造4.4 自顶向下分析程序的自动生成第五章语法分析—自底向上分析方法(14学时)主要内容:自下而上语法分析(LR(0),LR(1),SLR(1),LALR(1)等语法分析方法、简单优先分析方法)。
重点:简单优先关系矩阵的构造;LR类分析表的构造及其分析过程。
5.1 自底向上语法分析方法介绍5.2 简单优先分析5.2.1 简单优先文法及其优先关系矩阵的构造5.2.2 简单优先分析算法5.3 LR分析法5.3.1 LR类分析法的工作过程5.3.2 LR(0)分析方法5.3.3 SLR(1)分析方法5.3.4 LR(1)分析方法5.3.5 LALR(1)分析方法5.3.6 LR方法小结5.4 自底向上分析程序的自动生成第六章语义分析和符号表(8学时)主要内容:语义分析内容、标识符的内部表示、类型的内部表示、值的内部表示。
符号表的组织和使用,整理与查找,名字的作用范围,表的内容。
程序的语义分析方法。
重点:符号表的作用与内容、语义分析原理及过程。
6.1 语义分析概述6.1.1 语义6.1.2 语义分析的功能6.1.3 语义分析的一般过程6.2 符号表的数据结构6.2.1 标识符的属性6.2.2 标识符的内部表示6.2.3 类型的内部表示6.2.4 值的内部表示6.3 符号表的管理6.3.1符号表的建立与访问6.3.2符号表的组织6.3.3符号表的的局部化处理6.4程序设计语言符号表的实例6.4.1 Pascal的符号表6.6.2 C的符号表第七章中间代码生成(6学时)主要内容:语法制导翻译概述,各种常见中间语言形式,各种语句到四元式的翻译,自下而上分析制导翻译概述。
重点:语法制导翻译基本思想;三种中间语言:四元式、三元式、逆波兰表示;算术表达式的翻译,布尔表达式的翻译,控制语句的翻译。
7.1 常用的中间代码结构7.1.1 后缀式7.1.2 抽象语法树和DAG7.1.3三地址中间代码7.2 语法制导方法概论7.3 类型检查和类型转换7.4 中间代码生成中的几个问题7.4.1语义信息的获取和保存7.4.2语义栈Sem及其操作7.4.3常用的语义子程序7.5 表达式的中间代码生成7.6 下标变量的中间代码生成7.6.1 下标变量的地址7.6.2 下标变量的四元式结构7.6.3 下标变量的中间代码生成7.6.4 下标变量中间代码生成例7.7 赋值语句的中间代码7.8 过程调用和函数调用的中间代码7.9 控制语句的中间代码生成7.9.1 GOTO语句和标号定位的中间代码7.9.2 条件语句的中间代码7.9.3 While语句的中间代码7.10 过程∕函数声明的中间代码生成第八章中间代码优化(6学时)主要内容:优化概述,局部优化,基本块、程序流程图,常量表达式优化,基于常量定值分析的常表达式全局优化,公共表达式的优化,基于值编码的公共表达式局部优化,循环不变式外提等。
重点:常量表达式优化,公共表达式的优化,基于值编码的公共表达式局部优化,循环不变式外提。
8.1 优化方法概述8.2 基本块划分8.3 常量表达式局部优化8.4 公共表达式局部优化8.5 循环不变式外提8.5.1 循环不变式外提概述8.5.2 循环不变式外提原理8.6 其它各类优化介绍第九章运行时存储空间的组织与管理(8学时)主要内容:运行时存储空间结构,运行时存储空间的分配策略,简单的栈式存储分配的实现,过程活动记录,运行时变量的访问以及变量访问环境的三种实现方法。
重点:静态分配策略和动态分配策略基本思想,嵌套过程语言栈式分配,活动记录、DISPLAY 表、运行时栈的组织。
变量访问环境的实现(掌握一种)9.1 目标程序运行时的存储结构9.1.1 目标程序运行时内存的划分9.1.2 目标程序运行时的存储分配策略9.2 过程活动记录和运行时栈9.2.1 过程活动记录9.2.2 过程活动记录的申请和释放9.3 变量访问环境9.3.1 变量访问环境概述9.3.2 Display表示法9.3.3 静态链方法第十章目标代码生成(2学时)主要内容:目标代码的种类,临时变量的空间分配方法,基于多元式的单寄存器的目标代码生成重点:基于多元式的单寄存器的目标代码生成。
10.1 目标代码生成介绍10.1.1 代码生成器的输入和输出10.1.2 指令选择10.2 虚拟机10.3 寄存器的分配10.3. 1 单寄存器机器的寄存器分配10.3. 2 多寄存器机器的寄存器分配10.4 四元式到目标代码的翻译10.4.1 表达式四元式的翻译10.4.2 赋值语句四元式的翻译10.4.3 输入输出语句四元式的翻译10.4.4 条件语句四元式的翻译10.4.5 循环语句四元式的翻译10.4.6 标号语句四元式和goto语句四元式的翻译10.4.7 过程、函数说明语句四元式的翻译10.4.8 过程、函数调用语句四元式的翻译四、考核方式:笔试(闭卷)五、备注:1.答疑安排:现场答疑2.课外培养安排:1)提供编译实例,供学生课外实践。
2)在教研室网站提供编译相关资料,供学生课外查阅。
主要有:多媒体课件、网络课件、课后习题解答、历年试题解析、电子教案等内容。
3)安排任课教师定时和学生进行交流。