- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理_05自底向上的语法分析方法选编
第6章
自底向上优先分析法;主要内容;课题:自底向上分析方法、算符优先文法
目的要求:
1.理解自底向上的语法分析方法的基本思想;
2.掌握算符文法、算符优先文法的定义和性质
教学重点:
1.优先分析法的基本思想和术语;
2.算符文法、算符优先文法的定义和性质
教学难点 :
算符优先关系的定义
教学课时:2
教学方法:多媒体教学
教学内容和步骤 :(如下);自底向上分析方法,也称移进归约分析法
实现思想(是推导的逆过程):
对输入符号串自左向右进行扫描,并将输入符逐个移入一个后进先出栈中,边移入边分析,一旦栈顶符号串形成某个句型的句柄时,就用该产生式的左部非终结符代替相应右部的文法符号串,称为归约。重复这一过程,直到归约到栈中只剩下文法的开始符号时,则分析成功。;例1:文法:;步骤;上述的每一步规约可以构造一颗语法树:;问题的提出:
①在构造语法树的过程中,何时规约?
当句柄出现在栈顶符号串中就可以规约。
②如何知道在栈顶符号串中已经形成句柄?
通过自底向上的分析算法来解释(优先关系) ;优先分析法又可分简单优先分析法和算符优先分析法。
①简单优先分析法(规范归约)-对文法按一定原则求出所有文法符号间的优先关系;
②算法优先分析法(不规范归约)-规定算符之间的优先关系) ;6.3 算符优先分析法 ;先看一个例题:
例. 已知文法G[E]:
E→E+E
E→ E*E
E→ i
输入串i+i*i ,归约过程如下;步骤;分析可知:若只从移进—归约的角度来考虑,
在第6步时栈顶已出现了句柄E+E,可以进行
归约了,但是明显是错误的,因为这样就不
符合算术运算规律 。
所以对于表达式,我们可以人为地规定其算
符的优先顺序,即给出优先级别和同一级别
的结合性。
;算符文法定义:;性质1:在算符文法中任何句型都不包含两个相邻的非终结符。
性质2:如果Ab或(bA)出现在算符文法的句型?中,其中A?VN, b ? VT,则?中任何含b的短语必含有A。
(含b的短语必含A,含A的短语不一定含b) ;算符优先关系的定义:;算符优先文法的定义:;例:已知表达式文法G[E]:
E→E+E | E*E | (E) | i
证明G[E]不是OPG文法。
证明如下:
因为:E→E+E , E?E*E 则有 + *
又因为:E→E*E, E?E+E 则有 + *
所以不是算符优先文法。; 自底向上分析方法,也称移进归约分析法,是推导的逆过程。
算法优先分析法(不规范归约)-规定算符之间的优先关系)
文法符号之间的优先关系有三种:大于、小于和等于。
算符优先文法(也称OPG文法),它是一个算符文法,不含?产生式,且对任意两个终结符a,b之间至多只有= ,和三种关系的一种成立。;教材P122练习: 2(1),3(1);课题:算符优先关系表和算符优先分析法
目的要求:
1.掌握算符优先关系表的构造方法;
3.掌握算符优先分析法及其局限性
教学重点:
1.符优先关系表的构造
2.算符优先分析法的实现;
教学难点 :
算符优先关系表的构造
教学课时:2
教学方法:多媒体教学
教学内容和步骤 :(如下);三、 算符优先关系表 ;1) = 关系
直接看产生式的右部,若出现了A →…ab…或A →…aBb,则a=b
2) 关系
求出每个非终结符B的FIRSTVT(B)
若A→…aB…,则?b∈FIRSTVT(B),ab
3) 关系
求出每个非终结符B的LASTVT(B)
若A→…Bb…,则?a∈LASTVT(B),ab;例:已知文法如下,计算优先关系
E’→#E#
E→E+T
E→T
T→T*F
T→F
F→P↑F
F→P
P→(E )
P→i;解: (1)先求firstVT和lastVT集
first(E’)={#}
first(E)={+,*,↑, ( , i }
first(T)={*,↑, ( , i }
first(F)={↑, ( , i }
first(P)={ ( , i };(2) 求 = 关系
E’→#E# # = #
P→(E) ( = )
文档评论(0)