网站大量收购独家精品文档,联系QQ:2885784924

编译原理(王力红 著)习题答案.docVIP

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
习题1 1-1 说明解释程序和编译程序的区别。 答: 通常,翻译程序可分为解释程序、汇编程序和编译程序。 所谓解释程序是一种将源程序按动态顺序逐句进行分析解释编译,边解释边执行、不产生目标程序的一种翻译程序。这种翻译程序结构简单、占用内存较少,易于在执行过程中对源程序进行修改,但工作效率低,只适合一些规模较小的语言,如解释BASIC等。 而编译程序(也称编译器)是源语言为某种高级语言,目标语言为相应于某一计算机的汇编语言或机器语言的一种翻译程序。这种编译程序将源程序翻译成执行时可完全独立于源程序的经优化的目标语言代码,因而运行效率高。更为重要的是,它使工作于高级语言环境下的程序设计人员,不必考虑与机器有关的繁琐细节,却能完成机器语言所能完成的绝大多数工作。 在解释方式下,并不生成目标代码,而是直接执行源程序本身。这是编译方式与解释方式的根本区别。 1-2 简述高级语言程序按编译方式的执行过程。 答: 高级语言程序按编译方式的执行过程一般可分为两个阶段:编译阶段和运行阶段。其中,编译阶段完成由源程序到目标程序的翻译,若目标程序是汇编语言程序,还需再通过汇编程序进一步翻译成机器语言程序。而运行阶段的任务是在目标计算机上执行编译阶段所得到的目标程序。但目标程序往往不能由计算机直接执行,一般还应有运行系统进行配合,这个运行系统包括链接程序和由这样一些子程序组成的系统库,如标准函数计算子程序、数组动态存储子程序等。由链接程序将目标程序和系统库连接在一起,最终形成一个可执行程序,在计算机上直接执行。 1-3 什么是编译系统? 答: 通常将编译程序、链接程序、系统库、源程序编辑程序等软件组成的系统称为编译系统。 1-4 编译过程通常有哪几个阶段?简述各阶段的主要任务。 答: 程序设计语言的编译过程一般可以分为词法分析、语法分析、语义分析和中间代码生成、代码优化、目标代码生成5个阶段。 词法分析是编译过程的第一个阶段。该阶段的主要任务是从构成源程序的字符串中识别出一个个具有独立意义的最小语法单位——单词,并指出其属性。 语法分析阶段的主要任务是在词法分析的基础上,根据相应程序设计语言的语法规定进行语法分析,在源程序的单词串中识别出各种语法成分,如“程序”、“语句”、“表达式”等,并确定整个输入串是否构成一个语法上正确的程序,检查出语法错误。 语义分析和中间代码生成阶段的主要任务有两个,其一是进行相应的语义检查,以保证源程序在语义上的正确性,其二是确定各语法成分的含义、用途,收集类型信息,确定应进行的运算和操作,并将其转换为某种内部表示形式,即生成中间代码。 代码优化阶段是编译过程的最后阶段。这一阶段的任务是对上一阶段产生的中间代码进行变换和改造,以期获得高质量的目标代码。 目标代码生成阶段的任务是把优化后的中间代码转换成特定机器上的绝对指令代码,或可重定位的指令代码,或汇编指令代码。 由于这种转换工作与具体的目标计算机的系统结构及其指令系统有关,涉及各种变量的存储空间分配、寄存器的调度、各种硬件功能部件的使用等,因此工作比较复杂。 1-5 什么是编译程序的遍?对编译程序来说,遍多和遍少各有什么优缺点? 所谓一遍(pass)或一趟,是指在编译过程中对源程序或与之等价的中间程序从头到尾扫描一遍,并将其转换成下一个中间程序的整个过程。 答: 编译程序按其扫描次数可分为单遍(趟)扫描和多遍(趟)扫描。采用多遍扫描方式,各遍的工作分工明确,便于多人合作开发,缩短开发周期,同时节省运行时的内存空间,易于提高目标程序的质量。但各遍之间的重复工作多,编译效率低。而单遍(趟)扫描的编译程序,编译速度快、效率高,但运行时占用空间大,目标程序质量低。 1-6 一个最简单的编译程序至少要包含哪几个组成部分(程序)? 答: 至少要包含词法分析程序、语法分析程序、目标代码生成程序等3个组成部分(程序)。 习题2 已知算术表达式文法G[E]: E→E+T | T T→T*F | F F→(E) | i 求符号串i*i的最左推导、最右推导、最左归约、最右归约。 解: 最左推导:E=T=T*F=F*F=i*F=i*i 最右推导:E=T=T*F=T*i=F*i=i*i 最左归约:i*i = F*i = T*i = T*F = T= E 最右归约:i*i = i*F = F*F = T*F = T= E 2-4 设有文法G[A]: A→bA | cc 判断符号串bbc,bbbcc,bbA,bbAc是否是G[A]的句型或句子。 解答: ∵ A=bA=bbA=bbbA=bbbcc ∴ bbA是G[A]的句型,bbbcc是G[A]的句子, bbAc不是G[A]的句型,bbc不是G[A]的句子。 2-5 分别求下列文法所描述的语言: ① G1[S]: S→aaSbb |

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档