《算符优先分析法》PPT课件.ppt
《《算符优先分析法》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《算符优先分析法》PPT课件.ppt(30页珍藏版)》请在三一办公上搜索。
1、自下而上分析法,思想从输入串出发,反复利用产生式进行规范归约,如果最后能得到文法的开始符号,则输入串是合法句子,否则输入串有语法错误。核心寻找句型中的归约串进行归约,用不同的方法寻找归约串,就可获得不同的分析方法,1、自下而上分析事例:设文法G为(1)SaAcBe(2)Ab(3)AAb(4)Bd试判断语句abbcde是否是该文法的合法句子?怎样实现归约过程:借鉴LL(1)分析法的体系结构,2、自下而上分析法的核心问题:1)存在移进-归约冲突;2)存在归约-归约冲突;核心问题是寻找句型中的归约串进行归约。,自下而上分析法,一、算符优先分析法:1、算符优先分析法的思想:对于文法G:EE+E|E-E
2、|E*E|E/E|(E)|i,分析i+i-i*(i+i),规范推导:EE*EE*(E)E*(E+E)E*(E+i)E*(i+i)E+E*(i+i)E+E-E*(i+i)E+E-i*(i+i)E+i-i*(i+i)i+i-i*(i+i),第5章 优先分析法,逆过程是规范归约,另外一种推导:EE-EE-E*EE-E*(E)E-E*(E+E)E-E*(E+i)E-E*(i+i)E-i*(i+i)E+E-i*(i+i)E+i-i*(i+i)i+i-i*(i+i),第5章 优先分析法,算符优先分析法的基本思想:定义终结符之间的优先关系,借助终结符之间的优先关系确定归约对象,进行自下而上分析。,比较相邻的
3、2个算符的优先级,2种推导过程对于8+7-5*(3+2)的计算结果,2、算符优先分析技术的引进:必须给出文法中两个可能在句子中相继出现的终结符之间的优先关系。(1)相继出现:在句子中若有“ab”或“aQb”.(a,bT,QN),则称a,b相继出现。(2)终结符号对优先关系的存储:优先关系表是一个矩阵M(a,b),aT,bT,矩阵行数、列数都为|+1。如:对于文法G:EE+E|E-E|E*E|E/E|(E)|i,对应的优先矩阵为:矩阵元素M(a,b)表示a在前,b在后时,a与b之间的优先关系。矩阵元素M(a,b)的取值:,。,i+i-i*(i+i),E+E-E,对文法EE+E|E-E|E*E|E
4、/E|(E)|i+-*/()i#+-*/()i#如何获得一般的文法的优先分析表?,#优先级低于其右部符号,源程序中不会出现)(的情形,如何获得一般的文法的优先分析表?,3、优先表的构造方法:算符文法:给定上下文无关文法G=(VN,VT,P,S)中不存在形如ABC的产生式,则称之为算符文法(OGOperator Grammar)(其中A,B,CN)即:如果文法中不存在具有相邻非终结符的产生式,则称为算符文法。算符优先文法:设文法G是一个不包含有空串产生式的算符文法,如果该文法中的任何终结符号对a,b之间,在三种关系中最多只有一种成立,则称该文法为算符优先文法。,(1)求文法中每个非终结符P的首终
5、结符集合FIRSTVT(P)定义:FIRSTVT(P)=a|P+a或者P+Qa,a T,P,Q N 复习:FIRST()=a|*a,aT 构造FIRSTVT(P)的算法:1)若有产生式Pa或者PQa,则aFIRSTVT(P)2)若有产生式PQ,则FIRSTVT(Q)FIRSTVT(P)例如:下述文法 S#S#SD(R)RR;P|P PS|i Di 求其每个非终结符P的FIRSTVT(P)FIRSTVT(S)=#FIRSTVT(S)=FIRSTVT(R)=FIRSTVT(P)=(,i FIRSTVT(D)=i,(FIRSTVT(D),=(,i,;FIRSTVT(P),=;,(,i,(2)求文法中
6、每个非终结符P的尾终结符集合LASTVT(P)定义:LASTVT(P)=a|p+a或者P+aQ,a T,P,Q N 复习:FOLLOW(A)=a|S*Aa,aT 构造LASTVT(P)的算法:1)若有产生式Pa或者PaQ,则aLASTVT(P)2)若有产生式PQ,则LASTVT(Q)LASTVT(P)例如:下述文法 S#S#SD(R)RR;P|P PS|i Di 求其每个非终结符P的LASTVT(P)LASTVT(S)=#LASTVT(S)=)LASTVT(R)=LASTVT(P)=LASTVT(D)=i,;LASTVT(P),=;,i,),iLASTVT(S),=i,),(3)构造算符优先表
7、:用产生式求出ab的符号对:方法:对形如Pab或PaQb的产生式,有ab(其中a,b T,P,Q N)利用构造的FIRSTVT(P)求出ab的符号对:方法:对形如PaR的产生式,若有bFIRSTVT(R),则ab 利用构造的LASTVT(P)求出a b的符号对:方法:对形如PRb的产生式,若有aLASTVT(R),则a b 对于文法的每个产生式,找出其中的终结符,同一产生式中的终结符使用第一条规则,如果某终结符a后面有非终结符P;则使用第二条规则,即有aFIRSTVT(P);如果某终结符a前面有非终结符P,则使用第三条规则,即有LASTVT(P)a 例如:下述文法 S#S#SD(R)RR;P|
8、P PS|i Di 构造其算符优先分析表。,FIRSTVT(S)=#FIRSTVT(S)=(,i FIRSTVT(R)=;,(,i FIRSTVT(P)=(,i FIRSTVT(D)=i,LASTVT(S)=#LASTVT(S)=)LASTVT(R)=;,i,)LASTVT(P)=i,)LASTVT(D)=i,文法:S#S#SD(R)RR;P|P PS|i Di,练习题:S#S#SfStS Si=E EE+T|T TPT|P P(E)|i 求此文法的算符优先表。,第5章 算符优先分析法,PROCEDURE OPT;/构造优先表算法 FOR 每条产生式PX1X2Xn DO FOR i:=1 TO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算符优先分析法 优先 分析 PPT 课件
链接地址:https://www.31ppt.com/p-5640808.html