大学编译原理课程复习试题及答案.docx
- 文档编号:9098417
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:39
- 大小:340.86KB
大学编译原理课程复习试题及答案.docx
《大学编译原理课程复习试题及答案.docx》由会员分享,可在线阅读,更多相关《大学编译原理课程复习试题及答案.docx(39页珍藏版)》请在冰豆网上搜索。
大学编译原理课程复习试题及答案
编译原理复习材料
选择题
1.
文法S→0S|S1|0的语言是()。
A.{0m1m|m>=0}
B.{0m1m|m>=1}
C.{0m1n|m>=1,n>=0}
D.{0m1n|m>=0,n>=1}
2.
描述程序语言所采用的Ⅲ型文法是()。
A.短语文法
B.正规文法
C.上下文无关文法
D.上下文有关文法
3.
状态转换图实现的简单方法是使每个状态结对应()。
A.一个终结符
B.一个非终结符
C.一段小程序
D.一个函数
4.
标准归约的关键问题是寻找()。
A.最左素短语
B.句柄
C.直接短语
D.短语
5.
一个算符文法的任何产生式的右部都不含有两个相继的()。
A.终结符
B.非终结符
C.终结符和非终结符
D.空字
6.
算符优先分析法的关键在于规定()。
A.算符优先顺序和结合性质
B.算符优先顺序
C.结合性质
D.终结符和非终结符之间关系
7.
优先函数的优点是()。
A.形象直观
B.便于进展比拟运算
C.语法分析速度快
D.语法分析方法简单
8.
文法符号的属性通常分为()两类。
A.共用属性和私有属性
B.固有属性和可变属性
C.语法属性和语义属性
D.综合属性和继承属性
9.
在程序流图中,组成循环的结点序列应满足()
A.它们是强连通的
B.它们中间有唯一的入口结点
C.它们中间有一条回边
D.它们是强连通的且有唯一的入口结点
10.
在利用存放器R生成T1:
=C/B的目标代码同时,还应记录信息()。
A.C/B在T1中
B.T1在C/B中
C.R含有T1,T1在R中
D.R含有C/B,C/B在R中
1.D2.B3.C4.B5.B
6.A7.B8.D9.D10.C
1.
编译方式与解释方式的根本区别在于()
A.是否生成目标代码
B.是否生成中间代码
C.是否生成汇编代码
D.是否生成优化代码
2.
编译程序生成的目标程序()
A.一定是机器语言的程序
B.不一定是机器语言的程序
C.一定不是机器语言的程序
D.一定是汇编语言的程序
3.
设字母表∑={0,1,x,y},那么∑上的正规式ε所对应的正规集为()
A.ε
B.{ε0,1,x,y}
C.{ε}
D.Φ
4.
*
假设G是一个文法,S是文法的开场符号,如果S===>x,那么称x是()
A.短语
B.句柄
C.句子
D.句型
5.
一个算符文法的任何产生式的右部都不含有两个相继的()
A.终结符
B.非终结符
C.终结符和非终结符
D.ε字
6.
设有文法G[A]:
A→Ax|Ay|Aa|Ac|a|b|c,
以下哪些是该文法的句子()
(1)aby
(2)aycyx(3)aaa(4)bcxy
A.
(1)
(2)(3)
B.
(1)
(2)(4)
C.
(2)(3)(4)
D.全部
7.
LR分析器的核心局部是()
A.带先进后出存贮器的DFA
B.一张动作表
C.一张GOTO表
D.一张分析表
8.
在程序流图中,组成循环的结点序列应满足()
A.它们是强连通的且有唯一的入口结点
B.它们中间有唯一的入口结点
C.它们中间有一条回边
D.它们是强连通的
9.
表达式a≤b+c∧a>d∨a+b≠e的后缀式式为()。
A.abc≤ad+>∧ab+e≠∨
B.ab≤c+∧da>ab+e≠∨
C.abc+≤ad>∧ab+e≠∨
D.abc+≤ad>ab+∧e≠∨
10.
程序根本块是指()
A.一个子程序
B.一个仅有一个入口和一个出口的语句
C.一个没有嵌套的程序段
D.一组顺序执行的程序段,仅有一个入口和一个出口
1.A2.B3.C4.D5.B
6.C7.D8.A9.C10.D
1.
BNF是一种用于()的工具。
A.描述句型
B.描述句子
C.描述语言
D.描述文法
2.
设字母表∑={0,1,x,y},那么∑上的正规式ε所对应的正规集为()
A.ε
B.{ε}
C.{ε0,1,x,y}
D.Φ
3.
标准推导也称为()
A.最右推导
B.最左推导
C.一般推导
D.自左向右推导
4.
在标准归约中,任何可归约串的出现必在()
A.栈的内部
B.栈顶
C.剩余的输入串中
D.在先进后出栈中
5.
一个算符文法的任何产生式的右部都不含有两个相继的()
A.终结符
B.非终结符
C.终结符和非终结符
D.ε字
6.
LR分析器的核心局部是()
A.一张分析表
B.一张动作表
C.一张GOTO表
D.带先进后出存贮器的DFA
7.
算符优先分析的关键问题是寻找()。
A.句柄
B.最左素短语
C.短语
D.直接短语
8.
四元式之间的联系是通过()
A.指示器
B.临时变量
C.四元式的编号
D.中间运算结果
9.
表达式a≤b+c∧a>d∨a+b≠e的逆波兰式为()。
A.abc+≤ad>∧ab+e≠∨
B.ab≤c+∧da>ab+e≠∨
C.abc≤ad+>∧ab+e≠∨
D.abc+≤ad>ab+∧e≠∨
10.
代码外提时要求该不变运算所在的结点是循环的()。
A.某个出口的必经结点
B.至少是一个入口的必经结点
C.入口的必经结点
D.所有出口的必经结点
1.D2.B3.A4.B5.B
6.A7.B8.B9.A10.D
填空题
1.
一个状态转换图可用于一定的字符串。
2.
设∑={a,b,c},那么∑*中最短的符号串为。
3.
假设由文法的开场符号可以推导出串α,且,那么α为原文法的一个句子。
4.
假设文法的某非终结符P满足,称文法含有左递归。
5.
表达式-(a+b)/(c*d)-e的逆波兰式为______________________________。
6.
后序遍历一棵表达式树,可得到它的。
7.
中间代码是一种面向语法,易于翻译成的代码。
8.
四元式序列中各四元式出现的顺序与是一致的。
9.
假设每个程序对应一个流图,那么流图中的结点对应一个。
10.
假设从流图首结点出发,到达nj的任一通路必须经过ni,那么称的必经结点。
1.识别或承受
2.ε
3.αЄVT*
4.P==+>Pα
5.ab+cd*/e-
6.逆波兰式
7.目标代码
8.运算顺序
9.根本块
10.ni为nj
1.
一个非确定的有限自动机可以表示为一个元式。
2.
假设文法的某非终结符P满足,称文法含有左递归。
3.
设∑={1,2,3},那么∑*中最短的符号串为。
4.
用∑+表示∑上所有的集合。
5.
三地址代码的一般形式为。
6.
递归下降法对每个构造一个相应的子程序。
7.
在算符优先分析中,用作为可归约串。
8.
在形式语言中,最推导被称为标准推导。
9.
语法树中,一个结点的属性由此结点的父结点和/或兄弟结点的属性确定。
10.
如果循环中对变量I只有唯一的形如I=I±C的赋值,那么称I为循环中的变量。
1.
2.
五
P==+>Pα
3.
ε
4.
长度不为0的串
5.
x:
=yopz
6.
非终结符
7.
最左素短语
8.
右
9.
继承
10.
根本归纳
1.
终态与非终态的区别在于。
2.
用∑+表示∑上所有的集合。
3.
一个状态转换图可用于一定的字符串。
4.
用于词法分析的扫描缓冲区可将两个半区使用。
5.
一个句型的称为该句型的句柄。
6.
递归下降法对每个构造一个相应的子程序。
7.
算符优先法尤其适用于的分析。
8.
标准归约的关键在于如何确定。
9.
文法符号的属性值可自底向上应用语义规那么计算出来。
10.
DAG代表。
1.
终态可承受空串
2.
长度不为0的串
3.
识别
4.
互补
5.
最左简单短语
6.
非终结符
7.
表达式
8.
句柄
9.
综合
10.
有向无环图
判断题
1.
假设一个文法是递归的,那么由它产生的语言的句子个数是有限的。
〔〕
2.
用于词法分析的扫描缓冲区可将两个半区重叠使用。
〔〕
3.
一个LR分析器实质上是一个带有后进先出存储器的DFA。
〔〕
4.
符号表的每一项一般包含入口栏和信息栏两大局部。
〔〕
5.
DAG是对循环进展优化的有效工具。
〔〕
6.
代码外提时要求该不变运算所在的结点是循环的某个出口的必经结点。
〔〕
1.×无限
2.×互补
3.√
4.×名字
5.×根本块
6.×所有
1.
描述程序语言所采用的Ⅲ型文法是上下文无关文法。
〔〕
2.
状态转换图实现的简单方法是使每个状态结点对应一个非终结符
〔〕
3.
欲构造行之有效的自下而上分析器,那么必须去除文法中含有的左递归。
〔〕
4.
在标准归约中,任何可归约串的出现必在栈的内部。
〔〕
5.
循环优化中的强度削弱主要是指将循环中的乘法变成加法。
〔〕
6.
符号表的信息栏中的内容称为关键字。
〔〕
1.
×正规文法
2.
×一段小程序
3.
×自上而下
4.
×栈顶
5.
×递归加法
6.
×名字
1.
设α是某句型的一个子串,假设它能被一次直接归约为一个非终结符,那么α是该句型的一个直接短语。
〔〕
2.
语法分析过程可用一棵树表示出来,这棵树叫做语法树。
〔〕
3.
欲构造行之有效的自下而上分析器,那么必须去除文法中含有的左递归。
〔〕
4.
四元式作为中间语言,用于翻译除表达式外的其他语句代码。
〔〕
5.
循环优化中的强度削弱主要是指将循环中的乘法变成加法。
〔〕
6.
流图中有向边a→b为回边的条件是aDOMb。
〔〕
1.
×要求这个非终结符取代α后,原句型还可继续向开场符方向归约。
2.
×分析树
3.
×自上而下
4.
×各种
5.
×递归加法
6.
×bDOMa
简答题
1.
简述正规式与有限自动机的关系。
2.
文法G:
S→iSeS|iS|i
该文法是否具有二义性?
请根据句子iiiei构造语法树予以说明。
3.
何谓递归下降分析法?
应用此种分析法的文法应满足什么条件?
4.简述代码优化所依据的原那么与优化的级别,并列举三种常用的优化技术。
1.
正规式用来描述正规集,而有限自动机用来识别正规集,在正规集的意义上它们存在等价关系。
即:
对每一个正规式所代表的正规文法G,都存在一个有限自动机M,使得L(M)=L(G),M所能识别的字的全体恰为这个正规文法G的语言集合;
对每一个有限自动机M,都存在一个可以用正规式表示的正规文法G,使得L(G)=L(M),这个正规文法G的语言集合中的任一个字可以由M识别。
2.
对于句子iiiei,该文法具有两棵不同的语法树与之对应,故为二义性文法。
SS
//\\/\
iSeSiS
/\|//\\
iSiiSeS
|||
Iii
3.
当文法满足LL
(1)条件时,可以为它构造一个不带回溯的自上而下分析程序。
它由一组递归过程〔函数〕组成,每个过程〔函数〕对应文法的一个非终极符,这样的分析程序称为递归下降分析器。
利用这种分析程序进展语法分析的方法称为递归下降分析法。
4.
代码优化所依据的原那么是:
等价原那么、有效原那么和合算原那么。
代码优化所依据的级别是:
局部优化、循环优化与全局优化。
常用的代码优化技术有:
删除公共子表达式、删除无用赋值、合并量、代码外提、强度削弱、删除归纳变量等。
1.
什么是编译器的前端和后端,通常两者之间用什么作为接口?
2.
简述NFA和DFA的联系与区别。
3.
语法分析方法如何分类?
它们面对的主要问题是什么?
4.
何谓中间语言?
简述它的作用。
1.
前端主要由与源语言有关但与目标机无关的那些局部组成,通常包括词法分析、语法分析、语义分析与中间代码产生,有的代码优化工作也可包括在前端。
〔2分〕后端包括编译程序中与目标机有关的那些局部,如与目标机有关的代码优化和目标代码生成等。
〔2分〕通常,前端和后端以中间语言作为接口〔1分〕
2.
联系:
NFA和DFA都是有限自动机,都用于接收、识别一定的字符串。
NFA是DFA的推广,DFA是NFA的特例。
〔2分〕
区别:
NFA多值函数,DFA是单值函数。
NFA可以有多个初态,DFA只有一个初态。
NFA的每条弧允许用∑*上的一个字作标记,DFA的每条弧只允许用∑上的一个字符作标记。
〔3分〕
3.
按照语法分析树的建立方法,可以把语法分析方法分为两类:
自上而下分析法与自下而上分析法。
〔2分〕
自上而下分析法面对的主要问题是:
如何消除文法的左递归,以及在由文法的开场符出发推导句子的过程中如何防止回溯。
〔2分〕
自下而上分析法面对的主要问题是:
在由输入串出发向文法的开场符归约的过程中,如何确定可归约子串〔句柄或最左素短语〕。
〔1分〕
4.
中间语言是一种面向语法,复杂性介于用高级语言书写的源程序和用机器语言表示的目标程序之间,是一种易于翻译成目标代码的代码形式。
〔3分〕
中间语言的作用在于:
利用它作为中间环节,不仅可以较快地实现源程序翻译过程,而且可在此根底上应用优化方法,将源程序翻译成为运行时间短、占用内存少的目标程序。
〔2分〕
1.
何谓上下文无关文法"它是由哪几局部组成的"
2.
简述NFA和DFA的联系与区别。
3.
语法分析方法如何分类?
它们面对的主要问题是什么?
4.
何谓中间语言?
简述它的作用。
1.
上下文无关文法是这样一种文法,它所定义的语法范畴〔或语法单位〕是完全独立于这种范畴所处的环境的。
〔3分〕
上下文无关文法由四局部所组成:
一组终极符号,一组非终极符号,一个开场符号以及一组产生式。
〔2分〕
2.
联系:
NFA和DFA都是有限自动机,都用于接收、识别一定的字符串。
NFA是DFA的推广,DFA是NFA的特例。
〔2分〕
区别:
NFA多值函数,DFA是单值函数。
NFA可以有多个初态,DFA只有一个初态。
NFA的每条弧允许用∑*上的一个字作标记,DFA的每条弧只允许用∑上的一个字符作标记。
〔3分〕
3.
按照语法分析树的建立方法,可以把语法分析方法分为两类:
自上而下分析法与自下而上分析法。
〔2分〕
自上而下分析法面对的主要问题是:
如何消除文法的左递归,以及在由文法的开场符出发推导句子的过程中如何防止回溯。
〔2分〕
自下而上分析法面对的主要问题是:
在由输入串出发向文法的开场符归约的过程中,如何确定可归约子串〔句柄或最左素短语〕。
〔1分〕
4.
中间语言是一种面向语法,复杂性介于用高级语言书写的源程序和用机器语言表示的目标程序之间,是一种易于翻译成目标代码的代码形式。
〔3分〕
中间语言的作用在于:
利用它作为中间环节,不仅可以较快地实现源程序翻译过程,而且可在此根底上应用优化方法,将源程序翻译成为运行时间短、占用内存少的目标程序。
〔2分〕
综合题
1.
构造一个DFA,它承受Σ={a,b}上所有包含ab的字符串。
2.
对文法G〔S〕:
S→〔L〕|aS|a
L→L,S|S
1 、消除左递归和回朔;
2、构造各非终结符的FIRST和FOLLOW集合;
3、构造预测分析表。
3.
给出文法G〔P〕
P→bQb
Q→cR
Q→a
R→Qad
该文法是不是算符优先文法,请构造算符优先关系表证实之。
4.
〔1〕有如下三地址码:
read(n)
i:
=1
fen:
=1
L1:
ifi<=ngotoL2
GotoL3
L2:
t1:
=fen*i
fen:
=t1
i:
=i+1
gotoL1
L3:
write(fen)
将该代码段划分为根本块;并构造相应的程序流图。
〔2〕对以下四元式序列生成目标代码:
A:
=B*C
D:
=E+F
G:
=A+D
H:
=G*2
其中,H在根本块出口之后是活泼变量,R0和R1是可用存放器。
1.构造一个DFA,它承受Σ={a,b}上所有包含ab的字符串。
2.对文法G〔S〕:
S→〔L〕|aS|a
L→L,S|S
1 、消除左递归和回朔;
2、构造各非终结符的FIRST和FOLLOW集合;
3、构造预测分析表。
答:
3.给出文法G〔P〕
P→bQb
Q→cR
Q→a
R→Qad
该文法是不是算符优先文法,请构造算符优先关系表证实之。
答:
对于文法G,计算它的每个非终结符的FIRSTVT和LASTVT集合:
4.〔1〕有如下三地址码:
read(n)
i:
=1
fen:
=1
L1:
ifi<=ngotoL2
GotoL3
L2:
t1:
=fen*i
fen:
=t1
i:
=i+1
gotoL1
L3:
write(fen)
将该代码段划分为根本块;并构造相应的程序流图。
〔2〕对以下四元式序列生成目标代码:
A:
=B*C
D:
=E+F
G:
=A+D
H:
=G*2
其中,H在根本块出口之后是活泼变量,R0和R1是可用存放器。
解:
1.
构造一个最简的DFA,它承受Σ={a,b}上所有满足如下条件的字符串:
所有b都有a直接跟在后面。
得分
2.
设有文法G(X),该文法产生式为:
X→b|&|(Y)
Y→Y;X|X
其中X为文法开场符号,b&;()为终结符号
(1)消除左递归和回朔
(2)计算每个非终结符号的FIRST集和FOLLOW集
(3)构造它的预测分析表
3.
设文法G〔S〕:
S→SiA|A
A→A+B|B
B→〕A*|〔
1、构造各非终结符的FIRSTVT和LASTVT集合;
2、构造优先关系表和优先函数
4.
对以下程序
(1)READB
(2)J:
=1
(3)A:
=I+2
(4)E:
=I*J
(5)D:
=A+E
(6)B:
=D+B
(7)IfJ>60goto(10)
(8)J:
=J+1
(9)goto(3)
(10)WRITEB
(11)halt
(1)划分根本块,画出流图
(2)对其中循环进展优化,画出优化后流图
1.构造一个最简的DFA,它承受Σ={a,b}上所有满足如下条件的字符串:
所有b都有a直接跟在后面。
答:
(1)由以上正规式构造相应的NFAM'(4分)
(2)用子集法对M'进展确定化,得到DFAM(4分)
I
Ia=ε_CLOSURE(J)
Ib=ε_CLOSURE(J)
{x,1,y}
{1,y}
{2}
{1,y}
{1,y}
{1,y}
{2}
{2}
--
状态
a
b
0
1
2
1
1
1
2
2
--
(3)把DFAM’进展化简(4分)
①把M状态集分为两组:
终态结点{0,1};非终态结点{2}
②考察{0,1},因为,{0,1}a={1}包含于{0,1};{0,1}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学 编译 原理 课程 复习 试题 答案