自顶向下语法分析方法课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《自顶向下语法分析方法课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 向下 语法分析 方法 课件
- 资源描述:
-
1、自顶向下语法分析方法自顶向下语法分析方法4.1 确定的自顶向下分析思想确定的自顶向下分析思想n确定的自顶向下分析方法,首先要解决从文法确定的自顶向下分析方法,首先要解决从文法的开始符号出发,如何的开始符号出发,如何根据当前的输入符号(根据当前的输入符号(单词符号)唯一地确定选用哪个产生式单词符号)唯一地确定选用哪个产生式替换相替换相应非终结符往下推导,或构造一棵相应的语法应非终结符往下推导,或构造一棵相应的语法树。树。n例例4.1设文法设文法G1S:S pA|qBA cAd|aB dB|b考虑对输入串考虑对输入串w=pccadd的分析。的分析。n这个文法有以下两个特点:这个文法有以下两个特点:
2、q每个产生式的右部都由终结符号开始。每个产生式的右部都由终结符号开始。q如果两个产生式有相同的左部,那么它们的右部由如果两个产生式有相同的左部,那么它们的右部由不同的终结符开始。不同的终结符开始。n例例4.2设文法设文法G2S:S ApS BqA aA cAB bB db考虑对输入串考虑对输入串w=ccap的分析。的分析。n这个文法有以下两个特点:这个文法有以下两个特点:q产生式的右部不全是由终结符开始产生式的右部不全是由终结符开始q如果两个产生式有相同的左部,它们的右部是由不如果两个产生式有相同的左部,它们的右部是由不同的终结符或非终结符开始。同的终结符或非终结符开始。q文法中无空产生式文法
3、中无空产生式n定义定义4.1设设G=(VT,VN,P,S)是上下文无关文法是上下文无关文法FIRST()=a|a,aVT,V*若若 ,则规定,则规定FRIST()。如:如:FIRST(Ap)=a,cFIRST(Bq)=b,d*n例例4.3设文法设文法GS:SaASdAbASA考虑对输入串考虑对输入串w=abd的分析。的分析。n结论结论q当某一非终结符的产生式中含有空产生式时,它的当某一非终结符的产生式中含有空产生式时,它的非空产生式右部的首符号集两两不相交,并与在推非空产生式右部的首符号集两两不相交,并与在推导过程中紧跟该非终结符右边可能出现的终结符集导过程中紧跟该非终结符右边可能出现的终结符
4、集也不相交则仍可构造确定的自顶向下分析。也不相交则仍可构造确定的自顶向下分析。n定义定义4.2设设G=(VT,VN,P,S)是上下文无关文法是上下文无关文法,对对AVN定义定义FOLLOW(A)=a S A 且且aVT,aFRIST(),V*,V+若若S uA,且且 ,则规定,则规定#FOLLOW(A)如:如:FOLLOW(A)=FIRST(S)#=a,d,#*n定义定义4.3给定上下文无关文法的产生式给定上下文无关文法的产生式A,A VN,V*,若若 ,则,则SELECT(A)=FIRST()若如果若如果 ,则,则SELECT(A)=(FIRST()-)FOLLOW(A)*n定义定义4.4一
5、个上下文无关文法是一个上下文无关文法是LL(1)文法的充分必要文法的充分必要条件是,对每个非终结符条件是,对每个非终结符A的两个不同产生式的两个不同产生式,A,A,满足,满足SELECT(A)SELECT(A )=其中其中、不能同时不能同时 。*nLL(1)文法的含义文法的含义q第第1个个“L”指的是由左向右地处理输入。指的是由左向右地处理输入。q第第2个个“L”指的是它为输入串描绘出一个最左推导。指的是它为输入串描绘出一个最左推导。q括号中的数字括号中的数字1意味着它只需向右看意味着它只需向右看1个符号便可决个符号便可决定如何推导即选择哪个产生式(规则)进行推导。定如何推导即选择哪个产生式(
6、规则)进行推导。4.2 LL(1)文法的判别文法的判别n求出能推出求出能推出的非终结符的非终结符n计算计算FIRST集集n计算计算FOLLOW集集n计算计算SELECT集集n判别是否是判别是否是LL(1)文法文法n例:设文法例:设文法GS 为为:SABSbCAAbBBaDCADCbDaSDc判断它是否是判断它是否是LL(1)文法。文法。1.求出能推出求出能推出的非终结符的非终结符SABSbCAAbBBaDCADCbDaSDc非终结符非终结符SABCD初值初值未定未定未定未定未定未定未定未定未定未定第一次扫描第一次扫描是是是是否否第二次扫描第二次扫描是是否否2.计算计算FIRST集集n根据定义计
7、算根据定义计算1.若若X V,则则FIRST(X)=X2.若若X VN,且有产生式且有产生式Xa,a V,则则aFIRST(X);若若X也是一条产生式也是一条产生式,则则 FIRST(X).3.若若XY是一个产生式且是一个产生式且Y VN,则把则把FIRST(Y)中的所有非中的所有非 元元素都加到素都加到FIRST(X)中中;若若X Y1Y2YK 是一个产生式是一个产生式,Y1,Y2,Yi-1都是非终结都是非终结符符,而且对于任何而且对于任何j,1j i-1,FIRST(Yj)都含有都含有(即即Y1.Yi-1 ),则把则把FIRST(Yj)中的所有非中的所有非 元素都加元素都加到到FIRST(
8、X)中中;特别是特别是,若所有的若所有的FIRST(Yj,j=1,2,K)均含有均含有,则把则把 加到加到FRIST(X)中中.*n用关系图法求文法符号的用关系图法求文法符号的FIRST集集(自学自学)3.计算计算FOLLOW集集n根据定义计算根据定义计算1.对于文法的开始符号对于文法的开始符号S,置置#于于FOLLOW(S)中中;2.若若B是一个产生式是一个产生式,则把则把 FIRST()-加至加至FOLLOW(B)中中;3.若若B是一个产生式是一个产生式,或或B是一个产是一个产生式而生式而 ,则把,则把FOLLOW(A)加至加至FOLLOW(B)中中*n用关系图法求非终结符的用关系图法求非
9、终结符的FOLLOW集集(自学自学)4.计算计算SELECT集集SELECT(SAB)=a,b,#SELECT(SbC)=bSELECT(A)=a,c,#SELECT(Ab)=bSELECT(B)=#SELECT(BaD)=aSELECT(CAD)=a,b,cSELECT(Cb)=bSELECT(DaS)=aSELECT(Dc)=c5.判别是否是判别是否是LL(1)文法文法 所以文法所以文法GS 不是不是LL(1)文法。文法。4.3 某些非某些非LL(1)文法到文法到LL(1)文法的等价变换文法的等价变换n提取左公共因子提取左公共因子n消除左递归消除左递归1.提取左公共因子提取左公共因子n例例
展开阅读全文