大学编译原理课程复习试题及答案.docx

上传人:b****5 文档编号:6925047 上传时间:2023-01-12 格式:DOCX 页数:26 大小:107.59KB
下载 相关 举报
大学编译原理课程复习试题及答案.docx_第1页
第1页 / 共26页
大学编译原理课程复习试题及答案.docx_第2页
第2页 / 共26页
大学编译原理课程复习试题及答案.docx_第3页
第3页 / 共26页
大学编译原理课程复习试题及答案.docx_第4页
第4页 / 共26页
大学编译原理课程复习试题及答案.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

大学编译原理课程复习试题及答案.docx

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

大学编译原理课程复习试题及答案.docx

大学编译原理课程复习试题及答案

编译原理复习材料选择题

1.

)o

B.{0m1m|m>=1}

D.[0m1n|m>=0,n>=1}

文法s-osIS1|0的语言是(

A.ni>=0}

C.[0m1n|m>=1,n>=0}

2.描述程序语言所采用的II【型文法是()a

A.短语文法B.正规文法

C•上下文无关文法D.上下文有关文法

3.状态转换图实现的简单方法是使每个状态结对应()。

A.—个终结符B.—个非终结符

C•一段小程序D.—个函数

B•句柄D.短语

4・规范归约的关键问题是寻找(

A.最左素短语

C•直接短语

5・一个算符文法的任何产生式的右部都不含有两个相继的()。

A.终结符B.非终结符

C•终结符和非终结符D.空字

6・算符优先分析法的关键在于规立(

A・算符优先顺序和结合性质

C.结合性质

7.优先函数的优点是()。

A.形彖直观

C•语法分析速度快

B.算符优先顺序

D.终结符和非终结符之间关系

B•便于进行比较运算D.语法分析方法简单

)两类。

B.固有属性和可变属性

D.综合属性和继承属性

&文法符号的属性通常分为(

A.共用属性和私有属性

C・语法属性和语义属性

9.在程序流图中,组成循环的结点序列应满足()

A.它们是强连通的B.它们中间有唯一的入口结点

C.它们中间有一条回边D.它们是强连通的且有唯一的入

口结点

10.在利用寄存器R生成Ti:

=c/B的目标代码同时,还应记录信息()。

A.C/B在「中B.「在C/B中

C.R含有Ti,「在R中D.R含有C/B,C/B在R中

1.D2.B3.C4.B5.B

6.A7.B&D9.D10.C

B.是否生成中间代码

D.是否生成优化代码

B.不一定是机器语言的程序

D.—左是汇编语言的程序

A•是否生成目标代码

C.是否生成汇编代码

2.编译程序生成的目标程序()

A.—定是机器语言的程序

C•一上不是机器语言的程序

3.设字母表L={0,1,x,y},则£上的正规式£所对应的正规集为()

A.£B.{£0,1,x,y}

C・{£}D・6

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分析器的核心部分是(

B.—张动作表

D.—张分析表

A.带先进后岀存贮器的DFA

C•一张GOTO表

&在程序流图中,组成循环的结点序列应满足()

A.它们是强连通的且有唯一的入B.它们中间有唯一的入口结点口结点

C.它们中间有一条回边D.它们是强连通的

9・表达式a^b+cAa>dVa+b^e的后缀式式为(

A.abcWad+>/\ab+eHVB.abWc+Ada>ab+eH\/

C.abc+Wad>/\ab+eHVD.abc+Wad>ab+/\eHV

10.程序基本块是指()

A.—个子程序

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

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

D.—组顺序执行的程序段,仅有一个入口和一个岀口

1.A2.B3.C4.D5.B6.C7.D&A9.C10.D

1.

BNF是一种用于()的工具。

A.描述句型

C.描述语言

B.描述句子

D.描述文法

2.

设字母表L={0,1,x,y],则£上的正规式£所对应的正规集为()

A.£

B・"}

C.[€0,1,x,y]

D・6

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.直接短语

&

四元式之间的联系是通过()

A.指示器

B.临时变量

C.四元式的编号

D.中间运算结果

9.

表达式aWb+c/\a>dVa+bHe的逆波兰式为(

A.abc+Wad>/\ab+eHV

B.abWc+/\da>ab+eH\/

C.abcWad+>/\ab+eHV

D.abc+Wad>ab+/\eH\/

10.

代码外提时要求该不变运算所在的结点是循环的()。

A.某个岀口的必经结点

B.至少是一个入口的必经结点

C•入口的必经结点

D.所有出口的必经结点

1.D2.B3.A4.B5.B

6.A7.B&B9.A10.D

填空题

1.一个状态转换图可用于一左的字符串。

2.设》={a,b,c},则尸中最短的符号串为。

3.若由文法的开始符号可以推导出串a,且,则a为原文法的一个句子。

4.若文法的某非终结符P满足,称文法含有左递归。

5.表达式-(a+b)/(c*d)-e的逆波兰式为

6.后序遍历一棵表达式树,可得到它的。

7.中间代码是一种而向语法,易于翻译成的代码。

&四元式序列中各四元式出现的顺序与是一致的。

9'若每个程序对应一个流图,则流图中的结点对应一个。

10.

若从流图首结点出发,到达丐的任一通路必须经过则称的必经结点。

1.识别或接受

2.€

3.a€VT*

4.P==+>Pa

5.ab+cd*/e-

6.逆波兰式

7.目标代码

&运算顺序

9.基本块

10.ni为nj

一个非确定的有限自动机可以表示为一个元式。

2.

若文法的某非终结符P满足,称文法含有左递归。

3・

设7=(1,2,3},则尸中最短的符号串为。

4・

用工+表示£上所有的集合。

5.

三地址代码的一般形式为。

6・

递归下降法对每个构造一个相应的子程序。

7・

在算符优先分析中,用作为可归约串。

8.

在形式语言中,最推导被称为规范推导。

9.语法树中,一个结点的属性由此结点的父结点和/或兄弟结点的属性确定。

10.如果循环中对变疑I只有唯一的形如l=l±C的赋值,则称I为循环中的变量。

1.五

2.P==+>Pa

3.£

4.长度不为0的串

5.x:

=yopz

6.非终结符

7.最左素短语

&右

9.继承

10-基本归纳

1.终态与非终态的区别在于。

2.用表示£上所有的集合。

3.一个状态转换图可用于一泄的字符串。

4.用于词法分析的扫描缓冲区可将两个半区使用。

5.一个句型的称为该句型的句柄。

6.递归下降法对每个构造一个相应的子程序。

7.算符优先法尤英适用于的分析。

&规范归约的关键在于如何确泄。

9.文法符号的属性值可自底向上应用语义规则计算出来。

10.DAG代表。

1.终态可接受空串

2.长度不为0的串

3.

识别

4.

互补

5.

最左简单短语

6.

非终结符

7.

表达式

8.

句柄

9.

综合

10.

有向无环图

判断题

1.

3.

若一个文法是递归的,则由它产生的语言的句子个数是有限的。

用于词法分析的扫描缓冲区可将两个半区重叠使用。

描述程序语言所采用的III型文法是上下文无关文法。

状态转换图实现的简单方法是使每个状态结点对应一个非终结符

一个LR分析器实质上是一个带有后进先出存储器的DFA。

有的左递归。

4・在规范归约中,任何可归约串的岀现必在栈的内部。

()

5.循环优化中的强度削弱主要是指将循环中的乘法变成加()

法。

6.符号表的信息栏中的内容称为关键字。

()

1.

X

正规文法

2.

X

一段小程序

3.

X

自上而下

4.

X

栈顶

5.

X递归加法

6.

X名字

1.

设a是某句型的一个子串,若它能被一次直接归约为一个(非终结符,则a是该句型的一个直接短语。

2.

语法分析过程可用一棵树表示出来,这棵树叫做语法树。

3.

欲构造行之有效的自下而上分析器,则必须淸除文法中含(有的左递归。

4.

四元式作为中间语言,用于翻译除表达式外的其他语句代(

码。

5・

循环优化中的强度削弱主要是指将循环中的乘法变成加(法。

6.

流图中有向边a-b为回边的条件是aDOMb。

1.X要求这个非终结符取代。

后,原句型还可继续向开始符方向归约。

2.X分析树

3・X自上而下c.

4.X各种

5-X递归加法

6.XbDOMa

2.已知文法G:

S->iSeS|iS|i

该文法是否具有二义性?

请根拯句子iiiei构造语法树予以说明。

3.何谓递归下降分析法?

应用此种分析法的文法应满足什么条件?

4.简述代码优化所依据的原则与优化的级别,并列举三种常用的优化技术。

正规式用來描述正规集,而有限自动机用來识别正规集,在正规集的意义上它们存在等价关系。

即:

对每一个正规式所代表的正规文法G,都存在一个有限口动机M,使得L(M)=L(G),M所能识别的字的全体恰为这个正规文法G的语言集合:

对每一个有限口动机M,都存在一个可以用正规式表示的正规文法G,使得L(G)=L(M),这个正规文法G的语言集合中的任一个字可以由M识别。

2.对于句子iiiei,该文法具有两棵不同的语法树与之对应,故为二义性文

法。

S

//\\

iSeSi

/\I

1SiiSeS

II

lii

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的每条弧只允许用E上的一个字符作标记。

(3分)

3.按照语法分析树的建立方法,可以把语法分析方法分为两类:

自上而下分析法与自下而上分析法。

(2分)

自上而下分析法面对的主要问题是:

如何消除文法的左递归,以及在由文法的开始符出发推导句子的过程中如何避免回溯°

(2分)

口下而上分析法面对的主要问题是:

在由输入串出发向文法的开始符归约的过程中,如何确定可归约子串(句柄或最左素短语)。

(1分)

4.中间语言是一种面向语法,复杂性介于用高级语言书写的源

程序和用机器语言表示的目标程序之间,是一种易于翻译成目标代码的代码形式。

(3分)

中间语言的作用在于:

利用它作为中间环节,不仅可以较快地实现源程序翻译过程,而11可在此基础上应用优化方法,将源程序翻译成为运行时间短、占用内存少的目标程序。

(2分)

1.何谓上下文无关文法?

它是由哪几部分组成的?

2.简述NFA和DFA的联系与区别。

3.语法分析方法如何分类?

它们而对的主要问题是什么?

4.何谓中间语言?

简述它的作用。

1.上下文无关文法是这样一种文法,它所定义的语法范畴(或语法单位)是完全独立于这种范畴所处的环境的。

(3分)

上下文无关文法由四部分所组成:

一组终极符号,一组非终极符号,一个开始符号以及一组产生式。

(2分)

2.联系:

NFA和DFA都是有限口动机,都用于接收、识别一定的字符串。

NFA是DFA的推广,DFA是NFA的特例。

(2分)

区别:

NFA多值函数,DFA是单值函数。

NFA可以有多个初态,DFA只有一个初态。

NFA的每条弧允许用上的一个字作标记,DFA的每条弧只允许用E上的一个字符作标记°

(3分)

3.按照语法分析树的建立方法,可以把语法分析方法分为两类:

自上而下分析法与自下而上分析法。

(2分)

自上而下分析法面对的主要问题是:

如何消除文法的左递归,以及在由文法的开始符出发推导句子的过程中如何避免回溯。

(2分)

口下而上分析法而对的主要问题是:

在由输入串出发向文法的开始符归约的过程中,如何确定可归约子串(句柄或最左素短语)。

(1分)

4.中间语言是一种面向语法,复杂性介于用高级语言书写的源

程序和用机器语言表示的目标程序之间,是一种易丁•翻译成目标代码的代码形式。

(3分)

中间语言的作用在于:

利用它作为中间环节,不仅可以较快地实现源程序翻译过程,而11可在此基础上应用优化方法,将源程序翻译成为运行时间短、占用内存少的目标程序。

(2分)

综合题

构造一个DFA,它接受S={a,b}上所有包含ab的字符串。

2.对文法G(S):

S-(L)|aS|a

L一L,S|S

1、消除左递归和回朔:

2、构造各非终结符的FIRST和FOLLOW集合:

3、构造预测分析表。

3.给出文法G(P)

P-bQbQ-cR

Q-a

R-Qad

该文法是不是算符优先文法,请构造算符优先关系表证实之。

4.

(1)有如下三地址码:

read(n)

i:

=1

fen:

=1

L1:

ifi<=ngotoL2GotoL3

L2:

t1:

=fen*i

fen:

=t1

i:

=i+1

gotoL1

L3:

v/rite(fen)

将该代码段划分为基本块:

并构造相应的程序流图。

(2)对下列四元式序列生成目标代码:

A:

=B*C

D:

=E+F

G:

=A+D

H:

=G*2

其中,H在基本块岀口之后是活跃变量,R0和R1是可用寄存器。

1•构造一个DFA,它接受S={a,b}上所有包含ab的字符串。

构造相应的正规式;(a!

b)*ab(alb)*

确定化:

I

LL

{0,1,21

fl,2,3|

fl,21

lb2,3|

2,31

",2,4,、,61

11,21

11,2,31

11,2|

11,2,4.5.61

11,2,3,5,61

lU2,5,6}

fl,2,3,5,6}

!

1,2,3,5,6}

U,2,4,5,6|

11,2,5,61

{1,2,3,5,6[

lb2,5,6!

L-L,SIS

1、消除左递归和回朔:

2、构造各非终结符的FIRST和FOLLOW集合:

3、构造预测分析表。

答:

(1)消除左递归和回溯

S->(L)|aS

S'fSIe

L-^SV

LfSL‘|e

(2)FIRST(S)=H,a}

FOLLOW(S):

={井,

,)1

FIRST(Sz)={(,a,J

FOLLOW(S)

=1#,

,)}

FIRST(L)={(,a}

FOLLOW(L):

=1)1

FIRST(V)={,,e}

FOLLOW(I/)

-1)1

(3)预测分析表

a

S

Sr*aS'

A(L)

s

S"~S

SJE

S'—S

S'fe

S"-*•e

L

L—SLZ

L—SI/

V

LJ,SC

L

3.给出文法G(P)

P-bQb

Q-cR

Qfa

R一Qad

该文法是不是算符优先文法,请构造算符优先关系表证实之。

答:

对于文法G,II-算它的每个非终结符的FIRSTVT和LASTVT集合:

FIRSTVT(P)={b|

FIRSTVT(Q)=1a,c!

FIRSTVT(R)=Ia,cj

LASTVT(P)={b!

LASTVT(Q)={c|

LASTVT(R)二1d!

构造优先关系矩阵:

a

b

C

d

a

>

b

=x

<

c

<4>

J>

<

d

文法G中的终结符对(c,a)存在两种优先关系V和汉所以文法G不是一个算符优先文法。

ICTII.—I

L1:

ifi<=ngotoL2

GotoL3

L2:

t1:

=fen*i

fen:

=t1

i:

=i+1

gotoL1

L3:

v/rite(fen)

将该代码段划分为基本块:

并构造相应的程序流图。

(2)对下列四元式序列生成目标代码:

A:

=B*C

D:

=E+F

G:

=A+D

H:

=G*2

其中,H在基本块岀口之后是活跃变量,R0和R1是可用寄存器。

解:

基本块1

基本块2

基本块3

基本块4

 

LDRO,B

MULRO,C

IDRl,E

ADDR1,F

ADDRO,R:

MULRO,2

所有b都有a直接跟在后而。

得分

 

接跟在后而。

答:

⑴由以上正规式构造相应的NFAMY4分)

a

O

(2)用子集法对M进行确定化,得到DFAM(4分)

I

la=e.CLOSURE(J)

lb=£CLOSURE(J)

£x,1,y}

d,y}

{i,y}

{i,y}

{2}

{2}

d,y}

•■

 

状态

a

b

0

1

2

1

1

2

2

1

■■

 

⑶把DFAM,进行化简(4分)

1把M状态集分为两组:

终态结点{0,1}:

非终态结点{2}

2考察{0,1},因为,{0,1}a={1}包含于{0界};{0,1}b={2}包含于{2}:

所以,{0,1}不可再分

所以,最终把M分割为{0,1},£2}o状态1代替状态0,把引向状态0的箭弧都引向状态仁把0消去,得到一个DFAM"

2.设有文法G(X),该文法产生式为:

X-b|&|(丫)

Y-Y:

X|X

其中X为文法开始符号,b&:

()为终结符号

(1)消除左递归

(2)汁算每个非终结符号的FIRST集和FOLLOW集

(3)构造它的预测分析表

答:

⑴消除左递归(4分)

X-b|&|(Y)

丫一XY,

丫'一:

XY'Ie

(2)计算每个非终结符号的FIRST集和FOLLOW集(4分)FIRST(X)={b,&,(};

FIRST(Y)={b,&,(};

FIRST(Yf)={:

J;

FOLLOW(T)={)};

FOLLOW(Y^)={)};

FOLLOW(X)={:

}};

⑶构造它的预测分析表(4分)

b

&

#

X

X-b

Xf&

Xi(Y)

Y

Y-XY'

Y~XY‘

Y-XY'

Y'

Y,e

Y‘-,XY'

3.设文法G(S):

S-SiA|A

A-A+B|B

B-)A*|(

仁构造各非终结符的FIRSTVT和LASTVT集合:

2、构适优先关系表和优先函数

答:

FIRSTVT(S)={i,+,),(IFIRSTVT(A)-|+,),(}

FIRSTVT(B)-)),(}LASTVT(S)=H,+,*>(!

LASTVT(A)=|

(4分)

优先函数:

LASTVT(B)-|[

优先关系表:

1

+

*

I

<

<

+

>

<

•>

>

>

<

<

<

z

>

 

1

*

f

2

6

6

1

6

g

1

4

6

6

1

(4分)

(4分)

4.对以下程序

(I)READB

⑵J:

⑶A:

=l+2

(4)E:

=I*J

(5)D:

二A+E

(6)B:

=D+B

(7)IfJ>60goto(10)

(8)J:

=J+1

⑼goto(3)

(10)WRITEB

(II)halt

(1)划分基本块,画出流图

(2)对英中循环进行优化,画出优化后流图

(1)划分基本块,画出流图(6分)

(2)对其中循环进行优化,画出优化后流图(6分)

1.构造一个DFA,它接受艺={0,上所有倒数第二个字符为1的字符串。

2.给出文法(S)

 

S

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

当前位置:首页 > 工作范文

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

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