编译原理习题(含解答)_第1页
编译原理习题(含解答)_第2页
编译原理习题(含解答)_第3页
编译原理习题(含解答)_第4页
编译原理习题(含解答)_第5页
已阅读5页,还剩110页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2-3 习题(含解答)目 录第1章 编译原理概述1第2章 PL/O编译程序的实现5第3章 文法和语言7第4章 词法分析15第5章 自顶向下语法分析方法30第6章 自底向上优先分析41第7章 LR分析44第8章 语法制导翻译和中间代码生成62第9章 符号表69第10章 目标程序运行时的存储组织72第11章 代码优化75第12章 代码生成78综合练习一81综合练习二86综合练习三92综合练习四97综合练习五103综合练习六109第1章 编译原理概述一、选择题1.一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括 (1)C 。其中, (2)B 和代码

2、优化部分不是每个编译程序都必需的。词法分析器用于识别 (3)C ,语法分析器则可以发现源程序中的 (4)D 。 (1)  A.模拟执行器  B.解释器   C.表格处理和出错处理    D.符号执行器 (2)  A.语法分析    B.中间代码生成    C.词法分析       D.目标代码生成 (3)  A.字符串      B.语句

3、            C.单词           D.标识符 (4)  A.语义错误    B.语法和语义错误  C.错误并校正     D.语法错误2.程序语言的语言处理程序是一种 (1)A 。 (2)B 是两类程序语言处理程序,他们的主要区别在于 (3)D 。 (1)  A.系统软

4、件    B.应用软件      C.实时系统      D.分布式系统 (2)  A.高级语言程序和低级语言程序         B.解释程序和编译程序 C.编译程序和操作系统                 D.系统

5、程序和应用程序 (3)  A.单用户与多用户的差别               B.对用户程序的查错能力C.机器执行效率                       D.是否生成目标代码3.汇编程序是将 A 翻译成 B ,编译程序

6、是将 C 翻译成 D 。A.汇编语言程序 B.机器语言程序 C.高级语言程序D. A 或者B E. A 或者C F. B或者C4.下面关于解释程序的描述正确的是 B 。 (1) 解释程序的特点是处理程序时不产生目标代码 (2) 解释程序适用于COBOL 和 FORTRAN 语言 (3) 解释程序是为打开编译程序技术的僵局而开发的   A. (1)(2)       B. (1)      C. (1)(2)(3)    

7、60; D.(2)(3)5.高级语言的语言处理程序分为解释程序和编译程序两种。编译程序有五个阶段,而解释程序通常缺少 (1) B 和 (1) E 。其中, (1)E 的目的是使最后阶段产生的目标代码更为高效。与编译系统相比,解释系统 (2)D 。解释程序处理语言时,大多数采用的是 (3)B 方法。 (4)A 就是一种典型的解释型语言。 (1): A. 中间代码生成   B.目标代码生成   C.词法分析  D.语法分析   E.代码优化 (2): A.比较简单,可移植性好,执行速度快 B.比较复杂,可移植性好,执行速度快 C

8、.比较简单,可移植性差,执行速度慢 D.比较简单,可移植性好,执行速度慢 (3): A.源程序命令被逐个直接解释执行 B.先将源程序转化为中间代码,再解释执行C.先将源程序解释转化为目标程序,在执行 D.以上方法都可以 (4): A. BASIC B. C C. FORTRAN D. PASCAL6.用高级语言编写的程序经编译后产生的程序叫 B 。用不同语言编写的程序产生 B 后,可用 G 连接在一起生成机器可执行的程序。在机器中真正执行的是 E 。A. 源程序          B. 目标程序 

9、;  C. 函数        D. 过程  E. 机器指令代码    F. 模块       G. 连接程序    H.程序库7.要在某一台机器上为某种语言构造一个编译程序,必须掌握下述三方面的内容: C , D , F 。A. 汇编语言        B. 高级语言   C. 源语言 

10、     D. 目标语言E. 程序设计方法    F. 编译方法   G. 测试方法    H. 机器语言8.由于受到具体机器主存容量的限制,编译程序几个不同阶段的工作往往被组合成 (1)D ,诸阶段的工作往往是 (2)D 进行的。 (1) A. 过程  B. 程序  C. 批量  D.遍 (2) A. 顺序  B. 并行  C. 成批  D.穿插9.编译程序与具体的机器 A ,与具体的语言 A 。A. 

