[工学]第4章编译原理.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]第4章编译原理

计算表达式文法FIRST(X)集举例 文法G为: E →T E’ E→+ T E|ε T →F T T→* F T|ε F →( E )|i 先找以终结符开头的产生式 FIRST( F ) = { ( ,i } FIRST( E ) = { + ,ε} FIRST( T ) = { * , ε} 再找右部以非终结符开头的产生式 FIRST( T ) = FIRST( F ) FIRST( E ) = FIRST( T ) = { ( ,i } 4.5 预测分析程序 计算FIRST(X)集合课堂练习 ={a,c,d,q} 文法G为: S →Ap|Bq A →a|cA B →dB|ε 先找以终结符开头的产生式 FIRST(A)={ a ,c } FIRST(B)={ d ,ε} 再找右部以非终结符开头的产生式 FIRST(S)= FIRST(A)-{ε} ∪FIRST(B)-{ε} 因为B==ε ε∈FIRST(S),因为S==*ε ∪FIRST(q) 4.5 预测分析程序 计算表达式文法候选式FIRST(α)集举例 候选式的FIRST集 FIRST(TE’)=FIRST(T)={(,i} FIRST(+TE’)={+} FIRST(FT’)=FIRST(F)={(,i} FIRST(*FT’)={*} FIRST((E))={(} FIRST(i)={i} FIRST(ε)={ε} 文法G为: E→TE’ E→+TE’|ε T→FT’ T→*FT’|ε F→(E)|i 非终结符的FIRST集 FIRST(E)={(,i} FIRST(E)={+,ε} FIRST(T)={(,i} FIRST(T)={*,ε} FIRST(F)={(,i} 4.5 预测分析程序 计算FIRST(α)集合课堂练习 文法G为: S →Ap|Bq A →a|cA B → dB|ε 非终结符的FIRST集FIRST(S)={a,c,d,q} FIRST(A)={a,c} FIRST(B)={d,ε} 候选式的FIRST集 FIRST(Ap)=FIRST(A)={a,c} FIRST(Bq)=FIRST(B)-{ε} ∪FIRST(q) ={d,q} FIRST(a)={a} FIRST(cA)={c} FIRST(dB)={d} FIRST(ε)={ε} 4.5 预测分析程序 FOLLOW(A)的计算法 FOLLOW(A)= {a|S==*…Aa…,a∈VT } 若S==*…A,则#∈FOLLOW(A) 重复以下计算,直到每个FOLLOW(A)不再增大为止: 1)将 # 加入到 FOLLOW( S )中 例 # ∈ FOLLOW( E ) 2)若A→αBβ, 则将FIRST(β)-{ε}加入FOLLOW(B) 例 E→TE’ FIRST(E’)-{ε}加入FOLLOW(T) T→FT’ FIRST(T’)-{ε}加入FOLLOW(F) 4.5 预测分析程序 3) 若 A → αB ,或 A → αBβ, 且 β==*ε,即ε∈ FIRST(β),A≠B 则将FOLLOW(A)所有元素加入FOLLOW(B) ε 例 E →T E’ FOLLOW(E)加入FOLLOW(E’) E →T E’ E→ε FOLLOW(E)加入FOLLOW(T) T →F T’ FOLLOW(T)加入FOLLOW(T’) T →F T’ FOLLOW(T)加入FOLLOW(F) T→ε 4.5 预测分析程序 计算表达式文法的FOLLOW集举例 #∈FOLLOW(开始符号) 对每个非终结符查看其在产生式右边的出现 G:E→TE’ E→+TE’|ε T→FT’ T→*FT’|ε F→(E)|i #∈FOLLOW(E) =FIRST(E’)-{ε} FOLLOW(T) ∪FOLLOW(E) ={+,),#} FOLLOW(F) =FIRST(T’)-{ε} ∪FOLLOW(T) ={*,+,),#} FOLLOW(E) ={),#} FOLLOW(E) =FOLLOW(E) ={),#} FOLLOW(T) =FOLLOW(T) ={+,),#} 相同不需处理 计算FOLLOW(A)集合课堂练习 文法G为: S →Ap|Bq A →a|cA B → dB|ε 非终结符的FIRST集FIRST(S)={a,c,d,q} FIRST(A)={a,c} FIRST(B)={d,ε} 非终结符FOLLOW集 FOLLOW(S)={#} FOLLOW(A)=FIRST(p)-{ε}

文档评论(0)

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

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

1亿VIP精品文档

相关文档