- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
清华大学编译原理第二版课后习题答案.
《编译原理》课后习题答案第三章 第3?章?文法和语言 第1?题 文法G=({A,B,S},{a,b,c},P,S)其中P?为: S→Ac|aB A→ab B→bc 写出L(G[S])的全部元素。 答案: L(G[S])={abc} 第2?题 文法G[N]为: N→D|ND D→0|1|2|3|4|5|6|7|8|9 G[N]的语言是什么? 答案: G[N]的语言是V+。V={0,1,2,3,4,5,6,7,8,9} N=ND=NDD....?=NDDDD...D=D......D 或者:允许0?开头的非负整数? 第3题 为只包含数字、加号和减号的表达式,例如9-2+5,3-1,7等构造一个文法。 答案: G[S]: S-S+D|S-D|D D-0|1|2|3|4|5|6|7|8|9 第4?题 已知文法G[Z]: Z→aZb|ab 写出L(G[Z])的全部元素。 盛威网()专业的计算机学习网站?1 《编译原理》课后习题答案第三章 答案: Z=aZb=aaZbb=aaa..Z...bbb=?aaa..ab...bbb L(G[Z])={anbn|n=1} 第5?题 写一文法,使其语言是偶正整数的集合。?要求: (1)?允许0?打头; (2)不允许0?打头。 答案: (1)允许0?开头的偶正整数集合的文法 E→NT|D T→NT|D N→D|1|3|5|7|9 D→0|2|4|6|8 (2)不允许0?开头的偶正整数集合的文法 E→NT|D T→FT|G N→D|1|3|5|7|9 D→2|4|6|8 F→N|0 G→D|0 第6?题 已知文法G: 表达式::=项|表达式+项 项::=因子|项*因子 因子::=(表达式)|i 试给出下述表达式的推导及语法树。 (5)i+(i+i) (6)i+i*i 盛威网()专业的计算机学习网站?2 《编译原理》课后习题答案第三章 答案: 表达式 表达式?+?项 因子 表达式 表达式?+?项 因子 i 项 因子 i 项 因子 i (?) (5)?表达式 =表达式+项 =表达式+因子 =表达式+(表达式) =表达式+(表达式+项) =表达式+(表达式+因子) =表达式+(表达式+i) =表达式+(项+i) =表达式+(因子+i) =表达式+(i+i) =项+(i+i) =因子+(i+i) =i+(i+i) 表达式 表达式?+?项 项?*?因子 因子?i 项 因子 i i (6)?表达式 =表达式+项 =表达式+项*因子 =表达式+项*i =表达式+因子*i =表达式+i*i =项+i*i =因子+i*i =i+i*i 盛威网()专业的计算机学习网站?3 《编译原理》课后习题答案第三章 第7?题 证明下述文法G[〈表达式〉]是二义的。 〈表达式〉∷=a|(〈表达式〉)|〈表达式〉〈运算符〉〈表达式〉 〈运算符〉∷=+|-|*|/ 答案: 可为句子a+a*a?构造两个不同的最右推导: 最右推导1?〈表达式〉〈表达式〉〈运算符〉〈表达式〉 〈表达式〉〈运算符〉a 〈表达式〉*?a 〈表达式〉〈运算符〉〈表达式〉*?a 〈表达式〉〈运算符〉a?*?a 〈表达式〉+?a?*?a a?+?a?*?a 最右推导2?〈表达式〉〈表达式〉〈运算符〉〈表达式〉 〈表达式〉〈运算符〉〈表达式〉〈运算符〉〈表达式〉 〈表达式〉〈运算符〉〈表达式〉〈运算符〉?a 〈表达式〉〈运算符〉〈表达式〉?*?a 〈表达式〉〈运算符〉a?*?a 〈表达式〉+?a?*?a a?+?a?*?a 盛威网()专业的计算机学习网站?4 《编译原理》课后习题答案第三章 第8?题 文法G[S]为: S→Ac|aB A→ab B→bc 该文法是否为二义的?为什么? 答案: 对于串abc (1)S=Ac=abc?(2)S=aB=abc 即存在两不同的最右推导。所以,该文法是二义的。 或者: 对输入字符串abc,能构造两棵不同的语法树,所以它是二义的。 S a?B b?c S A?c a?b 第9?题 考虑下面上下文无关文法: S→SS*|SS+|a (1)表明通过此文法如何生成串aa+a*,并为该串构造语法树。 S S?S?* S?S?+?a a?a (2)G[S]的语言是什么? 答案: (1)此文法生成串aa+a*的最右推导如下 S=SS*=SS*=Sa*=SS+a*=Sa+a*=aa+a* (2)该文法生成的语言是:*和+的后缀表达式,即逆波兰式。 盛威网()专业的计算机学习网站?5 《编译原理》课后习题答案第三章 第10?题 文法S→S(S)S|ε (1)?生成的语言是什么? (2)?该文法是二义的吗?说明理由。 答案: (1)?嵌套的括号 (2)?是二义的,因为对于()()可以构造两棵不同的语法树。 第11?题 令文法G[E]为: E→T|E+T|E
文档评论(0)