11、有关    B.无关10.使用解释程序时,在程序未执行完的情况下, A 重新执行已执行过的部分。A. 也能     B.不可能11.编译过程中,语法分析器的任务就是 B 。 (1) 分析单词是怎样构成的            (2)  分析单词串是如何构成语句和说明的 (3) 分析语句和说明是如何构成程序的  (4) 分析程序的结构A. (2)(3)    

12、 B. (2)(3)(4)     C. (1)(2)(3)    D.(1)(2)(3)(4)12.编译程序是一种常用的 B 软件。A.  应用      B. 系统13.编写一个计算机高级语言的源程序后,到正式上机运行之前,一般要经过 B 这几步。 (1) 编辑  (2) 编译  (3) 连接  (4) 运行A. (1)(2)(3)(4)  B. (1)(2)(3)  C. (1)(3)  D.(1)(

13、4)14.编译程序必须完成的工作有 A 。 (1) 词法分析  (2) 语法分析        (3) 语义分析 (4) 代码生成  (5) 中间代码生成    (6) 代码优化A. (1)(2)(3)(4)      B. (1)(2)(3)(4)(5)     C. (1)(2)(3)(4)(5)(6)  D. (1)(2)(3)(4)(6)   E.

14、(1)(2)(3)(5)(6)15.“用高级语言书写的源程序都必须通过编译,产生目标代码后才能投入运行”这种说法 A 。A. 不正确    B.正确16.把汇编语言程序翻译成机器可执行的目标程序的工作是由 B 完成的。A. 编译器    B. 汇编器    C. 解释器     D. 预处理器17.编译程序生成的目标程序 B 是机器语言的程序。A.  一定     B. 不一定18.编译程序生成的目标程序 B 是可执

15、行的程序。A.  一定     B. 不一定19编译程序是一种 B 。A. 汇编程序 B. 翻译程序 C. 解释程序 D. 目标程序20按逻辑上划分,编译程序第二步工作是 C 。A. 语义分析 B. 词法分析 C. 语法分析 D. 代码优化21通常一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括 C 。A.模拟执行器  B.解释器   C.表格处理和出错处理    D.符号执行器二、填空题1.编译程序的工作过程一般可以划分为 词法分析

16、、语法分析、语义分析、中间代码生成、代码优化 等几个基本阶段,同时还会伴有 表格处理 和 出错处理 。2.若源程序是用高级语言编写的,目标程序是 机器语言程序或汇编程序 ,则其翻译程序称为编译程序。3.编译方式与解释方式的根本区别在于 是否生成目标代码 。4.翻译程序是这样一种程序,它能够将 用甲语言书写的程序 转换成与其等价的 用乙语言书写的程序 。5.对编译程序而言,输入数据是 源程序 ,输出结果是 目标程序 。6.如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段: 编译阶段 和 运行阶段 。如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分为三个阶段: 编译阶

17、段 , 汇编阶段 和 运行阶段 。7.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为 编译程序 。8.一个典型的编译程序中,不仅包括词法分析、语法分析、中间代码生成、代码优化、目标代码生成等五个部分,还应包括 表格处理 和 出错处理 。其中,词法分析器用于识别 单词 。9.若源程序是用高级语言编写的,目标程序是 机器语言或汇编语言的程序 ,则相应的翻译程序称为编译程序。三、判断题1.计算机高级语言翻译成低级语言只有解释一种方式。 (×)2.在编译中进行语法检查的目的是为了发现程序中所有错误。 (×)3.甲机上的某编译程序在乙机上能直接使用的必

18、要条件是甲机和乙机的操作系统功能完全相同。 (×)四、问答题1. 什么是编译程序答: 编译程序(compiler)是某一种高级语言程序(如FORTRAN、Pascal或C语言程序)翻译成另一种低级语言(如汇编语言或机器语言程序)的等价程序。2. 编译过程概述和编译程序的结构答: 编译程序完成从源程序到目标程序的翻译工作,是一个复杂的整体的过程。从概念上来讲,一个编译程序的整个工作过程是划分成阶段进行的,每个阶段将源程序的一种表示形式转换成另一种表示形式,各个阶段进行的操作在逻辑上是紧密连接在一起的。一般一个编译过程划分成词法分析、语法分析、语义分析、中间代码生成,代码优化和目标代码生

