编译原理复习题.docx

上传人:b****6 文档编号:4373610 上传时间:2022-12-01 格式:DOCX 页数:65 大小:405.16KB
下载 相关 举报
编译原理复习题.docx_第1页
第1页 / 共65页
编译原理复习题.docx_第2页
第2页 / 共65页
编译原理复习题.docx_第3页
第3页 / 共65页
编译原理复习题.docx_第4页
第4页 / 共65页
编译原理复习题.docx_第5页
第5页 / 共65页
点击查看更多>>
下载资源
资源描述

编译原理复习题.docx

《编译原理复习题.docx》由会员分享,可在线阅读,更多相关《编译原理复习题.docx(65页珍藏版)》请在冰豆网上搜索。

编译原理复习题.docx

编译原理复习题

1.把汇编语言程序翻译成机器可执行的目标程序的工作是由B完成的。

A、编译器C、解释器D、预处理器

2.编译程序生成的目标程序B是机器语言的程序。

A、一定B、不一定

3.下面关于解释程序的描述正确的是B。

1解释程序的特点是处理程序时不产生目标代码。

2解释程序适用于COBOL和FORTRAN语言。

3解释程序是为打开编译程序技术得僵局而开发的。

A、①②B、①C、①②③D、②③

4.设有文法G[I]:

I→I1│I0│Ia│Ic│a│b│c

下列符号串中是该文法的句子有B。

①ab0②a0c01③aaa④bc10

可选项有:

A、①B、②③④C、③④D、①②③④

5.一个上下文无关文法消除了左递归,提取了左公共因子后是满足LL

(1)文法的A。

A、必要条件B、充分必要条件

1.一个语言的文法是B。

A、唯一的B、不唯一的C、个数有限的

2.设有文法G[S]:

S:

:

=S*S|S+S|(S)|a

该文法B二义性文法

A是B不是C无法判断。

3.给定文法A→bA∣cc,下面的符号串中,为该文法句子的是A。

A、ccB、bcbcC、bccbccD、bbbcc

4.编译过程中,语法分析器的任务是B。

①分析单词是怎样构成的②分析单词串是如何构成语句和说明的

③分析语句和说明是如何构成程序的④分析程序的结构

A、②③B、②③④C、①②③D、①②③④

5.一个句型中的最左B成为该句型的句柄。

A、短语B、简单短语C、素短语D、终结符号

1.面向机器语言指的是____C__。

A、用于解决机器硬件设计问题的语言

B、特定计算机系统所固有的语言

C、各种计算机系统都通用的语言

D、只能在一台计算机上使用的语言

2.如果文法G是无二义的,则下面D成立。

A、文法中的句子对应两棵不同的语法树;

B、文法中某个句子有两个不同的最左推导;

C、文法中某个句子有两个不同的最右推导;

D、文法中任一句子,它的最左或最右推导对应的语法树相同。

3.运行阶段的存储组织与管理的目的是____C__。

①提高编译程序的运行速度。

②提高目标程序的运行速度。

③为运行阶段的存储分配做准备。

A、①②B、①③C、②③D、①②③

4.设有文法G[I]:

I-I1|I0|Ia|Ic|a|b|c

下列符号串中是该文法的句子的是____C__

1ab02a0c013aaa4bc10

可选项有A1B234C34D1234

5.下面说法正确的是A。

A、一个SLR

(1)文法一定也是LALR

(1)文法

B、一个LR

(1)文法一定也是LALR

(1)文法

1.动态存储分配时,可以采用的分配方法有____C_______。

①以过程为单位的栈式动态存储分配

②堆式存储分配③最佳分配方法

A、①B、②C、①②D、①②③

2.面向机器语言的特点是____D_______。

A、程序的执行效率低,编制效率低,可读性差

B、程序的执行效率高,编制效率高,可读性强

C、程序的执行效率低,编制效率高,可读性强

D、程序的执行效率高,编制效率低,可读性差

3.下面关于解释程序的描述正确的是B。

4解释程序的特点是处理程序时不产生目标代码。

5解释程序适用于COBOL和FORTRAN语言。

6解释程序是为打开编译程序技术得僵局而开发的。

A、①②B、①C、①②③D、②③

4.编译过程中,语法分析器的任务是B。

①分析单词是怎样构成的②分析单词串是如何构成语句和说明的

③分析语句和说明是如何构成程序的④分析程序的结构

A、②③B、②③④C、①②③D、①②③④

5.一个句型中的最左B成为该句型的句柄。

A、短语B、简单短语C、素短语D、终结符号

1.编译程序众的语法分析器接受以C为单位的输入,并产生有关信息工以后各阶段适用。

