编译原理答案 清华大学出版社

所需积分/C币:50 2011-12-20 23:00:18 2.53MB PDF
收藏 收藏 8
举报

编译原理课后答案,各种详细。解释下列术语:(1)编译程序(2)源程序(3)目标程序(4)编译程序的前端(5)后端(6)遍
《编译原理》课后习题答案第一章 是哪种方式,其加工结果都是源程序的执行结果。目前很多解释程序采取上述两种方式的综 合实现方案,即先把源程序翻译成较容易解释执行的某种中间代码程序,然后集中解释执行 中闩代码程序,最后得到运行结果 义上讲,编译程序和解释程序都属于翻译稈序,但它们的翻译方式不同,解释程序是 边翻译(解释〕边执行,不产生目标代码,输岀源程序的运行结果。而编译程序只负责扣源 程序翻译成目标程序,输岀与源程序等价的目标程序,而目标程序的执行仼务由操作系统来 完成,即只翻译不执行。 第题 对下列错误信息,请指出可能是编译的哪个阶段(词法分析、语法分析、语义分析、 代码生成)报告的 没有匹配的 ()数组下标越界 ()使用的函数没有定义 ()在数中出现非数字字符 答案: ()语法分析 ()语义分析 ()语法分析 ()词法分析 第5题 编译程序大致有哪几种开发技术? 答案 ()自编译:用某一高级语言书写其本身的编译程序。 ()交叉编译:机器上的编译稈序能产生:机器上的目标代码。 ()自展:首先确定一个非常简单的核心语言,用机器语言或汇编语言书写出它的编译 程序,再把语言扩充到,此时 并用编写的编译程序,再把语 言扩充为,有 并用编写的编译程序,……,如此逐步护展下去, 好似滚雪球一样,直到我们所要求的编译程序。 ()移植:将机器上的某高级语言的编译程序搬到机器上运行 盛威网( )专业的计算机学习网站 《编译原理》课后习题答案第一章 第6题 计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么? 答案 计算机执行用高级语言编写的程序主要途径有两种,即解释与编译。 像 Basic之类的语言,属于解释型的高级语言。它们的特点是计算机不事先对高级语 言进行全盘翻译,将其变为机器代码,而是每读入一条高级语句,就用解释器将其翻译为 条机器代码,予以执行,然后再读入下一条高级语句,翻译为机器代码,再执行,如此反复 总而言之,是边翻译边执行。 像C, Pascal之类的语言,属于编译型的高级语言。它们的特点是计算机事先对高级语 言进行全盘翻译,将其全部变为机器代码,再统一执行,即先翻译,后执行。从速度上看, 编译型的高级语言比解释型的高纵语言更快。 盛威网( )专业的计算机学习网站 《编译原理》课后习题答案第二章 第章 编译程序的实现 第题 语言允许过程嵌套定义和递归调用,试问它的编译程序如何解决运行时的存储管 理 答案 语言允许过程嵌套定乂和递归调用,它的编译程序在运行时采用了栈式动态存储 管理。(数组 存放的只读目标程序,它在运行时不改变。)运行时的数据区是由 解释稈序定乂的一维整型数组,解释执行时对数据空间的管理遵循后进先出规则,当每 个过程包括主程序被调用时,才分配数据空间,退出过程时,则所分配的数据空间被释放。 应用动态链和静态链的方式分别解决递归调用和非局部变量的引用问题 第题 若编译程序运行时的存储分配策略采用栈式动态分配,并用动态链和静态链的方 式分别解决递归调用和非局部变量的引用问题,试写出下列程序执行到赋值语句:时 运行栈的布局示意图。 盛威网( )专业的计算机学习网站 《编译原理》课后习题答案第二章 答案: 程序执行到赋值语句 时运行栈的布局示意图为: 聊 Q的局变量区 R的局部变量区 DL □s的局部变量区 IL SL F的局奇变量区 RA SL 主程序变量区 0 第题 写出题中当程序编译到的过程体时的名字表的内容。 答案 题中当程序编译到的过程伓时的名字表的内容为: 过程的入口(待填) 盛威网( )专业的计算机学习网站 《编译原理》课后习题答案第二章 过程的入口 过程的入口(待填) 过程的入口 注意:和是并列的过程,所以定义的变量被覆盖 第题 指出栈顶指针,最新活动记录基地址指针,动态链指针,静态链指针与返 回地址的用途。 答案: 栈顶指针,最新活动记录基地址指针,动态链指针,静态链指针与返回地址 的用途说明如下 栈顶寄存器指出了当前栈中最新分配的单元也是数组的下标 :基址寄存器,指向每个过程被调用时,在数据区中给它分配的数据段起始地址, 也称基地址 静态链,指向定义该过程的直接外过程(或主程序)运行吋最新数据段的基地址, 用以引用非局部(包围它的过程)变量时,寻找该变量的地址。 动态链,指向调用该过程前正在运行过程的数据段基地址,用以过程执行结束释 放数据空间时,恢复调用该过程前运行栈的状态。 返回地址,记录调用该过程时目标稈序的断点,即调用过程指令的下一条指令的 地址,用以过程执行结束后返回调用过程时的下条指令继续执行。 在每个过程被调用时在栈顶分配个联系单元,用以存放 第题 编译程序所产生的目标代码是一种假想栈式计算机的汇编语言,请说明该汇编语 言中下列指令各自的功能和所完成的操作 (1) (2) (3) 答案: 编译程序所产生的目标代码中有条非常重要的特殊指令,这条指令在中 的位置和功能以及所完成的操作说明如下 盛威网( )专业的计算机学习网站 《编译原理》课后习题答案第二章 在过程目标程序的入口处,开辟个单元的数据段。为局部变量的个数。 在过程目标程序的出口处,释放数据段(退栈),恢复调用该过程前正在运行的过程的 数据段基址寄行器和栈顶寄存器的值,并将返回地址送到指令地址寄存器中,以使 调用前的程序从断点开始继续执行。 调用过程,完成填写静态链、动态链、返回地址,给岀被调用过程的基地址值,送入基 址寄存器中,目标稈序的入口地址的值送指令地址寄有器中,使指令从开始执行。 第题 给出对语言作如下功能扩充时的语法图和 的语法描述。 扩充条件语句的功能使其为: 〈条件 语句〉〈语句 扩充 语句为 语句〉;〈语句〉 〈条件 答案: 对语言作如下功能扩充时的语法图和 的语法描述如下: 扩充条件语句的语法图为: 国<四)画世) 的语法描述为:〈条件语句〉〈条件〉〈语句〉〈语句〉 扩充 语句的语法图为: 配工 的语法描述为:〈重复语句〉 〈语句〉;〈语句〉 〈条什 盛威网( )专业的计算机学习网站 《编译原理》课后习题答案第三章 第3章文法和语言 第1题 文法G=({A,B,S},{a,b,c},PS)其中P为 S→AcaB A→ab B→→be 写出L(G|S的全部元素。 答案: L(GISDfabc3 第2题 文法GN为: N→D|ND D→0121314156789 GN的语言是什么? 答案 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+DS-DD D->01231456789 第4题 已知文法G[ Z→ azblab 写出L(GZD的全部元素。 盛威网( Www.snwel,com)专业的计算机学习网站 《编译原理》课后习题答案第三章 答案: Z一>aZb→> aaBb→>aa.,Z.bbb→>aaa.,ab.bbb L(G[z])={abn>=1} 第5题 写一文法,使其语言是偶正整数的集合。要求: (1)允许0打头; (2)不允许0打头。 答案 (1)允许0开头的偶正整数集合的文法 E→NTD T→NTD N→D13579 D→02468 (2)不允许0开头的偶正整数集合的文法 E→→NID T→FTG N→小D|131579 →21468 F→N0 G→DO 第6题 已知文法G: <表达式>:=<项><表达式>+<项> 项>:=<因子>|<项>*<因子> <因子>:=(<表达式>)|i 试给出下述表达式的推导及语法树。 (5)i+(i+i) (6)i+i*i 盛威网( Www.snwel,com)专业的计算机学习网站

...展开详情
试读 127P 编译原理答案 清华大学出版社
立即下载 低至0.43元/次 身份认证VIP会员低至7折
抢沙发
一个资源只可评论一次,评论内容不能少于5个字
关注 私信 TA的资源
上传资源赚积分,得勋章
最新推荐
编译原理答案 清华大学出版社 50积分/C币 立即下载
1/127
编译原理答案 清华大学出版社第1页
编译原理答案 清华大学出版社第2页
编译原理答案 清华大学出版社第3页
编译原理答案 清华大学出版社第4页
编译原理答案 清华大学出版社第5页
编译原理答案 清华大学出版社第6页
编译原理答案 清华大学出版社第7页
编译原理答案 清华大学出版社第8页
编译原理答案 清华大学出版社第9页
编译原理答案 清华大学出版社第10页
编译原理答案 清华大学出版社第11页
编译原理答案 清华大学出版社第12页
编译原理答案 清华大学出版社第13页
编译原理答案 清华大学出版社第14页
编译原理答案 清华大学出版社第15页
编译原理答案 清华大学出版社第16页
编译原理答案 清华大学出版社第17页
编译原理答案 清华大学出版社第18页
编译原理答案 清华大学出版社第19页
编译原理答案 清华大学出版社第20页

试读结束, 可继续阅读

50积分/C币 立即下载 >