编译原理第六章-自底向上优先分析法PPT课件
- 格式:ppt
- 大小:670.00 KB
- 文档页数:74
编译原理第六章算符优先分析法第六章算符优先分析法课前索引【课前思考】◇什么是⾃下⽽上语法分析的策略?◇什么是移进-归约分析?◇移进-归约过程和⾃顶向下最右推导有何关系?◇⾃下⽽上语法分析成功的标志是什么?◇什么是可归约串?◇移进-归约过程的关键问题是什么?◇如何确定可归约串?◇如何决定什么时候移进,什么时候归约?◇什么是算符⽂法?什么是算符优先⽂法?◇算符优先分析是如何识别可归约串的?◇算符优先分析法的优缺点和局限性有哪些?【学习⽬标】算符优先分析法是⾃下⽽上(⾃底向上)语法分析的⼀种,尤其适应于表达式的语法分析,由于它的算法简单直观易于理解,因此,也是学习其它⾃下⽽上语法分析的基础。通过本章学习学员应掌握:
◇对给定的⽂法能够判断该⽂法是否是算符⽂法◇对给定的算符⽂法能够判断该⽂法是否是算符优先⽂法◇对给定的算符⽂法能构造算符优先关系表,并能利⽤算符优先关系表判断该⽂法是否是算符优先⽂法。◇能应⽤算符优先分析算法对给定的输⼊串进⾏移进-归约分析,在分析的每⼀步能确定当前应移进还是归约,并能判断所给的输⼊串是否是该⽂法的句⼦。
◇了解算符优先分析法的优缺点和实际应⽤中的局限性。【学习指南】算符优先分析法是⾃下⽽上语法分析的⼀种,它的算法简单、直观、易于理解,所以通常作为学习其它⾃下⽽上语法分析的基础。为学好本章内容,学员应复习有关语法分析的知识,如:什么是语⾔、⽂法、句⼦、句型、短语、简单短语、句柄、最右推导、规范归约基本概念。
【难重点】◇通过本章学习后,学员应该能知道算符⽂法的形式。◇对⼀个给定的算符⽂法能构造算符优先关系分析表,并能判别所给⽂法是否为算符优先⽂法。◇分清规范句型的句柄和最左素短语的区别,进⽽分清算符优先归约和规范归约的区别。◇算符优先分析的可归约串是句型的最左素短语,在分析过程中如何寻找可归约串是算符优先分析的关键问题。对⼀个给定的输⼊串能应⽤算符优先关系分析表给出分析(归约)步骤,并最终判断所给输⼊串是否为该⽂法的句⼦。
第6 章自底向上优先分析第1 题已知文法G[S]为:S→a|∧|(T)T→T,S|S(1) 计算G[S]的FIRSTVT 和LASTVT。
(2) 构造G[S]的算符优先关系表并说明G[S]是否为算符优先文法。
(3) 计算G[S]的优先函数。
(4) 给出输入串(a,a)#和(a,(a,a))#的算符优先分析过程。
答案:文法展开为:S→aS→∧S→(T)T→T,ST→S(1) FIRSTVT - LASTVT 表:(2) 算符优先关系表:表中无多重人口所以是算符优先(OPG)文法。
友情提示:记得增加拓广文法S`→#S#,所以# FIRSTVT(S),LASTVT(S) #。
(3)对应的算符优先函数为:a(),^# f212221g331131(4)对输入串(a,a)#的算符优先分析过程为Success!对输入串(a,(a,a))# 的算符优先分析过程为:第 2 题已知文法 G[S]为: S →a|∧|(T)T →T ,S|S(1) 给出(a,(a,a))和(a,a)的最右推导,和规范归约过程。
(2) 将(1)和题 1 中的(4)进行比较给出算符优先归约和规范归约的区别。
答案:(1)(a,a)的最右推导过程为: S (T) (T,S)(T,a) (S,a) (a,a)(a,(a,a))的最右推导过程为: S (T) (T,S) (T,(T))(T,(T,S))(T,(T,a))(T,(S,a))(T,(a,a))(S,(a,a))(a,(a,a))(a,(a,a))的规范归约过程:(a,a)的规范归约过程:(2)算符优先文法在归约过程中只考虑终结符之间的优先关系从而确定可归约串,而与非终结符无关,只需知道把当前可归约串归约为某一个非终结符,不必知道该非终结符的名字是什么,因此去掉了单非终结符的归约。
规范归约的可归约串是句柄,并且必须准确写出可归约串归约为哪个非终结符。
第3题:有文法G[S]:SÆVVÆT|ViTTÆF|T+FFÆ)V*|((1) 给出(+(i(的规范推导。
第6章自底向上优先分析法概述•自底向上分析法,也称移进-归约分析法,或自下而上分析。
•自底向上分析的移进-归约过程是自顶向下最右推导的逆过程,而最右推导为规范推导,自左向右的归约过程也称规范归约。
例6.1 G[S]:(1) S→aAcBe (2) A→b (3) A→Ab (4) B→d 对输入串abbcde#进行分析,检查该符号串是否是G[S]的句子。
容易看出对输入串abbcde的最右推导是:S=>aAcBe=>aAcde => aAbcde => abbcde 。
它的逆过程即归约过程。
基本问题•如何找出进行直接归约的简单短语?•将找到的简单短语归约到哪个非终结符号?基本方法•基本都采用移入-归约方法。
•使用一个栈来存放归约得到的符号。
•在分析的过程中,识别程序不断地移入符号。
移入的符号暂时存放在一个栈中。
一旦在已经移入的(和归约得到的)符号串中包含了一个句柄时,将这个句柄归约成为相应的非终结符号。
基本方法(续)•归约中的动作有4类–移入:读入一个符号并把它归约入栈。
–归约:当栈中的部分形成一个句柄(栈顶的符号序列)时,对句柄进行归约。
–接受:当栈中的符号仅有#和识别符号的时候,输入符号也到达结尾的时候,执行接受动作。
–当识别程序觉察出错误的时候,表明输入符号串不是句子。
进行错误处理。
例 子i *i+ii*i+i i E::=i E *i+iE*i+i E* i+iE*i+i E*i +iE*i+i i E::=i E*E +iE*E+i E*E E::=E*E E +iE+i E+iE+i i E::=i E+EE+E E+E E::=E+EE 文法G E [E]: E::=E+E|E*E|(E)输入符号串:i*i+i已处理 未处理 句型 句柄 规则例子的解释•当栈中的符号的栈顶部分还不能形成句柄时,进行移入操作。
•一旦发现栈顶部分形成了句柄的时候,对该句柄进行归约。
第六章自下而上分析和优先分析法1、教学目的及要求:要求理解算符优先文法、最左素短语、有效项目的基本概念;掌握算符优先分析方法。
◇ 对给定的文法能够判断该文法是否是算符文法◇ 对给定的算符文法能够判断该文法是否是算符优先文法◇ 对给定的算符文法能构造算符优先关系表,并能利用算符优先关系表判断该文法是否是算符优先文法。
◇ 能应用算符优先分析算法对给定的输入串进行移进-归约分析,在分析的每一步能确定当前应移进还是归约,并能判断所给的输入串是否是该文法的句子。
◇ 了解算符优先分析法的优缺点和实际应用中的局限性。
2、教学内容:自下而上语法分析(算符优先分析法),算符优先分析。
3、教学重点:归约,算符优先表构造。
4、教学难点:◇ 通过本章学习后,学员应该能知道算符文法的形式。
◇ 对一个给定的算符文法能构造算符优先关系分析表,并能判别所给文法是否为算符优先文法。
◇ 分清规范句型的句柄和最左素短语的区别,进而分清算符优先归约和规范归约的区别。
◇算符优先分析的可归约串是句型的最左素短语,在分析过程中如何寻找可归约串是算符优先分析的关键问题。
对一个给定的输入串能应用算符优先关系分析表给出分析(归约)步骤,并最终判断所给输入串是否为该文法的句子。
5、课前思考◇ 什么是自下而上语法分析的策略?◇ 什么是移进-归约分析?◇ 移进-归约过程和自顶向下最右推导有何关系?◇ 自下而上语法分析成功的标志是什么?◇ 什么是可归约串?◇ 移进-归约过程的关键问题是什么?◇ 如何确定可归约串?◇ 如何决定什么时候移进,什么时候归约?◇ 什么是算符文法?什么是算符优先文法?◇ 算符优先分析是如何识别可归约串的?◇ 算符优先分析法的优缺点和局限性有哪些?6、章节内容第一节自下而上语法分析第二节算符优先分析法6.1 自下而上语法分析自底向上的语法分析是从给定的符号串本身出发,试图逐步将它归约为文法的开始符号,由于在进行自底向上的语法分析时,通常所采用的是最左归约,即规范归约,因此实现此种语法分析的关键,是在分析的每一步,如何寻找或确定当前句型的句柄以及确定将句柄归约为什么非终结符号。
第6章自下而上语法分析
第6章
Bottom-up Parsing
学习目标
6.1 自下而上语法分析 6.1 自下而上语法分析
6.1 自下而上语法分析 6.1 自下而上语法分析6.1 自下而上语法分析 6.1 自下而上语法分析6.1 自下而上语法分析
6.2 短语和句柄 6.2 短语和句柄6.2 短语和句柄
6.3 简单优先分析法
6.3 简单优先分析法
6.3 简单优先分析法 6.3 简单优先分析法6.3 简单优先分析法
6.4 算符优先分析法 6.4 算符优先分析法6.4 算符优先分析法 6.4 算符优先分析法6.4 算符优先分析法 6.4 算符优先分析法
6.4 算符优先分析法 6.4 算符优先分析法6.4 算符优先分析法 6.4 算符优先分析法
6.4 算符优先分析法
两种优先分析方法
6.5 优先函数 6.5 优先函数
6.5 优先函数6.5 优先函数
6.5 优先函数
6.5 优先函数
第6章小结参考文献。
编译原理第六章算符优先分析法第6章自底向上优先分析第六章算符优先分析法课前索引【课前思考】◇ 什么是自下而上语法分析的策略?◇ 什么是移进-归约分析?◇ 移进-归约过程和自顶向下最右推导有何关系?◇ 自下而上语法分析成功的标志是什么?◇ 什么是可归约串?◇ 移进-归约过程的关键问题是什么?◇ 如何确定可归约串?◇ 如何决定什么时候移进,什么时候归约?◇ 什么是算符文法?什么是算符优先文法?◇ 算符优先分析是如何识别可归约串的?◇ 算符优先分析法的优缺点和局限性有哪些?【学习目标】算符优先分析法是自下而上(自底向上)语法分析的一种,尤其适应于表达式的语法分析,由于它的算法简单直观易于理解,因此,也是学习其它自下而上语法分析的基础。
通过本章学习学员应掌握:◇ 对给定的文法能够判断该文法是否是算符文法◇ 对给定的算符文法能够判断该文法是否是算符优先文法◇ 对给定的算符文法能构造算符优先关系表,并能利用算符优先关系表判断该文法是否是算符优先文法。
◇ 能应用算符优先分析算法对给定的输入串进行移进-归约分析,在分析的每一步能确定当前应移进还是归约,并能判断所给的输入串是否是该文法的句子。
◇ 了解算符优先分析法的优缺点和实际应用中的局限性。
【学习指南】算符优先分析法是自下而上语法分析的一种,它的算法简单、直观、易于理解,所以通常作为学习其它自下而上语法分析的基础。
为学好本章内容,学员应复习有关语法分析的知识,如:什么是语言、文法、句子、句型、短语、简单短语、句柄、最右推导、规范归约基本概念。
【难重点】◇ 通过本章学习后,学员应该能知道算符文法的形式。
◇ 对一个给定的算符文法能构造算符优先关系分析表,并能判别所给文法是否为算符优先文法。
◇ 分清规范句型的句柄和最左素短语的区别,进而分清算符优先归约和规范归约的区别。
◇ 算符优先分析的可归约串是句型的最左素短语,在分析过程中如何寻找可归约串是算符优先分析的关键问题。