A、表达式B、产生式C、单词D、语句

2.经过编译所得到的目标程序是D。

A、四元式序列B、二元式序列

C、间接三元式序列D、机器语言程序或汇编语言程序

3.编译程序是将高级语言程序翻译成B。

A、机器语言程序

B、汇编语言程序或机器语言程序

C、汇编语言程序或高级语言程序

D、机器语言程序或高级语言程序

4.设有文法G[I]:

I→I1│I0│Ia│Ic│a│b│c

下列符号串中是该文法的句子有B。

①ab0②a0c01③aaa④bc10

可选项有:

A、①B、②③④C、③④D、①②③④

5.巴科斯-诺尔范式(BNF)是一种广泛采用的C的工具。

A、描述规则B、描述语言C、描述文法D、描述句子

1.编译程序众的语法分析器接受以C为单位的输入,并产生有关信息工以后各阶段适用。

A、表达式B、产生式C、单词D、语句

2.如果文法G是无二义的,则下面D成立。

A、文法中的句子对应两棵不同的语法树;

B、文法中某个句子有两个不同的最左推导;

C、文法中某个句子有两个不同的最右推导;

D、文法中任一句子,它的最左或最右推导对应的语法树相同。

3.编译过程中,语法分析器的任务是B。

(1)分析单词是怎样构成的

(2)分析单词串是如何构成语句和说明的

(3)分析语句和说明是如何构成程序的(4)分析程序的结构

A、

(2)(3)B、

(2)(3)(4)C、

(1)

(2)(3)D、

(1)

(2)(3)(4)

4.动态存储分配时,可以采用的分配方法有C。

①以过程为单位的栈式动态存储分配。

②堆式存储分配。

③最佳分派方法

A、①B、②C、①②D、①②③

5.一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包含C。

A、模拟执行器

B、解释器

C、表格处理和出错处理

D、符号执行器

1.一个LR

(1)文法合并同心集后若不是LALR

(1)文法B。

A、则可能存在移进/归约冲突

B、则可能存在归约/归约冲突

C、则可能存在移进/归约冲突和归约/归约冲突

2.LL(k)文法B二义性的。

A、都是B、都不是C、不一定

3.与PASCAL语言存储分配方式相识的语言是A。

A、C语言

B、BASIC语言

C、FORTRAN-77

D、C++语言

4.B这样一些语言,它们能够被确定的有穷自动机识别,但不能用正规表达式表示。

A、存在B、不存在C、无法判定

5.编译程序在其工作过程中使用最多的数据结构是D。

A、线性表

B、链表

C、表

D、符号表

1.程序语言的语言处理程序是一种A。

A、系统软件B、应用软件C、实时软件D、分布式系统

2.一个正规语言只能对应B。

A、一个正规文法B、一个最小有限状态自动机

3.下列关于标识符和名字的叙述中,正确的为D。

A、标识符有一定的含义

B、名字是一个没有意义的字符序列

C、名字有确切的属性

D、都不对

4.文法G[A]:

A→εA→aBB→AbB→a是B。

A、正规文法B、二型文法

5.返填技术指的是A。

A、生成跳转、调用等指令时,不能获得转向地址,需要等到获得该转向地址后再回来填写。

B、符号表中过程或函数标识符的地址部分要填上入口地址,在扫描到过程或函数标识符的说明时这些地址是无法知道的,只有等到开始生成过程或函数的指令部分时才能填入。

C、A和BD、都不确切

1.一般程序设计语言的定义都涉及B三个方面。

①语法②语义③语用④程序基本符号的确定

A、①②③B、①②④C、②③④D、①③④

2.下面说法正确的是B。

A、一个正规式只能对应一个确定的有限状态自动机;

B、一个正规语言可能对应多个正规文法;

3.程序基本块是指D。

A、一个子程序

B、一个仅有一个入口和一个出口的语句

C、一个没有嵌套的程序段

D、一组顺序执行的程序段,仅有一个入口和一个出口。

4.词法分析的常用方法有A。

A、有穷自动机理论B、图灵机C、图论D、无穷自动机理论

5.编译方法中自顶向下的语法分析算法有D。

①简单优先分析方法②算符优先分析方法③递归子程序法

④LL(K)分析法⑤SLR分析法⑥LR(K)方法

⑦LALR(K)方法⑧预测分析方法

A、①②③⑧B、④⑤⑥⑦C、①②⑤⑥⑦

D、③④⑧E、①②③⑤⑥二、填空题(15分)

1.编译程序必须完成的工作有A。

①词法分析②语法分析③语义分析

