编译原理习题及答案1~.ppt
《编译原理习题及答案1~.ppt》由会员分享,可在线阅读,更多相关《编译原理习题及答案1~.ppt(274页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 1编译原理教程编译原理教程习题解析习题解析第一章第一章 绪绪 论论第二章第二章 词词 法法 分分 析析第三章第三章 语语 法法 分分 析析2 2编译原理教程编译原理教程习题解析习题解析第一章绪论1.1完成下列选择题:(1)下面叙述中正确的是。A编译程序是将高级语言程序翻译成等价的机器语言程序的程序B机器语言因其使用过于困难,所以现在计算机根本不使用机器语言C汇编语言是计算机唯一能够直接识别并接受的语言D高级语言接近人们的自然语言,但其依赖具体机器的特性是无法改变的3 3编译原理教程编译原理教程习题解析习题解析(2)将编译过程分成若干“遍”是为了。A提高程序的执行效率B使程序的结构更加清晰C
2、利用有限的机器内存并提高机器的执行效率D利用有限的机器内存但降低了机器的执行效率(3)构造编译程序应掌握。A源程序B目标语言C编译方法DAC项4 4编译原理教程编译原理教程习题解析习题解析(4)编译程序绝大多数时间花在上。A出错处理B词法分析B目标代码生成 D表格管理(5)编译程序是对。A汇编程序的翻译B高级语言程序的解释执行C机器语言的执行D高级语言的翻译5 5编译原理教程编译原理教程习题解析习题解析【解答】(1)编译程序可以将用高级语言编写的源程序转换成与之在逻辑上等价的目标程序,而目标程序可以是汇编语言程序或机器语言程序。故选A。(2)分多遍完成编译过程可使整个编译程序的逻辑结构更加清晰
3、。故选B。(3)构造编译程序应掌握源程序、目标语言和编译方法这三方面内容。故选D。6 6编译原理教程编译原理教程习题解析习题解析(4)编译各阶段的工作都涉及到构造、查找或更新有关表格,即编译过程的绝大部分时间都用在造表、查表和更新表格的事务上。故选D。(5)由(1)可知,编译程序实际上实现了对高级语言程序的翻译。故选D。7 7编译原理教程编译原理教程习题解析习题解析1.2计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么?【解答】计算机执行用高级语言编写的程序主要有两种途径:解释和编译。在解释方式下,翻译程序事先并不采用将高级语言程序全部翻译成机器代码程序,然后执行这个机器代码
4、程序的方法,而是每读入一条源程序的语句,就将其解释(翻译)成对应其功能的机器代码语句串并执行,然后再读入下一条源程序语句并解释执行,而所翻译的机器代码语句串在该语句执行后并不保留。这种方法是按源程序中语句的动态执行顺序逐句解释(翻译)执行的,如果一语句处于一循环体中,则每次循环执行到该语句时,都要将其翻译成机器代码后再执行。8 8编译原理教程编译原理教程习题解析习题解析在编译方式下,高级语言程序的执行是分两步进行的:第一步首先将高级语言程序全部翻译成机器代码程序,第二步才是执行这个机器代码程序。因此,编译对源程序的处理是先翻译,后执行。从执行速度上看,编译型的高级语言比解释型的高级语言要快,但
5、解释方式下的人机界面比编译型好,便于程序调试。这两种途径的主要区别在于:解释方式下不生成目标代码程序,而编译方式下生成目标代码程序。9 9编译原理教程编译原理教程习题解析习题解析1.3请画出编译程序的总框图。如果你是一个编译程序的总设计师,设计编译程序时应当考虑哪些问题?【解答】编译程序总框图如图1-1所示。作为一个编译程序的总设计师,首先要深刻理解被编译的源语言其语法及语义;其次,要充分掌握目标指令的功能及特点,如果目标语言是机器指令,还要搞清楚机器的硬件结构以及操作系统的功能;第三,对编译的方法及使用的软件工具也必须准确化。总之,总设计师在设计编译程序时必须估量系统功能要求、硬件设备及软件
6、工具等诸因素对编译程序构造的影响。10 10编译原理教程编译原理教程习题解析习题解析图图1-1 编译程序总框图编译程序总框图 11 11编译原理教程编译原理教程习题解析习题解析第二章词法分析2.1完成下列选择题:(1)词法分析所依据的是。A语义规则B构词规则C语法规则D等价变换规则(2)词法分析器的输入是。A单词符号串B源程序C语法单位D目标程序12 12编译原理教程编译原理教程习题解析习题解析(3)词法分析器的输出是。A单词的种别编码B单词的种别编码和自身的值C单词在符号表中的位置D单词自身值(4)状态转换图(见图2-1)接受的字集为_。A以0开头的二进制数组成的集合B以0结尾的二进制数组成
7、的集合C含奇数个0的二进制数组成的集合D含偶数个0的二进制数组成的集合13 13编译原理教程编译原理教程习题解析习题解析图图2-1 习题习题2.1的的DFA M 14 14编译原理教程编译原理教程习题解析习题解析(5)对于任一给定的NFAM,一个DFAM,使L(M)=L(M)。A一定不存在 B一定存在C可能存在D可能不存在(6)DFA适用于。A定理证明 B语法分析C词法分析D语义加工15 15编译原理教程编译原理教程习题解析习题解析(7)下面用正规表达式描述词法的论述中,不正确的是。A词法规则简单,采用正规表达式已足以描述B正规表达式的表示比上下文无关文法更加简洁、直观和易于理解C正规表达式描
8、述能力强于上下文无关文法D有限自动机的构造比下推自动机简单且分析效率高(8)与(a|b)*(a|b)等价的正规式是。A(a|b)(a|b)*Ba*|b*C(ab)*(a|b)*D(a|b)*16 16编译原理教程编译原理教程习题解析习题解析【解答】(1)由教材第一章1.3节中的词法分析,可知词法分析所遵循的是语言的构词规则。故选B。(2)词法分析器的功能是输入源程序,输出单词符号。故选B。(3)词法分析器输出的单词符号通常表示为二元式:(单词种别,单词自身的值)。故选B。(4)虽然选项A、B、D都满足题意,但选项D更准确。故选D。17 17编译原理教程编译原理教程习题解析习题解析(5)NFA可
9、以有DFA与之等价,即两者描述能力相同;也即,对于任一给定的NFAM,一定存在一个DFAM,使L(M)=L(M)。故选B。(6)DFA便于识别,易于计算机实现,而NFA便于定理的证明。故选C。(7)本题虽然是第二章的题,但答案参见第三章节。即选C。(8)由于正则闭包R+=R*R=RR*,故(a|b)*(a|b)=(a|b)(a|b)*。故选A。18 18编译原理教程编译原理教程习题解析习题解析2.2什么是扫描器?扫描器的功能是什么?【解答】扫描器就是词法分析器,它接受输入的源程序,对源程序进行词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。通常把词法分析器作为一个子程序
10、,每当语法分析器需要一个单词符号时就调用这个子程序。每次调用时,词法分析器就从输入串中识别出一个单词符号交给语法分析器。19 19编译原理教程编译原理教程习题解析习题解析2.3设M=(x,y,a,b,f,x,y)为一非确定的有限自动机,其中f定义如下:f(x,a)=x,y fx,b=yf(y,a)=fy,b=x,y试构造相应的确定有限自动机M。【解答】对照自动机的定义M=(S,f,s0,Z),由f的定义可知f(x,a)、f(y,b)均为多值函数,因此M是一非确定有限自动机。先画出NFAM相应的状态图,如图2-2所示。2020编译原理教程编译原理教程习题解析习题解析图2-2习题2.3的NFAM
11、21 21编译原理教程编译原理教程习题解析习题解析用子集法构造状态转换矩阵,如表2-1所示。表2-1状态转换矩阵 将转换矩阵中的所有子集重新命名,形成表2-2所示的状态转换矩阵,即得到2222编译原理教程编译原理教程习题解析习题解析将图2-3所示的DFAM最小化。首先,将M的状态分成终态组1,2与非终态组0。其次,考察1,2。由于1,2a=1,2b=21,2,因此不再将其划分了,也即整个划分只有两组:0和1,2。令状态1代表1,2,即把原来到达2的弧都导向1,并删除状态2。最后,得到如图2-4所示的化简了的DFAM。图图2-3 习题习题2.3的的DFA M其状态转换图如图其状态转换图如图2-3
12、所示。所示。2323编译原理教程编译原理教程习题解析习题解析图2-4图2-3化简后的DFAM 2424编译原理教程编译原理教程习题解析习题解析2.4正规式(ab)*a与正规式a(ba)*是否等价?请说明理由。【解答】正规式(ab)*a对应的NFA如图2-5所示,正规式a(ba)*对应的NFA如图2-6所示。用子集法将图2-5和图2-6分别确定化为如图2-7(a)和(b)所示的状态转换矩阵,它们最终都可以得到最简DFA,如图2-8所示。因此,这两个正规式等价。2525编译原理教程编译原理教程习题解析习题解析图2-5正规式(ab)*a对应的NFA2626编译原理教程编译原理教程习题解析习题解析图2
13、-6正规式a(ba)*对应的NFA2727编译原理教程编译原理教程习题解析习题解析图2-7图2-5和图2-6确定化后的状态转换矩阵 2828编译原理教程编译原理教程习题解析习题解析图2-8最简DFA 2929编译原理教程编译原理教程习题解析习题解析实际上,当闭包*取0时,正规式(ab)*a与正规式a(ba)*由初态X到终态Y之间仅存在一条a弧。由于(ab)*在a之前,故描述(ab)*的弧应在初态结点X上;而(ba)*在a之后,故(ba)*对应的弧应在终态结点Y上。因此,(ab)*a和a(ba)*所对应的NFA也可分别描述为如图2-9(a)和(b)所示的形式,它们确定化并化简后仍可得到图2-8所
14、示的最简DFA。3030编译原理教程编译原理教程习题解析习题解析图2-9(ab)*a和a(ba)*分别对应的NFA 31 31编译原理教程编译原理教程习题解析习题解析2.5设有L(G)=a2n+1b2ma2p+1|n0,p0,m1。(1)给出描述该语言的正规表达式;(2)构造识别该语言的确定有限自动机(可直接用状态图形式给出)。【解答】该语言对应的正规表达式为a(aa)*bb(bb)*a(aa)*,正规表达式对应的NFA如图2-10所示。3232编译原理教程编译原理教程习题解析习题解析图2-10习题2.5的NFA3333编译原理教程编译原理教程习题解析习题解析用子集法将图2-10确定化,如图2
15、-11所示。由图2-11重新命名后的状态转换矩阵可化简为(也可由最小化方法得到)0,213,54,67图2-11习题2.5的状态转换矩阵 3434编译原理教程编译原理教程习题解析习题解析按顺序重新命名为0、1、2、3、4后得到最简的DFA,如图2-12所示。图2-12习题2.5的最简DFA 3535编译原理教程编译原理教程习题解析习题解析2.6有语言L=w|w(0,1)+,并且w中至少有两个1,又在任何两个1之间有偶数个0,试构造接受该语言的确定有限状态自动机(DFA)。【解答】对于语言L,w中至少有两个1,且任意两个1之间必须有偶数个0;也即在第一个1之前和最后一个1之后,对0的个数没有要求
16、。据此我们求出L的正规式为0*1(00(00)*1)*00(00)*10*,画出与正规式对应的NFA,如图2-13所示。3636编译原理教程编译原理教程习题解析习题解析图2-13习题2.6的NFA3737编译原理教程编译原理教程习题解析习题解析用子集法将图2-13所示的NFA确定化,如图2-14所示由图2-14可看出非终态2和4的下一状态相同,终态6和8的下一状态相同,即得到最简状态为012,4356,873838编译原理教程编译原理教程习题解析习题解析按顺序重新命名为0、1、2、3、4、5、6,则得到最简DFA,如图2-15所示。图图2-15 习题习题2.6的最简的最简DFA 3939编译原
17、理教程编译原理教程习题解析习题解析2.7已知正规式(a|b)*|aa)*b和正规式(a|b)*b。(1)试用有限自动机的等价性证明这两个正规式是等价的;(2)给出相应的正规文法。【解答】(1)正规式(a|b)*|aa)*b对应的NFA如图2-16所示。用子集法将图2-16所示的NFA确定化为DFA,如图2-17所示。4040编译原理教程编译原理教程习题解析习题解析图图2-16 正规式正规式(a|b)*|aa)*b对应的对应的NFA41 41编译原理教程编译原理教程习题解析习题解析图图2-17 图图2-16确定化后的状态转换矩阵确定化后的状态转换矩阵 4242编译原理教程编译原理教程习题解析习题
18、解析由于对非终态的状态1、2来说,它们输入a、b的下一状态是一样的,故状态1和状态2可以合并,将合并后的终态3命名为2,则得到表2-3(注意,终态和非终态即使输入a、b的下一状态相同也不能合并)。由此得到最简DFA,如图2-18所示。正规式(a|b)*b对应的NFA如图2-19所示。用子集法将图2-19所示的NFA确定化为如图2-20所示的状态转换矩阵。4343编译原理教程编译原理教程习题解析习题解析表2-3合并后的状态转换矩阵 4444编译原理教程编译原理教程习题解析习题解析图图2-18 习题习题2.7的最简的最简DFA 4545编译原理教程编译原理教程习题解析习题解析图图2-19 正规式正
19、规式(a|b)*b对应的对应的NFA 4646编译原理教程编译原理教程习题解析习题解析比较图2-20与图2-17,重新命名后的转换矩阵是完全一样的,也即正规式(a|b)*b可以同样得到化简后的DFA如图2-18所示。因此,两个自动机完全一样,即两个正规文法等价。图图2-20 图图2-19确定化后的状态转换矩阵确定化后的状态转换矩阵4747编译原理教程编译原理教程习题解析习题解析2.8构造一个DFA,它接收=a,b上所有不含abb的字符串。解:=a,b上所有不含abb的字符串可表示为b*(a*b)a*。4848编译原理教程编译原理教程习题解析习题解析2.9构造一个DFA,它接收=a,b上所有含偶
20、数个a的字符串。解:=a,b上所有含偶数个a的字符串可表示为(b|ab*a)*4949编译原理教程编译原理教程习题解析习题解析2.10下列程序段以B表示循环体,A表示初始化,I表示增量,T表示测试:I=1;while(I=n)sun=sun+aI;I=I+1;请用正规表达式表示这个程序段可能的执行序列。【解答】用正规表达式表示程序段可能的执行序列为AT(BIT)*。5050编译原理教程编译原理教程习题解析习题解析2.9将图2-21所示的非确定有限自动机(NFA)变换成等价的确定有限自动机(DFA)。其中,X为初态,Y为终态。【解答】用子集法将NFA确定化,如图2-22所示。51 51编译原理教
21、程编译原理教程习题解析习题解析图图2-21 习题习题2.9的的NFA 5252编译原理教程编译原理教程习题解析习题解析图图2-22 习题习题2.9的状态转换矩阵的状态转换矩阵22,Y2,422,Y2,42,42,42,4,Y2,4,Y2,4,Y5353编译原理教程编译原理教程习题解析习题解析图2-22所对应的DFA如图2-23所示。对图2-23所示的DFA进行最小化。首先将状态分为非终态集和终态集两部分:0,1,2,5和3,4,6,7。由终态集可知,对于状态3、6、7,无论输入字符是a还是b的下一状态均为终态集,而状态4在输入字符b的下一状态落入非终态集,故将其划分为0,1,2,5,4,3,6
22、,7对于非终态集,在输入字符a、b后按其下一状态落入的状态集不同而最终划分为0,1,2,5,4,3,6,7按顺序重新命名为0、1、2、3、4、5,得到最简DFA如图2-24所示。5454编译原理教程编译原理教程习题解析习题解析图图2-23 习题习题2.9的的DFA 5555编译原理教程编译原理教程习题解析习题解析 图图2-24 习题习题2.9的最简的最简DFA 5656编译原理教程编译原理教程习题解析习题解析2.10有一台自动售货机,接收1分和2分硬币,出售3分钱一块的硬糖。顾客每次向机器中投放大于等于3分的硬币,便可得到一块糖(注意:只给一块并且不找钱)。(1)写出售货机售糖的正规表达式;(
23、2)构造识别上述正规式的最简DFA。【解答】(1)设a=1,b=2,则售货机售糖的正规表达式为a(b|a(a|b)|b(a|b)。(2)画出与正规表达式a(b|a(a|b)|b(a|b)对应的NFA,如图2-25所示。用子集法将图2-25所示的NFA确定化,如图2-26所示。5757编译原理教程编译原理教程习题解析习题解析图图2-25 习题习题2.10的的NFA5858编译原理教程编译原理教程习题解析习题解析由图2-26可看出,非终态2和非终态3面对输入符号a或b的下一状态相同,故合并为一个状态,即最简状态0、1、2,3、4。图图2-26 习题习题2.10的状态转换矩阵的状态转换矩阵 5959
24、编译原理教程编译原理教程习题解析习题解析按顺序重新命名为0、1、2、3,则得到最简DFA,如图2-27所示。图图2-27 习题习题2.10的最简的最简DFA 6060编译原理教程编译原理教程习题解析习题解析第三章语法分析3.1完成下列选择题:(1)程序语言的语义需要用来描述。A上下文无关文法B上下文有关文法C正规文法 D短语文法(2)2型文法对应。A图灵机 B有限自动机C下推自动机 D线性界限自动机61 61编译原理教程编译原理教程习题解析习题解析(3)下述结论中,是正确的。A1型语言0型语言B2型语言1型语言C3型语言2型语言DAC均不成立(4)有限状态自动机能识别_。A上下文无关文法B上下
25、文有关文法C正规文法D短语文法(5)文法GS:SxSx|y所识别的语言是。AxyxB(xyx)*Cxnyxn(n0)Dx*yx*6262编译原理教程编译原理教程习题解析习题解析(6)只含有单层分枝的子树称为“简单子树”,则句柄的直观解释是。A子树的末端结点(即树叶)组成的符号串B简单子树的末端结点组成的符号串C最左简单子树的末端结点组成的符号串D最左简单子树的末端结点组成的符号串且该符号串必须含有终结符6363编译原理教程编译原理教程习题解析习题解析(7)下面对语法树错误的描述是。A根结点用文法GS的开始符S标记B每个结点用GS的一个终结符或非终结符标记C如果某结点标记为,则它必为叶结点D内部
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 习题 答案
限制150内