自顶向下语法分析方法.ppt
《自顶向下语法分析方法.ppt》由会员分享,可在线阅读,更多相关《自顶向下语法分析方法.ppt(88页珍藏版)》请在三一办公上搜索。
1、第五章 自顶向下语法分析方法,2023/5/24,自顶向下语法分析方法,2,语法分析是编译程序的核心部分。语法分析的作用是识别由词法分析给出的单词符号序列是否是给定文法的正确句子(程序)常用的语法分析方法有自顶向下分析和自底向上分析,2023/5/24,自顶向下语法分析方法,3,自顶向下分析法也称面向目标的分析方法,也就是从文法的开始符号出发企图推导出与输入的单词串完全相匹配的句子。确定的自顶向下分析方法:对文法有一定的限制,但实现方法简单、直观,便于手工构造或自动生成语法分析器,目前仍是常用的方法之一。不确定的自顶向下分析方法:带回溯的分析方法,是一种穷举的试探方法,效率低,代价高,极少使用
2、,2023/5/24,自顶向下语法分析方法,4,主要内容,5.1 确定的自顶向下的分析思想5.2 LL(1)文法的判别5.3 某些非LL(1)文法到LL(1)文法的等价变换5.4 不确定的自顶向下分析思想5.5 确定的自顶向下分析法,2023/5/24,自顶向下语法分析方法,5,5.1 确定的自顶向下分析思想,确定的自顶向下分析方法,是从文法的开始符号出发,考虑如何根据当前的输入符号(单词符号)唯一地确定选用哪个产生式替换相应非终结符以向下推导,或如何构造一课相应的语法树。,2023/5/24,自顶向下语法分析方法,6,例5.1,文法G1S:S pA|qBA cAd|aB dB|b输入串:W=
3、pccadd,存在推导过程:SpApcAdpccAddpccaddW是文法合法的句子,2023/5/24,自顶向下语法分析方法,7,相应的语法树:,文法G1S:S pA|qBA cAd|aB dB|b输入串:W=pccadd,2023/5/24,自顶向下语法分析方法,8,对于这样的文法显然在推导过程中完全可以根据当前的输入符号决定选择哪个产生式往下推导,因此分析过程是唯一的。这个文法有以下特点:(1)每个产生式的右边都由终结符号开始;(2)如果两个产生式有相同的左部,那么它们的右部由不同的终结符号开始。,文法G1S:S pA|qBA cAd|aB dB|b输入串:W=pccadd,2023/5
4、/24,自顶向下语法分析方法,9,例5.2,文法G2S:S Ap|BqA cA|aB dB|b对于输入串:W=ccap,存在推导过程:SApcApccApccapW是文法合法的句子,2023/5/24,自顶向下语法分析方法,10,语法树为:,文法G2S:S Ap|BqA cA|aB dB|b对于输入串:W=ccap,2023/5/24,自顶向下语法分析方法,11,这个文法的特点是:(1)产生式的右部不全是由终结符开始(2)如果两个产生式有相同的左部,它们的右部由不同的终结符或非终结符开始。(3)文法中无空产生式对于相同左部的产生式含有非终结符开始的产生式时,在推导过程中选用哪个产生式不太直观。
5、,文法G2S:S Ap|BqA cA|aB dB|b对于输入串:W=ccap,2023/5/24,自顶向下语法分析方法,12,设G=(VN,VT,P,S)是上下文无关文法FIRST()=a|a,aVT,V*若 则规定FIRST()FIRST()为的开始符号集或首符号集例:文法G2中FIRST(Ap)=a,cFIRST(Bq)=b,d,定义5.1,文法G2S:S Ap|BqA cA|aB dB|b对于输入串:W=ccap,2023/5/24,自顶向下语法分析方法,13,考虑文法G2,关于S的两个产生式的右部虽然都以非终结符开始,但它们右部的符号串可以推导出的首符号集合不相交,因而可以根据当前的输
6、入符号是属于哪个产生式的首符号集合而决定选择相应产生式进行推导。这样仍能构造确定的自顶向下分析。,2023/5/24,自顶向下语法分析方法,14,例5.3,文法G3S:S aA|dA bAS|对于输入串:W=abd,存在推导过程:SaAabASabSabdW是文法合法的句子,2023/5/24,自顶向下语法分析方法,15,语法树为:,文法G3S:S aA|dA bAS|对于输入串:W=abd,2023/5/24,自顶向下语法分析方法,16,可以看出,当某一非终结符的产生式中含有空产生式时,它的非空产生式中右部的首符号集两两不相交,并与在推导过程中紧跟该非终结符右边可能出现的终结符集也不相交,仍
7、可构造确定的自顶向下分析。,2023/5/24,自顶向下语法分析方法,17,设G=(VN,VT,P,S)是上下文无关文法,AVN,S是开始符号FOLLOW(A)=aS A 且a FIRST(),V*,V+若S A,且,则#FOLLOW(A)也可以定义为:FOLLOW(A)=aS Aa且a VT 若有S A,且,则#FOLLOW(A)#为输入串的结束符,或称输入串括号,定义5.2,2023/5/24,自顶向下语法分析方法,18,当文法中含有形如A,A的产生式时,其中AVN,V*。若和不能同时推导出空,假定,,则当FIRST()(FIRST()FOLLOW(A)=时,对于非终结符A的替换仍可唯一地
8、确定候选。即:输入符号 FIRST():选用产生式A输入符号 FIRST()FOLLOW(A):选用产生式A,2023/5/24,自顶向下语法分析方法,19,定义5.3,给定上下文无关文法的产生式A,AVN,V*。若,则SELECT(A)=FIRST()若,则SELECT(A)=(FIRST()-)FOLLOW(A),2023/5/24,自顶向下语法分析方法,20,定义5.4,一个上下文无关文法是LL(1)文法的充分必要条件是,对每个非终结符A的两个不同产生式A,A,满足。SELECT(A)SELECT(A)=其中,不能同时。LL(1)文法能够采用确定的自顶向下分析技术,2023/5/24,自
9、顶向下语法分析方法,21,LL(1)文法的含义,第1个L表明自顶向下分析是从左向右扫描输入串第2个L表明分析过程中将用最左推导1表明只需要向右看一个符号便可决定如何推导,即选用哪个产生式,2023/5/24,自顶向下语法分析方法,22,例5.3,文法G3S:S aA|d A bAS|SELECT(S aA)=a SELECT(S d)=d SELECT(A bAS)=b SELECT(A)=a,d,#而SELECT(S aA)SELECT(S d)=ad=SELECT(A bAS)SELECT(A)=ba,d,#=该文法是LL(1)文法,可用确定的自顶向下分析,2023/5/24,自顶向下语法
10、分析方法,23,例5.4,文法G4S:S aAS|b A bA|SELECT(S aAS)=a SELECT(S b)=b SELECT(A bA)=b SELECT(A)=a,b 而SELECT(S aAS)SELECT(Sb)=ab=SELECT(A bA)SELECT(A)=ba,b该文法不是LL(1)文法,2023/5/24,自顶向下语法分析方法,24,5.2 LL(1)文法的判别,当我们选用自顶向下分析技术时,首先必须判别所给文法是否是LL(1)文法,因而对任给文法需计算FIRST,FOLLOW,SELECT集合,进而判别文法是否为LL(1)文法,2023/5/24,自顶向下语法分析
11、方法,25,例5.5,文法GS:SAB|bCA|bB|aDC AD|bD aS|c,2023/5/24,自顶向下语法分析方法,26,1)求出能推出的非终结符,如果所有以某个非终结符为左部的产生式的右部都含有终结符号,则该非终结符不能推出如果以某一非终结符为左部的某一产生式的右部为,则该非终结符能推出其他非终结符号是否能够推出可以推导得出文法G的所有非终结符中:可以推出的非终结符:S,A,B不能推出的非终结符:C,D,文法GS:SAB|bCA|bB|aDC AD|bD aS|c,2023/5/24,自顶向下语法分析方法,27,2)计算FIRST集,方法一:根据定义计算对于每一个文法符号xV,计算
12、first(x)的方法如下:,2023/5/24,自顶向下语法分析方法,28,若xVT,则first(x)x若xVN,且有xa,aVT,则afirst(x)若xVN,x,则first(x)若xVN,y1,y2,yi都VN,若有产生式xy1y2yn,当y1,y2,yi-1都 时(1in),则first(y1),first(y2),first(yi1),first(yi)都包含在first(x)中。e)当上式中所有yi(1in),则first(x)(first(y1)-)(first(y2)-)(first(yn)-),*,*,2023/5/24,自顶向下语法分析方法,29,first(S)=(f
13、irst(A)-)(first(B)-)b=a,b,first(A)=b=b,first(B)=a=a,first(C)=(first(A)-)first(D)first(b)=a,b,cfirst(D)=a c=a,c,按上面的规则可得上例文法中每个非终结符号的first集合如下:,S AB|bCA|bB|aDC AD|bD aS|c,2023/5/24,自顶向下语法分析方法,30,一个文法符号串的first集合计算方法:,如果文法符号串V*,=X1X2Xn,1、当X1,则first()=first(X1)2、当对任何j(1ji-1,2 i n),first(Xj)first(Xi),则fi
14、rst()=(first(X1)-)(first(X2)-)(first(Xi-1)-)first(Xi)3、当first(Xj)都含有时(1 j n),则first()=first(X1)first(X2)first(Xj),*,2023/5/24,自顶向下语法分析方法,31,根据上面规则,每个产生式的右部符号串开始符号集合为:,first(A)first(B)=a,b,b a(first(A)-)first(D)=a,b,cbac,first(AB)=first(bC)=first()=first(aD)=first(AD)=first(b)=first(aS)=first(c)=,文法G
15、S:SAB|bCA|bB|aDC AD|bD aS|c,2023/5/24,自顶向下语法分析方法,32,方法二:由关系图法求文法符号的first集合,1、每个文法符号对应图中的一个结点,终结符结点用符号本身标记,非终结符结点用first(A)标记。2、若文法中有AX,则从对应A的结点到对应X结点连一条箭弧。3、凡是从first(A)结点有路径可到达的终结符结点所标记的终结符都为first(A)的成员。4、根据判别步骤1)确定是否为某非终结符first的成员,若是则将加入该非终结符的first集中。,*,2023/5/24,自顶向下语法分析方法,33,first(S),first(B),firs
16、t(C),first(A),first(D),b,a,c,文法为:S AB|bCA|bB|aDC AD|bD aS|c,(1)规则1:终结符结点用符号本身标记,本文法中有a,b,c。,(2)规则1:非终结符结点用first(A)标记。本文法中有S,A,B,C,D。,(3)规则2:AX,则A到X画一条箭弧。,S AB看成,XA,=B因此从S到A画一条弧。,S AB看成 A,XB,=A,因此从S到B画一条弧。,S bC看成,Xb,=C因此从S到b画一条弧。,同理:从A到b,从B到a,从C到A、D、b,从D到a、c画一条弧。,2023/5/24,自顶向下语法分析方法,34,(4)规则3:first(
17、A)结点有路径可到达的终结符结点所标记的终结符都为first(A)的成员。,所以,first(S)a,bfirst(A)bfirst(B)afirst(C)a,b,cfirst(D)a,c,(5)规则4:若是某非终结符first的成员,则将加入该非终结符的first集中。,所以,first(S)a,b,first(A)b,first(B)a,first(C)a,b,cfirst(D)a,c,2023/5/24,自顶向下语法分析方法,35,follow集的定义:FOLLOW(A)=aS Aa且a VT 若有S A,且,则#FOLLOW(A),(3)计算Follow 集:方法一:根据Follow定
18、义计算:,2023/5/24,自顶向下语法分析方法,36,构造集合FOLLOW的算法,若S为开始符号,则把“#”加入FOLLOW(S)中,(2)若A B(),则把FIRST()-加入FOLLOW(B),设S,A,BVn,算法:连续使用以下规则,直至FOLLOW集合不再扩大,2023/5/24,自顶向下语法分析方法,37,Follow(S)=#Follow(A)=a,#,cFollow(B)=#Follow(C)=#Follow(D)=#,文法为:S AB|bCA|bB|aDC AD|bD aS|c,2023/5/24,自顶向下语法分析方法,38,方法二:由关系图法求非终结符号的follow集,
19、1、每个文法符号和“#”对应图中的一个结点,终结符结点和“#”用符号本身标记,非终结符结点(AVN)用Follow(A)或First(A)标记。2、从开始符号S的Follow(S)结点到“#”号的结点连一条箭弧。3、若文法中有ABX,且,则从Follw(B)结点到FIRST(X)结点连一条弧,当XVT时,则与X相连。,*,2023/5/24,自顶向下语法分析方法,39,4、若文法中有AB,且,则从Follw(B)结点到 Follow(A)结点连一条箭弧。5、对每一first(A)结点,如果有产生式AX,且,则从First(A)结点到 First(X)结点连一条箭弧。6、凡是从Follow(A)
20、结点有路径可以到达的终结符或“#”号的结点,其所标记的终结符或“#”即为Follow(A)的成员。,*,*,2023/5/24,自顶向下语法分析方法,40,文法为:S AB|bCA|bB|aDC AD|bD aS|c,Follow(S)=#Follow(A)=a,#,cFollow(B)=#Follow(C)=#Follow(D)=#,2023/5/24,自顶向下语法分析方法,41,(4)计算Select集:选择集合的定义给定上下文无关文法的产生式A,AVN,V*,若,则Select(A)=First(),若,则Select(A)=(First()-)Follow(A),*,*,2023/5/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 向下 语法分析 方法
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-4941587.html