收藏 分享(赏)

4自顶向下的语法分析技术.ppt

上传人:无敌 文档编号:967746 上传时间:2018-05-09 格式:PPT 页数:51 大小:1.97MB
下载 相关 举报
4自顶向下的语法分析技术.ppt_第1页
第1页 / 共51页
4自顶向下的语法分析技术.ppt_第2页
第2页 / 共51页
4自顶向下的语法分析技术.ppt_第3页
第3页 / 共51页
4自顶向下的语法分析技术.ppt_第4页
第4页 / 共51页
4自顶向下的语法分析技术.ppt_第5页
第5页 / 共51页
点击查看更多>>
资源描述

1、自顶向下的语法分析技术,计算机科学系李静,语法分析,阶段自词法分析后,编译过程的第二个阶段任务对单词序列进行分析,识别出合适的语法单位方法分类自顶向下自底向上,自顶向下分析方法,概念从开始符号出发,看能否推导出待检查的符号串,如果能,则表明此符号串是该文法的句型或句子,否则就不是。能否从根结点出发向下生长出一棵语法树,其叶结点组成的句子恰好为输入字符串。分类不确定的自顶向下分析方法确定的自顶向下分析方法,例子:不确定的自顶向下分析,GS:SaAbc|aBAbaBbeB|d输入串:abed是否是该文法的句子,特点,不确定的自顶向下分析出现回溯现象效率低编程复杂,例子:确定的自顶向下分析,GS:S

2、aBc|bCdBeB|fCdC|c输入串:aefc是否是该文法的句子,例子,文法GS:S aA|dA bAS| 判断W=abd,特点,确定的自顶向下分析不会出现回溯现象效率高编程简单,怎样才能采用确定的自顶向下分析?,怎样才能采用确定的自顶向下分析?LL1文法相关概念,首符号集,设有G=(VN, V T,P,S)是上下文无关文法产生式:AFIRST()=a| *a例子ABp|CtBrC9|23FIRST(Bp)=?,练习,已知文法GS:S eT|RTT DR| R dR| D a| bd则:FIRST(S)=FIRST(T)=FIRST(R)=FIRST(D)=,后跟符号集,设有G=(VN,

3、V T,P,S)是上下文无关文法产生式:SAFOLLOW(A)=a| a FIRST()例子AdBCtBrC9|23FOLLOW(B)=,练习,已知文法GS:S eT|RTT DR| R dR| D a| bd则FOLLOW (R)=,选择集,对上下文无关文法的产生式A若不能推出,则SELECT(A)= FIRST()若能推出,则SELECT(A)= FIRST()- FOLLOW(A),狗的艺术照,狗的艺术照,狗的艺术照,狗的艺术照,狗的艺术照,狗的艺术照,狗的艺术照,狗的艺术照,LL1文法,基本思想从左到右扫描源程序,同时从开始符号生成句子的最左推导,并且只要向前查看一个输入符号,便能唯一

4、确定当前应选择的规则。文法满足的条件无左递归无回溯LL1文法的含义L:从左到右扫描字符串L:采用最左推导1:只看右边一个字符,LL1文法的充分必要条件,一个上下文无关文法是LL1文法的充分必要条件是:对每个非终结符A的不同产生式, A, A满足FIRST(A) FIRST (A)=O对每个非终结符A的不同产生式, A, A 满足FIRST(A) FOLLOW (A)=O,例子:文法的判别,若有文法GS:S aA|dA bAS| 证明这是一个LL1文法证明:FIRST(SaA) FIRST (Sd)=FIRST(A bAS) FOLLOW(A)=,练习,若有文法GZ:Z (A)A a| bBB

5、Aab判断这是否是一个LL1文法,练习,若有文法GS:S aAS|bA bA| 判断这是否是一个LL1文法,不是LL1文法的原因,在采用确定的自顶向下分析前,首先判断该文法是否是一个LL1文法如果不是左公因子左递归,LL1文法的转换-提取左公因子,左公因子容易产生回溯提取左公因子法A 1| 2| nA (1| 2| n)A AA= 1| 2| n,LL1文法的转换-消除左递归,文法的产生式中含有左递归,容易产生无限循环,应消除直接左递归A A间接左递归A BB A,例子(1),将文法S SaS b改为非左递归文法,答案,S bSS aS| ,练习,【复旦大学】将文法GSS Sa|Nb|cN S

6、d|Ne|f改为无左递归的文法,确定的自顶向下分析技术,实现方法递归子程序法对每一个语法成分(用非终结符号代表)构成相应的分析子程序,以完成该非终结符所对应的语法成分的分析和识别任务。遇到该语法成分时,调用该程序。语法成分之间不可避免会含有递归,所以分析子程序间也会有递归调用。,子程序,子程序又分为简单子程序(不调用任何子程序)嵌套子程序(调用其它子程序;但不调用它本身)递归子程序(直接或间接调用它自身),递归分析的思想,递归下降分析器编译思想是简单的,从识别符号开始,在语法规则支配下进行语法分析,它逐个扫视源程序中的所有字符,根据文法和当前输入字符预测到下一个语法成份U时,便确定U为目标,并

7、调用分析和识别U的子程序,在分析U的过程中,又有可能确立其它(或自身)子目标并调用相应子程序,如此继续下去。因此把这种分析方法称为面向目标的分析方法,在此又称它为预测分析方法。,例子:递归子程序法,文法S (A)|aAbA eA|dSAA dA| 判断某输入字符串是否符合该文法,构造识别程序算法思路步骤1:判断该文法是否是LL1文法步骤2:对非终结符编写3个过程P(S)、P(A)、P(A),P(S),S (A)|aAbA eA|dSAA dA| ,P(A),S (A)|aAbA eA|dSAA dA| ,P(A),S (A)|aAbA eA|dSAA dA| ,练习,词法分析和语法分析都是对字

8、符串进行识别,二者有何区别?,答:在词法分析和语法分析中,都是对输入符号串进行识别。但词法分析的输入符号串是一个单词,而语法分析的输入符号串是一个句子或者说是一个程序。为讨论方便采用小写字母来表示终结符号,但一定要明白在词法分析中,小写字母表示组成单词的一个个字符;而在语法分析中,小写字母表示组成程序的一个个单词。从识别方式来说,词法分析和语法分析都是对输入符号串结构的识别,但由于单词和程序的结构有所区别,所以具体的识别方法不一样。,练习,自上而下的语法分析方法会带来的主要问题有( )、 ( )。,动物破产,回想当年,哥也是住豪宅的,动物破产,什么?我破产了?对不起,我震惊的厥过去了!,动物破产,神啊,让这个世界遗忘我吧,我还不起钱了!,动物破产,为今之计,只有卖了豪宅,改住贫民巷了,动物破产,往事不堪回首啊,我怎么会破产呢,动物破产,我不听!别再说了!,动物破产,就让我这样默默死去吧!,动物破产,那样坐着藤椅玩着线球的美好日子一去不复返了,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 语法

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报