编译原理与技术 自顶向下分析.ppt
《编译原理与技术 自顶向下分析.ppt》由会员分享,可在线阅读,更多相关《编译原理与技术 自顶向下分析.ppt(90页珍藏版)》请在三一办公上搜索。
1、2023/4/26,编译原理与技术讲义,1,编译原理与技术,自顶向下分析,2023/4/26,编译原理与技术讲义,2,自顶向下分析,分析树的建立从根(开始符号)出发,从上而下,从左自右为输入串建立分析树为输入串寻找一个最左推导,e.g.1 文法G0如下S A B C A a B b C c输入串 abc$串结束符,2023/4/26,编译原理与技术讲义,3,自顶向下分析,e.g.1 文法G0:S A B CA a B b C c,a b c$,S$,当前记号(指针),2023/4/26,编译原理与技术讲义,4,自顶向下分析,e.g.1 文法G0:S A B CA a B b C c,a b c
2、$,S$,A B C,$,2023/4/26,编译原理与技术讲义,5,自顶向下分析,e.g.1 文法G0:S A B CA a B b C c,a b c$,S$,A B C,$,a,2023/4/26,编译原理与技术讲义,6,自顶向下分析,e.g.1 文法G0:S A B CA a B b C c,a b c$,S$,A B C,$,a,终结符叶子与当前符号匹配?,2023/4/26,编译原理与技术讲义,7,自顶向下分析,e.g.1 文法G0:S A B CA a B b C c,a b c$,S$,A B C,$,a,b,指向下一记号,2023/4/26,编译原理与技术讲义,8,自顶向下分
3、析,e.g.1 文法G0:S A B CA a B b C c,a b c$,S$,A B C,$,a,b,2023/4/26,编译原理与技术讲义,9,自顶向下分析,e.g.1 文法G0:S A B CA a B b C c,a b c$,S$,A B C,$,a,b,c,2023/4/26,编译原理与技术讲义,10,自顶向下分析,e.g.1 文法G0:S A B CA a B b C c,a b c$,S$,A B C,$,a,b,c,2023/4/26,编译原理与技术讲义,11,自顶向下分析,e.g.1 文法G0:S A B CA a B b C c,a b c$,S$,A B C,$,a
4、,b,c,OK!输入串分析成功!,2023/4/26,编译原理与技术讲义,12,自顶向下分析,e.g.1 文法G0:S A B CA a B b C c,串abc$的最左推导过程:S$ABC$aBC$abC$abc$,2023/4/26,编译原理与技术讲义,13,自顶向下分析,文法G0较简单非终结符只有唯一的产生式试探分析法当待分析(展开)的非终结符对应多条产生式,可以选择其一进行尝试分析(最左推导);当此产生式无法与输入串“匹配”时则需要“回溯”即放弃已建立的部分分析树,同时调整输入串指针恢复到此次分析前位置,再另选一产生式重新分析。只有当所有的所有的尝试均不成功,分析失败!,2023/4/
5、26,编译原理与技术讲义,14,自顶向下分析,试探分析法e.g.2 文法G1如下S x A yA ab A a输入串 xay$的分析过程。,2023/4/26,编译原理与技术讲义,15,自顶向下分析,试探分析法e.g.2 文法G1:(1)S x A y(2)A ab(3)A a输入串 xay$的分析过程。,S$,x A y$,终结符叶子x与输入符x匹配,a b,选用产生式(1),选用产生式(2),匹配失败!,2023/4/26,编译原理与技术讲义,16,自顶向下分析,试探分析法e.g.2 文法G1:(1)S x A y(2)A ab(3)A a输入串 xay$的分析过程。,S$,x A y$,
6、a b,选用产生式(1),选用产生式(2),匹配失败!,回溯:重新分析A,2023/4/26,编译原理与技术讲义,17,自顶向下分析,试探分析法e.g.2 文法G1:(1)S x A y(2)A ab(3)A a输入串 xay$的分析过程。,S$,x A y$,选用产生式(1),a,选用产生式(3),终结符叶子a与输入符a匹配,分析成功!,2023/4/26,编译原理与技术讲义,18,试探分析法在文法有左递归特征时,可能导致无限循环而此时无法读入任何输入符(输入指针保持不变)。如表达式文法G2:EE+T|T TT*F|FF(E)|id,自顶向下分析,E,E+T,E+T,2023/4/26,编译
7、原理与技术讲义,19,自顶向下分析,预测分析法对于待分析的非终结符A,可以根据当前输入符号(记号)来准确唯一地选择A的某一产生式。若该产生式“匹配”成功,则意味着A分析成功;若匹配失败,则即使选择A的其它产生式也会导致A分析失败(因而不需要回溯)。Case 1:文法G1 A a bA的两个产生式右部具有 A a相同的(非空)前缀a 那么A面临输入符a选择谁呢?,2023/4/26,编译原理与技术讲义,20,预测分析法提左因子的文法变换文法G1中,A a b A a A A a A b|,自顶向下分析,A 1A 21和2不含相同前缀,提左因子,A AA 1|2引入非终结符A,提左因子,2023/
8、4/26,编译原理与技术讲义,21,预测分析法e.g.3 文法G1中,A a b A a A A a A b|A 面临 a 时有唯一的产生式A a A;A面临 b 时可以选A b;空产生式 A 何时选用呢?,自顶向下分析,提左因子,可以考虑(除b外的)任一符号c。可以与之“匹配”!,2023/4/26,编译原理与技术讲义,22,预测分析法提左因子变换的一般形式,自顶向下分析,A 1|2|n A,i不含相同前缀,不含前缀,提左因子变换后:,A A|A 1|2|n,2023/4/26,编译原理与技术讲义,23,预测分析法Case 2:文法G2 E E+TE的产生式的(直接)左递归妨碍了E T 输入
9、符号的有效读入(实际上不读)并导致死循环。消除左递归(A A)的文法变换 直接左递归的消除(A A),自顶向下分析,A AA,消除直接左递归,A AA A|,引入非终结符A,形成右递归文法,2023/4/26,编译原理与技术讲义,24,预测分析法e.g.4 消除文法G2中的直接左递归。E E+T E T EE T E+T E|T T*F T F T T F T*F T|F(E)F(E)F id F id,自顶向下分析,含左递归的文法G2,不含左递归的文法G2,2023/4/26,编译原理与技术讲义,25,E,E,T,T,F,i,i,+,*,F,T,i,F,文法G2:i+i*i的分析树,E,T,
10、E,F,T,i,T,+,E,F,T,i,F,T,i,*,文法G2:i+i*i的分析树,2023/4/26,编译原理与技术讲义,26,自顶向下分析,预测分析法消除左递归(A A)的文法变换间接左递归的消除(A B A)对于含间接左递归的文法G,可以先设法变换为含有直接左递归的文法G(通常将较简单的产生式逐次代入较复杂的产生式),然后再行消除G中的直接左递归即可。,2023/4/26,编译原理与技术讲义,27,自顶向下分析,预测分析法e.g.5消除文法G3中的(间接)左递归。S Aa|a|bA Ac|c|Sd将S相应产生式分别代入A相关产生式,得到文法G3:S Aa|a|bA Ac|c|Aad|a
11、d|bd 消除G3中(A的)直接左递归,则有,2023/4/26,编译原理与技术讲义,28,自顶向下分析,预测分析法e.g.5消除文法G3中的(间接)左递归。S Aa|a|bA c A|ad A|bd AA c A|ad A|上述文法不再含有左递归。,2023/4/26,编译原理与技术讲义,29,自顶向下分析,回顾一下什么是预测分析法?对于待分析的非终结符A,可以根据当前输入符号(记号)来准确唯一地选择A的某一产生式。若该产生式“匹配”成功,则意味着A分析成功;若匹配失败,则即使选择A的其它产生式也会导致A分析失败(因而不需要回溯)。在对文法提左因子和消除左递归后,可以实施预测分析了!但是,待
12、分析或展开的非终结符A如何利用当前输入符(记号)来选择产生式呢?,2023/4/26,编译原理与技术讲义,30,First集合(首符号集合)First()=a|*a|*,其中 aVT,(VTVN)First(a)=a|aVT AV N,考查A的每个产生式:A X1X2Xn,Xi(VTVN),计算First(A),(初始为)1)把Firtst(X1)-加入First(A),如果First(X1)则结束计算First(A),否则 2)把Firtst(X2)-加入First(A),如果First(X2)则结束计算First(A),否则 n)把Firtst(Xn)-加入First(A),如果First
13、(Xn)则结束计算First(A),否则 n+1)加入First(A),2023/4/26,编译原理与技术讲义,31,e.g.6文法G2的First集合,E T E E+T E|T F T T*F T|F(E)F id,First(F)=(,id,2023/4/26,编译原理与技术讲义,32,e.g.6文法G2的First集合,E T E E+T E|T F T T*F T|F(E)F id,First(T)=*,2023/4/26,编译原理与技术讲义,33,e.g.6文法G2的First集合,E T E E+T E|T F T T*F T|F(E)F id,First(T)=First(F)
14、=(,id,2023/4/26,编译原理与技术讲义,34,e.g.6文法G2的First集合,E T E E+T E|T F T T*F T|F(E)F id,First(E)=+,2023/4/26,编译原理与技术讲义,35,e.g.6文法G2的First集合,E T E E+T E|T F T T*F T|F(E)F id,First(E)=First(T)=First(F)=(,id,2023/4/26,编译原理与技术讲义,36,e.g.6文法G2的First集合,E T E E+T E|T F T T*F T|F(E)F id,First(E)=First(T)=First(F)=(,
15、id,First(E)=+,First(T)=First(F)=(,id,First(T)=*,First(F)=(,id,2023/4/26,编译原理与技术讲义,37,Follow集合(后继符号集合)Follow(A)=a|S*Aa,其中 aVT,A VN,(VTVN)*$Follow(S).若 A BP,则把First()-加入Follow(B)若 A BP 或 A BP 且*(即 First()),则 把Follow(A)加入Follow(B)S*Aa S*Aa Ba Ba*B a Ba 显然a Follow(A)Follow(B),2023/4/26,编译原理与技术讲义,38,e.g.
16、7文法G2的Follow集合,E T E E+T E|T F T T*F T|F(E)F id,Follow(E)=$,),$Follow(E).,2023/4/26,编译原理与技术讲义,39,e.g.7文法G2的Follow集合,E T E E+T E|T F T T*F T|F(E)F id,Follow(E)=Follow(E)=$,),2023/4/26,编译原理与技术讲义,40,e.g.7文法G2的Follow集合,E T E E+T E|T F T T*F T|F(E)F id,Follow(T)=(First(E)-)Follow(E)=+$,)=+,$,),2023/4/26,
17、编译原理与技术讲义,41,e.g.7文法G2的Follow集合,E T E E+T E|T F T T*F T|F(E)F id,Follow(T)=Follow(T)=+,$,),2023/4/26,编译原理与技术讲义,42,e.g.7文法G2的Follow集合,E T E E+T E|T F T T*F T|F(E)F id,Follow(F)=(First(T)-)Follow(T)Follow(T)=*+,$,)=*,+,$,),2023/4/26,编译原理与技术讲义,43,e.g.7文法G2的Follow集合,E T E E+T E|T F T T*F T|F(E)F id,Foll
18、ow(F)=*,+,$,),Follow(T)=+,$,),Follow(T)=+,$,),Follow(E)=$,),Follow(E)=$,),2023/4/26,编译原理与技术讲义,44,自顶向下分析A时,如果A只产生非空符号串,那么A期望“看到”的当前输入的符号最好是aFirst(A),这样的话,选用产生式A来分析,即能产生(推导)出以a开头的串并期待与相应输入串匹配。,2023/4/26,编译原理与技术讲义,45,自顶向下分析A时,如果A只产生的是不包含任何有效符号的串,则它“看到”的当前输入的符号只能是bFollow(A)。这时选用产生式A 来“结束”对A的分析而开始的分析。,20
19、23/4/26,编译原理与技术讲义,46,自顶向下分析A时,如果A既产生非空串也可以产生,则它 可能“看到”的当前输入的符号来自aFirst(A),或者来自bFollow(A)。但A最不期望的是 ab,因为这样,A面临两难的选择 A 还是 A?,2023/4/26,编译原理与技术讲义,47,LL(1)文法,一般的,文法G是LL(1)文法,如果任何AVN,其产生式,A1|2|n,满足:First(i)First(j)=,ij,i,j=1,2,n;若First(k),则First(i)Follow(A)=,i k.,read from Left to right,Leftmost derivati
20、on,1 lookhead,2023/4/26,编译原理与技术讲义,48,LL(1)文法,产生式不含左递归具有相同左部的产生式不含左因子LL(1)文法G进行自顶向下分析时,非终结符A面临当前输入符号a时即可作出唯一的产生式的选择决定,2023/4/26,编译原理与技术讲义,49,自顶向下分析,LL(1)文法的递归下降分析为LL(1)文法G(无左因子、左递归)构造一个无回溯的预测分析器。文法G的每一个非终结符A对应一个(递归)分析过程A()。分析过程A()1)由当前输入符号(lookhead)决定产生式的选取;2)产生式A X1X2Xn的分析过程:从左往右逐个分析。XiVT,则调用匹配过程 ma
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译原理与技术 自顶向下分析 编译 原理 技术 向下 分析
链接地址:https://www.31ppt.com/p-4526612.html