④代码生成⑤中间代码生成⑥代码优化

A、①②③④B、①②③④⑤C、①②③④⑤⑥

D、①②③④⑥E、①②③⑤⑥

2.语法分析的常用方法有D。

A、自顶向下匹配B、自底向上归约C、回溯法D、自顶向下匹配和自底向上归约

3.在编译程序采用的优化方法中,C是在循环语句范围内进行的。

(1)合并已知常量

(2)删除多余运算(3)删除归纳变量(4)强度削弱(5)代码外提

A、

(1)(4)B、

(1)(5)C、

(1)(4)(5)D、(3)(4)(5)

4.过程调用时,参数的传递方法通常有D。

(1)传值

(2)传地址(3)传结果(4)传名

A、

(1)

(2)B、

(1)

(2)(3)C、

(1)

(2)(4)D、

(1)

(2)(3)(4)

5.编译方法中自底向上的语法分析算法有C。

①简单优先分析方法②算符优先分析方法③递归子程序法④LL(K)分析法

⑤SLR分析法⑥LR(K)方法⑦LALR(K)方法⑧预测分析方法

A、①②③⑧B、④⑤⑥⑦C、①②⑤⑥⑦

D、③④⑧E、①②③⑤⑥

1.文法G所描述的语言是D集合。

A、文法G的字汇表V中所有符号组成的符号串

B、文法G的字汇表V的闭包V*中的所有符号串

C、由文法的识别符号推出的所有符号串

D、由文法的识别符号推出的所有终结符号串

2.下面说法正确的是B。

A、一个正规式只能对应一个确定的有限状态自动机;

B、一个正规语言可能对应多个正规文法;

3.代码生成应着重考虑的问题是B。

①每一个语法成分的语义②目标程序运行所占用的空间

③目标程序的运行速度④目标代码中需要那些信息,怎样截取这些信息

A、①②B、①②③C、①②④D、①④

4.编译程序在优化时,B用到源程序中的注释。

A、可能要B、不可能

5.下面说法正确的是A。

A、一个正规文法也一定是二型文法B、一个二型文法也一定能有一个等价的正规文法

1.文法的二义性和语言的二义性是两个A的概念。

A、不同B、相同C、不一定

2.下面说法正确的是B。

A、一个正规式只能对应一个确定的有限状态自动机;

B、一个正规语言可能对应多个正规文法;

3.LR语法分析栈中存放的状态是识别的BDFA状态。

A、前缀B、可归前缀C、项目D、句柄

4.正规文法A二义性的。

A、可以是B、一定不是C、一定是

5.高级语言编译程序常用的语法分析方法中,递归下降分析法属于B分析方法。

A、自左向右B、自顶向下C、自底向上D、自右向左

1.一个语言的文法是B。

A、唯一的B、不唯一的C、个数有限的

2.代码生成应着重考虑的问题是D。

1每一个语法成分的语义②目标程序运行所站用的空间

③目标程序的运行速度④目标代码中需要那些信息,这样截取这些信息。

A、①②B、①②③C、①②④D、①④

3.运行阶段的存储组织与管理的目的是C。

①提高编译程序的运行速度。

②提高目标程序的运行速度。

③为运行阶段的存储分配做准备。

A、①②B、①③C、②③D、①②③

4.编译过程中,比较常见的中间语言有D。

①波兰表示②逆波兰表示③三元式④四元式⑤树形表示

A、①②④B、②③④C、①③④⑤D、②③④⑤

5.过程信息表中至少应该包括有D。

1过程名②过程的静态层次③过程的入口地址

④过程首部在源程序中的行号⑤有关过程的参数信息。

A、①②③B、①③④C、①②③④D、①③⑤

 

二、填空题(15分)

1.如果在一个文法中存在某个句子,它有二个以上的最左(最右)推导,也就是说,若该句子对应两棵不同的语法树,则这个文法是二义性文法。

2.假设G是一个文法,S是文法的开始符号,如果S*x,则称x是句型。

(2分)

3.LR(K)分析法中,L的含义是自左向右进行分析,R含义是采用最右推导的逆过程最左归约,“K”的含义是至多向前查看K个输入符号。

4.自顶向下语法分析方法会遇到的主要问题有左递归和回溯。

5.编译过程中,常见的中间语言形式有三元式、逆波兰式和四元式。

6.在编译程序中安排中间代码生成的目的是便于代码优化和便于目标程序的移植。

1.程序的翻译方式有两种,分别是_编译方式_和_解释方式_。

2.字的前缀是指该字的任意首部。

(2分)

3.LR

