《编译原理》教学大纲
课程编号:CE5007
课程名称: 编译原理 英文名称: Compiler Principle
学分/学时: 2/32 课程性质: 选修课
适用专业: 网络工程 建议开设学期: 5
先修课程: C程序设计语言、数据结构、离散数学、汇编语言
开课单位: 网络与信息安全学院
一、课程的教学目标与任务
编译原理是计算机及信息安全领域中的重点课程,目的是让学生掌握程序设计语言编译程序的一般原理,主要实现技术和一些自动构造工具,了解将高级程序源代码翻译成计算机语言的整个过程。自从20世纪50年代中期第一个编译程序研制成功后,经过40多年的努力,现已形成了一套比较成熟的、系统化的理论与方法。
本课程重点讲授编译程序(编译器)的设计原理和常用实现技术,通过本课程的学习和实验,学生应当:
清楚地理解一个编译程序是如何工作的;
如果在以后遇到了任何一个程序设计语言,应该知道如何实现这个语言的多数机制;
应具有一定的使用编译构造工具开发编译程序的经验;
会将所学的常用技术和算法应用于类似的软件设计和实现中。
本课程中涉及的主要内容包括:编译程序概述;高级语言的认识——文法和语言的概念;词法分析程序的自动构造;语法分析程序的构造;语法制导翻译与中间代码生成。
二、课程具体内容及基本要求
(一)编译器概述( 2学时讲授)
讲授编译原理所讨论的问题,介绍有关程度设计语言和编译器的几个重要概念。
1.基本要求
(1)了解编译原理这门课程所讨论的问题,以及编译器的功能。
(2)熟悉编译程序、解释程序、源程序、目标程序等概念及它们的相互关系。
(3) 掌握编译程序的工作过程和编译程序的总体框架,以及编译程序的集中构造方法。
2.重点、难点
重点:编译过程和编译器的结构
难点:编译程序的结构
3.作业及课外学习要求:无
(二)词法分析(6学时讲授+4学时上机)
首先介绍与词法分析有关的基本概念和相关问题,然后对单词形成的规则和根据这些规则构造词法分析器的方法进行理论上和方法上的详细讨论。
1.基本要求
(1)了解符号和符号串、模式、记号、单等词法分析相关术语的概念,了解文法和语言的概念。了解词法分析器与语法分析程序的接口与输出。
(2)熟悉词法的描述方式——正规式与正规集,熟悉有穷自动机(DFA)及其与状态转换图的关系,熟悉表驱动型的词法分析器构造方法。
(3)掌握采用Thompson算法从正规式到NFA的转化方法,NFA到DFA的转换方法,用子集法构造DFA以及最小化DFA的方法,掌握直接编码的词法分析器的构造方法。
2.重点、难点
重点:正规表达式转化为NFA的算法;NFA到DFA的转换方法;用子集法构造DFA以及最小化DFA的方法;直接编码的词法分析器的构造方法。
难点:NFA到DFA的转换方法;最小化DFA的方法;直接编码的词法分析器的构造方法。
3.作业及课外学习要求:完成教材中词法分析所在章节的习题。
(三)语法分析(10学时讲授+6学时上机)
本章重点讨论上下文无关文法、常用的自上而下分析和自下而上分析的原理与分析器的构造。最后介绍词法分析器和语法分析器的生成器。
1.基本要求
(1)了解文法、文法分析、最左推导、最有推导、语法树与分析树的概念,了解SLR(1)、LR(1)、LALR(1)分析方法。
(2)熟悉自上而下语法分析与自下而上语法分析的总体方法,各种语法分析方法对文法的要求,LR分析方法以及LR分析器的生成器。
(3)掌握FIRST集、FOLLOW集的构造方法,掌握消除左递归,合并公共左因子的方法,掌握短语、直接短语、句柄、规范句型、活前缀等概念,掌握递归下降分析方法、掌握LL(1)文法的判断方法以及预测分析表的构造,掌握LR(0)分析表的构造及分析方法。
2.重点、难点
重点:递归下降子程序的构造,LL(1)分析表的构造,LR(0)分析表的构造。
难点:各种分析方法中分析表的构造。
3.作业及课外学习要求:教材中本章内容的课后习题。
(四)语法制导翻译与中间代码生成(6学时讲授+6学时上机)
本章主要讨论一下两个方面的内容:
(1)静态语义分析的基础,包括语法制导翻译的基本概念,属性的概念,中间代码的各种表示形式等。
(2)对语义正确的语句的处理方法,主要介绍对