编译原理习题答.ppt

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
习题及解答: 第一章 什么是编译程序?什么是解释程序?二者的区别? 1、编译程序: 是一种翻译程序,它特指把某种高级程序设计语言翻译成具体计算机上的低级程序设计语言。 2、解释程序: 解释程序 interpreter 也是一种翻译程序,将某高级语翻译成具体计算机上的低级程序设计语言. 两者区别: (1)前者有目标程序而后者无目标程序; (2)前者运行效率高而后者便于人机对话 2、叙述编译程序的逻辑结构和实现机制 根据语言和环境的不同,编译程序实现时是把 图中的各阶段划分成若干遍;典型的情况是两遍的编译程序: 第一遍 :词法分析 、语法分析和语义分析。即前端完成分析,一般与机器无关。 第二遍 :目标代码生成和目标代码优化。即后端完成综合,一般与机器有关。 每遍中的各阶段的工作是穿插进行的, 例如: 使语法分析器处于核心位置,而把词法分析器作为子程序;当语法分析需要下一个单词时,就调用词法分析器,识别一个单词。 词法 分析 语法 分析 语义 分析 代码生成 源语言 目标语言 错 误 处 理 符 号 表 管 理 优化 处理 第二章 1、P36:8 ; i+i*i 最左 E- E+T - T+T - F+T - i+T - i+T*F - i+F*F - i+i*F - i+i*i i+i*i 最右 E- E+T - E+T*F - E+T*i - E+F*i - E+i*i - T+i*i - F+i*i - i+i*i i* i+i 最左 E- T - T*F - F*F - i*F - i* E - i* E+T - i* T+T - i* F+T - i* i+T - i* i+F - i* i+i i* i+i 最右 E- T - T*F - T* E - T* E+T - T* E+F - T* E+i - T* T+i - T* F+i - T* i+i - F* i+i - i* i+i 2、试构造下述语言L的文法: L ambn |m≥0,n≥1 ; S - AB A - Aa |ε B - Bb | b or S - AB A - aA |ε B - bB | b 3、试求下述文法G Z 所定义的语言: G Z : Z- b|bB , B- bZ Z b Z bB bbZ bbb Z bB bbZ bbbB bbbbZ bbbbb Z b2n-1 , n≥1 第三章 1.P64,8 1 , 3 给出正规表达式: 以01结尾的二进制数串 分析题意,要求的是二进制小,即由0和1构成的串,并且必须以01结尾,所以本题可以分两部分去完成,一部分实现由0和1构成的任意串,一部分即01,然后将它们连接到一起就可以了,所以本题的解答是: 0|1 *01。 (3)包含奇数个1或奇数个0的二进制数串。 本题求二进制串,并且要求包含奇数个0或奇数个1,由于0和1都可以在二进制串中任何地方出现,所以本题只需要考虑一种情况,另外一种情况也可以类似求得。考虑包含奇数个0的字符串:由于只关心0的个数的奇偶数,我们可以把二进制串分成多段来考虑,第1段为二进制串的开始到第1个0为止,这一段包含1个0,并且0的前面有0个或多个1,对于剩下的二进制串按照每段包含两个0的方式去划分,即以0开始,以0结尾,中间可以有0个或多个1,和果一个二进制串被这样划分完后,剩下的部分如果全部是全1串 这些全1串在前面划分的串之间或最后 ,则该二进制串就具有奇数个0,所以该二进制串可以这样描述:以第1段 1*0 开始,后面由全1串 1* 以及包含两个0的串 01*0 组成,所以包含奇数个0的正规表达式为:1*0 1|01*0 *,本题的解答则是:1*0 1|01*0 *|0*1 0|10*1 *。 2.给定正规式 a|b *a a|b ,构造其最小DFA M。 参见书图 3.7 首先将其分为终态集 3,4 和非终态集 0,1,2 ,由于{0 a 1 ,{0}b {2}, 2 a 1 ,{2}b 2 都是集合{0,1,2}的子集,但{1}a 3 ,{1}b 4 ,属于{3,4}的子集,故将其划分为{0,2},{1}。对{3}、{4}也是如此,即最后划分为: 0,2}、{1}、 3}、 4},按顺序重新命名为1、2、3、4。 见书p57页 第四章 1. 考虑下面文法G1:S- a|^| T ,T- T,S|S 1 消去G1的左递归。(书上p69) (2)改写后的文法是否为LL 1 文法? 书P73 给出预测分析表 书P76 。 (1)消除左递归: S- a|^| T

文档评论(0)

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

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

1亿VIP精品文档

相关文档