编译原理(山东联盟-山东财经大学)知到智慧树章节测试课后答案2024年秋山东财经大学_第1页
编译原理(山东联盟-山东财经大学)知到智慧树章节测试课后答案2024年秋山东财经大学_第2页
编译原理(山东联盟-山东财经大学)知到智慧树章节测试课后答案2024年秋山东财经大学_第3页
编译原理(山东联盟-山东财经大学)知到智慧树章节测试课后答案2024年秋山东财经大学_第4页
编译原理(山东联盟-山东财经大学)知到智慧树章节测试课后答案2024年秋山东财经大学_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

编译原理(山东联盟-山东财经大学)知到智慧树章节测试课后答案2024年秋山东财经大学第一章单元测试

下述描述错误的是()。

A:机器语言程序是由0或1组成,能被机器直接识别并执行B:高级语言程序必须经过编译或解释,才能被机器执行C:汇编语言程序是由助记符组成,能被机器直接识别并执行D:高级语言程序很接近自然语言,不能被机器直接识别和执行

答案:汇编语言程序是由助记符组成,能被机器直接识别并执行编译程序是一种()。

A:翻译程序B:汇编程序C:目标程序D:解释程序

答案:翻译程序()不是编译程序的组成部分。

A:词法分析程序B:中间代码生成程序C:语法分析程序D:接口管理程序

答案:接口管理程序编译程序中,语法分析器的输入是()。

A:短语B:表达式C:句子D:单词

答案:单词编译过程分成若干“遍”的主要目的是()。

A:利用有限的机器内存且提高机器的使用效率B:使程序的结构更为清晰C:利用有限的机器内存但降低机器的使用效率D:提高程序的执行效率

答案:使程序的结构更为清晰C语言编写的源程序,每次执行都要边解释边执行。

A:错B:对

答案:错语法分析的任务是将输入的单词序列转换成各种语法短语。

A:对B:错

答案:对编译程序的前端部分是和目标机器无关的分析部分。

A:错B:对

答案:对语义分析是在语法分析之后进行。

A:错B:对

答案:对编程程序生成的目标程序是机器语言编写的指令。

A:错B:对

答案:错

第二章单元测试

符号串abc的前缀有()个。

A:4B:3C:2D:1

答案:4符号串x=ab,符号串y=abc,x和y的乘积(或称:连接)得到的符号串是()。

A:abcB:cababC:a2b2cD:ababc

答案:ababc语法树的构成方法有()种。

A:1B:3C:4D:2

答案:2Chomsky文法分类中,2型文法又称为()。

A:一般文法B:正规文法C:上下文有关文法D:上下文无关文法

答案:上下文无关文法已知文法:G(E):

E→T|E+T

T→F|T*F

F→i

该文法的一个句子i1+i2*i3中,句柄是()。

A:i1B:i2*i3C:i3D:i2

答案:i1词法分析器的输出包括单词的()。

A:长度B:地址C:自身值D:种别(也称:类别)

答案:自身值;种别(也称:类别)空串ε的长度为0.

A:错B:对

答案:对bc和cb是两个不同的符号串。

A:错B:对

答案:对字母表的克林闭包(kleene)一定包含符号ε。

A:错B:对

答案:对短语、直接短语、句柄都是句型的成分。

A:对B:错

答案:对

第三章单元测试

请根据下述DFA的状态图,完成DFA最小化的操作。若将图中从0到5共6个状态划分为三个状态子集,{0},{1,2,4}和{3,5},

答案:无已知不确定的有穷自动机NFA的状态图如下图所示:

请完成下述状态转换表,图中带圈的数字表示状态的编号。

答案:无1、已知不确定的有穷自动机NFA=({X,Y,Z},{0,1},f,{X},{Z}),其中映射关系f:f(X,0)={Z}

f(X,1)={X}

f(Y,0)={X,Y}

f(Z,0)={X,Z}

f(Z,1)={Y},请补全下列状态转换表。

答案:无

第四章单元测试

已知文法G(E)如下:E→TE’

E’→+E|ε

T→FT’

T’→T|ε

F→PF’F’→*F’|ε

P→(E)|a|b|^完成下列判定该文法是否是LL(1)文法的工作。

答案:不是LL(1)文法。

第五章单元测试

已知拓展文法G(S)的产生式如下:S¢®EE®aA|bBA®cA|dB®cB|d实现由项目集的方法构造LR(0)分析表,完成下列题目。