(1)分析法中,L的含义是自左向右进行分析,R含义是采用最右推导的逆过程-最左归约,“1”的含义是向貌似句柄的符号串后查看一个输入符号。

4.编译过程中,常见的中间语言形式有三元式、逆波兰式和四元式。

5.程序的可再入性指的是:

当程序在执行时,可以_随时中断__它的执行,也可随时_执行进程__恢复其原来的_执行进程_;而且可以在_中断时间里_,又从该程序的_头上开始一个新的执行过程。

1.编译程序与具体的机器无关,与具体的语言有关。

2.SLR

(1)分析法中,L的含义是自左向右进行分析,R含义是采用最右推导的逆过程,S含义是简单的,“1”的含义是向貌似句柄的符号串的查看一个输入符号。

4.确定的有穷自动机是一个五元组,通常表示为M(Q,∑,t,q0,F)。

5.在大部分现有编译中采用的方案主要有两种:

动态分配方案和___静态____分配方案。

6.假定G是一个文法,S是它的开始符号,如果S*α,则称_α__是一个句型,仅含终结符号的句型是一个句子。

文法G所产生的句子的全体是一个语言,将它记为L(G)。

1.如果在一个文法中存在某个句子,它有二个以上得最左(最右)推导,也就是说,若该句子对应两棵不同的语法树,则这个文法是二义性文法。

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

3.LR

(1)分析法中,L的含义是自左向右进行分析,R含义是采用最右推导的逆过程最左归约,“1”的含义是至多向前查看一个输入符号。

4.语法分析是依据语言的语法规则进行的,中间代码产生是依据语言的语义规则进行的。

5.编译过程中,常见的中间语言形式有三元式、逆波兰式和四元式。

6.编译过程中扫描器所完成的任务是从源程序中识别出一个一个具有独立语法意义的单词。

1.如果在一个文法中存在某个句子,它有二个以上得最左(最右)推导,也就是说,若该句子对应两棵不同的语法树,则这个文法是二义性文法。

2.编译方式与解释方式的根本区别在于是否生成目标代码。

(2分)

3.LL

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

4.自顶向下语法分析方法会遇到的主要问题有左递归和回溯。

5.符号表的数据结构可以是线性符号表、树结构、散列表。

6.一个字集是正规的,当且仅当它可由DFA(NFA)所识别。

1.假定G是一个文法,S是它的开始符号,如果S

*α,则称α是一个句型,仅含终结符号的句型是一个句子。

文法G所产生的句子的全体是一个语言,将它记为L(G)。

2.乔姆斯基定义的四种形式语言文法分别为:

0型文法(又称短语结构文法)、1型文法(又称上下文有关文法)、2型文法(又称上下文无关文法)、3型文法(又称正则文法)。

3.自顶向下语法分析方法的基本思想是:

从识别符号出发,利用文法的规则不断建立直接推导推导,试图构造一个推导序列,最终由它推导出与输入符号串相同的符号串。

1.编译程序的工作过程一般可以划分为_词法分析_、_语法分析_、_语义分析、_中间代码生成、_代码优化__等几个基本阶段,同时还会伴有表格处理和出错处理。

2.文法G产生的所有句子的全体是该文法描述的语言。

3.来自中间代码的代码生成涉及了两个标准技术:

宏扩展和静态模拟。

_宏扩展_涉及到用一系列等效的目标代码指令代替每一种中间代码指令。

4.为文法的每一个规则配备的计算属性的计算规则,称为语义规则。

1.中间代码有逆波兰式、三元式样、四元式、树形表示等形式,生成中间代码主要是为了使代码优化及目标程序便于移植。

(6分)。

2.文法G产生的句子的全体是该文法描述的语言(2分)。

3.在一个基本块内,可实行3种优化方法,即合并已知量、删除无用赋值、删除多余运算。

4.确定的有穷自动机是一个五元组,通常表示为M(Q,∑,t,q0,F)。

5.活前缀是指规范句型的一个前缀,这种前缀不含句柄之后的任何符号。

1.编译程序的工作过程一般可以划分为

词法分析_、_语法分析_、_语义分析、_中间代码生成、_代码优化_等几个基本阶段,同时还会伴有表格处理和出错处理(6分)。

2.在目标代码生成阶段,符号表是地址分配的依据。

(2分)。

3.符号表的数据结构可以是无序符号表、有序符号表、栈式符号表。

4.词法分析阶段的错误主要是单词拼写错误,可通过最小距离匹配的办法纠正错误。

5.在大部分现有编译中采用的方案主要有两种:

动态分配方案和

静态分配方案。

1.编译程序工作过程中,第一段输入是源程序,最后阶段的输出为目标程序。