19、成六个阶段,这是一种典型的划分方法。事实上,某些阶段可能组合在一起,这些阶段间的源程序的中间表示形式就没必要构造出来了。我们将分别介绍各阶段的任务。另外两个重要的工作:表格管理和出错处理与上述六个阶段都有联系。编译过程中源程序的各种信息被保留在种种不同的表格里,编译各阶段的工作都涉及到构造、查找或更新有关的表格,因此需要有表格管理的工作;如果编译过程中发现源程序有错误,编译程序应报告错误的性质和错误发生的地点,并且将错误所造成的影响限制在尽可能小的范围内,使得源程序的其余部分能继续被编译下去,有些编译程序还能自动校正错误,这些工作称之为出错处理。第2章 PL/O编译程序的实现一、问答题1.PL

20、/0语言允许过程嵌套定义和递归调用,试问它的编译程序如何解决运行时的存储管理。答: PL/0语言允许过程嵌套定义和递归调用,它的编译程序在运行时采用了栈式动态存储管理。(数组CODE存放的只读目标程序,它在运行时不改变。)运行时的数据区S是由解释程序定义的一维整型数组,解释执行时对数据空间S的管理遵循后进先出规则,当每个过程(包括主程序)被调用时,才分配数据空间,退出过程时,则所分配的数据空间被释放。应用动态链和静态链的方式分别解决递归调用和非局部变量的引用问题。2. 指出栈顶指针T,最新活动记录基地址指针B,动态链指针DL,静态链指针SL与返回地址RA的用途。答:栈顶指针T,最新活动记录基地

21、址指针B,动态链指针DL,静态链指针SL与返回地址RA的用途说明如下:T:栈顶寄存器T指出了当前栈中最新分配的单元(T也是数组S的下标)。B:基址寄存器,指向每个过程被调用时,在数据区S中给它分配的数据段起始 地址,也称基地址。SL:静态链,指向定义该过程的直接外过程(或主程序)运行时最新数据段的基地址,用以引用非局部(包围它的过程)变量时,寻找该变量的地址。DL:动态链,指向调用该过程前正在运行过程的数据段基地址,用以过程执行结束释放数据空间时,恢复调用该过程前运行栈的状态。 RA:返回地址,记录调用该过程时目标程序的断点,即调用过程指令的下一条指令的地址,用以过程执行结束后返回调用过程时的

22、下一条指令继续执行。在每个过程被调用时在栈顶分配3个联系单元,用以存放SL,DL,RA。3. PL/0编译程序所产生的目标代码是一种假想栈式计算机的汇编语言,请说明该汇编语言中下列指令各自的功能和所完成的操作。· INT 0 A · OPR 0 0 · CAL L A答:PL/0编译程序所产生的目标代码中有3条非常重要的特殊指令,这3条指令在code中的位置和功能以及所完成的操作说明如下:INT 0 A在过程目标程序的入口处,开辟A个单元的数据段。A为局部变量的个数+3。 OPR 0 0在过程目标程序的出口处,释放数据段(退栈),恢复调用该过程前正在运行的过程的数

23、据段基址寄存器B和栈顶寄存器T的值,并将返回地址送到指令地址寄存器P中,以使调用前的程序从断点开始继续执行。CAL L A调用过程,完成填写静态链、动态链、返回地址,给出被调用过程的基地址值,送入基址寄存器B中,目标程序的入口地址A的值送指令地址寄存器P中,使指令从A开始执行。4. 给出对PL/0语言作如下功能扩充时的语法图和EBNF的语法描述。(1) 扩充条件语句的功能使其为: if条件then语句else语句(2) 扩充repeat语句为:repeat语句;语句until条件答:对PL/0语言作如下功能扩充时的语法图和EBNF的语法描述如下: (1) 扩充条件语句的语法图为:EBNF的语法

24、描述为:条件语句:= if条件then语句else语句(2) 扩充repeat语句的语法图为: EBNF的语法描述为: 重复语句:= repeat语句;语句until条件第3章 文法和语言一、选择题1. 设A是符号中的集合,则下列A*描述不正确的是 A 。A. A1 A2 An B. A0 A1 A2 AnC. A+ D. A 0 A+2. 文法用来描述语言的语法结构,它由如下4个部分组成:文法终结符集合、文法非终结符集合、 B 和文法开始符号。A单词集合 B. 文法规则的集合C文法句子集合 D. 字母数字串3. 在规则(产生式)中,符号“|”表示 B 。 A与 B. 或 C. 取决于 D.