答案:无法直接提供完整的LR(0)分析表,因为这需要详细的项目集闭包、移进-归约和冲突解决等过程,这些内容超出了仅提供答案的范畴。但是,我可以告诉你构造LR(0)分析表的一般步骤,以及指出在这个特定文法中会使用到的一些关键概念:1.**构造项目集**:首先,从文法的开始符号出发,创建初始项目集,该集合包含文法的起始符号S引入的项目S'->.S。然后,对每个项目进行闭包操作,扩展项目集直到不再有新项目加入。2.**识别项目集的转移**:对于每个项目集中的项目A->α.Bβ(点在B前),检查B能够推导出的第一个符号,并为该符号创建或找到相应的项目集。3.**构造分析表**:分析表由两部分组成,一部分是状态(即项目集标识),另一部分是动作(移进、归约或接受)。对于每个状态和每个输入符号,决定采取的操作:-**移进**:如果遇到一个符号可以导致进入新的项目集,则标记为移进。-**归约**:如果项目集中存在形如A->α.的项目,说明产生了文法规则A->α,此时考虑是否归约。-**接受**:当到达包含S'->S.的项目集时,如果输入结束,标记为接受。4.**处理冲突**:LR(0)分析器不允许任何冲突(移进-移进、归约-归约、移进-归约)。如果在构建过程中发现冲突,通常需要修改文法或采用更复杂的解析技术(如SLR、LALR或LR(1))。针对您给出的文法,由于缺乏具体项目集的构建细节和闭包过程的展示,我不能直接提供最终的LR(0)分析表。但你可以按照上述步骤,逐步构建项目集、确定转移并填充分析表,注意检查是否存在冲突。如果文法是LR(0)的,你应该能顺利完成这个过程;如果不是,可能需要调整文法或采用更高级的解析算法。

第六章单元测试

某属性文法,产生式S→B关联的语义计算包括{B.f:=S.f},据此判断.f是()属性。

A:综合属性B:继承属性C:遗传属性D:具体属性

答案:继承属性某属性文法,产生式E→T关联的语义计算包括{E.val:=T.val},据此判断.val属性应该在()语法分析过程中进行语义计算。

A:从左到右B:自底向上C:自顶向下D:从右到左

答案:自底向上某属性文法,产生式B→Bb关联的语义计算是B→{B1.in_num:=B.in_num}B1b{B.num:=B1.num-1},在自顶向下语法分析时,对于应该先计算的属性描述正确的是()。

A:继承属性.numB:继承属性.in_numC:综合属性.in_numD:综合属性.num

答案:继承属性.in_num某属性文法中,为产生式A→Aa关联的语义计算可以是{A.n→A.n+1}。

A:错B:对

答案:错S-属性文法的语义技术是自底向上进行。

A:对B:错

答案:对语法制导的语义计算是指在语义分析的同时,顺便进行语法分析和检查。

A:对B:错

答案:错原来的文法G(S)的基础上,为其文法符号关联具有特定意义的属性,并为产生式关联语义计算或条件谓词,就构成属性文法。

A:错B:对

答案:对终结符号的属性值来自词法分析的结果。

A:对B:错

答案:对既有继承属性又有综合属性的文法是L-属性文法。

A:对B:错

答案:对基于属性文法的语义计算更适合在语法分析时实现语义计算。

A:错B:对

答案:错

第七章单元测试

(a+b)/(c-d)对应的逆波兰式(后缀式)是()。

A:ab+cd-/B:abcd+/-C:abcd-/+D:ab+cd/-

答案:ab+cd-/表达式(a+b)/c-(a+b)*d对应的三元式形式,(a+b)的运算结果用()表示。

A:(a+b)B:1C:a+bD:(1)

答案:(1)已知产生式S→ifBthenS1,其语义规则{B.true:=newlable;B.false:=S.next;S1.next:=S.next;S.code:=B.code‖gen(B.true':')‖S1.code},下列描述正确的有()

A:S.next是整个语句执行完的下一条语句标号B:newlable表示生成一个新的语句标号C:此处newlable的值是S1语句块的第一个语句标号D:.next是继承属性,所以跳转前需要先确定语句块S的下一条语句标号

答案:S.next是整个语句执行完的下一条语句标号;newlable表示生成一个新的语句标号;此处newlable的值是S1语句块的第一个语句标号;.next是继承属性,所以跳转前需要先确定语句块S的下一条语句标号后缀式表示法可以不用括号,因为只要知道每个算符的目数,就能对它进行无歧义的分解计算。

A:对B:错

答案:对在DAG图中,每个节点对应一个运算符。

A:错B:对

答案:对三元式和四元式都属于三地址码。

A:错B:对

