编译原理教案.docx
《编译原理教案.docx》由会员分享,可在线阅读,更多相关《编译原理教案.docx(38页珍藏版)》请在冰豆网上搜索。
编译原理教案
南阳理工学院教案
2012—2013学年第1学期
课程名称编译原理
授课专业、班级计算机科学与技术
10级本科(计算机)、12级专升本(计算机)
总学时、学分48学时2.5学分
授课教师徐艳群
职称讲师
教师所在系院计算机与信息工程学院
使用教材编译原理
南阳理工学院教案(首页)
课程
名称
编译原理
课程编号
060272
学时分配
考核方式
学分
2.5
讲课:
48
考试(√)
考查()
课程类型
必修
共同教育课();学科基础课();专业方向课();实践教学()
选修
共同教育选修课();学科基础选修课();专业方向选修课()
专业
计算机科学与技术
授课班级
10级本科(计算机)、12级专升本(计算机)
教师
徐艳群
职称
讲师
学位
硕士
教材名称
编译原理
作者
张素琴
出版社及
出版时间
清华大学出版社,2005
参考
资料
编译原理
作者
蒋立源
出版社及
出版时间
西北工业大学出版社,2002
教学目的
要求
编译原理是计算机专业学生必须掌握的一门课程,编译技术的存在促使了高级语言的飞速发展,提高了编程的效率和质量。
通过本课程的学习,可以使学生掌握编译程序的设计原理和常用的实现技术。
教学重点
难点
教学重点:
文法和语言的定义、词法分析、语法分析和语法制导翻译
教学难点:
词法分析、语法分析和语法制导翻译
教学方法
教学手段
引导、启发、互动、案例教学法
多媒体与板书相结合型教学
考核方式
闭卷笔试
学生创新精神与实践能力的培养方法
采用启发式的教学模式,给学生足够的思考空间,鼓励学生把理论付诸与实践。
其它要求
要求学生熟练掌握C语言及算法与数据结构的知识,同时具有较强的逻辑思维能力。
授课时间
2012—2013学年第1学期第1周—13周
南阳理工学院教案(课时备课)
授课题目:
编译概述
课时安排
2学时
周次
第1周
课序
第1次课
教学目的及要求:
从高级语言的飞速发展提高了人们的编程效率和编程质量引出学习编译原理的重要性。
了解编译程序的概念,编译的过程和编译程序的结构。
教学内容及重点、难点:
教学内容:
编译程序的概念、编译过程和编译程序的结构
教学重点:
编译过程和编译程序的结构
教学难点:
编译过程
教学方法:
引导启发、案例教学,比较
教学过程设计
回顾:
专业课学习过程中学习过的编译这个名词,学生谈谈对编译的感性认识。
(5分钟)
引入新课:
从学生的发言总结引入新课。
(5分钟)
按照为什么要学习编译原理,学习编译原理有何用,怎样学习编译原理,编译程序的概念,编译的过程,编译程序的组织来组织教学内容。
在教学过程中,通过例子来理解相关知识点。
引导启发:
低级语言与高级语言在对计算机的依赖程度、编程效率和编程质量上进行比较引入编译原理的重要作用。
(15分钟)
从英文翻译为中文的过程与高级程序设计语言翻译为低级语言的编译过程进行比较将编译程序很自然的分为5个阶段,帮助同学理解编译的过程。
(10分钟)
通过举例阐明编译的过程:
对程序id1:
=id2+id3*60进行词法分析(10分钟);语法分析(20分钟);语义分析和中间代码生成(20分钟)。
小结:
总结本次课的重点及对学生要求。
(5分钟)
讨论、作业和思考题:
P111、2、4题
主要参考资料:
编译原理.蒋立源著.西北工业大学出版社.2002
教学后记:
南阳理工学院教案(课时备课)
授课题目:
符号和符号串
课时安排
2学时
周次
第1周
课序
第2次课
教学目的及要求:
了解字母表、符号串的概念,了解符号串的几种主要的运算等。
教学内容及重点、难点:
教学内容:
字母表、符号串的概念,符号串的几种主要的运算
教学重点:
符号串的几种主要的运算
教学难点:
闭包运算,正闭包运算
教学方法:
引导启发、举例
教学过程设计
回顾:
上次课的重点内容(5分钟)
引入新课:
从高级程序设计语言的特点出发引入学习符号及符号串的概念必要性。
(5分钟)
按照概念学习、理解、掌握、应用等层次来组织教学内容。
在教学过程中,通过例题和学生练习掌握相关内容。
板书:
字母表、符号串、符号串的前缀、后缀和字串、符号串的连接、符号串的方幂、符号串集合的方幂,符号串集合的乘积,符号串集合的闭包、正闭包的定义。
(15分钟)
举例:
严格按照定义,举例详细讲解各定义,加深学生对定义的理解。
(10分钟)
课堂练习:
已知:
Σ={a,b}求Σ*,Σ+
思考:
Σ*,Σ+的关系。
(5分钟)
小结:
总结本次课的重点及对学生要求。
(5分钟)
讨论、作业和思考题:
主要参考资料:
程序设计语言编译原理.陈火旺著.国防工业出版社.2000
编译原理.蒋立源著.西北工业大学出版社.2002
教学后记:
南阳理工学院教案(课时备课)
授课题目:
文法和语言的形式定义
课时安排
2学时
周次
第2周
课序
第3次课
教学目的及要求:
掌握文法的定义
教学内容及重点、难点:
教学内容:
文法的定义,推导与归约,递归规则,文法和语言的等价。
教学重点:
文法的定义,推导与归约
教学难点:
文法的定义,推导与归约
教学方法:
引导启发、案例教学
教学过程设计
回顾:
上次课的重点内容(5分钟)
引入新课:
通过要对高级语言的进行识别首先需要对高级语言进行定义引入文法。
(5分钟)
互动:
什么是文法?
(结合英语的语法让学生来谈自己的理解)。
(10分钟)
举例:
规则如下:
〈句子〉∷=〈主语〉〈谓语〉
〈主语〉∷=〈代词〉|〈名词〉
〈代词〉∷=我|你|他
〈名词〉∷=王明|大学生|工人|英语
〈谓语〉∷=〈动词〉〈直接宾语〉
〈动词〉∷=是|学习
〈直接宾语〉∷=〈代词〉|〈名词〉证明:
“我是大学生”该规则能够描述的句子。
通过对句子“我是大学生”的推导,引入文法的概念,非终结符、终结符、产生式、开始符号的概念,句子的概念、句型的概念、推导的概念等。
(30分钟)
举例文法的多种表示形式:
G:
S→0S1与G[S]:
S→0S1
S→01S→01
可不可以写成:
文法G[S]=(VN,VT,P,S)其中:
VN={S},VT={0,1},P={S→0S1,S→01},开始符为S呢?
(15分钟)
思考:
文法为什么有多种表示形式?
(10分钟)
举例:
引导学生写定义标识符的文法等(10分钟)
小结:
总结本次课的重点及对学生要求。
(5分钟)
讨论、作业和思考题:
P471
主要参考资料:
程序设计语言编译原理.陈火旺著.国防工业出版社.2000
教学后记:
南阳理工学院教案(课时备课)
授课题目:
文法和语言之间的转换
课时安排
2学时
周次
第2周
课序
第3次课
教学目的及要求:
掌握文法与语言之间的转换
教学内容及重点、难点:
教学内容:
文法的定义,推导与归约,递归规则,文法和语言的等价。
教学重点:
文法与语言之间的转换。
教学难点:
已知语言求文法;已知文法求语言。
教学方法:
引导启发、案例教学
教学过程设计
回顾:
上次课的重点内容(5分钟)
引入新课:
定义的程序设计语言是可以识别的,识别的程序设计语言是可以定义的。
引入文法和语言之间可以相互转换。
(5分钟)
根据文法和语言的定义,给出已知语言求文法及已知文法求语言的一般方法。
(20分钟)
已知文法求语言可以通过推导来完成,引入推导的规范表示方法:
直接推导()的长度为1,直接推导序列()的长度n≥1,广义推导()的长度≥0,最左推导,最右推导。
(10分钟)
课堂练习:
文法G1:
S->bA,A->aA|a定义了一个什么样的语言?
(5分钟)
引入:
可以根据语言的特点来写产生式,但在这个语言中出现了多次方需要引入递归文法。
(5分钟)
思考:
课后题P471,P482,4,9等(15分钟)
思考:
已知语言求文法如:
求描述语言L(G4)={ambn|m,n1}的文法怎样实现呢?
(10分钟)
小结:
总结本次课的重点及对学生要求。
(5分钟)
讨论、作业和思考题:
作业:
P4814、16
主要参考资料:
编译原理.蒋立源著.西北工业大学出版社.2002
程序设计语言编译原理.陈火旺著.国防工业出版社.2000
教学后记:
南阳理工学院教案(课时备课)
授课题目:
文法的类型
课时安排
2学时
周次
第2周
课序
第4次课
教学目的及要求:
了解文法的类型,掌握常用的文法:
二型文法和三型文法。
教学内容及重点、难点:
教学内容:
文法的类型。
教学重点:
文法的类型之间的异同。
教学难点:
不同类型文法的应用范围。
教学方法:
引导启发、案例教学,比较
教学过程设计
回顾:
上次课的重点内容(5分钟)
引入新课:
为了定义程序设计语言,Chomsky对文法中的规则施加不同限制,将文法和语言分为四大类。
引入文法的类型。
(5分钟)
比较:
按照文法的分类,由易到难的分别介绍四种类型文法的定义。
分别是0型文法,1型文法、2型文法和3型文法。
(15分钟)
课堂练习:
根据四种类型文法的定义,判断以下文法分别属于哪种类型:
(10分钟)
G1:
SACaBCaaaCCBDBCBEaDDaADACaEEaAE
G2:
S|AAaABCAabCCBBCbBbbbCbccCccG3=({S},{a,b},{SaSbSab},S)
G4:
AaBAa
思考:
这四种类型的文法有怎样的关系?
(5分钟)
小结:
总结本次课的重点及对学生要求。
(5分钟)
讨论、作业和思考题:
主要参考资料:
编译原理.蒋立源著.西北工业大学出版社.2002
程序设计语言编译原理.陈火旺著.国防工业出版社.2000
教学后记:
南阳理工学院教案(课时备课)
授课题目:
前后文无关文法及其语法树
课时安排
2学时
周次
第2周
课序
第4次课
教学目的及要求:
了解前后文无关文法与语法树的关系;
掌握句型的语法树表示;
掌握通过语法树来判断文法的二义性。
教学内容:
语法树的概念;句型推导过程的语法树表示;语法树与文法的二义性的关系。
教学重点:
句型推导过程的语法树表示;前后文无关文法与语法树的关系;
教学难点:
语法树与文法的二义性的关系。
教学方法:
引导启发、案例教学
教学过程设计
回顾:
上次课的重点内容。
(5分钟)
引入新课:
通过判断一个句型是不是文法的合法句型除了可以通过推导来判断之外,引入另外一种直观的表示方法就是语法树。
(5分钟)
按照由浅入深的过程介绍语法树的概念,句型的推导过程的语法树的表示,语法树与文法二义性的关系。
(5分钟)
引导启发:
通过学生回顾数据结构中树的概念,引入了语法树的概念,进一步分析了语法树的特征。
(5分钟)
案例互动:
文法G:
E→E+T|TT→T×F|FF→(E)|i句型T+T×F的推导过程与语法树。
(1)回顾句型的推导过程;
(2)思考用语法树如何表示?
(3)通过学生的回答总结推导过程的语法树的表示。
(10分钟)
案例互动:
文法G:
E→E+E|E×E|(E)|i句子i×i+i最左推导、语法树。
(1)让学生构造i×i+i最左推导和语法树;
(2)提问构造过程学生有没有问题?
(3)最左推导不唯一,两棵语法树引出文法的二义性。
(4)思考如果是最右推导呢?
(5)总结文法的二义性可以通过三种方法判断,最左推导、最右推导和语法树(10分钟)
小结:
总结本次课的重点及对学生要求。
(5分钟)
讨论、作业和思考题:
P487、10
主要参考资料:
程序设计语言编译原理.陈火旺著.国防工业出版社.2000
教学后记:
南阳理工学院教案(课时备课)
授课题目:
句型的分析
课时安排
2学时
周次
第3周
课序
第5次课
教学目的及要求:
掌握通过推导或归约来证明一个符号串是否为某文法的句型。
教学内容及重点、难点:
教学内容:
自顶向下的语法分析;自底向上的语法分析;求当前句型的短语、直接短语和句柄。
教学重点:
求当前句型的短语、直接短语和句柄。
教学难点:
求当前句型的短语、直接短语和句柄。
教学方法:
引导启发、案例教学,比较
教学过程设计
回顾:
上次课的重点内容。
(5分钟)
引入新课:
通过文法G:
S→cAdA→abA→a识别输入串w=cabd是否为该文法的句子。
引入了本次课的内容句型的分析。
(10分钟)
按照语法分析的方法分别介绍自顶向下的语法分析和自底向上的语法分析。
其中自顶向下的方法主要是选择产生式的问题。
互动:
通过文法G:
S→cAdA→abA→a识别输入串w=cabd是否为该文法的句子。
分别采用自顶向下构造语法树的方法实现和自底向上构造语法树的方法实现。
(1)帮助学生理解自顶向下的语法分析和自底向上的语法分析;
(2)提问:
在自顶向下的语法分析和自底向上的语法分析中会出现什么问题?
(3)思考:
问题的解决方案。
(15分钟)
自底向上的分析主要是选择可归约串的问题,重点介绍自底向上的分析方法中短语、直接短语和句柄的概念。
(20分钟)
概念的理解有一定的难度,因此介绍了通过语法树找短语、直接短语和句柄的方法。
(20分钟)
互动:
G[E]:
E→E+T|TT→T×F|FF→(E)|I的句型E+T×F+i的短语、直接短语和句柄。
(15分钟)
小结:
总结本次课的重点及对学生要求。
(5分钟)
讨论、作业和思考题:
P4811、13
主要参考资料:
程序设计语言编译原理.陈火旺著.国防工业出版社.2000
教学后记:
南阳理工学院教案(课时备课)
授课题目:
单词的描述工具
课时安排
6学时
周次
第3周
课序
第6次课
教学目的及要求:
了解单词的描述工具正规文法和正规式的定义;
掌握正规文法和正规式之间的转换。
教学内容及重点、难点:
教学内容:
正规文法和正规式的定义
教学重点:
用正规文法和正规式如何定义单词
教学难点:
正规文法和正规式之间的转换
教学方法:
引导启发、案例教学,比较
教学过程设计
回顾:
上次课的重点内容。
(5分钟)
引入新课:
通过标识符的定义引入用正规文法如何定义单词(10分钟)
按照最左或最右推导的方式用已知文法推导产生标识符,加深同学对正规文法的理解。
引入新课:
对单词的定义除了用正规文法外还有另外的一种方式就是正规式。
(10分钟)
介绍正规式的定义(10分钟)
(1)和都是上的正规式,它们所表示的正规集分别为{}和;
(2)任何a,a是上的一个正规式,它所表示的正规集为{a};
(3)假定e1和e2都是上的正规式,它们所表示的正规集分别为L(e1)和L(e2),那么,(e1),e1e2,e1e2,e1也都是正规式
引入:
通过正规文法和正规式都是用来定义单词的,正规文法和正规式之间的可以相互转换。
(15分钟)
A→xy
A→xBB→y
A→x*y
A→xAA→y
A→x|y
A→xA→y
已知正规文法,求正规式。
思考P728,P54例4.5。
(20分钟)
已知正规式,求正规文法。
思考P54例4.4(15分钟)
小结:
总结本次课的重点及对学生要求。
(5分钟)
讨论、作业和思考题:
主要参考资料:
程序设计语言编译原理.陈火旺著.国防工业出版社.2000
教学后记:
南阳理工学院教案(课时备课)
授课题目:
状态转换图
课时安排
6学时
周次
第4周
课序
第7次课
教学目的及要求:
掌握左线性文法和右线性文法的状态转换图
教学内容及重点、难点:
教学内容:
左线性文法和右线性文法的状态转换图
教学重点:
左线性文法和右线性文法的状态转换图
教学难点:
给出正规文法画状态转换图
教学方法:
引导启发、案例教学,比较
教学过程设计
回顾:
上次课的重点内容。
(5分钟)
引入新课:
正规文法定义了3型语言,常见的单词可由正规文法定义。
单词是如何识别的引入状态转换图。
状态转换图可用于识别3型语言;它是设计和实现扫描器的一种有效工具,是有限自动机的直观图示(10分钟)
按照已知右线性文法如何画状态转换图,介绍正规文法的状态转换图的画法。
(1)右线性文法一般分为:
AaB,Aa和A三种形式,分别介绍三种文法在状态转换图中的画法。
(2)通过例题引导同学画右线性文法的状态转换图。
(3)介绍利用状态转换图识别符号串的方法。
(4)状态转换图与推导的关系,加深同学对右线性文法状态转换图的认识。
(20分钟)
思考:
P727(10分钟)
按照已知左线性文法如何画状态转换图介绍正规文法的状态转换图的画法。
(1)左线性文法一般分为:
ABa,Aa和A三种形式,分别介绍三种文法在状态转换图中的画法。
(2)通过例题引导同学画左线性文法的状态转换图。
(3)介绍利用状态转换图识别符号串的方法。
(4)状态转换图与推导的关系,加深同学对左线性文法状态转换图的认识。
(20分钟)
举例:
G=({S,U},{0,1},{SS1|U1,UU0|0},S)的状态转换图。
(10分钟)
思考:
左线性文法和右线性文法在画状态转换图时的区别。
(10分钟)
小结:
总结本次课的重点及对学生要求。
(5分钟)
讨论、作业和思考题:
主要参考资料:
编译原理.蒋立源著.西北工业大学出版社.2002,程序设计语言编译原理.陈火旺著.国防工业出版社.2000
教学后记:
南阳理工学院教案(课时备课)
授课题目:
把NFA变为DFA
课时安排
2学时
周次
第4周
课序
第8次课
教学目的及要求:
掌握NFA变为DFA的方法
教学内容及重点、难点:
教学内容:
有穷自动机的定义,NFA与DFA的定义,NFA变为DFA的方法
教学重点:
NFA变为DFA的方法
教学难点:
NFA变为DFA的方法
教学方法:
引导启发、案例教学,比较
教学过程设计
回顾:
上次课的重点内容。
(5分钟)
引入新课:
通过状态转换图就是有限自动机的直观表示引入有限自动机的定义。
结合某个状态转换图介绍有限自动机的定义M=(K,,f,S0,Z)。
(15分钟)
根据有限自动机的特点分为确定化的有限自动机和不确定化的有限自动机。
介绍两者在识别字符串上的不同及适用范围。
总结得出确定化的有限自动机识别完某一字符后的状态是唯一确定的。
非确定化的有限自动机识别完某一字符后状态不确定,因此对NFA要进行确定化。
举例说明确定化有穷自动机G=({S,U},{0,1},{SS1|U1,UU0|0},S)(10分钟)
不确定化有穷自动机:
NFAN=({S,A,B,Z},{a,b},M,{S},{Z})其中M:
M(S,a)={A}M(S,b)={B}M(A,a)={Z}M(A,b)={B}M(B,a)={A,B}M(B,b)={Z}
M(Z,a)={A,Z}(10分钟)
介绍确定化有穷自动机和不确定有限自动机的定义。
(15分钟)
(1)分析状态不确定的原因,思考解决方法;
(2)引出非确定化有限自动机确定化的算法;把状态数为两个或两个以上的状态看作是一个新的状态,让该状态再去识别字符,如果产生状态数多于或等于两个的再看成新的状态去识别字符直到没有新的状态产生。
(3)比较确定化后与没有确定化之前状态有什么变化,是不是一种等价变换。
(15分钟)
举例:
对以上非确定化有限自动机进行确定化。
(25分钟)
小结:
总结本次课的重点及对学生要求。
(5分钟)
讨论、作业和思考题:
P722,4
主要参考资料:
编译原理.蒋立源著.西北工业大学出版社.2002,程序设计语言编译原理.陈火旺著.国防工业出版社.2000
教学后记:
南阳理工学院教案(课时备课)
授课题目:
具有动作的FA
课时安排
2学时
周次
第6周
课序
第9次课
教学目的及要求:
掌握具有动作的FA变为DFA的方法
教学内容及重点、难点:
教学内容:
具有动作的FA的定义,具有动作的FA变为DFA的方法
教学重点:
具有动作的FA变为DFA的方法
教学难点:
具有动作的FA变为DFA的方法同样可以应用于前面介绍的不具有动作的FA的确定化,为什么?
教学方法:
引导启发、案例教学,比较
教学过程设计
回顾:
上次课的重点内容。
(5分钟)
引入新课:
通过动作的FA的状态转换图引入其在识别单词过程中0次或多次识别,而与任何符号串的连接都是其他符号串,因此要对其进行确定化。
(10分钟)
(1)分析状态不确定的原因,思考解决方法;
(2)引出具有动作的非确定化有限自动机确定化的算法;
a)标记qi;
b)对于每个a,令Ta=f({Si1,Si2,…,Sim},a);qj=[-CLOSURE(Ta)];
c)若qjK’,则令K’=K’{qj};
d)令f’=f’{f’(qj,a)=qj};
e)重复2.,直到K’中无未标记的状态;令Z’={qj|qjZ}(这里把qj视为集合)
(3)比较确定化后与没有确定化之前状态有什么变化,是不是一种等价变换。
(4)动作的非确定化有限自动机确定化与前面介绍的非确定化有限自动机的确定化方法统一起来。
引导学生思考以上算法。
(10分钟)
介绍以上算法。
(20分钟)
举例:
P58图4.4利用两种方法对动作的非确定化的有限自动机进行确定化(40分钟)
小结:
总结本次课的重点及对学生要求。
(5分钟)
讨论、作业和思考题:
主要参考资料:
编译原理.蒋立源著.西北工业大学出版社.2002,程序设计语言编译原理
教学后记:
南阳理工学院教案(课时备课)
授课题目:
确定化有穷自动机状态数的最小化
课时安排
2学时
周次
第6周
课序
第10次课
教学目的及要求:
掌握确定化有穷自动机状态数的最小化算法。
教学内容及重点、难点:
教学内容:
确定化有穷自动机状态数的最小化算法。
教学重点:
对某具体确定化有穷自动机能进行最小化,比较最小化前后识别的正规式是否相等?
教学难点:
只能对确定化的有穷自动机进行最小化,对算法的理解及应用。
教学方法:
引导启发、案例教学,比较
教学过程设计
回顾:
上次课的重点内容。
(5分钟)
引入新课:
对于某一DFA来说,其状态数可能并不是最小的。
原因是DFA中有些状态是“等价”的。
为得到效率高的DFA,需将这些“等价”状态合并,引入DFA的最小化。
(10分钟)
按照可区分状态和不区分状态的概念,对不可区分状态进行合并,直到所有状态都可以区分。
因此得到最小化算法。
(1)介绍可区分状态和不可区分状态的定义。
可区分状态:
设s,tK,s