2.若二个正规式所表示的正规集相同,则认为二者是等价的(2分)。

3.符号表中名字的有关信息在词法分析和语法语义分析过程中陆续填入。

4.自顶向下语法分析方法的基本思想是:

从识别符号出发,利用文法的规则不断建立直接推导,试图构造一个推导序列,最终由它推导出与输入符号串的符号串。

5.堆式动态分配策略允许用户动态的申请和释放存储空间存储。

6.语法树代表推导过程,分析树代表归约过程。

7.在优化中,可把循环中的不变运算提到循环外面去,这种方法称为代码外提。

1最左推导是指每次都对句型中的最左非终结符进行扩展。

2.确定有限自动机DFA是NFA的一个特例。

(2分)。

3.自顶向下语法分析方法的基本思想是:

从识别符号出发,利用文法的规则不断建立直接推导,试图构造一个推导序列,最终由它推导出与输入符号串的符号串。

4.确定的有穷自动机是一个五元组,通常表示为M(Q,∑,t,q0,F)。

5.一个字集是正规的,当且仅当它可由DFA(NFA)所识别。

6.文法中的终结符和非终结符的交集是空集。

词法分析器交给语法分析器的文法符号一定是终结符,它一定只出现在产生式的右部。

7目标程序运行的动态分配策略中,含有栈式和堆式分配策略。

1.自底向上语法分析方法的基本思想是:

从待输入的符号串开始,利用文法的规则步步向上进行归约,试图归约到文法的识别符号。

2.若源程序使用高级语言编写的,目标程序是机器语言程序,则其翻译程序称为编译程序(2分)。

2.编译程序是指将源程序程序翻译成目标程序的程序。

3.自顶向下语法分析方法的基本思想是:

从识别符号出发,利用文法的规则不断建立直接推导推导,试图构造一个推导序列,最终由它推导出与输入符号串的符号串。

4.编译过程通常可分为5个阶段,分别是词法分析、语法分析、语义分析、代码优化和目标代码生成。

5.优化就是对程序进行各种等价变换,使之能生成更有效的目标代码。

1.自下而上分析法采用移进、归约、错误处理、接受等四种操作。

2.采用自上而下语法分析时,必须消除文法的左递归(2分)。

3.已知文法G[E]:

E→T│E+T│E-TT→F│T*F│T/FF→(E)│i

该文法的开始符号是E,终结符号集合VT是+、-、*、/、(、)、i,非终结符号集合VN是E、T、F。

4.扫描器的任务是从左到右一个一个地对源程序进行扫描,产生一个一个的具有独立语法意义的单词。

5.优化就是对程序进行各种等价变换,使之能生成更有效的目标代码。

6.A→α·称为归约项目;对文法开始符S′→α·为接受项目;若a为终结符,则称A→α·aβ为移进项目;若B为非终结符,则称A→α·aβ为待约项目。

 

三、简答题。

(30分)

1.什么是算符优先文法?

给出一个非教材上提供的算符优先文法的例子,并给出算符优先表?

(6分)

设文法G,如果它的产生式右部不包含相邻非终结符号,则称文法G为算符文法,如果算符文法的终结符号集中任意两个符号之间至多存在一种优先关系,则称该算符文法为算符优先文法。

例如:

E->E+T|TT->T*F|FF->(E)|i

+

*

i

+

>

<

<

>

<

*

>

>

<

>

<

<

<

<

=

<

>

>

>

i

>

>

>

2.设有文法G[S]:

Sa|ε|(T)TT,S|S

请给出句子(a,(a,a))的最左和最右推导,给出该句子的短语和句柄。

(7分)

最左推导:

S=>(T)=>(T,S)=>(a,S)=>(a,(T,S))

=>(a,(S,S))=>(a,(a,S))=>(a,(a,a))

最右推导:

S=>(T)=>(T,S)=>(T,(T))=>(T,(T,S))

=>(T,(T,a))=>(T,(S,a))=>(T,(a,a))=>(S,(a,a))=>(a,(a,a))

3.编译程序的实现应考虑的问题有那些?

(4分)

编译程序的实现应考虑:

开发周期、目标程序的效率、可移植性、可调试性、可维护性、可扩充性等。

4.什么是二义性文法?

请用例说明文法G[E]:

Ei|(E)|EAEA+|-|*|/

是二义性文法。

(6分)

一个文法如果它的一个句子有两棵或两棵以上的语法树,则称该句子具有二义性,如果一个文法含有二义性的句子,则该文法是二义性文法。

如句子:

i+i+i

5.在编译过程中为什么要建立

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1