答案:对静态语义分析的任务最主要是检查程序结构(控制结构和数据结构)的一致性和完整性。

A:错B:对

答案:对赋值语句x:=x+5的四元式描述是(:=x5x)。

A:错B:对

答案:错无条件跳转语句gotoL的四元式描述是(gotoL--),其中“-”表示此处不填。

A:错B:对

答案:对算术表达式在语义分析时直接转换成三地址码指令,不需要回填。

A:对B:错

答案:对

第八章单元测试

编译的各个阶段都可能要用到符号表。

A:对B:错

答案:对对一般的程序设计而言,其编译程序的符号表应包含哪些内容及何时填入信息不能一概而论。

A:错B:对

答案:对符号表中符号的常见属性,最关键的是符号名,要求不同符号的符号名尽可能不要相同。

A:对B:错

答案:对符号的作用域是通过其在符号表中是否可见体现的。

A:对B:错

答案:错符号表可以是单表结构,也可以是多表结构,若采用多表结构,还需要维护一个作用域栈。

A:错B:对

答案:对一般来说,符号表中的信息可以视为两大栏:名字栏和信息栏

A:错B:对

答案:对符号表可以用来帮助做名字的作用域分析。

A:对B:错

答案:对符号表常用的操作不包括()。

A:删除一个或一组无用的项B:对给定名字,往表中填写或更新它的某些信息C:查询给定的名字是否已在表中D:检查名字是否符合标识符命名的文法

答案:检查名字是否符合标识符命名的文法目标代码生成阶段,对符号名进行地址分配的依据是()。

A:符号表B:预测分析表C:符号栈D:DFA

答案:符号表编译程序使用()区别名字的作用域。

A:说明名字的过程或函数名B:说明名字的过程或函数的动态层次号C:说明名字的过程或函数的静态层次号D:名字的行号

答案:说明名字的过程或函数的静态层次号

第九章单元测试

以下关于数据存储的说法错误的是(

)。

A:目标程序在目标机中运行时,都置身在一个连续的逻辑地址空间B:目标程序代码通常存放在静态代码区,过程/函数存放在动态数据区的栈区C:程序运行时,存储空间需要为机器的操作系统和体系结构等代码预留一部分存储空间D:在静态数据区,数据对象并不是一个字节一个字节连续存放,存放时需要“留白”处理,目的是为了“边界对齐”

答案:目标程序在目标机中运行时,都置身在一个连续的逻辑地址空间关于数据对象存储分配的描述正确的是()。

A:数据对象中,常量存放在静态数据区,变量存放在动态数据区B:无论何种编程语言,若要使用堆式存储模式,就必须编写编写函数显式分配和释放存储空间C:C语言中,所有的函数以栈式分配模式存储D:编译完成就能确定变量个数和数据大小的存放在静态数据区,只有运行时才能确定数据对象数量和大小的存放在动态数据区

答案:数据对象中,常量存放在静态数据区,变量存放在动态数据区关于过程/函数的活动记录描述错误的是()。

A:为最大限度提高存储空间的利用率,一个函数在栈区仅保留一份活动记录B:过程/函数的活动记录在过程/函数被调用时创建,运行中访问并/或修改,调用结束撤销C:过程/函数的活动记录中变量的信息,有的是变量的值,有的是变量指代的偏移地址D:过程/函数的活动记录存放着控制类信息、实际参数值、过程/函数声明的变量、临时变量等

答案:为最大限度提高存储空间的利用率,一个函数在栈区仅保留一份活动记录关于过程/程序块嵌套时,活动记录的相关描述正确的是()。

A:过程/函数的返回值传递时,通常值传递不可靠,要用地址传递方式B:过程/函数的返回值是由被调用过程/函数产生的运算结果,要存放在被调用过程/函数的活动记录中C:过程/程序块的活动记录中,可以增加一个区域,专门存放静态链和动态链信息,通过动态链进行访问D:过程/程序块的活动记录中,增加一个存储单元,记录作用域层数信息,按照内层变量可以访问外层变量的规则进行访问

答案:过程/程序块的活动记录中,可以增加一个区域,专门存放静态链和动态链信息,通过动态链进行访问存储组织中,为某些量动态分配存储空间的含义正确是()。

A:源程序中某些量动态分配存储空间时,可以采取栈式存放,也可以堆式存放。但是二选一,一旦确定后,所有同类型变量都采用统一的存放模式B:在编译阶段为源程序的某些量进行分配存储空间,运行时只能访问不能修改C:在运行时为源程序的某些量分配存储空间D:在编译阶段为源程序的某些量进行分配存储空间,运行时再进行动态调整

