电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > PPT文档下载
分享到微信 分享到微博 分享到QQ空间

编译原理 之 自顶向下语法分析方法

  • 资源ID:56619186       资源大小:351KB        全文页数:63页
  • 资源格式: PPT        下载积分:10金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要10金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

编译原理 之 自顶向下语法分析方法

第五章 自顶向下语法分析方法,本章要点 LL(1)分析 First 集合和Follow集合 使用递归下降分析算法进行自顶向下的分析 预测分析程序 非LL(1)文法的改造,自上而下分析算法,自顶向下分析法也称面向目标的分析方法,也就是从文法的开始符号出发企图推导出与输入的单词串完全匹配的句子,若输入串是给定的句子,则必能推出,反之必然出错。 自顶向下分析法又分为确定的和不确定的两种。,5.1 确定的自顶向下分析思想,确定的自顶向下分析方法,首先要解决从 文法的开始符号出发,如何根据当前的输 入符号(单词符号)唯一地确定选用哪个 产生式替换相应非终结符往下推导,或构 造一棵相应的语法树。,例5.1,若有文法G1S: S pA | qB A cAd | a B dB | b 若输入串W=pccadd。自顶向下推导过程为 S=>pA=>pcAd=>pccAdd=>pccadd,这个文法有以下两个特点:,每个产生式的右部都由终结符号开始。 如果两个产生式有相同的左部,那么它们的右部由不同的终结符开始。,例5.2,若有文法G2S为: S Ap S Bq A a A cA B b B db,当输入串W=ccap,那么试图推出输入串的推导过程为: S=>Ap=>cAp=>ccAp=>ccap,例5.2文法的特点是:,产生式的右部不全是由终结符开始 如果两个产生式有相同的左部,它们的右部是由不同的终结符或非终结符开始。 文法中无空产生式,定义5.1,设G=(VT,VN,P,S)是上下文无关文法 FIRST()=a| a,aVT, ,V*若 则规定FRIST()不难求出在文法G2中 FIRST(Ap) = a, c FIRST(Bq) = b, d,例5.3,若有文法GS: SaA Sd AbAS A 若输入串W=abd,则试图推导出abd串的推 导过程为:S=>aA=>abAS=>abS=>abd,从例5.3可以得出下列结论,当某一非终结符的产生式中含有空产生式 时,它的非空产生式右部的首符号集两两 不相交,并与在推导过程中紧跟该非终结 符右边可能出现的终结符集也不相交,则 仍可构造确定的自顶向下分析。,定义5.2,设G=(VT,VN,P,S)是上下文无关文法, AVN, S是文法开始符号 FOLLOW(A)=aS A 且aVT aFRIST(),V*,V+ 若S A ,且 ,则 #FOLLOW(A),定义5.3,给定上下文无关文法的产生式A, AVN, V*, 若>*,则 SELECT(A ) = FIRST() 如果 ,则 SELECT(A ) = (FIRST() - )FOLLOW(A),定义5.4,一个上下文无关文法是LL(1)文法的充 分必要条件是,对每个非终结符A的两个 不同产生式,A, A,满足 SELECT(A) SELECT(A ) = 其中、不能同时 。,LL(1)文法的含义:,第1个“L”指的是由左向右地处理输入。第2 个“L”指的是它为输入串描绘出一个最左推 导。括号中的数字1意味着它只需向右看一 个符号便可决定如何推导即选择哪个产生 式(规则)进行推导。,例5.3的文法,SaA Sd AbAS A,不难看出: SELECT(SaA) = a SELECT(Sd) = d SELECT(AbAS) = b SELECT(A) = a, d, # 所以 SELECT(SaA) SELECT(Sd) = SELECT(AbAS) SELECT(A)=,例5.4,设文法GS为: SaAS Sb AbA A,则 SELECT(SaAS) = aSELECT(Sb) = bSELECT(AbA) = bSELECT(A) = a, b SELECT(SaAS) SELECT(Sb)= SELECT(AbA)SELECT(A),5.2 LL(1)文法的判别,1求出推出的非终结符 2计算FIRST集 3计算FOLLOW集 4计算SELECT集,1求出推出的非终结符,扫描文法中的产生式 删除所有右部含有终结符的产生式, 若这使得以某个非终结符为左部的所有产生式都被删除,说明该非终结符不能推出. 若某个非终结符的某个产生式的右部为,说明该非终结符能推出. 删除以该非终结符为左部的所有产生式. 扫描产生式右部的每一个符号 若扫描到的非终结符能推出, 则删除该非终结符,如这样使产生式右部为空,说明该非终结符能推出. 删除以该非终结符为左部的所有产生式. 若扫描到的非终结符不能推出, 则删除该产生式,如这样使以该非终结符为左部的所有产生式都被删除,说明该非终结符不能推出. 重复,直到扫描完文法的产生式,数组中非终结符的特征在没有改变为止.,例5.5 若文法GS为:,SAB SbC A Ab B BaD CAD Cb DaS Dc,SAB A B CAD,SAB CAD,CAD,Step 1,Step 2,Step 3,定义法:求文法符号FIRST(X),若XV,则FIRST(X)=X; 若XVN,且有产生式Xa,则把a加入到FIRST(X)中; 若XVN,X 也是一条产生式,则把也加到FIRST(X)中; 若XVN, X Y1Y2Yn 是一个产生式,Y1, Y2,Yi-1(1in)都是非终结符,而且对于任何j,1ji-1, FIRST(Yj)都含有 (即Y1, ,Yi-1 ),则把FIRST(Yj)(1ji-1)中的所有非元素以及FIRST(Yi),都加到FIRST(X)中; 在(d)中,若所有的FIRST(Yj , j=1,2,n)均能推出,则FIRST(X)= FIRST(Y1)FIRST(Y2)FIRST(Yn)。反复使用上述(b)-(e)步骤,直到每个符号的FIRST集合不再增大为止。,求符号串的FIRST(), = Y1Y2Yn 当Y1 >* 时,FIRST() = FIRST(Y1). 对于任何j,1ji-1, 2in ,FIRST(Yj)都含有 (即Y1, ,Yi-1 ),则:FIRST() = (FIRST(Y1)- )(FIRST(Yi-1)- )FIRST(Yi). 当所有Yi (1in),则FIRST() = FIRST(Y1)FIRST(Yn).,例5.5 若文法GS为:,SAB SbC A Ab B BaD CAD Cb DaS Dc,文法GS的每个非终结符的FIRST集: FIRST(S)=FIRST(A) FIRST(B)=a, b, FIRST(A) =b, FIRST(B) =a, FIRST(C) = (FIRST(A) - ) FIRST(D) b FIRST(D)=a, c FIRST(C) = a,b,c,例5.5 若文法GS为:,SAB SbC A Ab B BaD CAD Cb DaS Dc,文法GS的每个产生式右部符号串的FIRST集: FIRST(AB)=FIRST(A) FIRST(B)=a, b, FIRST(bC) =b FIRST() = FIRST(b) =b FIRST(aD)=a FIRST(AD)=(FIRST(A) -)FIRST(D)=a,b,c FIRST(aS) = a FIRST(c) =c,关系图法:求文法符号FIRST(X),文法符号X对应图中一个结点,若XV,用X表示;若XVN,用FIRST(X)表示。 若 X是文法的一个产生式, 且 ,则FIRST(A) FIRST(X), XVN; 或FIRST(A) X, XVT. 凡是从FIRST(A)结点有路径可到达的终结符结点的终结符都属于FIRST(A). A ,则 FIRST(A)= FIRST(A),例5.5 若文法GS为:(关系图法),SAB SbC A Ab B BaD CAD Cb DaS Dc,FIRST(S),FIRST(A),FIRST(B),b,a,FIRST(C),FIRST(D),c,FIRST集: FIRST(S)= a, b, FIRST(A) =b, FIRST(B) =a, FIRST(C) = a,b,c FIRST(D)=a, c,3计算FOLLOW集,(1) 定义法: 对于文法的开始符号S,置#于FOLLOW(S) 中; 若 B是一个产生式, 则把FIRST()- 加至FOLLOW(B)中;如 ,则把FOLLOW(A)加至FOLLOW(B)中;这是因为当有形如:D 1A1, B 的产生式,A, B, D VN,1, 1, , V*, 在推导过程中可能出现如下的句型序列:S 1A1 =>1B1=>1B1 有:FOLLOW(A)FOLLOW(B) 反复使用(b)步骤,直到每个非终结符号的FOLLOW集合不再增大为止。,例5.5 若文法GS为:,SAB SbC A Ab B BaD CAD Cb DaS Dc,文法GS的每个非终结符的FOLLOW集: FOLLOW(S)=# FOLLOW(D) FOLLOW (A) =FIRST(B)-FOLLOW(S) FIRST(D) FOLLOW (B) = FOLLOW(S) FOLLOW (C) = FOLLOW(S) FOLLOW (D) = FOLLOW(B)FOLLOW(C) FOLLOW(S)=#; FOLLOW (A) =a,#,cFOLLOW(B)=#; FOLLOW(C)=#FOLLOW(D)=#,(2) 关系图法: S是开始符号,FOLLOW(X) #. 若 BX是文法的一个产生式, 且 ,则FOLLOW(B)FIRST(X), XVN; 或FOLLOW(B)X, XVT. 若 B是文法的一个产生式, 且 ,则FOLLOW(B) FOLLOW(A). 对图中每个FIRST(A)结点,若 X是文法的一个产生式, 且 ,则FIRST(A) FIRST(X), XVN; 或FIRST(A) X, XVT. 凡从FOLLOW(A)结点有路径可到达的终结符或#的结点,其标记的终结符或#都属于FOLLOW (A).,例5.5 若文法GS为:(关系图法),SAB SbC A Ab B BaD CAD Cb DaS Dc,FOLLOW(A),FIRST(B),FOLLOW(S),a,c,FOLLOW集: FOLLOW(S)=# FOLLOW (A)=a, c,# FOLLOW (B)=# FOLLOW (C)=# FOLLOW (D)=#,FOLLOW(B),FOLLOW(C),FOLLOW(D),FIRST(D),

注意事项

本文(编译原理 之 自顶向下语法分析方法)为本站会员(xzh****18)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.