计算机编译原理课后习题及答案详细解析

上传人:c** 文档编号:290702275 上传时间:2022-05-10 格式:DOCX 页数:7 大小:18.38KB
返回 下载 相关 举报
计算机编译原理课后习题及答案详细解析_第1页
第1页 / 共7页
计算机编译原理课后习题及答案详细解析_第2页
第2页 / 共7页
计算机编译原理课后习题及答案详细解析_第3页
第3页 / 共7页
计算机编译原理课后习题及答案详细解析_第4页
第4页 / 共7页
计算机编译原理课后习题及答案详细解析_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《计算机编译原理课后习题及答案详细解析》由会员分享,可在线阅读,更多相关《计算机编译原理课后习题及答案详细解析(7页珍藏版)》请在金锄头文库上搜索。

1、本文格式为Word版,下载可任意编辑计算机编译原理课后习题及答案详细解析 在此深情而强烈的感谢沈仲秋同学的大力支持和扶助,同时梦想本文档对 各位有些扶助。 一 1、画出编译程序的总体布局图,简述其片面的主要功能。 答案 编译程序的总框图见下图。 图 编译程序的总体布局图 其中词法分析器,又称扫描器,它采纳输入的源程序,对源程序举行词法分析,识别出一个个的单词符号,其输出结果上单词符号。 语法分析器对单词符号串举行语法分析(根据语法规矩举行推导或归纳),识别出程序中的各类语法单位,最终判断输入串是否构成语 语义分析及中间代码产生器,按照语义规矩对语法分析器归纳出(或推导出)的语法单位举行语义分析

2、并把它们翻译成确定形式的中间 优化器对中间代码举行优化处理。一般最初生成的中间代码执行效率都对比低,因此要做中间代码的优化,其过程实际上是对中间代码 目标代码生成器把中间代码翻译成目标程序。中间代码一般是一种与机器无关的表示形式,只有把它再翻译成与机器硬件相关的机器能 表格管理模块保持一系列的表格,登记源程序的各类信息和编译各阶段的进展状况。编译程序各个阶段所产生的中间结果都记录在表格 出错处理程序对展现在源程序中的错误举行处理。假设源程序有错误,编译程序应设法察觉错误,把有关错误信息报告给用户。编译程 2、计算机执行用高级语言编写的程序有哪些途径?它们之间的主要识别是什么? 答案 计算机执行

3、用高级语言编写的程序主要途径有两种,即解释与编译。 像Basic之类的语言,属于解释型的高级语言。它们的特点是计算机并不事先对高级语言举行全盘翻译,将其变为机器代码,而是每读总而言之,是边翻译边执行。 像C,Pascal之类的语言,属于编译型的高级语言。它们的特点是计算机事先对高级语言举行全盘翻译,将其全部变为机器代码,再统1.文法GS为: S-Ac|aB A-ab B-bc 写出L(GS)的全部元素。 答案 S=Ac=abc 或S=aB=abc 所以L(GS)=abc 2. 文法GN为: N-D|ND D-0|1|2|3|4|5|6|7|8|9 GN的语言是什么? 答案 GN的语言是V+。V

4、=0,1,2,3,4,5,6,7,8,9 N=ND=NDD. =NDDDD.D=D.D 3.已知文法GS: SdAB AaA|a B|bB 问:相应的正规式是什么?GS能否改写成为等价的正规文法? 答案 正规式是daa*b*; 相应的正规文法为(由自动机化简来): GS:SdA Aa|aB BaB|a|b|bC CbC|b 也可为(查看得来):GS:SdA Aa|aA|aB BbB| 4.已知文法GZ: Z-aZb|ab 写出L(GZ)的全部元素。 答案 Z=aZb=aaZbb=aaa.Z.bbb= aaa.ab.bbb L(GZ)=ab|n=1 nn 5.给出语言abc|n=1,m=0的上下

5、文无关文法。 nn m 分析 此题难度不大,主要是考上下文无关文法的根本概念。上下文无关文法的根本定义是:A-,AVn,(VnVt)*,留神关键问题答案 构造上下文无关文法如下: S-AB|A A-aAb|ab B-Bc|c 扩展 只要诸如此类的题都应按此思路举行,此题可做为一个根本代表。根本思路是这样的: n n m m 要求符合abc,由于a与b要求个数相等,所以把它们应看作一个整体单元举行,而c做为另一个单位,初步产生式就应写为S-AB,6.写一文法,使其语言是偶正整数集合。 要求: (1)允许0开头; (2)不允许0开头。 答案 (1)允许0开头的偶正整数集合的文法,留神:0E-NT|

6、G|SFM T-NT|G N-0|1|2|3|4|5|6|7|8|9 D-0|2|4|6|8 G-2|4|6|8 S-NS| F-1|2|3|4|5|6|7|8|9 M-M0|0 (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 7.已知文法G: E-E+T|E-T|T T-T*F|T/F|F F-(E)|i 试给出下述表达式的推导及语法树 (1)i; (2)i*i+i (3)i+i*i (4)i+(i+i) 答案 (1) E=T=F=i (2)E=E+T=T+T=T*F+T=F*F+T=i*

7、F+T=i*i+T=i*i+F=i*i+i (3)E=E+T=T+T=F+T=i+T=i+T*F=i+F*F=i+i*F=i+i*i (4)E=E+T=T+T=F+T=i+T=i+F=i+(E)=i+(E+T)=i+(T+T)=i+(F+T) =i+(i+T)=i+(i+F)=i+(i+i) 8.为句子i+i*i构造两棵语法树,从而证明下述文法G是二义的。 表达式-表达式运算符表达式|(表达式)|i 运算符-+|-|*|/ 答案 可为句子i+i*i构造两个不同的最右推导: 最右推导1 表达式=表达式运算符表达式 =表达式运算符i =表达式* i =表达式运算符表达式* i =表达式运算符i *

8、 i =表达式+ i * i = i + i * i 最右推导2 表达式=表达式运算符表达式 =表达式运算符表达式运算符表达式 =表达式运算符表达式运算符 i =表达式运算符表达式 * i = 表达式运算符i * i =表达式+ i * i = i + i * i 所以,该文法是二义的。 9. 文法GS为: S-Ac|aB A-ab B-bc 该文法是否为二义的?为什么? 答案 对于串abc (1)S=Ac=abc (2)S=aB=abc 即存在两不同的最右推导 所以,该文法是二义的。 10.考虑下面上下文无关文法: S-SS*|SS+|a (1)说明通过此文法如何生成串aa+a*,并为该串构造语法树。 (2) GS的语言是什么? 答案 (1)此文法生成串aa+a*的最右推导如下: S=SS*=SS*=Sa*=SS+a*=Sa+a*=aa+a* (2)该文法生成的语言是即加法和乘法的逆波兰式, 11. 令文法GE为: E-E+T|E-T T-T*F|T/F|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 。 7

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号