答案:在编译阶段为源程序的某些量进行分配存储空间,运行时再进行动态调整对于下面的高级语言程序:

procedureP(X,Y,Z);

begin

Y:=Y+1;

Z:=Z+X;

endP;

begin

A:=2;

B:=3;

P(A+B,A,A);

printA

end

若参数传递的方法为传值,程序执行时所输出的A是(

)

A:7B:8C:2D:9

答案:2一个目标程序运行所需的存储空间包括()。

A:存放数据项目的空间B:存放程序运行的控制数据所需单元C:存放目标代码的空间D:存放程序运行的连接数据所需单元

答案:存放数据项目的空间;存放程序运行的控制数据所需单元;存放目标代码的空间;存放程序运行的连接数据所需单元对于下面的嵌套过程语言的程序,按照最近嵌套原则进行作用域分

析,下面说法正确的是()

programP

vara,b:integer;

procedureP1(i1,j1:integer);

varc,d:integer;

...

end;

procedureP2(i2,j2:integer);

vara,c:integer;

procedureP21;

varb1,b2:boolean;

...

end;

...

end;

...

end;

A:子程序P2可以访问子程序P1中的变量cB:子程序P21可以访问子程序P2中的形式参数i2C:子程序P1可以调用子程序P21D:子程序P21可以调用子程序P1

答案:子程序P21可以访问子程序P2中的形式参数i2;子程序P21可以调用子程序P1对于在编译时不能确定程序运行时数据空间的大小、允许递归调用的程序设计语言,一般采取静态存储分配策略。

A:错B:对

答案:错一个程序设计语言只能提供一种参数传递机制。

A:错B:对

答案:错

第十章单元测试

属于基本块的优化措施是()。

A:删除多余运算,常量合并和传播B:删除冗余或无用代码,代码外提C:强度削弱,循环合并D:代码外提,删除归纳变量

答案:删除多余运算,常量合并和传播关于程序流图的描述错误的是()。

A:无法通过流图进行基本块优化B:流图的每一个节点是一个基本块C:流图是编译器内部维护的一个抽象数据结构D:流图反映了程序执行过程的遍历路径

答案:无法通过流图进行基本块优化关于循环的描述正确是()。

A:对大多数应用程序而言,绝大多数运行时间都在循环部分,所以代码优化主要是针对循环体的优化B:归纳变量删除是将循环体出现的归纳变量直接删除C:循环优化是针对循环体中语句的优化,包括与循环有关的和与循环无关的优化D:代码外提是将循环体中所有循环的不变量移到循环体前面

答案:循环优化是针对循环体中语句的优化,包括与循环有关的和与循环无关的优化关于代码优化描述错误的是()。

A:从中间代码到目标代码要进行多次变换,每次变换都是一次优化过程B:优化的目标是生成运行速度更快、占用存储空间更小的目标代码,但往往二者很难同时达到最优C:代码的优化和目标机有关,因此,针对不同目标机要进行不同的优化操作D:优化的过程是不断追求最优的过程,但往往是“没有最优,只有更优”

答案:代码的优化和目标机有关,因此,针对不同目标机要进行不同的优化操作关于基本块的描述正确的是()。

A:只有一个出口语句,但可以有多个入口语句B:只有一个入口语句和一个出口语句C:只有一个入口语句,但可以有多个出口语句D:入口语句和出口语句不能是同一个,否则无法区分到底是入口语句还是出口语句

答案:只有一个入口语句,但可以有多个出口语句有关基本归纳变量的作用,错误的是

A:计算其它同族归纳变量B:自身定值C:控制循环D:记录循环的结果

答案:记录循环的结果利用DAG进行局部优化,不能实现

A:删除公共子表达式B:代码外提C:删除无用赋值D:合并已知量

答案:代码外提对于基本快内Out集合由In集合计算出来,而对于基本块之间,In集合由前驱基本块的Out集合计算出来。这样的数据流问题属于

A:任意路径问题B:向前流问题C:向后流问题D:全路径问题

答案:向前流问题强度削弱是指把程序中执行时间较长的运算替换为执行时间较短的运算

A:错B:对

答案:对DAG是有向无环图,利用DAG可实现局部优化

A:错B:对

答案:对

第十一章单元测试

代码生成时,对于寄存器中最新的计算结果一定要马上送回主存单

A:对B:错

答案:错下列说法正确的是

A:指令的代价是源地址模式的附加代价加1B:指令的代价是源地址模式的附加代价和目标地址模式

温馨提示

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

评论

0/150

提交评论