第6章_算符优先分析.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 求 “ = ” 检查每一条规则,若有A→ …ab…或 A→…aBb…, 则 a=b 求“ ”、“ ”,复杂一些,需定义两个集合 FIRSTVT( B )={b|B?b…或B?Cb…,b∈VT, C∈VN} + + LASTVT( B )={b|B?…b或B?…bC,b∈VT, C∈VN} + + 算符优先关系表的构造 * 对形如A→…aB…的产生式,则对b∈FIRSTVT(B)有: ab 求“ ”、“ ” 对形如A→…Bb…的产生式,则对a∈LASTVT(B)有: ab * 【例】试构造FIRSTVT集和LASTVT集 E→#E# E→E+T E→T T→T*F T→F F→(E) F→i 根据定义 FIRSTVT(E)={#} FIRSTVT(E)={+,*,i,(} FIRSTVT(T)={*,i,(} FIRSTVT(F)={i,(} LASTVT(E)={#} LASTVT(E)={+,*,i,)} LASTVT(T)={*,i,}} LASTVT(F)={i,)} * 检查每一条规则,若有U::=…ab…或 U → …aVb…, 则a b ??   求出每个非终结符B的FIRSTVT(B),在如下形式的产生式A→…aB… 中,对每一 b∈FIRSTVT(B),有a ? ?b成立。 计算每个非终结符B的LASTVT(B),在如下形式的产生式A→…Bb… 中,对每一a∈LASTVT(B),有a ??b成立。 优先关系表的构造算法 * for 每条产生式B→X1X2…Xn for(i=1;in;i++) { if ( Xi和Xi+1都是终结符) Xi=Xi +1; if ( i= n-2 且 Xi和Xi+2为终结符, Xi+1为非终结符) Xi=X= Xi+2;? if (Xi为终结符而Xi+1为非终结符) for FIRSTVT(Xi+1)中的每个元素b Xib; if ( Xi为非终结符而Xi+1为终结符) for LASTVT(Xi)中的每个元素b bXi+1; } 优先关系表的构造算法 * 找形如:A→…aB…的产生式 #E:则#FIRSTVT(E) +T: 则+FIRSTVT(T) *F: 则*FIRSTVT(F) (E: 则 (FIRSTVT(E) 找形如:A→…Bb…的产生式 E# ,则 LASTVT(E)# E+ ,则 LASTVT(E)+ T* ,则 LASTVT(T)* E) ,则 LASTVT(E)) 找形如A → …ab…或 A → …aVb #=#,(=) 根据定义 FIRSTVT(E)={#} FIRSTVT(E)={+,*,i,(} FIRSTVT(T)={*,i,(} FIRSTVT(F)={i,(} LASTVT(E)={#} LASTVT(E)={+,*,i,)} LASTVT(T)={*,i,}} LASTVT(F)={i,)} * 【例】试构造例中文法G[E]的优先关系表。 可根据优先关系表判断该文法是否为算符优先文法 如果表中元素不存在冲突,即文法的任何终结符至多只存在一种优先关系,则该文法是一个算符优先文法 * 设有OPG文法句型为: #N1a1N2a2…NnanNn+1# 其中Ni为非终结符(可以为空), ai为终结符 定理:一个OPG句型的最左素短语是描述下列条件的最左子串:    aj-1Njaj…NiaiNi+1 aj-1aj aj=aj+1, aj+1= aj+2 ,…, ai-2= ai-1,ai-1= ai ai ai+1 算符优先分析法如何确定当前句型的最左素短语? * 注意:出现在aj左端和a i右端的非终结符号一定属于 这个素短语,因为我们的运算是中缀形式给出 的(OPG文法的特点)NaNaNaN ?NaWaN 例: 文法G[E] E::=E+T|T T::=T*F|F F::=(E)|i 分析文法的句型T+T*F+i * 步骤 句型 关系 最左子串 规约符号 1 2 3 4 #T+T*F+i# #T+T+i# #E+i# #E+F# #+*+i# #++i# #+i# #+# T*F T+T i E+F T E E F 例: 文法G[E] E::=E+T|T T::=T*F|F F::=(E)|i

文档评论(0)

wxc6688 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档