25、引导开关参数 4. 如果在推导过程中的任何一步,都是对中的最右非结符进行替换,则称这种推导为 D 。 A直接推导 B. 广义推导 C. 最左推导 D. 规范推导5. 设有文法GS=(S,B,b,SbB | b,BbS,S),该文法所描述的语言是 。AL(GS)=bn| n 0 B. L(GS)=b2n | n 0C. L(GS)=b2n+1 | n 0 D. L(GS)=b2n+1 |n 16. 设有文法GE: EE + T | E T | T TT * F | T/F | F F(E)| i 该文法句型E + T * F 的句柄是下列符号串 。AE B. E + T C. T * F D.

26、E + T * F7. 乔姆斯基把文法分成4种类型,即0型、1型、2型和3型。2型文法,3型文法,其中3型文法也称为 。 A上下无关文法 B. 正规文法 C上下文有关文法 D. 无限制文法8文法G所描述的语言是 的集合。A. 文法G的字母表V中所有符号组成的符号串B. 文法G的字母表V的闭包V*中的所有符号串C. 由文法的开始符号推出的所有终极符串D. 由文法的开始符号推出的所有符号串9一个句型中的最左 B 称为该句型的句柄。可选项有:A. 短语 B. 简单短语 C. 素短语 D. 终结符号10设G是一个给定的文法,S是文法的开始符号,如果Sx(其中xV*),则称x是文法G的一个 B 。A.

27、候选式 B. 句型 C. 单词 D. 产生式11一个上下文无关文法G包括四个组成部分,它们是:一组非终结符号,一组终结符号,一个开始符号,以及一组 D 。A. 句子 B. 句型 C. 单词 D. 产生式12. 文法GE:ETETTFTF Fa(E)该文法句型EF(ET)的简单短语是下列符号串中的 。(ET) ET F F(ET)可选项有:A. 和 B. 和 C. 和 D. 13若一个文法是递归的,则它所产生的语言的句子 A 。A.是无穷多个 B.是有穷多个 C.是可枚举的 D.个数是常量二、填空题1.所谓最右推导是指: 任何一步Þ都是对中最右非终结符进行替换的 。2.一个上下文无关文

28、法所含四个组成部分是 一组终结符号、一组非终结符号、一个开始符号、一组产生式 。3.产生式是用于定义 语法成分 的一种书写规则。4.设GS是给定文法,则由文法G所定义的语言L(G)可描述为: L(G)xSx,xVT* 。5.设G是一个给定的文法,S是文法的开始符号,如果Sx(其中xV*),则称x是文法的一个 句型 。6.设G是一个给定的文法,S是文法的开始符号,如果Sx(其中xVT*),则称x是文法的一个 句子 。7乔母斯基定义的4种形式语言文法分别为: 0 型文法(又称 短语结构 文法)、 1 型文法(又称 上下文有关 文法)、 2 型文法(又称 上下文无关 文法)、 3 型文法(又称 正则

29、/正规 文法)。三、问答题1. 写一文法,使其语言是偶正整数的集合要求:允许0打头不允许0打头解:GS=(S,P,D,N,0,1,2,9,P,S)P:SàPD|DP->NP|NN->D|1|3|5|7|9Dà0|2|4|6|8GS=(S,A,B,D,N,Q ,0,1,2,9,P,S)P:SàABD|AB0|AD|A0|DA-> D|1|3|5|7|9D->2|4|6|8B->0|A|B0|BA2. 已知文法G:<表达式>:=<项>|<表达式>+<项>|<表达式>-<项&

30、gt;<项>:=<因子>|<项>*<因子>|<项>/<因子><因子>:=(<表达式>)|i。试给出下述表达式的推导及语法树。(1)i; (2)(i)(3)i*i;(4)i*i+i; (5)i+(i+i);(6)i+i*i。解:v=<表达式>=><项>=><因子>=>i=wv=<表达式>=><项>=><因子>=>(<表达式>)=>(<项>)=>(<因子&

31、gt;)=>(i)=wv=<表达式>=><项>=><项>*<因子>=><因子>*<因子>=>i*i=wv=<表达式>=><表达式>+<项>=><项>+<项>=><项>*<因子>+<项>=><因子>*<因子>+<因子>=>i*i+i=wv=<表达式>=><表达式>+<项>=><项&g

32、t;+<项>=><因子>+<因子>=>i+(<表达式>)=> i+(<表达式>+<项>)=>i+(<项>+<项>)=> i+(<因子>+<因子>)=>i+(i+i)=wv=<表达式>=><表达式>+<项>=><项>+<项>=><因子>+<项>=>i+<项>=>i+<项>*<因子>=> i

33、+<因子>*<因子>=> i+i*i=w语法树见下图:3. 为句子i+i*i构造两棵语法树,从而证明下述文法G<表达式>是二义的。<表达式><项><因子>i<表达式><项><因子>( <表达式> )<项><因子>i<表达式><项><项> * <因子><因子>ii<表达式><表达式> + <项><项><项> * <因子>

34、;<因子>ii<因子>i<表达式><表达式> + <项><项><因子>i<因子>( <表达式> )<表达式> + <项><项><因子>i<因子>i<表达式><表达式> + <项><项><因子>i<项> * <因子><因子>ii(1)i(2)(i)(3)i*i(4) i*i+i(5) i+(i+i)(6) i+i*i<表达式>

35、;:=i|(<表达式>)|<表达式><运算符><表达式><运算符>:=+|-|*|/解:为句子i+i*i构造的两棵语法树如下:<表达式><表达式> + <表达式>i<表达式> * <表达式>ii<表达式><表达式> * <表达式><表达式> + <表达式>iii所以,该文法是二义的。文法G=(A,B,S,a,b,c,P,S)其中P为: S->Ac|aB A->ab B->bc是二义的吗?为什么?答:

36、是二义的。因为对于句子abc可以有两种不同的生成树,即:S=>Ac=>abc和S=>aB=>abc。5. 令文法GE为:EàT|E+T|E-TTàF|T*F|T/FFà(E)|i证明E+T*F是它的一个句型,指出这个句型的所有短语、直接短语和句柄。解:可为E+T*F构造一棵语法树(见下图),所以它是句型。EE + TT * F从语法树中容易看出,E+T*F的短语有:T*F是句型E+T*F的相对于T的短语,也是相对于规则TàT*F的直接短语。E+T*F是句型E+T*F的相对于E的短语。句型E+T*F的句柄(最左直接短语)是T*F。6

37、. 下述文法GE生成的语言是什么?给出该文法的一个句子,该句子至少含五个终结符,构造该句子的语法树。证明:<E><T><F><MOP><POP>是G<E>的句型,并指出该句型的所有短语、直接短语和句柄。<E>à<E><T><POP>|<T><T>à<T><F><MOP>|<F><F>àa|b|c<POP>à+|-<MOP>

38、4;*|/解:(1) GE生成的语言具有乘除优先级的表达式的逆波兰式。<E><E> <T> <POP><T> <F> <MOP><T><F>a<F>ab*+ (2)该文法的一个句子是aab*+,它的语法树是:证明:<E><T><F><MOP><POP>是G<E>的句型,并指出该句型的所有短语、直接短语和句柄。<E><E> <T> <POP><T>

39、 <F> <MOP>由于下面的语法树可以生成<E><T><F><MOP><POP>,所以它是G<E>的句型。由于<E> => <E><T><POP>,且<T> => <T><F><MOP>,所以<T><F><MOP>是句型<E><T><F><MOP><POP>相对于<T>的短语,也是相对

40、于规则<T> à <T><F><MOP>的直接短语。由于<E> => <E> 且<E> => <E><T><F><MOP><POP>,所以<E><T><F><MOP><POP>是句型<E><T><F><MOP><POP>相对于<E>的短语。显然,句型<E><T><F>

41、;<MOP><POP>的句柄是<T><F><MOP>。7. 给出生成下述语言的上下文无关文法:(1)anbnambm|n,m>=0(2)1n0m1m0n|n,m>=0(3)WaWt|W属于0|a*,W表示Wt的逆解:(1)所求文法为GS=(S,A,B,a,b,P,S),其中P为:SàABAàaAb| BàaBb|(2)所求文法为GS=(S,A,0,1,P,S),其中P为:Sà1S0|AAà0A1|(3)W属于0|a*是指W可以的取值为,0,a,00,a0,aa0,00aa,

