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

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

ID:58055372

大小:1.02 MB

页数:101页

时间:2020-09-04

编译原理自顶向下语法分析方法.ppt_第1页
编译原理自顶向下语法分析方法.ppt_第2页
编译原理自顶向下语法分析方法.ppt_第3页
编译原理自顶向下语法分析方法.ppt_第4页
编译原理自顶向下语法分析方法.ppt_第5页
资源描述:

《编译原理自顶向下语法分析方法.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第四章自顶向下语法分析方法学习目标:掌握:LL(1)文法的判别,预测分析法,递归子程序的构造方法理解:LL(1)文法了解:不确定的自顶向下分析语法分析的作用是识别由词法分析给出的单词序列是否是给定文法的正确句子语法分析自顶向下分析自底向上分析确定的不确定的算法优先分析(第六章)LR分析(第五章)自顶向下基本思想:从文法的开始符出发企图推导出与输入的单词串完全相匹配的句子.分类:回顾——自上而下的分析方法定义:从文法的开始符号出发,反复使用文法的产生式,寻找与输入符号串匹配的推导。语法树的构造:将文法的开始符号作为语法树的根,向下逐步建立语法树,使语法树的末端结点符号串正好是输入符号串。

2、自上而下分析的主要问题选定产生式例文法G:S→cAdA→abA→a识别输入串w=cabd是否为该文法的句子ScAdab=>cabdS=>cAd回顾——自上而下的分析方法ScAda成功不成功=>cadS=>cAd4.1确定的自顶向下分析思想4.2LL(1)文法的判别4.3某些非LL(1)文法到LL(1)文法的等价变换4.4不确定的自顶向下分析思想4.5确定的自顶向下分析方法本章内容4.1确定的自顶向下分析思想1确定分析的条件2开始符号集FIRST(α)的定义3后跟符号集FOLLOW(A)的定义4选择集合SELECT(A→α)的定义5LL(1)文法的定义1.确定分析的条件从文法的开始符出发

3、,如能根据当前的输入符号(单词符号)唯一地确定选用哪个产生式进行推导,则分析是确定的。例1设有文法G1[S]:S→pAqBA→cAdaB→dBb若输入串W=pccadd。自顶向下的推导过程为:SSApcAdcAda=>pA=>pcAd=>pccAdd=>pccaddG1[S]有如下特点:(1)每个产生式的右部由终结符开头;(2)同一非终结符的不同产生式的右部由不同的终结符开头。对于这种文法,在推导过程可以根据当前的输入符号唯一确定选哪个产生式往下推导,即分析过程是确定的。例2:设有文法G2[S]为:S→ApBqA→acAB→bdBpAScAcAa=>ccapS=>cAp=>ccAp=>

4、Ap该例说明,当(1)产生式右部以终结符或非终结符开头(无空产生式);(2)同一非终结符的不同产生式的右部由不同的符号开头。若输入串W=ccap,自顶向下的推导过程为:对于这种文法,在推导过程选用哪个产生式不直观,关键是判断产生式右部推出的开始符号(集),分析过程可能是确定的例3:设有文法G3[S]S→aAdA→bASε若输入串W=abd,自顶向下的推导过程为:AaSbSAεd=>abdS=>abAS=>abS文法的特点——包含空产生式=>aA对于空产生式左部的非终结符,关键是判断该非终结符的后跟符号(集),分析过程可能是确定的。要进行确定的自顶向下的分析,文法要满足一定的限制——即文

5、法是LL(1)文法先研究三个定义开始符号集FIRST后跟符号集FOLLOW选择集合SELECT2.开始符号集FIRST()的定义定义:设G=(VN,VT,P,S)是上下文无关文法,α→β(α∈VN,(VNVT))FIRST()={aaVT且a......}(若ε则规定ε∈FIRST())直观上说文法符号串的开始符号集是由推导出的所有的终结符开头和可能的ε组成。例文法G2[S]:S→ApS→BqA→aA→cAB→bB→dBFIRST(Ap)={a,c}FIRST(Bq)={b,d}FIRST(a)={a}FIRST(cA)={c}FIRST(b)={b}FIRS

6、T(dB)={d}结论一针对无空产生式的文法G,同一非终结符的任两个产生式的右部串的First集无交集,即可进行确定的自顶向下分析。3.后跟符号集FOLLOW(A)的定义定义设G=(VT,VN,P,S)是上下文无关文法,B→xAy(A,B∈VNx,y∈(VNVT))FOLLOW(A)={aS=>…Aa…,a∈VT},若有S=>…A,则规定#∈FOLLOW(A)(注:#输入串#,‘#’做为输入串的结束符)直观上说,非终结符A的后跟符号集是由句型中紧跟A后的那些终结符(包括#)组成。[例]文法G3[S]:S→aAdA→bASε由S=>S得#∈FOLLOW(S)由S=>aA=>abAS=>

7、abbASS=>abbASaA得a∈FOLLOW(S)…=>abbASd得d∈FOLLOW(S)FOLLOW(S)={#,a,d}由S=>aA得#∈FOLLOW(A)由S=>abAS=>abAaA得a∈FOLLOW(A)…=>abAd得d∈FOLLOW(A)FOLLOW(A)={#,a,d}FOLLOW(A)FOLLOW(S)解释当A面对应输入符a,在自顶向下的分析中应选择这样的产生式A→i(i可导出空串)进行推导:若a∈First(i)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。