编译原理第3章文法和语言.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文档。上传文档
查看更多
编译原理第3章文法和语言

第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])的全部元素。 答案: 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 答案: (5)表达式 =表达式+项 =表达式+因子 =表达式+(表达式) =表达式+(表达式+项) =表达式+(表达式+因子) =表达式+(表达式+i) =表达式+(项+i) =表达式+(因子+i) =表达式+(i+i) =项+(i+i) =因子+(i+i) =i+(i+i) (6)表达式 =表达式+项 =表达式+项*因子 =表达式+项*i =表达式+因子*i =表达式+i*i =项+i*i =因子+i*i =i+i*i 表达式 表达式+项 因子 表达式 表达式+项 因子 i 项 因子 i 项 因子 i () 表达式 表达式+项 项*因子 因子i 项 因子 i i 第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 第8题 文法G[S]为: S→Ac|aB A→ab B→bc 该文法是否为二义的?为什么? 答案: 对于串abc (1)S=Ac=abc(2)S=aB=abc 即存在两不同的最右推导。所以,该文法是二义的。 或者: 对输入字符串abc,能构造两棵不同的语法树,所以它是二义的。 第9题 考虑下面上下文无关文法: S→SS*|SS+|a (1)表明通过此文法如何生成串aa+a*,并为该串构造语法树。 (2)G[S]的语言是什么? 答案: (1)此文法生成串aa+a*的最右推导如下 S=SS*=SS*=Sa*=SS+a*=Sa+a*=aa+a* (2)该文法生成的语言是:*和+的后缀表达式,即逆波兰式。 S A c a b S a B b c S S S* S S+a a a 第10题 文法S→S(S)S|ε (1)生成的语言是什么? (2)该文法是二义的吗?说明理由。 答案: (1)嵌套的括号 (2)是二义的,因为对于()()可以构造两棵不同的语法树。 第11题 令文法G[E]为: E→T|E+T|E-T T→F|T*F|T/F F→(E)|i 证明E+T*F是它的一个句型,指出这个句型的所有短语、直接短语和句柄。 答案: 此句型对应语法树如右,故为此文法一个句型。 或者:因为存在推导序列:E=E+T=E+T*F,所 以E+T*F句型 此句型相对于E的短语有:E+T*F;相对于T的短语 有T*F 直接短语为:T*F 句柄为:T*F 第13题 一个上下文无关文法生成句子abbaa的推导树如下: (1)给出串abbaa最左推导、最右推导。 (2)该文法的产生式集合P可能有哪些元素? (3)找

文档评论(0)

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

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

1亿VIP精品文档

相关文档