资源描述:
《编译原理习题解答参考》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、编译原理习题解答参考1.计算机执行用高级语言编写的程序的途径有哪些?它们之间主要区别是什么?答:计算机执行用高级语言编写的程序途径有两种:解释方式和编译方式。解释方式下直接对源程序进行解释执行,并得到计算结果,特点是计算机并不事先对高级语言进行全盘翻译将其全部变为机器代码,而是每读入一条语句,就用解释器将其翻译为机器代码,予以执行,然后再读入下一条高级语句,翻译为机器代码,再执行,如些反复,即边翻译边执行;编译方式下对源程序的执行需要经过翻译阶段和运行阶段才能得到计算结果,其特点是计算机事先对高级语言进行全盘翻译将其全部变为机器代码,再统一执行,即先翻译后执行。简单来说
2、解释方式不生成目标代码,编译方式生成目标代码。2.名字与标识符的区别是什么?答:在程序设计语言中,凡是以字母开头的有限个字母数字的序列都是标识符。当给予一个标识符确切的含义后,该标识符就叫做一个名字。标识符是一个没有意义的字符序列,而名字有确切的含义,一个名字代表一个存储单元,该单存放该名字的值。此外,名字还有属性(如类型和作用域等)。如objectint,作为标识符,它没有任何含义,但作为名字,它可能表示变量名、函数名等。3.许多编译程序在真正编译之前都要进行预处理操作,请问预处理的目的是什么?预处理主要做哪些工作?答:在源程序中有时存在多个连续的空格、回车、换行及注
3、释等编辑性字符,它们不是程序的必要组成部分,它们的意义只是改善程序的易读性和易理解性。为了降低编译程序的处理负担,许多编译程序在编译之前通过预处理工作将这些部分删除。预处理的主要工作是对源程序进行格式方面的规范化处理,如去掉注释、将回车换行变成空格、将多个空格替换为一个空格等。P354,6,7,8,9,11(1,2)4.答:256,86.(1)答:所产生的语言是:所有正整数集,且可以以0打头;0127,34,568的推导略。7.答:S→ABD
4、AD
5、DA→2
6、4
7、6
8、8
9、DB→0
10、A
11、B0
12、BAD→1
13、3
14、5
15、7
16、98.答:略。9.答:文法对于句子iiieii存在两棵不
17、同的语法树,所以该文法是二义性文法。11.(1)答:S→AB
18、AS→ABA→aAb
19、abA→aAb
20、abB→Bc
21、cB→Bc
22、c
23、ε(2)答:S→AB
24、BA→aA
25、aB→bBc
26、bc1.化简文法G[S]:S→BeB→Ce
27、AfA→Ae
28、eC→CfD→f答:S→BeB→AfA→Ae
29、e2.给出描述语言L(G)={a2nbn
30、n≥1}的2型文法。答:语言中语句的特点是a的个数是b的个数的2倍,且a全部在句子的前部分,b全部在句子的后部分,2型文法为:S→aab
31、aaSb3.构造一个文法,使其描述的语言是不能被5整除的偶整数集合。S→(+
32、-)AB
33、BA→0
34、1
35、2
36、3
37、4
38、
39、5
40、6
41、7
42、8
43、9
44、AAB→2
45、4
46、6
47、8如果不以0打头,则文法描述如下:S→(+
48、-)(AD
49、D)A→AB
50、CB→0
51、C
52、BBC→1
53、2
54、3
55、4
56、5
57、6
58、7
59、8
60、9D→2
61、4
62、6
63、
64、8P647(1),8(123)127.答:1
65、(0
66、1)*1011)NFA如下:XY53241Y1111ε0ε02)确定化:II1I00{X}{1,3,2}Φ1{1,3,2}{3,2,4}{3,2}2{3,2,4}{3,2,4}{3,2,5}3{3,2}{3,2,4}{3,2}4{3,2,5}{3,2,4,Y}{3,2}5{3,2,4,Y}{3,2,4}{3,2,5}3)DFA自己画8.(
67、1)(0
68、1)*01(2)(0
69、1
70、……
71、9)*(0
72、5)(3)(00
73、11)*(10
74、01)12.答:a图:首先用子集法确定化:IIaIbA{0}{0,1}{1}B{0,1}{0,1}{1}C{1}{0}Φ用ABC表示三个状态,则确定化后的自动机如下所示:ACBBaaab下面用分割法将其最小化:首先得到两个子集:非终态K1={A,C}和终态K2={B},由于状态A和状态C输入a后分别到达状态B和A,故状态A和状态C不等价,K1不能再分割,所以该DFA已经是最小化的DFA了。(b)答:观察原图已经是DFA了,最小化如下:首先得到两个子集:非终态和终态:{2,3,4,5}
75、和{0,1}{0,1}a={1}∈{0,1}{0,1}b={2,4}∈{2,3,4,5}所以{0,1}是不可分割的因为{2,3,4,5}a={1,3,0,5}又因为{2,4}a={0,1}∈{0,1}{3,5}a={3,5}所以该状态集划分为两个状态集{2,4}和{3,5}{2,4}b={3,5}∈{3,5}{3,5}b={2,4}∈{2,4}所以状态{2,4}和{3,5}不可分割,最终状态集划分三个状态集:{0,1}{2,4}{3,5},得到最小化的DFA如下:A320aabbbaP8123、文法G[A]如下:4、已知文法G[S]如下: