编译原理第3阶段测试题

合集下载

编译原理习题及答案(整理后)

编译原理习题及答案(整理后)

编译原理习题及答案(整理后)第⼀章1、将编译程序分成若⼲个“遍”是为了。

b.使程序的结构更加清晰2、构造编译程序应掌握。

a.源程序b.⽬标语⾔c.编译⽅法3、变量应当。

c.既持有左值⼜持有右值4、编译程序绝⼤多数时间花在上。

d.管理表格5、不可能是⽬标代码。

d.中间代码6、使⽤可以定义⼀个程序的意义。

a.语义规则7、词法分析器的输⼊是。

b.源程序8、中间代码⽣成时所遵循的是- 。

c.语义规则9、编译程序是对。

d.⾼级语⾔的翻译10、语法分析应遵循。

c.构词规则⼆、多项选择题1、编译程序各阶段的⼯作都涉及到。

b.表格管理c.出错处理2、编译程序⼯作时,通常有阶段。

a.词法分析b.语法分析c.中间代码⽣成e.⽬标代码⽣成三、填空题1、解释程序和编译程序的区别在于是否⽣成⽬标程序。

2、编译过程通常可分为5个阶段,分别是词法分析、语法分析中间代码⽣成、代码优化和⽬标代码⽣成。

3、编译程序⼯作过程中,第⼀段输⼊是源程序,最后阶段的输出为标代码⽣成程序。

4、编译程序是指将源程序程序翻译成⽬标语⾔程序的程序。

⼀、单项选择题1、⽂法G:S→xSx|y所识别的语⾔是。

c. x n yx n(n≥0)d. x*yx*2、⽂法G描述的语⾔L(G)是指。

a. L(G)={α|S + ?α , α∈VT*} b. L(G)={α|S*?α, α∈VT*}c. L(G)={α|S *?α,α∈(VT∪V N*)} d. L(G)={α|S+ ?α, α∈(VT∪V N*)}3、有限状态⾃动机能识别。

a. 上下⽂⽆关⽂法b. 上下⽂有关⽂法c.正规⽂法d. 短语⽂法4、设G为算符优先⽂法,G的任意终结符对a、b有以下关系成⽴。

a. 若f(a)>g(b),则a>bb.若f(a)c. a~b都不⼀定成⽴d. a~b⼀定成⽴5、如果⽂法G是⽆⼆义的,则它的任何句⼦α。

a. 最左推导和最右推导对应的语法树必定相同b. 最左推导和最右推导对应的语法树可能不同c. 最左推导和最右推导必定相同d. 可能存在两个不同的最左推导,但它们对应的语法树相同6、由⽂法的开始符经0步或多步推导产⽣的⽂法符号序列是。

编译原理自测(一、二、三)及答案

编译原理自测(一、二、三)及答案

编译原理自测一一、填空题1、从功能上说,程序语言的语句大体可分为执行性语句和说明性语句两大类。

2、扫描器的任务是从源程序中识别出一个个单词符号。

3、所谓最右推导是指:任何一步αβ都是对α中最右非终结符进行替换的4、语法分析最常用的两类方法是自上而下和自下而上分析法。

5、一个上下文无关文法所含四个组成部分是:一组终结符号,一组非终结符号、一个开始符号、一组产生式6、所谓语法制导翻译方法是:为每个产生式配上一个翻译子程序,并在语法分析的同时执行这些子程序7、产生式是用于定义语法范畴的一种书写规则。

一、是非题1、一个LL(1)文法一定是无二义的。

A.正确 B.不正确4、正规文法产生的语言都可以用上下文无关文法来描述。

A.正确 B.不正确5、一张转换图只包含有限个状态,其中有一个被认为是初态,最多只有一个终态。

A.正确B.不正确二、填空题1、语法分析是依据语言的语法规则进行的,中间代码产生是依据语言的语义规则进行的。

2、程序语言的单词符号一般可以分为基本字、标识符、常量、算符、界符等等。

3、语法分析器的输入是单词符号串,其输出是语法单位4、所谓自上而下分析法是指:从开始符号出发,向下推导,推出句子6、对于文法G,仅含终结符号的句型称为句子。

8、一个名字的属性包括类型和作用域。

10、所谓优化是指:对程序进行各种等价变换,使得从变换后的程序出发,能生成更有效的目标代码三、名词解释1.词法分析器——指执行词法分析的程序。

2.语法——一组规则,用它可以形成和产生一个合式的程序3.最右推导——指对于一个推导序列中的每一步直接推导,被替换的总是当前符号串中的最右非终结符号。

一选择题(每空2分,共20分)1、文法G 产生的⑴的全体是该文法描述的语言。

A.句型B.终结符集C. 非终结符集D. 句子2、若文法G 定义的语言是无限集,则文法必然是⑵:A.递归的B.前后文无关的C.二义性的D.无二义性的3、Chomsky 定义的四种形式语言文法中,0 型文法又称为⑶文法;1 型文法又称为⑷文法;2 型语言可由⑸识别。

蒋立源编译原理 第三版 第三章 习题与答案(修改后)

蒋立源编译原理 第三版 第三章 习题与答案(修改后)

第3章习题3-1 试构造一右线性文法,使得它与如下得文法等价S→AB A→UT U→aU|a D→bT|b B→cB|c 并根据所得得右线性文法,构造出相应得状态转换图。

3-2 对于如题图3-2所示得状态转换图(1) 写出相应得右线性文法;(2) 指出它接受得最短输入串;(3) 任意列出它接受得另外4个输入串;(4) 任意列出它拒绝接受得4个输入串。

3-3 对于如下得状态转换矩阵:(1) 分别画出相应得状态转换图;(2) 写出相应得3型文法;(3) 用自然语言描述它们所识别得输入串得特征。

3-4 将如下得NFA确定化与最小化:3-5 将如题图3-5所示得具有ε动作得NFA确定化。

题图3-5 具有ε动作得NFA3-6 设有文法G[S]:S→aA A→aA|bB B→bB|cC|c C→cC|c 试用正规式描述它所产生得语言。

3-7 分别构造与如下正规式相应得NFA。

(1) ((0* |1)(1* 0))*(2) b|a(aa*b)*b3-8 构造与正规式(a|b)*(aa|bb)(a|b)*相应得DFA。

第3章习题答案3-1 解:根据文法知其产生得语言就是:L[G]={a m b n c i| m,n,i≧1}可以构造与原文法等价得右线性文法:S→aA A→aA|bB B→bB|cC|c C→cC|c 其状态转换图如下:3-2 解:(1) 其对应得右线性文法就是G[A]:A →0D B→0A|1C C→0A|1F|1D→0B|1C E→0B|1C F→1A|0E|0(2) 最短输入串为011(3) 任意接受得四个输入串为:0110,0011,000011,00110(4) 任意拒绝接受得输入串为:0111,1011,1100,10013-3 解:(1) 相应得状态转换图为:(2) 相应得3型文法为:(ⅰ) S→aA|bS A→aA|bB|b B→aB|bB|a|b(ⅱ) S→aA|bB|a A→bA|aC|a|b B→aB|bC|b C→aC|bC|a|b(ⅲ) S→aA|bB|b A→aB|bA|a B→aB|bB|a|b(ⅳ) S→bS|aA A→aC|bB|a B→aB|bC|b C→aC|bC|a|b(3) 用自然语言描述得输入串得特征为:(ⅰ) 以任意个(包括0个)b开头,中间有任意个(大于1)a,跟一个b,还可以有一个由a,b组成得任意字符串。

编译原理第三章答案

编译原理第三章答案

“编译技术”第三章作业3-1构造下列正规式相应的DFA:(1)1(0|1)*101(2)a((a|b)*|ab*a)*b解:由转换系统构造确定有穷自动机对状态重命名:DFA的状态转换图:(2)构造该正规式的装换系统:由转换系统构造确定有穷自动机对状态重命名:DFA的状态转换图:3-2 对下面的FA,将它确定化并最小化。

a解:由转换系统构造确定有穷自动机对状态重命名:DFA的状态转换图:最小化:初始划分={T0,T1,T2}{T0,T1,T2}a={T, Φ, Φ},所以划分为({ T},{Φ, Φ})即{T}3-3 给出下述文法所对应的正规式:S →0A|1BA→1S|1B→0S|0解:S→0A→01S→0A→01S→010A→0101S→0101OA→0101O1S…S→1B→10S→1B→10S→101B→1010S→10101B→101010S…所以可得正规式=(01|10)(01|10)*3-4 构造下述文法G[S]的自动机:S→A0S→A0|S1|0该自动机是确定的吗?若不确定,则对它确定化。

该自动机可识别的语言是什么?解:文法转换为自动机:因为是左线性文法,要增加一个开始状态X,并将开始符号S看成终态。

因为A经0可达到不同的状态,所以,该自动机为NFA。

确定化:对状态重命名:该自动机表达的语言用正规式表示为:00(0|10)*3-5试用有限自动机理论证明下列正规表达式是等价的。

(1)(a|ba)*b(2)(a*ba)*a*b解:(1)(2)因为最小化后,两者的状态图是一样的,都为:所以正规式(a|ba)*b和正规式(a*ba)*a*b是等价的。

编译原理3答案

编译原理3答案

编译原理3答案【篇一:编译原理试题及答案3】填空题:1、编译方式与解释方式的根本区别在于(是否生成目标代码)。

2、对编译程序而言,输入数据是(源程序),输出结果是(目标程序)。

3、如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段:(编译阶段)和(运行阶段)。

4、如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分成三个阶段:(编译阶段)、(汇编阶段)和(运行阶段)。

5、自顶向下语法分析方法会遇到的主要问题有(回溯)和((左递归带来的)无限循环)。

6、ll(k)分析法中,第一个l的含义是(从左到右进行分析),第二个l的含义是(每次进行最左推导),“k”的含义是(向输入串中查看k个输入符号)。

7、ll(1)分析法中,第一个l的含义是(从左到右进行分析),第二个l的含义是(每次进行最左推导),“1”的含义是(向输入串中查看1个输入符号)。

8、自顶向下语法分析方法的基本思想是:从(识别符号)出发,不断建立(直接推导),试图构造一个推导序列,最终由它推导出与输入符号相同的(符号串)。

9、自底向上语法分析方法的基本思想是:从待输入的符号串开始,利用文法的规则步步向上进行(直接归约),试图(归约)到文法的(识别符号|开始符号)。

10、lr(0)分析法的名字中,“l”的含义是(从左到右进行分析),“r”的含义是(采用最右推导的逆过程---最左归约),“0”的含义是(向貌似句柄的符号串后查看0个输入符号)。

11、lr(1)分析法的名字中,“l”的含义是(从左到右进行分析),“r”的含义是(采用最右推导的逆过程---最左归约),“1”的含义是(向貌似句柄的符号串后查看1个输入符号)。

12、slr(1)分析法的名字中,“s”的含义是(简单的),“l”的含义是(从左到右进行分析),“r”的含义是(采用最右推导的逆过程---最左归约),“1”的含义是(向貌似句柄的符号串后查看1个输入符号)。

13、在编译过程中,常见的中间语言形式有(逆波兰表示)、(三元式)、(四元式)和(树形表示)。

编译原理第三章练习题答案

编译原理第三章练习题答案

编译原理第三章练习题答案编译原理第三章练习题答案编译原理是计算机科学中的重要课程之一,它研究的是将高级语言程序转化为机器语言的过程。

在编译原理的学习过程中,练习题是提高理解和应用能力的重要途径。

本文将为大家提供编译原理第三章的练习题答案,希望能够对大家的学习有所帮助。

1. 什么是词法分析?请简要描述词法分析的过程。

词法分析是编译过程中的第一个阶段,它的主要任务是将源程序中的字符序列划分为有意义的词素(token)序列。

词法分析的过程包括以下几个步骤:1)扫描:从源程序中读取字符序列,并将其转化为内部表示形式。

2)识别:根据预先定义的词法规则,将字符序列划分为不同的词素。

3)分类:将识别出的词素进行分类,如关键字、标识符、常量等。

4)输出:将分类后的词素输出给语法分析器进行进一步处理。

2. 什么是正则表达式?请给出一个简单的正则表达式示例。

正则表达式是一种用于描述字符串模式的工具,它由一系列字符和操作符组成。

正则表达式可以用于词法分析中的词法规则定义。

以下是一个简单的正则表达式示例:[a-z]+该正则表达式表示匹配一个或多个小写字母。

3. 请简要描述DFA和NFA的区别。

DFA(Deterministic Finite Automaton)和NFA(Nondeterministic Finite Automaton)是有限状态自动机的两种形式。

它们在词法分析中常用于构建词法分析器。

DFA是一种确定性有限状态自动机,它的状态转换是确定的,每个输入符号只能对应一个状态转换。

相比之下,NFA是一种非确定性有限状态自动机,它的状态转换是非确定的,每个输入符号可以对应多个状态转换。

4. 请简要描述词法分析器的实现过程。

词法分析器的实现过程包括以下几个步骤:1)定义词法规则:根据编程语言的语法规范,定义词法规则,如关键字、标识符、常量等。

2)构建正则表达式:根据词法规则,使用正则表达式描述不同类型的词素。

3)构建有限状态自动机:根据正则表达式,构建DFA或NFA来识别词素。

03-编译原理课程测试第三套卷(附解析)-编译原理试题-中国科技大学

03-编译原理课程测试第三套卷(附解析)-编译原理试题-中国科技大学
(a)为什么会出现一条指令前有多个标号的情况,如.L2和.L4,还有.L5、.L3和.L1?从控制流语句的中间代码结构加以解释。
(b)每个函数都有这样的标号.L1,它的作用是什么,为什么本函数没有引用该标号的地方?
main()
{
long i,j;
if ( j )
i++;
else
while (i) j++;
(b) .L1标号定义的入口是返回调用者时该执行的指令,在函数内部有return语句时就会跳转到.L1。
8.这是基于下面几点原因。
1.两个函数库libuser1.a和libuser2.a都定义了某个函数或某个置初值的外部变量,把它简称为a。
2.test.c引用a。
3.test.c还引用libuser2.a的其它某个函数或外部变量,把它简称为b。在libuser2.a中,a和b在同一个目标文件中。
9.(5分)根据教材上所介绍的方法,C++中的对象声明语句应如何翻译成C语句?如教材图11.11(旧教材的图10.11)程序中的
Point _center;
应怎样翻译?
编译原理课程测试第三套卷参考答案
1.(a)语言{ ( ), (( )( )), ((( ))), ( )( )( )( )( )}是正规语言,因为该语言只包括有限个句子,它可以用正规式定义如下:
SDCif D.lengthC.length then print (“error”)
Da bD.length := 1
Da D1bD.length := D1.length + 1
CcC.length := 1
CC1cC.length := C1.length + 1

编译原理第三章练习题答案

编译原理第三章练习题答案

编译原理第三章练习题答案一、选择题1. 在编译原理中,词法分析器的作用是什么?A. 将源代码转换为汇编代码B. 将源代码转换为中间代码C. 识别源代码中的词法单元D. 检查源代码的语法正确性答案:C2. 词法单元中,标识符和关键字的区别是什么?A. 标识符可以重定义,关键字不可以B. 标识符和关键字都是常量C. 标识符是用户自定义的,关键字是语言预定义的D. 标识符和关键字都是变量名答案:C3. 下列哪个不是词法分析器生成的属性?A. 行号B. 列号C. 词法单元的类型D. 词法单元的值答案:A4. 词法分析器通常使用哪种数据结构来存储词法单元?A. 栈B. 队列C. 链表D. 数组答案:C5. 词法分析器的实现方法有哪些?A. 手工编写正则表达式B. 使用词法分析器生成器C. 编写扫描程序D. 所有上述方法答案:D二、简答题1. 简述词法分析器的基本工作流程。

答案:词法分析器的基本工作流程包括:读取源代码字符,根据正则表达式匹配词法单元,生成词法单元的类型和值,并将它们作为输出。

2. 什么是正规文法?它在词法分析中有什么作用?答案:正规文法是一种形式文法,它使用正则表达式来定义语言的词法结构。

在词法分析中,正规文法用于描述程序设计语言的词法规则,帮助词法分析器识别和生成词法单元。

三、应用题1. 给定一个简单的词法分析器,它需要识别以下词法单元:标识符、关键字(如if、while)、整数、运算符(如+、-、*、/)、分隔符(如逗号、分号)。

请描述该词法分析器的实现步骤。

答案:实现步骤如下:- 定义词法单元的类别和对应的正则表达式。

- 读取源代码字符,逐个字符进行匹配。

- 使用状态机或有限自动机来识别词法单元。

- 根据匹配结果生成相应的词法单元类型和值。

- 输出识别的词法单元。

2. 设计一个简单的词法分析器,它可以识别以下C语言关键字:int, float, if, else, while, return。

编译原理第三章练习题答案

编译原理第三章练习题答案

编译原理第三章练习题答案编译原理第三章练习题答案编译原理是计算机科学中的重要学科,它研究的是如何将高级语言代码转化为机器语言的过程。

在编译原理的学习过程中,练习题是不可或缺的一部分,通过完成练习题可以更好地理解和掌握编译原理的知识。

本文将为大家提供编译原理第三章练习题的答案,希望对大家的学习有所帮助。

1. 什么是语法分析?语法分析是编译器中的一个重要模块,它的主要任务是根据给定的语法规则,对输入的源代码进行分析和解释。

语法分析器会根据语法规则构建一个语法树,用于表示源代码的结构和含义。

常用的语法分析方法有递归下降法、LL(1)分析法和LR分析法等。

2. 什么是LL(1)文法?LL(1)文法是一种特殊的上下文无关文法,它具有以下两个特点:(1) 对于任何一个句子,最左推导和最右推导是唯一的。

(2) 在预测分析过程中,只需要向前看一个输入符号就可以确定所采用的产生式。

LL(1)文法是一种常用的文法形式,它适用于递归下降法和LL(1)分析法。

3. 什么是FIRST集合和FOLLOW集合?FIRST集合是指对于一个文法符号,它能够推导出的终结符号的集合。

FOLLOW 集合是指在一个句型中,某个非终结符号的后继终结符号的集合。

计算FIRST集合和FOLLOW集合可以帮助我们进行语法分析,特别是LL(1)分析。

4. 什么是递归下降语法分析法?递归下降语法分析法是一种基于产生式的自顶向下的语法分析方法。

它的基本思想是从文法的开始符号开始,递归地根据产生式进行分析,直到推导出输入符号串或发现错误。

递归下降语法分析法的实现比较简单,但对于某些文法可能会出现回溯现象,影响分析效率。

5. 什么是LR分析法?LR分析法是一种自底向上的语法分析方法,它的基本思想是从输入符号串开始,逐步构建语法树,直到推导出文法的开始符号。

LR分析法具有较好的分析效率和广泛的适用性,常用的LR分析方法有LR(0)、SLR(1)、LR(1)和LALR(1)等。

编译原理第3阶段练习题

编译原理第3阶段练习题

江南大学现代远程教育第三阶段练习题考试科目:《编译原理》第8章至第10章(总分100分)学习中心(教学点)批次:层次:专业:学号:身份证号:姓名:得分:一、选择与填充(30)1. 下列哪种不是代码生成技术?()A. 基于多元式B. 基于树结构C. 基于LR(0)D. 基于DAG2. 基本块内的优化为()。

A. 代码外提,删除归纳变量 B.删除多余运算,删除无用赋值C.强度削弱,代码外提 D.循环展开,循环合并3. 表达式-a+b*(-c+d)的逆波兰式是()。

A. ab+-cd+-*B. a-b+c-d+*C. a-b+c-d+*D. a-bc-d+*+4. 设A→X1X2…Xi…XN是属性文法AG中的任一产生式,如果它满足下面条件,则称AG为L-属性文法:Xi的_________________只依赖于A的__________________和X1,X2…,Xi-1的属性;A的__________________只依赖于A的__________________和产生式右部符号的属性。

5.下面哪种不是中间代码?( )A. 三元式B. 四元式C. 二元式D. 后缀式6.在使用高级语言编程时,可通过编译程序发现源程序的全部_________错误和部分_______错误。

二、何谓优化?按所涉及的程序范围可分为哪几级优化?(15)三、设当前层为L,可用偏移量Offset值为101,且有下面程序,写出本层符号表的内容。

(15)const i=100;type ar=array [1..20] of real;var x:real;y:integer;a1,a2:ar;四、按照三种基本控制结构文法将下面的语句翻译成四元式序列:(15)while (A<C ∧ B<D)if (A ≥ 1) C=C+1;else while (A ≤ D)A=A+2;}。

五、某语言的拓广文法G为:(25)(1) S → Db|B(2) D → d|ε(3) B → Ba|ε证明G不是LR(0)文法而是SLR(1)文法,请给出SLR(1)分析表。

编译原理第3阶段测试题

编译原理第3阶段测试题

第三阶段测试卷考试科目:《编译原理》第8章至第10章(总分100分)时间:90分钟学习中心(教学点)批次:层次:专业:学号:身份证号:姓名:得分:一、选择与填充(30)1. 四元式之间的联系是通过( )来实现的。

A.指示器 B.临时变量 C.符号表 D.程序变量2. 优化可生成( )的目标代码。

A. 运行时间较短B. 运行时间短但占用内存空间大C. 占用存储空间较小D. 运行时间短且占用存储空间小3. 下列( )优化方法不是针对循环优化进行的。

A. 强度削弱 B.删除归纳变量 C.删除多余运算 D.代码外提4. 在目标代码生成阶段,符号表用于( )。

A.目标代码生成 B.语义检查 C.语法检查 D.地址分配5.语法分析是依据语言的__________规则进行的,中间代码产生是依据语言的_________规进行的。

6.优化可分为局部优化、_____________和全局优化三种。

二、写出表达式A*(B/C-D)+E/F的逆波兰中间代码。

(15)三、什么是活动记录?它主要由哪些内容构成?(15)四、试写出算术表达式a+b*c-(c*b+a-e)/(b*c+d)优化后的四元式序列。

(15)五、文法G[M]及其LR分析表如下,请给出对串dada#的分析过程。

(30)G[M]: 1) S →VdB2) V →e3) V →ε 4) B →a5) B →Bda 6) B →ε附:参考答案:一、选择与填充(30)1. 四元式之间的联系是通过( B )来实现的。

A.指示器 B.临时变量 C.符号表 D.程序变量2. 优化可生成( D )的目标代码。

A. 运行时间较短B. 运行时间短但占用内存空间大C. 占用存储空间较小D. 运行时间短且占用存储空间小3. 下列( C )优化方法不是针对循环优化进行的。

A. 强度削弱 B.删除归纳变量 C.删除多余运算 D.代码外提4. 在目标代码生成阶段,符号表用于( D )。

编译原理 第3章习题解答

编译原理 第3章习题解答

第三章习题参考解答3.1 构造自动机A,使得①②③当从左至右读入二进制数时,它能识别出读入的奇数;④它识别字母表{a, b}上的符号串,但符号串不能含两个相邻的a,也不含两个相邻的b;⑤它能接受字母表{0, 1}上的符号串,这些符号串由任意的1、0和随后的任意的11、00对组成。

⑥它能识别形式如±dd*⋅ d*E ±dd的实数,其中,d∈{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}。

3.2 构造下列正规表达式的DFSA:① xy*∣yx*y∣xyx;② 00∣(01)*∣11;③ 01((10∣01)*(11∣00))*01;④ a(ab*∣ba*)*b。

3.3 消除图3.24所示自动机的空移。

图3.24 含空移的自动机3.4 将图3.25所示NDFSA确定化和最小化。

图3.25 待确定化的NDFSA3.5 设e、e1、e2是字母表∑上的正规表达式,试证明① e∣e=e;② {{e}}={e};③ {e}=ε∣e{e};④ {e1 e2} e1= e1{e2 e1};⑤ {e1∣e2}={{e1}{e2}}={{e1}∣{e2}}。

3.6 构造下面文法G[Z]的自动机,指明该自动机是不是确定的,并写出它相应的语言: G[Z]:Z→A0A→A0∣Z1∣03.7 设NDFSA M=({x, y},{a, b},f, x, {y}), 其中,f(x, a)={x, y}, f(x, b)={y}, f(y, a)=∅, f(y, b)={x, y}。

试对此NDFSA 确定化。

3.8 设文法G[〈单词〉]:〈单词〉→〈标识符〉∣〈无符号整数〉 〈标识符〉→〈字母〉∣〈标识符〉〈字母〉∣〈标识符〉〈数字〉 〈无符号整数〉→〈数字〉∣〈无符号整数〉〈数字〉 〈字母〉→a ∣b 〈数字〉→1∣2试写出相应的有限自动机和状态图。

3.9 图3.29所示的是一个NDFSA A ,试构造一个正规文法G ,使得L(G)= L(A)。

《编译原理》单元测试第三章试题

《编译原理》单元测试第三章试题

编译原理2014—2015学年第二学期第三单元测试试卷(闭卷考试)时间:45分钟。

姓名班级出题人刘兵班级(满分100分)一、选择题(5*2分)(每题1分,共10分)1.下述正规表达式中_____与(a*+b)*(c+d)等价。

A.a*(c+d)+b(c+d) B.a*(c+d)*+b(c+d)*C.a*(c+d)b*(c+d) D.(a+b)*c+(a+b)*d2.词法分析器的输出结果是()A.单词的种别编码 B.单词在符号表中的位置C.单词的种别编码和自身值 D.单词自身值3.正规式M1和M2等价是指()A.M1和M2状态数相等 B.M1和M2有向边条数相等C.M1和M2所识别的语言集相等 D. M1和M2状态数和有向边条数相等4. DFA M(见图1)接受的字集为。

a. 以0开头的二进制数组成的集合b. 以0结尾的二进制数组成的集合c. 含奇数个0的二进制数组成的集合d. 含偶数个0的二进制数组成的集合图15.在下列正规表达式中,_______描述了字母表{a,b}上长度不为3的符号串A.ε|0|1|00|01|10|11|(0|1)(0|1)+B.ε|0|1(00|01|10|11)+(0|1)*C.ε|0|1(00|01|10|11)*D.没有一个二、简答题(2*10分)(每题10分,共20分)1.什么是扫描器?扫描器的功能是什么?2. 给定如图2所示的有穷自动机,试用正规表达式给出它能接受的语言集合。

三、分析题(4题共70分)1.化简下面文法:G[S] :S->Bab|cCB->b|bSC->DaD->Cb|CDa2.设字母表∑= {a,b,0,1},请写出满足下述条件的正规表达式:以字母a或b开头,以1结尾。

3.构造一个DFA M,它接受字母表{a,b,c} 上, 以a或b开始的字符串,或以c开始但所含的a不多于一个的字符串。

4. 正规式(ab)*a与正规式a(ba)*是否等价?请说明理由。

编译原理(第三版)第3章课后练习及参考答案中石大版

编译原理(第三版)第3章课后练习及参考答案中石大版

第3章练习P47作业布置:P47 4 ,9,11,14(1)4、已知文法G[Z]:(1)Z::=aZb (2)Z::=ab写出L(G[Z])的全部元素解:L(G[Z])={a n b n,n>=1}9、考虑下面的上下文无关文法:S→SS* | SS+ | a(1)表明通过此文法如何生成串aa+a*,并为该串构造语法树(2)该文法生成的语言是什么?解:(1)推导过程见语法树。

语法树如下(2)该文法生成的语言为用递归逆波兰式表示的运算式。

逆波兰式是将运算对象写在前面,把运算符写在后面。

11、G[E]:E→T|E+T|E-TT→F|T*F|T/FF → (E)|i证明E+T*F 是它的一个句型,指出这个句型的所有短语、直接短语和句柄。

解:可为E+T*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 。

14、给出生成下述语言的上下文无关文法:(1){a n b n a m b m |n,m>=0}(2){1n 0m 1m 0n |n,m>=0}(3){WaW r |W 属于{0|a}*,W r 表示W 的逆}解:(1)所求文法为G[S]=({S,A},{a,b},P,S),其中P 为:S →AA A →aAb|ε (2)所求文法为G[S]=({S,A},{0,1},P,S),其中P 为: S →1S0|AA →0A1|ε(3)W 属于{0|a}*是指W 可以的取值为{ε,0,a,00,a0,aa0,00aa,a0a0,…}E E + T T * F如果W=aa0a00,则W r=00a0aa。

所求文法为G[S]=({S,P,Q},{0,a},P,S),其中P为:S 0S0|aSa|a。

蒋立源编译原理第三版第三章习题与答案(修改后)

蒋立源编译原理第三版第三章习题与答案(修改后)

[S] [A] [S,B]
ab
[A]
[S,B]
2
[A]
初态 : [S] 终态 : [S,B] (a) 确定化后的状态矩阵
ab
1
2
3
3
2
初态 : 1 终态 : 3 (b) 改名后的状态矩阵
a
1
2
b 3
a (c) DFA M ′的状态转换图
答案图 3-4-(3)
现将 DFA M′最小化:
( ⅰ) 初始分划由两个子集组成,即
3-3 对于如下的状态转换矩阵:
ab
S
AS
AAB
B
BB
ab S
ABA B
AB BB
( ⅰ ) 初态 : S 终态 : B
( ⅲ ) 初态 : S 终态 : B
ab
S
AB
A
CA
BBC
C
CC
ab S
ACB BBC
C
AS CC
( ⅱ ) 初态 : S 终态 : A,C
( ⅳ ) 初态 : S 终态 : C
答案图 3-3
a, b C
(2) 相应的 3 型文法为:
( ⅰ ) S →aA|bS
A→aA|bB| b
B→ aB|bB|a|b
( ⅱ) S →aA|bB| a源自A→bA|aC| a|bB→aB|bC| b
C→ aC|bC|a|b
( ⅲ) S →aA|bB| b A→aB|bA| a
B→aB| bB|a|b
**
(2) b|a(aa b) b
NFA。
3-8 构造与正规式 (a|b) *(aa|bb)(a|b) * 相应的 DFA。
第 3 章 习题答案

编译原理_第三阶段练习

编译原理_第三阶段练习

江南大学网络教育第三阶段练习题
考试科目:《编译原理》第章至第章(总分100分)
__________学习中心(教学点)批次:层次:
专业:学号:身份证号:
姓名:得分:
一单选题 (共4题,总分值20分,下列选项中有且仅有一个选项符合题目要求,请在本题答案题卡上正确填涂。

)
1. 下列哪种不是代码生成技术?(C)(5 分)
a. 基于多元式 B. 基于树结构 C. 基于LR(0) D. 基于DaG
2. 基本块内的优化为(B)。

(5 分)
a. 代码外提,删除归纳变量 B. 删除多余运算,删除无用赋值
C. 强度削弱,代码外提
D. 循环展开,循环合并
3. 表达式-a+b*(-c+d)的逆波兰式是(D)。

(5 分)
a. ab+-cd+-* B. a-b+c-d+* C. a-b+c-d+* D. a-bc-d+*+
4. 下面哪种不是中间代码?(C )(5 分)
a. 三元式 B. 四元式 C. 二元式 D. 后缀式
二填空题 (共2题,总分值10分 )
5. 在使用高级语言编程时,可通过编译程序发现源程序的全部___语法_______错误和部分__语义______错误。

(5 分)
第1页/共6页。

编译原理1_3章复习题B答案

编译原理1_3章复习题B答案

郑州大学软件技术学院《编译原理》课程第1-3章单元测试题(考试时间:90 分钟)一、简答题(23 分)1、请写出编译程序的几个逻辑阶段及各阶段的功能。

(5分)词法分析、语法分析、语义分析和中间代码生成、代码优化、目标代码生成。

(每答出一条给1分)2、请写出解释程序,编译程序的区别。

(4分)解释程序:它以该语言写的源程序作为输入,但不产生目标程序,而是边解释边执行源程序本身。

(2分)编译程序:一种翻译程序,它的源语言是“高级语言”,目标语言是“低级语言”。

(2分)3、上下文无关文法是四元组G =(V T , V N , S, P),请写出这四元分别表示的意思。

(4分)V T: 终结符的集合(1分)V N: 非终结符的集合(1分)S: 文法开始符号(1分)P: 产生式的集合(1分)4、请写出文法的句型和句子的概念。

(4分, 每个概念2分)5、简述NFA与DFA的各自特点。

(6分)DFA:(1) 初态唯一(2) 输入字符不包括 边(3) 有向边上只有一个字符(4) 一个状态对于某个字符,最多只有一条出边(3分,少一条扣一分,最低0分)S A eS A m a S A A nNFA : (1)初态不唯一(2)输入字符包括 ε(3)有向边上可以为字符串(4)一个状态对于某个字符,可能有多条输出边 (3分, 少一条扣一分,最低0分)三、综合题1、(10分)考虑文法S → A | SA A → a | b | c | d |…| x | y | z (1)给出name 的最右推导(4分) (2)给出name 的语法分析树(3分) (3)该文法描述的是什么语言?(3分)(1) S => SA (2) => Se => SAe=> Sme=> SAme=> Same => Aame=> name(3) 由小写字母构成的字符串的集合。

(意思对即可,3分)(1)每少推或错推一步,扣0.5分, 最低0分 (2)树每画错一步,扣0.5分, 最低0分2、(15分)考虑下面的表达式文法,它包括数组访问、加和赋值:E → E[E] | E + E | E = E |(E )| i(1)方法的终结符是什么?非终结符是什么?(4分) (2)该文法描述的话言是什么?(4分)(3)它是二义的吗?如果是二义的,用某个句型的两个不同的最左推导来说明。

编译原理习题及答案1~3

编译原理习题及答案1~3

图2-13 习题2.6的NFA
用子集法将图2-13所示的NFA确定化,如图2-14所示
由图2-14可看出非终态2和4的下一状态相同,终态6和8 的下一状态相同,即得到最简状态为
{0} {1} {2,4} {3} {5} {6,8} {7}
按顺序重新命名为0、1、2、3、4、5、6,则 得到最简DFA,如图2-15所示。
(2) 将编译过程分成若干“遍”是为了 。
A.提高程序的执行效率
B.使程序的结构更加清晰
C.利用有限的机器内存并提高机器的执行效率
D.利用有限的机器内存但降低了机器的执行效

(3) 构造编译程序应掌握 。
A.源程序
B.目标语言
C.编译方法
D.A~C项
(4) 编译程序绝大多数时间花在 上。
A.出错处理
2.9构造一个DFA,它接收 Σ ={a,b}上所有含偶数 个a的字符串。 解:Σ ={a,b}上所有含偶数个a的字符串可表示为 (b|ab*a)*
2.10 下列程序段以B表示循环体,A表示初始化,I表 示增量,T表示测试:
(4) 状态转换图(见图2-1)接受的字集为 _______。 A.以0开头的二进制数组成的集合 B.以0结尾的二进制数组成的集合 C.含奇数个0的二进制数组成的集合 D.含偶数个0的二进制数组成的集合
图2-1 习题2.1的DFA M
(5) 对于任一给定的NFA M, 一个DFA M′,使 L(M)= L(M′)。
S
a
b
0
2
1
1

2
2
2
2
其状态转换图如图2-3所示。
图2-3 习题2.3的DFA M′
将图2-3所示的DFA M′最小化。首先,将M′的状态分 成终态组{1,2}与非终态组{0}。其次,考察{1,2}。由于 {1,2}a={1,2}b={2} {1,2},因此不再将其划分了,也即整 个划分只有两组:{0}和{1,2}。令状态1代表{1,2},即把原 来到达2的弧都导向1,并删除状态2。最后,得到如图2-4 所示的化简了的DFA M′。

编译原理练习(3-4章)含答案

编译原理练习(3-4章)含答案
提示:(1)生成的偶正数应不包括,若干个0。 (2)将偶正数分为两类:一类为允许若干个0(0个数>=0)后跟不以0开头 的偶正数;一类为允许若干个0后跟2|4|6|8的偶正数(如0002,即不允许只含 有若干0 )。 2、为只包含数字、 , 的表达式,例如 9 2 5等构造一个文法,使得 和 运算满足右结合, 的运算优先级高于。 提示:结合性和运算优先性可以根据语法树的层次考虑。进而思考左递归产 生式与运算符的结合性的关系。
开始
1
0
1
1
偶0偶1
偶0奇1
00
00
奇0偶1 2
1
1
3
奇0奇1
12
结束语
谢谢大家聆听!!!
13
第四章 知识结构
⑤ 正规文法
② 正规式

有穷自动机(NFA
DFA)
④ห้องสมุดไป่ตู้
{正规集}


词法分析
自动构造工具
1、已知正规式b(ab)*和(ba)*b (1)分别构造上述两个正规式相应的DFA, (2) 将(1)构造的DFA最小化, (3)利用DFA证明b(ab)*=(ba)*b (4)构造该语言的正规文法。
3、一个上下文无关文法生成句子 abbaa 的推导树如下: (1)给出串 abbaa 最左推导、最右推导。 (2)该文法的终结符、非终结符、产生式集合 P 可能有哪些元素? (3)找出该句子的所有短语、直接短语、句柄。
提示:知识点:语法树的构造,文法的组成,短语等概念。
4、给出生成下述语言的三型文法:{anbmck|n, k>=1,m>0 } 提示:(1)三型文法中产生式的特点 (2)可参考P49 第16题
编译原理练习(3-4章)含答 案
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

考试科目:《编译原理》第8章至第10章(总分100分)
一、选择与填充(30)
1. 四元式之间的联系是通过( B )来实现的。

A.指示器 B.临时变量 C.符号表 D.程序变量
2. 优化可生成( D )的目标代码。

A. 运行时间较短
B. 运行时间短但占用内存空间大
C. 占用存储空间较小
D. 运行时间短且占用存储空间小
3. 下列( C )优化方法不是针对循环优化进行的。

A. 强度削弱 B.删除归纳变量 C.删除多余运算 D.代码外提
4. 在目标代码生成阶段,符号表用于( D )。

A.目标代码生成 B.语义检查 C.语法检查 D.地址分配
5.语法分析是依据语言的___语法__规则进行的,中间代码产生是依据语言的___语义__规进行的。

6.优化可分为局部优化、__循环优化___和全局优化三种。

二、写出表达式A*(B/C-D)+E/F的逆波兰中间代码。

(15)
答:ABC/D.*EF/+
三、什么是活动记录?它主要由哪些内容构成?(15)
答:一个过程的一次执行所需信息的管理,是通过称为活动记录的连续存储块来实现的,活动记录的主要内容有:
1、临时变量域,存放目标程序临时变量的值;
2、局部数据域,存放过程本次执行时的局部数据、简单变量及数组内情向量等;
3、机器状态域,保存在调用过程前有关机器状态的信息,包括各寄存器的当前值及返回地址等;
4、存取链,为访问其它活动记录中所存放的非局部数据所提供的链地址;
5、控制链,指向主调过程的活动记录;
6、实参,存放主调过程为被调用过程所提供的实参信息;
7、返回值,为主调过程存放被调过程的返回值;
四、试写出算术表达式a+b*c-(c*b+a-e)/(b*c+d)优化后的四元式序列。

(15)
五、文法G[M]及其LR分析表如下,请给出对串dada#的分析过程。

(30)
G[M]: 1) S →VdB2) V →e
3) V →ε 4) B →a
5) B →Bda 6) B →ε
答:。

相关文档
最新文档