编译原理习题复习资料.ppt

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

文档评论(0)

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

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

1亿VIP精品文档

相关文档