《编译原理》课程教学大纲
先修课程:高级程序设计语言,汇编语言,数据结构,离散数学等授课对象:计算机专业本科生总学时数:72学时
一、教学目的:
编译原理课程是计算机科学与技术专业学生的专业骨干课之一。通过学习这门课程,使学生掌握编译程序的基本原理、方法和实现技术,使学生更好的理解程序语言的内部机制,培养学生初步掌握设计大型系统软件的方法、技术以及设计大型软件的能力。
二、各章考核要求
第一章 编译程序概述主要内容:编译程序,编译过程概述,编译程序的结构,编译程序生成,学习构造编译程序。重点:编译程序工作的基本过程及其各阶段的基本任务,编译程序框架。具体要求:正确理解什么是编译程序;了解编译程序工作的基本过程及其各阶段的基本任务;熟悉编译程序总框;了解编译程序的生成过程和构造工具。
第二章 一个微小编译器主要内容:微小语言Micro,Micro语言的词法分析、语法分析、语义分析以及目标代码生成重点:单词概念和词法分析,处理简单表达式的语义栈技术。具体要求:理解程序语言词法、语法和语义等概念;熟悉高级程序语言一般结构和主要共同特征。掌握处理简单表达式的语义栈技术。
第三章 有限自动机与词法分析器主要内容:词法分析器任务,词法分析器设计,正规表达式与有限自动机,词法分析器自动生成。重点:词法分析器的任务与设计,状态转换图。具体要求:理解词法分析器功能及形式;熟练掌握词法分析器设计的原理,掌握运用状态转换图进行词法分析器设计。
第四章 文法与语法分析主要内容:上下文无关文法,自上而下语法分析(递归下降分析法,LL(1)方法),自下而上语法分析(LR(0),LR(1),SLR(1),LALR(1)等语法分析方法、算符优先分析方法)。重点:上下文无关文法,递归下降子程序,LL(1)分析表构造,LL(1)文法。具体要求:正确理解上下文无关文法基本概念,包括:文法的定义、编写、句型、句子、语言、语法树、二义性等;正确理解自下而上语法分析的基本思想,以及归约、短语、句柄、分析树等概念;掌握算符优先分析基本方法:算符优先表和和算符优先函数构造技术;正确理解自上而下分析的基本思想;熟练掌握递归下降分析基本方法:消除左递归,消除回溯,构造递归下降子程序;掌握LL(1)分析程序的基本原理和LL(1)分析表构造;理解LL(1)方法的定义。LL(1)分析器的自动生成器、LALR(1)分析器的自动生成器不作要求。
第五章 语义分析主要内容:语义分析内容、标识符的内部表示、类型的内部表示、值的内部表示。符号表的组织和使用,整理与查找,名字的作用范围,表的内容。程序的语义分析方法。重点:符号表的作用与内容、语义分析原理及过程。具体要求:理解符号表的作用及符号表组织和使用方法,了解名字的作用范围,了解符号表中一般应包含的内容。
第六章 运行时的存储空间主要内容:运行时存储空间结构,运行时存储空间的分配策略,简单的栈式存储分配的实现,过程活动记录,运行时变量的访问以及变量访问环境的三种实现方法。重点:静态分配策略和动态分配策略基本思想,嵌套过程语言栈式分配,活动记录、DISPLAY表、运行时栈的组织。变量访问环境的实现(掌握一种) 具体要求:正确理解目标程序运行进存储空间的使用和组织管理方式;理解静态分配和动态存储分配基本思想;掌握栈式存储分配的处理方式;掌握栈式动态分配中活动记录和DISPLAY表作用、组织、内容及使用;了解嵌套过程语言程序运行时整个运行栈的内容的组织。6.5非正常出口和形式过程语句,6.6分程序记录和动态数组空间不作要求。
第七章 动作文法和属性文法主要内容:动作符,动作文法,尾动作文法,抽象尾动作文法,动作文法的LL实现和动作文法的LR实现。重点:尾动作文法及其实现技术。 具体要求:了解动作符的概念,能够编写简单的语义子程序。掌握尾动作文法的两种实现技术。 7.3-7.6属性文法部分不作要求。
第八章中间代码生成主要内容:语法制导翻译概述,各种常见中间语言形式,各种语句到四元式的翻译,自下而上分析制导翻译概述。重点:语法制导翻译基本思想;三种中间语言:四元式、三元式、逆波兰表示;算术表达式的翻译,布尔表达式的翻译,控制语句的翻译。具体要求:正确理解语法制导翻译基本原理;熟悉常见的几种中间语言:四元式、三元式、逆波兰表示;掌握各种语句到四元式的翻译方法,包括:简单算术表达式,布尔表达式,控制语句,数组引用,过程调用等。了解自上而下分析制导翻译基本思想和实现方法。
第九章 中间代码优化主要内容:优化概述,局部优化,基本块、程序流程图,常量表达式优化,基于常量定值分析的常表达式全局优化,公共表达式的优化,基于值编码的公共表达式局部优化,循环不变式外提等 。重点:常量表达式优化,公共表达式的优化,基于值编码的公共表达式局部优化,循环不变式外提。具体要求:正确理解代码优化的定义和各种可能的优化概念;掌握基于基本块的局部优化方法。9.5循环内归纳表达式的优化不作要求。
第十章 目标代码生成主要内容:目标代码的种类,临时变量的空间分配方法,基于多元式的单寄存器的目标代码生成 重点:基于多元式的单寄存器的目标代码生成。具体要求:正确理解代码生成过程的基本问题,理解临时变量、寄存器描述和地址模式等概念;掌握简单代码生成算法。