资源描述:
《自顶向下语法分析方法(完)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章自顶向下语法分析方法2021/9/7第5章自顶向下语法分析方法Page2第五章自顶向下语法分析方法学习目标:掌握:LL(1)文法的判别,预测分析法,递归子程序的构造方法理解:LL(1)文法了解:不确定的自顶向下分析2021/9/7Page3第5章自顶向下语法分析方法语法分析的作用是识别由词法分析给出的单词序列是否是给定文法的正确句子.分类:语法分析自顶向下分析(第五章)自底向上分析确定的不确定的算法优先分析(第六章)LR分析(第七章)自顶向下的基本思想:从文法的开始符出发企图推导出与输入的单词串完全相匹配的句子。2021/9/7第5
2、章自顶向下语法分析方法Page45.1确定的自顶向下分析思想5.2LL(1)文法的判别5.3某些非LL(1)文法到LL(1)文法的等价变换5.4不确定的自顶向下分析思想5.5确定的自顶向下分析方法第五章自顶向下语法分析方法2021/9/7第5章自顶向下语法分析方法Page5§5.1确定的自顶向下分析思想1确定分析的条件2开始符号集FIRST(α)的定义3后跟符号集FOLLOW(A)的定义4选择集合SELECT(A→α)的定义5LL(1)文法的定义2021/9/7Page6第5章自顶向下语法分析方法1确定分析的条件从文法的开始符出发,如能根
3、据当前的输入符号(单词符号)唯一地确定选用哪个产生式进行推导,则分析是确定的。2021/9/7Page7第5章自顶向下语法分析方法例1设有文法G1[S]:S→pA
4、qBA→cAd
5、aB→dB
6、b若输入串W=pccadd。自顶向下的推导过程为:SSApcAdcAda=>pA=>pcAd=>pccAdd=>pccaddG1[S]有如下特点:(1)每个产生式的右部由终结符开头;(2)同一非终结符的不同产生式的右部由不同的终结符开头。对于这种文法,在推导过程可以根据当前的输入符号唯一确定选哪个产生式往下推导,即分析过程是确定的。2021/9/7P
7、age8第5章自顶向下语法分析方法例2:设有文法G2[S]为:S→Ap
8、BqA→a
9、cAB→b
10、dBpAScAcAa=>ccapS=>cAp=>ccAp=>Ap该例说明,当(1)产生式右部以终结符或非终结符开头(无空产生式);(2)同一非终结符的不同产生式的右部由不同的符号开头。对于这种文法,在推导过程选用哪个产生式不直观,关键是判断产生式右部推出的开始符号(集)——First集,分析过程可能是确定若输入串W=ccap,自顶向下的推导过程为:2021/9/7Page9第5章自顶向下语法分析方法例3:设有文法G3[S]S→aA
11、dA→bAS
12、
13、ε若输入串W=abd,自顶向下的推导过程为:AaSbSAεd=>abdS=>abAS=>abS文法的特点是:包含空产生式对于空产生式左部的非终结符,关键是判断该非终结符的后跟符号(集)——Follow集,分析过程可能是确定的。=>aA2021/9/7Page10第5章自顶向下语法分析方法1确定分析的条件要进行确定的自顶向下的分析,文法要满足一定的限制——即文法是LL(1)文法。先研究三个定义开始符号集FIRST集后跟符号集FOLLOW集选择集合SELECT集2021/9/7Page11第5章自顶向下语法分析方法2开始符号集FIRST(α
14、)的定义定义:设G=(VN,VT,P,S)是上下文无关文法,(VNVT)*FIRST()={aVT
15、*a......}若*ε则规定ε∈FIRST()直观上说,文法符号串的开始符号集是由推导出的开头的终结符(包括ε)组成。2021/9/7Page12第5章自顶向下语法分析方法例文法G2[S]:S→ApS→BqA→aA→cAB→bB→dBFIRST(Ap)=FIRST(Bq)=FIRST(a)=FIRST(cA)=FIRST(b)=FIRST(dB)=由于同一非终结符的两个产生式的右部推导出来的开始符号集不相交,因此可
16、根据当前输入符属于哪个产生式右部的开始符号集而决定选哪个产生式进行推导,可以进行确定的自顶向下分析{a,c}{b,d}{a}{c}{b}{d}First:开始符号集2021/9/7Page13第5章自顶向下语法分析方法例2:设有文法G2[S]为:S→Ap
17、BqA→a
18、cAB→b
19、dBpAScAcAa=>ccapS=>cAp=>ccAp=>ApS→ApFIRST(Ap)={a,c}S→BqFIRST(Bq)={b,d}A→aFIRST(a)={a}A→cAFIRST(cA)={c}B→bFIRST(b)={b}B→dBFIRST(dB)={
20、d}若输入串W=ccap,自顶向下的推导过程为:2021/9/7Page14第5章自顶向下语法分析方法3后跟符号集FOLLOW(A)的定义定义:设G=(VT,VN,P,S)是上下文无关文法,A