42、a0a0,如果W=aa0a00,则Wt=00a0aa。所求文法为GS=(S,P,Q,0,a,P,S),其中P为:Sà0S0|aSa|a8给出生成下述语言的三型文法:(1)an|n>=0(2)anbm|n,m>=1(3)anbmck|n,m,k>=0解:生成的3型文法是:GS:SàaS|生成的2型文法是:GS: SàABAàaA|aBàbB|b生成的3型文法是:GS:SàaPPàaP|bDDàbD|生成的2型文法是:GS: SàABCAàaA|BàbB|C->cC

43、|生成的3型方法是:GS:AàaA|bB|cC|BàbB|cC|CàcC|9. 证明下述文法G表达式是二义的。 表达式=a|(表达式)|表达式运算符表达式运算符=+|-|*|/证明:可为句子a+a*a构造两个不同的最右推导:最右推导1 表达式=>表达式运算符表达式 =>表达式运算符a =>表达式* a =>表达式运算符表达式* a =>表达式运算符a * a =>表达式+ a * a => a + a * a最右推导2 表达式=>表达式运算符表达式 =>表达式运算符表达式运算符表达式 =>表达式运算符表达

44、式运算符 a =>表达式运算符表达式 * a =>表达式运算符a * a =>表达式+ a * a =>a + a * a10. 什么是句子? 什么是语言? 答:设G是一个给定的文法,S是文法的开始符号,如果Sx(其中xVT*),则称x是文法的一个句子。设GS是给定文法,则由文法G所定义的语言L(G)可描述为:L(G)xSx,xVT*。11. 已知文法GE为:ET|E+T|E-TTF|T*F|T/FF(E)|i 该文法的开始符号(识别符号)是什么?请给出该文法的终结符号集合VT和非终结符号集合VN。 找出句型T+T*F+i的所有短语、简单短语和句柄。解: 该文法的开始符

45、号(识别符号)是E。该文法的终结符号集合VT=+,-,*,/,(,), i。非终结符号集合VN=E,T,F。句型T+T*F+I的短语为i、T*F、第一个T、T+T*F+i;简单短语为i、T*F、第一个T;句柄为第一个T。12. 已知文法GS为:SdABAaA|aBBb| GS产生的语言是什么? GS能否改写为等价的正规文法?解: GS产生的语言是L(GS)=danbmn1,m0。 GS能改写为等价的正规文法,其改写后的等价的正规文法GS为: SdA A aA|aB|a B bB|b13.设有语言L(G)=adaR | a(a,b)*,aR 为a之逆,试构造产生此语言的上下文无关文法G。解:根据

46、题义,可知aR 为a之逆的含义就是句子中的符号a、b以d为中心呈左右对称出现;由于a(a,b)*,所以a、b的个数可以为零。所以可构造产生此语言的上下文无关文法GS为:SaSa|bSb|d第4章 词法分析一、选择题1词法分析器用于识别    C  。A. 句子    B. 句型        C. 单词           D. 产生式2编译过程中扫描器的任务包括 &

47、#160; D  。 (1)组织源程序的输入 (2)按词法规则分割出单词,识别出其属性,并转换成属性字的形式输出 (3)删除注解 (4)删除空格及无用字符 (5)行计数、列计数 (6)发现并定位词法错误 (7)填写符号表 可选项有:A.(2)(3)(4)(7) B.(2)(3)(4)(6)(7) C.(1)(2)(3)(4)(6)(7) D.(1)(2)(3)(4)(5)(6)(7)3 B  这样一些语言,它们能够被确定的有穷自动机识别,但不能用正规表达式表示。 A. 存在 B. 不存在 C. 无法判定是否存在4正规表达式的“”读作  B ,“·”读作&

48、#160; C ,“*”读作  D   。 A. 并且 B. 或者 C. 连接 D. 闭包 5 一个编译程序中,不仅包含词法分析,_ A_ _,中间代码生成,代码优化,目标代码生成等五个部分。A 语法分析 B文法分析 C语言分析 D解释分析6 语法分析器则可以发现源程序中的_ _D_ _。A 语义错误   B语法和语义错误 C错误并校正    D语法错误7词法分析器的输出结果是_ _C_ _。A单词的种别编码 B单词在符号表中的位置 C单词的种别编码和自身值 D单词自身值8. 编译程序中词法分析器所完成的任务是从源程序识别出一个一个具有独立意义

