作业解答第4章.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
作业解答第4章

4.1 对下面文法,设计递归下降分析程序。 S→aAS|(A) , A→Ab|c 解:首先将左递归去掉,将规则A→Ab|c 改成 A→c{b} 非终结符号S的分析程序如下: 非终结符号A的分析程序如下: 4.2 设有文法G[Z]: Z∷=(A) , A∷=a|Bb , B∷=Aab 若采用递归下降分析方法,对此文法来说,在分析过程中,能否避免回溯?为什么? 解:若采用递归下降分析方法,对此文法来说,在分析过程中不能避免回朔。因为规则A∷=a|Bb和规则B∷=Aab构成了间接左递归,不满足实现没有回溯的递归下降分析方法的条件(1)(书P67),且规则 A: := a|Bb,FIRST(a)={a},FIRST(Bb)={a},即此规则候选式的首符号集有相交,不满足实现没有回溯的递归下降分析方法的条件(2)(书P67),在分析过程中,将造成回溯。 改写文法可避免回溯: 将规则B∷=Aab代入规则A∷=a|Bb得:A∷=a|Aabb,再转换成:A∷=a{abb},可避免回溯。 4.3 若有文法如下,设计递归下降分析程序。 语句→语句赋值语句|ε 赋值语句→ID=表达式 表达式→项|表达式+项|表达式-项 项→因子|项*因子|项/因子 因子→ID|NUM|(表达式) 解:首先,去掉左递归 语句→语句赋值语句|ε改为: 语句→{赋值语句} 表达式→项 | 表达式 + 项 | 表达式 - 项 改为: 表达式→项{(+ | -)项} 项→因子 | 项 * 因子 | 项 / 因子 改为: 项→因子{(* | /)因子} 则文法变为: 语句→{赋值语句} 赋值语句→ID=表达式 表达式→项{(+ | -)项} 项→因子{(* | /)因子} 因子→ID|NUM|(表达式) 非终结符号 语句 的分析程序如下: 非终结符号 赋值语句 的分析程序如下: 非终结符号 表达式 的分析程序如下: 非终结符号 项 的分析程序如下: 非终结符号 因子 的分析程序如下: 4.4 有文法G[A]:A::=aABe|ε,B::=Bb|b (1)求每个非终结符号的FOLLOW集。 (2)该文法是LL(1)文法吗? (3)构造LL(1)分析表。 解: (1) FOLLOW(A)=First(B)∪{#}={b,#} FOLLOW(B)={e,b} (2) 该文法中的规则B::=Bb|b为左递归,因此该文法不是LL(1)文法 (3) 先消除文法的左递归(转成右递归),文法变为:A::=aABe|ε,B::=bB’,B’=bB’|ε,该文法的LL(1)分析表为: a e b # A POP , PUSH(eBAa) POP POP B POP , PUSH(B’b) B’ POP POP , PUSH(B’b) a POP, NEXTSYM e POP, NEXTSYM b POP, NEXTSYM # ACCEPT 更常用且简单的LL(1)分析表: a e b # A A→aABe A→ε A→ε B B→bB’ B’ B’→ε B’→bB’ 4.5 若有文法A→(A)A|ε (1)为非终结符A构造FIRST集合和FOLLOW集合。 (2)说明该文法是LL(1)的文法。 解: (1)FIRST(A)={(, ε} FOLLOW(A)={),#} (2) 该文法不含左递归; FIRST((A)A)={(},FIRST(ε)={ε},FIRST((A)A)∩FIRST(ε)=Φ, 且FOLLOW(A)={),#},FIRST((A)A)∩ FOLLOW(A) =Φ, 因此,该文法满足LL(1)文法的条件,是LL(1)文法。 4.6 利用分析表4-1,识别以下算术表达式,请写出分析过程。 (1)i+i*i+i (2)i*(i+i+i) 解: (1)i+i*i+i 步骤 分析栈 余留输入串 分析表元素 所用产生式 1 #E i+i*i+i# POP,PUSH(E’T) E→TE’ 2 #E’T i+i*i+i# POP,PUSH(T’F) T→FT’ 3 #E’T’F i+i*i+i# POP,PUSH(i) F→i 4 #E’T’i i+i*i+i# POP,NEXTSYM 5 #E’T’ +i*i+i# POP T’→ε 6 #E’ +i*i+i# POP,PUSH(E’T+) E’→+TE’ 7 #E’T+ +i*i+i# POP,NEXTSYM 8 #E’T i*i+i# POP,PUSH(T’F) T→FT’ 9 #E’T’F i*i+i# POP,PUSH(i) F→i 10 #E’T’i i*i+i# PO

文档评论(0)

zilaiye + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档