自顶向下语法分析.ppt
《自顶向下语法分析.ppt》由会员分享,可在线阅读,更多相关《自顶向下语法分析.ppt(49页珍藏版)》请在三一办公上搜索。
1、S.P,O.P,知识结构,任务:根据文法规则,从源程序单词符号串中识别出语法成分,并进行语法检查。,两大类分析方法:,自顶向下分析,自底向上分析,语法分析的任务,存在主要问题:回溯问题,左递归问题,主要方法:递归子程序法、LL分析法,自顶向下分析算法的基本思想为:,自底向上分析算法的基本思想为:,存在主要问题:“可归约串”的识别问题,主要方法:算符优先分析法、LR分析法,5.1自顶向下分析法,自顶向下分析的一般过程,从S出发采用最左推导,试图逐步推出输入串,L(GS)?S作为语法树的根,试图自上而下地为构造一棵语法树 若叶结点从左向右排列恰好,则表示是文法的句子,而这棵语法树就是句子的语法结构
2、 若构造不出语法树,则不是文法的句子,自顶向下分析方法分类,确定的,不确定的,回溯,【例】G1S:S pA|qBA cAd|aB d B|c识别输入串w=pccadd是否是G1S的句子,试探推导过程:S pA pcAd pccAdd pccadd试探成功,这个文法的特点:1、每个产生式的右部都由终结符号开始2、如果两个产生式有相同的左部,那么它们的右部由不同的终结符开始,【例】G2S:S Ap|BqA a|cA B b|dB识别输入串w=ccap是否是G2S的句子,试探推导过程:S Ap cAp ccAp ccap试探成功,这个文法的特点:1、产生式的右部不全是由终结符开始2、如果两个产生式有
3、相同的左部,它们的右部是由不同的终结符或非终结符开始3、文法中无空产生式,1.FIRST集,FIRST():从可能推导出的所有开头终结符号或,对于文法G的所有非终结符的每个候选式,其终结首符号集称为FIRST集,定义如下:,【例】SaAbAcd|c,【例】SAaAa|,(1)若=a,且aVT,则aFIRST();例:FIRST(i)=i FIRST(+TE)=+,ETEE+TE|TFTT*FT|F(E)|i,构造FIRST集的算法,(2)若=X,XVN,且有产生式Xb,则把b加入到FIRST()中;例:FIRST(FT)=(,i?,(3)若=X1X2 Xn,其中XiVN,1in;,将FIRST
4、(X1)中的一切非的终结符加进FIRST();若FIRST(X1),则将FIRST(X2)中的一切非的终结符加进FIRST();若FIRST(X1)且FIRST(X2),则将FIRST(X3)中的一切非的终结符加进FIRST();依此类推,若对于一切1in,FIRST(Xi),则将加进FIRST()。,ETEE+TE|TFTT*FT|F(E)|i,例:FIRST(FT)=,FIRST(F)-=(,i,【例】G2S:S Ap|BqA a|cA B b|dB识别输入串w=ccap是否是G2S的句子,试探推导过程:S Ap cAp ccAp ccap试探成功,FIRST(Ap)a,cFIRST(Bq
5、)b,d,FIRST(F)=(,iFIRST(T)=*,FIRST(T)=FIRST(F)-=(,iFIRST(E)=+,FIRST(E)=FIRST(T)-=(,i,【例】GEETEE+TE|TFTT*FT|F(E)|i,计算文法中非终结符的First集合,【例】G3S:S aA|dA bAS|识别输入串w=abd是否是G3S的句子,试探推导过程:S aA abAS abS abd试探成功,这个文法的特点:1、含有空产生式2、非空产生式右部首符号集合两两不相交3、紧跟该非终结符右边可能出现的终结符集合也不相交,2.FOLLOW集,FOLLOW(A):是所有句型中紧接A之后的终结符号或#,对于
6、文法G的非终结符的后继符号集称为FOLLOW集,定义如下:,构造集合FOLLOW的算法,(1)若A为开始符号,则把“#”加入FOLLOW(A)中;,(2)若BA(),则把FIRST()-加入FOLLOW(A)中;,注:FOLLOW集合中不含有,ETEE+TE|TFTT*FT|F(E)|i,#FOLLOW(E),由F(E)可知,)FOLLOW(E),由ETE,应把FOLLOW(E)加入FOLLOW(E)由E+TE 且E,应把FOLLOW(E)加入FOLLOW(T),【例】GEETEE+TE|TFTT*FT|F(E)|i,FOLLOW(E)=#,)E是开始符号#FOLLOW(E)又F(E)FOLL
7、OW(E)FOLLOW(E)=#,)E TE FOLLOW(E)加入 FOLLOW(E)FOLLOW(T)=+,),#E+TE FIRST(E)-加入FOLLOW(T)又E,FOLLOW(E)加入FOLLOW(T)FOLLOW(T)=FOLLOW(T)=+,),#T FT FOLLOW(T)加入FOLLOW(T)FOLLOW(F)=*,+,),#T FT FOLLOW(F)=FIRST(T)-又T FOLLOW(T)加入FOLLOW(F),FIRST(F)=(,iFIRST(T)=*,FIRST(T)=(,iFIRST(E)=+,FIRST(E)=(,i,求FOLLOW集合,LL的含义自左向右
8、扫描分析输入符号串从识别符号开始生成句子的最左推导LL(1):向前看一个输入符号,便能唯一确定当前应选择的规则LL(k):向前看k个输入符号,才能唯一确定当前应选择的规则,5.2 LL(1)文法的判别,要构造确定的自顶向下分析程序要求描述文法必须是LL(1)文法。,一个文法G是LL(1)的,当且仅当对于G的每一个非终结符的任何两个不同产生式,下面的条件成立:,FIRST()FIRST()=,也就是和推导不出以同一个终结符a为首的符号串;它们不应该都能推出.假若=,那么,FIRST()FOLLOW(A).也就是,若=,则所能推出的串的首符号不应在FOLLOW(A)中,*,*,若=,则 SELEC
9、T(A)=First()若=,则SELECT(A)=(First()-)Follow(A),*,*,一个文法是LL(1)的充要条件:对于每个形如 的产生式,满足 Select()Select()=其中:、不能同时推出,LL(1)文法的判别条件,求出能推出的非终结符计算First集合计算Follow集合计算Select集合不满足Select()Select()=的不是LL(1)文法,否则是LL(1)文法。,LL(1)文法的判别步骤,【例】GE:ETEE+TE|TFTT*FT|F(E)|i判别该文法是否为LL(1)文法?,FIRST(F)=(,iFIRST(T)=*,FIRST(T)=(,iFIR
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 向下 语法分析
链接地址:https://www.31ppt.com/p-6019848.html