49、的_D_ _。A表达式 B. 语句 C. 过程 D. 单词符号9. 编译程序中的词法分析器的输出是二元组表示的单词符号,其二元组的两个元素是_ C_。 A. 单词种别和单词参数 B. 单词数据类型和单词参数 C. 单词种别和单词自身的值 D. 单词数据类型和单词的值10. 用l代表字母,d代表数字,=l,d,则定义标识符单词的正规式是 _ C_。A. ld* B. u* C. l(l | d)* D. u*| d* 11、正规式(a|b)(a|b|0|1)*对应的文法为_C_。 ASAa|bA B.SAa|bA A0A|1A| AaA|bA|0A|1A C. SaA|bAD.SA AaA|bA

50、|0A|1A| AA|Ba|0A|1A|12、一个确定的有穷自动机DFA是一个_A_。 A五元组(K,f, S, Z) B.四元组(VN,VT,P,S) C四元组(K,f,S) D.三元组(VN,VT,P)13、编译程序中的语法器接受以 C 为单位的输入,并产生有关信息供以后各阶段使用。A表达式 B字符串 C单词 D语句二、问答题1构造下列正规式相应的DFA:(1) 1(0|1)* 101(2) 1(1010* | 1(010)* 1)* 0(3) a(a|b)*|ab*a)* b(4) b(ab)* | bb)* ab解:(1)1(0|1)* 101对应的NFA为01231104110下表由

51、子集法将NFA转换为DFA:II0 = -closure(MoveTo(I,0)I1 = -closure(MoveTo(I,1)A0B1B1B1C1,2C1,2D1,3C1,2D1,3B1E1,4E1,4B1B1得DFA图为:(2)1(1010* | 1(010)* 1)* 0对应的NFA为02451101010361079810011下表由子集法将NFA转换为DFA:II0 = -closure(MoveTo(I,0)I1 = -closure(MoveTo(I,1)A0B1,6B1,6C10D2,5,7C10D2,5,7E3,8B1,6E3,8F1,4,6,9F1,4,6,9G1,2,5

52、,6,9,10D2,5,7G1,2,5,6,9,10H1,3,6,9,10I1,2,5,6,7H1,3,6,9,10J1,6,9,10K2,4,5,7I1,2,5,6,7L3,8,10I1,2,5,6,7J1,6,9,10J1,6,9,10D2,5,7K2,4,5,7M2,3,5,8B1,6L3,8,10F1,4,6,9M2,3,5,8N3F1,4,6,9N3O4O4P2,5P2,5N3B1,6得DFA图为:AB1C0D1E01F101H0G1I0K1J1L01M0011NOP011001(3)a(a|b)*|ab*a)* b 对应的NFA为: 下表由子集法将NFA转换为DFA:IIa = -

53、closure(MoveTo(I,a)Ib = -closure(MoveTo(I,b)S0AB1-AB1ABC2ABD3ABC2ABC2ABCD4ABD3ABC2ABD3ABCD4ABC2ABCD4得DFA图为: (4)b(ab)* | bb)* ab对应的NFA为: 下表由子集法将NFA转换为DFA:IIa = -closure(MoveTo(I,a)Ib = -closure(MoveTo(I,b)S0-A1A1CD2B3CD2-AE4B3-A1AE4CD2B3得DFA图为:2已知NFA=(x,y,z,0,1,M,x,z)其中:M(x,0)=z, M(y,0)=x,y, M(z,0)=x

54、,z,M(x,1)=x, M(y,1)=,M(z,1)=y,构造相应的DFA。xy0z010010解:根据题意有NFA图如下下表由子集法将NFA转换为DFA:II0 = -closure(MoveTo(I,0)I1 = -closure(MoveTo(I,1)AxBzAxBzCx,zDyCx,zCx,zEx,yDyEx,y-Ex,yFx,y,zAxFx,y,zFx,y,zEx,y01100BCEF00DA1101下面将该DFA最小化:首先将它的状态集分成两个子集:P1=A,D,E,P2=B,C,F区分P2:由于F(F,1)=F(C,1)=E,F(F,0)=F并且F(C,0)=C,所以F,C等价。由于F(B,0)=F(C,0)=C, F(B,1)=D,F(C,1)=E,而D,E不等价(见下步),从而B与C,F可以区分。有P21=C,F,P22=B。区分P1:由于A,E输入0到终态,而D输入0不到终态,所以D与A,E可以区分,有P11=A,E,P12=D。由于F(A,0)=B,F(E,0)=F,而B,F不等价,所以A,E可以区分。综上所述,DFA可以区分为P=A,B,D,E,C,F。所以最小化的DFA如下:11010F0BE10

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论