编译原理期末试题8套含答案 大题集Word格式.docx

上传人:b****6 文档编号:18348012 上传时间:2022-12-15 格式:DOCX 页数:31 大小:261.71KB
下载 相关 举报
编译原理期末试题8套含答案 大题集Word格式.docx_第1页
第1页 / 共31页
编译原理期末试题8套含答案 大题集Word格式.docx_第2页
第2页 / 共31页
编译原理期末试题8套含答案 大题集Word格式.docx_第3页
第3页 / 共31页
编译原理期末试题8套含答案 大题集Word格式.docx_第4页
第4页 / 共31页
编译原理期末试题8套含答案 大题集Word格式.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

编译原理期末试题8套含答案 大题集Word格式.docx

《编译原理期末试题8套含答案 大题集Word格式.docx》由会员分享,可在线阅读,更多相关《编译原理期末试题8套含答案 大题集Word格式.docx(31页珍藏版)》请在冰豆网上搜索。

编译原理期末试题8套含答案 大题集Word格式.docx

些明显的性质,它不是二义的,也不含左递归。

3.语法树

句子的树结构表示法称为语法树(语法分析树或语法推导树)。

给定文法G=(VN,VT,P,S),对于G的任何句型都能构造与之关联的

语法树。

这棵树具有下列特征:

(1)根节点的标记是开始符号S。

(2)每个节点的标记都是V中的一个符号。

(3)若一棵子树的根节点为A,且其所有直接子孙的标记从左向右的排列

次序为A1A2…AR,那么AA1A2…AR一定是P中的一条产生式。

(4)若一标记为A的节点至少有一个除它以外的子孙,则A

VN。

(5)若树的所有叶节点上的标记从左到右排列为字符串w,则w是文法G

的句型;

若w中仅含终结符号,则w为文法G所产生的句子。

4.LR(0)分析器

所谓LR(0)分析,是指从左至右扫描和自底向上的语法分析,且在分析的

每一步,只须根据分析栈当前已移进和归约出的全部文法符号,并至多再

向前查看0个输入符号,就能确定相对于某一产生式左部符号的句柄是否

已在分析栈的顶部形成,从而也就可以确定当前所应采取的分析动作(是

移进还是按某一产生式进行归约等)。

5.语言和文法

文法就是语言结构的定义和描述,是有穷非空的产生式集合。

文法G定义为四元组的形式:

G=(VN,VT,P,S)

其中:

VN是非空有穷集合,称为非终结符号集合;

VT是非空有穷集合,

称为终结符号集合;

P是产生式的集合(非空);

S是开始符号(或识别符号)。

这里,VN∩VT=,S

V=VN∪VT,称为文法G的字母表,它是出现

文法产生式中的一切符号的集合。

文法G所描述的语言用L(G)表示,它由文法G所产生的全部句子组成,即

L(G)={x|S*x,其中S为文法开始符号,且

}

简单的说,文法描述的语言是该文法一切句子的集合。

四、简答题(共4小题,每小题5分,共20分)

1.编译程序和高级语言有什么区别?

用汇编语言或高级语言编写的程序,必须先送入计算机,经过转换成用机器

语言表示的目标程序(这个过程即编译),才能由计算机执行。

执行转换过程

的程序叫编译程序。

汇编程序是指没有编译过的汇编语言源文件。

编译程序转

换过的叫目标程序,也就是机器语言。

编译程序的工作情况有三种:

汇编型、解释型和编译型。

汇编型编译程序用来

将汇编语言编写的程序,按照一一对应的关系,转换成用机器语言表示的程序。

解释型编译程序将高级语言程序的一个语句,先解释成为一组机器语言的指令,

然后立即执行,执行完了,取下一组语句解释和执行,如此继续到完成一个程序

止。

用解释型编译程序,执行速度很慢,但可以进行人和计算机的"

对话"

,随时

可以修改高级语言的程序。

BASIC语言就是解释型高级语言。

编译型编译程序将

级语言编写的程序,一次就会部翻译成机器语言表示的程序,而且过程进行很快,

在过程中,不能进行人机对话修改。

FORTRAN语言就是编译型高级语言。

2.编译程序的工作分为那几个阶段?

词法分析、语法分析和语义分析是对源程序进行的分析(称为编译程序的前端),

而中间代码生成、代码优化和代码生成三个阶段合称为对源程序进行综合(称为

编译程序的后端),它们从源程序的中间表示建立起和源程序等价的目标程序。

3.简述自下而上的分析方法。

所谓自下而上分析法就是从输入串开始,逐步进行“归约”,直至归约到文法的

开始符号;

或者说从语法树的末端开始,步步向上“归约”,直到根节点。

4.简述代码优化的目的和意义。

代码优化是尽量生成“好”的代码的编译阶段。

也就是要对程序代码进行

一种等价变换,在保证变换前后代码执行结果相同的前提下,尽量使目

标程序运行时所需要的时间短,同时所占用的存储空间少。

五、综合应用题(共3小题,每小题10分,共30分)

1.证明下述文法G:

SaSbS|aS|d

是二义性文法。

解:

一个文法,如果存在某个句子有不只一棵语法分析树与之对应,那么称这个

文法是二义性文法。

句子aadbd有两棵语法树。

如下图:

 

(1)

(2)

由此可知,SaSbS|aS|d定义的文法是二义性文法。

2.对于文法G[S]:

SAB,AAa|bB,Ba|Sb求句型baSb的全部短语、直接短语和句柄?

句型baSb的语法树如图五

(2)所示。

baSb为句型baSb的相对于S的短语,ba为句型baSb的相对于A的短语,Sb为句型baSb的相对于B的短语,且为直接短语,a为句型baSb的相对于B的短语,且为直接短语和句柄。

3.设有非确定的有自限动机NFAM=({A,B,C},{0,1},,{A},{C}),其中:

(A,0)={C}(A,1)={A,B}(B,1)={C}(C,1)={C}。

请画出状态转换距阵和状态转换图。

状态转换距阵为:

1

A

C

A,B

B

状态转换图为

《编译原理》期末试题(六)

编译原理样题

【】1.____型文法也称为正规文法。

   [A]0[B]1[C]2[D]3

【】2.____文法不是LL

(1)的。

  [A]递归[B]右递归[C]2型[D]含有公共左因子的

【】3.文法E→E+E|E*E|i的句子i*i+i*i的不同语法分析树的总数为______。

   [A]1[B]3[C]5[D]7

【】4.四元式之间的联系是通过实现。

[A]临时变量[B]指示器[C]符号表[D]程序变量

【】5.同心集合并可能会产生的新冲突为。

[A]二义[B]移进/移进[C]移进/归约[D]归约/归约

【】6.代码优化时所依据的是。

[A]语法规则[B]词法规则[C]等价变换规则[D]语义规则

【】7.表达式a-(-b)*c的逆波兰表示为。

[A]a-b@c*[B]ab@c*-[C]ab@-[D]ab@c-*(注:

@为单目减运算符)

【】8.过程的DISPLAY表记录了。

[A]过程的连接数据[B]过程的嵌套层次

[C]过程的返回地址[D]过程的入口地址

二填空题

3.对于文法G1和G2,若有L(G1)=L(G2)(或G1和G2的语言相同),则称文法G1和G2是等价的。

4.对于文法G[E]:

E→T|E+TT→F|T*FF→P^F|PP→(E)|i,句型T+T*F+i的句柄是T,最左素短语是T*F。

5.最右推导的逆过程称为规范归约,也称为最左归约。

6.规范规约中的可规约串是句柄,算符优先分析中的可规约串是最左素短语

7.(A∨B)∧(C∨¬

D∧E)的逆波兰式是AB∨CD¬

E∧∨∧。

8.在属性文法中文法符号的两种属性分别称为继承属性和综合属性(次序可换)。

9.符号表的每一项是由名字栏和地址分配两个栏目组成。

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

10.一个过程的DISPLAY表的内容是它的 直接外层的DISPLAY表的内容加上本过程的SP的地址

三有穷自动机M接受字母表={0,1}上所有满足下述条件的串:

每个1都有0直接跟在右边。

构造一个最小的DFAM及和M等价的正规式。

【】【】

四证明正规式(ab)*a与正规式a(ba)*等价(用构造他们的最小的DFA方法)。

【答案:

五写一个文法,使其语言是:

L={1n0m1m0n|m,n≥0}

【】【】五文法G:

S→1S0|A

A→0A1|ε

六对文法G[S]

 S→aSb|P

P→bPc|bQc

Q→Qa|a

(1)它是否是算符优先文法?

请构造算符优先关系表

(2)文法G[S]消除左递归、提取左公因子后是否是LL

(1)文法?

请证实。

【】【】1.求出G[S]的FIRSTVT集和LASTVT集:

FIERSTVT(S)={a,b}LASTBVT(S)={b,c}

FIERSTVT(P)={b}LASTBVT(P)={c}

FIERSTVT(Q)={a}LASTBVT(Q)={a}

构造优先关系表为:

a

b

c

<

>

由于在优先关系中同时出现了a<

a和a>

a以及b<

b和b>

b,所以该文法不是算符优先文法。

2.消除左递归和提取左公因子后的文法为:

S→aSb|P

P→bP’

P’→Pc|Qc

Q→aQ’

Q’→aQ’|ε

求具有相同左部的两个产生式的Select集的交集:

Select(S→aSb)∩Select(S→P)={a}∩First(P)={a}∩{b}=Ф

Select(P’→Pc)∩Select(P’→Qc)=First(P)∩First(Q)={b}∩{a}=Ф

Select(Q’→aQ’)∩Select(Q’→ε)={a}∩Follow(Q)={a}∩{c}=Ф

所以修改后的文法是LL

(1)文法。

七已知文法G为:

(1)S′→S

(2)S→aAd

(3)S→bAc

(4)S→aec

(5)S→bed

(6)A→e

试构造它的LR

(1)项目集、可归前缀图和LR

(1)分析表。

【】【答案:

构造LR

(1)分析表

如下:

八已知源程序如下:

prod:

=0;

i:

=1;

whilei≤20do

begin

prod:

=prod+a[i]*b[i];

i:

=i+1

end;

试按语法制导翻译法将源程序翻译成四元式序列(设A是数组a的起始地址,B是数组b的起始地址;

机器按字节编址,每个数组元素占四个字节)。

九设有以下程序段

procedureP(x,y,z)

begin

Y:

=y*3;

Z:

=X+z;

a:

=5;

b:

=2;

p(a*b,a,a);

print(a);

end

若参数传递的方法分别为

(1)传值、

(2)传地址、(3)传名,试问结果分别什么?

【】【】十

(1)传值5;

(2)传地址25;

(3)传名45

十对以下文法,请写出关于括号嵌套层数的属性文法。

(为S,L引入属性h,用来记录输出配对的括号个数)

文法规则

语义规则

S→(T)

S→i

T→T,S

T→S

答案:

十一对PL/0语言的while语句while条件BDO语句S的编译程序,

请在空缺处填空,完成该语句的编译算法:

switch(SYM){……

caseWHILESYM:

CX1=CX;

GetSym();

CONDITION(SymSetAdd(DOSYM,FSYS),LEV,TX);

CX2=CX;

GEN(JPC,0,0);

if(SYM==DOSYM)

GetSym();

elseError(18);

STATEMENT(FSYS,LEV,TX);

GEN(JMP,0,CX1);

CODE[CX2].A=CX;

break;

……}

《编译原理》期末试题(七)

一、回答下列问题:

(30分)

1.什么是S-属性文法?

什么是L-属性文法?

它们之间有什么关系?

解答:

S-属性文法是只含有综合属性的属性文法。

(2分)

L-属性文法要求对于每个产生式AX1X2…Xn,其每个语义规则中的每个属性或者是综合属性,或者是Xj的一个继承属性,且该属性仅依赖于:

(1)产生式Xj的左边符号X1,X2…Xj-1的属性;

(2)A的继承属性。

S-属性文法是L-属性文法的特例。

2.什么是句柄?

什么是素短语?

一个句型的最左直接短语称为该句型的句柄。

(3分)素短语是这样的一个短语,它至少包含一个终结符并且不包含更小的素短语。

(3分)

3.划分程序的基本块时,确定基本块的入口语句的条件是什么?

(1)程序第一个语句,或

(2)能由条件转移语句或无条件转移语句转移到的语句,或

(3)紧跟在条件转移语句后面的语句。

4.(6分)运行时的DISPLAY表的内容是什么?

它的作用是什么?

答:

DISPLAY表是嵌套层次显示表。

每当进入一个过程后,在建立它的活动记录区的同时建立一张嵌套层次显示表diaplay.假定现在进入的过程层次为i,则它的diaplay表含有i+1个单元,自顶向下每个单元依次存放着现行层、直接外层、…、直至最外层(主程序,0层)等每层过程的最新活动记录的起始地址。

通过DISPLAY表可以访问其外层过程的变量。

5.(6分)对下列四元式序列生成目标代码:

A:

=B*C

D:

=E+F

G:

=A+D

H:

=G*2

其中,H是基本块出口的活跃变量,R0和R1是可用寄存器

LDR0,B

MULR0,C

LDR1,E

ADDR1,F

ADDR0,R1

MULR0,2

STR0,H

二、设={0,1}上的正规集S由倒数第二个字符为1的所有字符串组成,请给出该字集对应的正规式,并构造一个识别该正规集的DFA。

(8分)

构造相应的正规式:

(0|1)*1(0|1)(3分)

NFA:

11

1

00

确定化:

I

{0,1,2}

{1,2}

{1,2,3}

{1,2,4}

{1,2,3,4}

0

1

0100

01

三、写一个文法使其语言为L(G)={anbmambn|m,n≥1}。

(6分)

文法G(S):

SaSb|B

BbBa|ba

四、对于文法G(E):

(8分)

ET|E+T

TF|T*F

F(E)|i

1.写出句型(T*F+i)的最右推导并画出语法树。

2.写出上述句型的短语,直接短语、句柄和素短语。

1.(4分)

ETF(E)(E+T)(E+F)

(E+i)(T+i)(T*F+i)

2.(4分)

短语:

(T*F+i),T*F+i,T*F,i

直接短语:

T*F,i

句柄:

T*F

素短语:

五、设文法G(S):

(12分)

1.构造各非终结符的FIRSTVT和LASTVT集合;

2.构造优先关系表和优先函数。

FIRSTVT(S)={i,+,),(}

FIRSTVT(A)={+,),(}

FIRSTVT(B)={),(}

LASTVT(S)={i,+,*,(}

LASTVT(A)={+,*,(}

LASTVT(B)={*,(}

优先关系表:

(3分)

i

+

*

>

<

优先函数:

f

2

6

g

4

六、设某语言的do-while语句的语法形式为(9分)

SdoS

(1)WhileE

其语义解释为:

针对自下而上的语法分析器,按如下要求构造该语句的翻译模式:

(1)写出适合语法制导翻译的产生式;

(2)写出每个产生式对应的语义动作。

(1).适合语法制导翻译的文法(3分)

G(S):

Rdo

URS

(1)While

SUE

(2).(6分)

{R.QUAD:

=NXQ}

URS

(1)While

{U.QUAD:

=R.QUAD;

BACKPATCH(S.CHAIN,NXQ)}

{BACKPATCH(E.TC,U.QUAD);

S.CHAIN:

=E.FC}

答案二:

(1)SdoM1S

(1)WhileM2E

Mε(3分)

(2)Mε{M.QUAD:

=NXQ}(6分)

SdoM1S

(1)WhileM2E

{

BACKPATCH(S

(1).CHAIN,M2.QUAD);

BACKPATCH(E.TC,M1.QUAD);

=E.FC

}

七、(8分)将语句

if(A<

X)(B>

0)thenwhileC>

0doC:

=C+D

翻译成四元式。

100(j<

,A,X,102)

101(j,-,-,109)

102(j>

,B,0,104)

103(j,-,-,109)

104(j>

,C,0,106)

105(j,-,-,109)

106(+,C,D,T1)

107(:

=,T1,-,C)

108(j,-,-,104)

109

(控制结构3分,其他5分)

八、(10分)设有基本块如下:

T1:

=S+R

T2:

=3

T3:

=12/T2

T4:

=S/R

=T1-T4

T5:

B:

=T5

T6:

=T5*T3

=T6

(1)画出DAG图;

(2)设A,B是出基本块后的活跃变量,请给出优化后的四元式序列。

(1)DAG如右图:

(2)四元式序列:

(4分)

T1:

T4:

A:

B:

=T1*4

九、(9分)设已构造出文法G(S):

(1)SBB

(2)BaB

(3)Bb

的LR分析表如下

ACTION

GOTO

状态

a

b

#

S

s3

s4

acc

s6

s7

5

3

8

r3

r1

9

7

r2

假定输入串为abab,请给出LR分析过程(即按照步骤给出状态,符号,输入串的变化过程)。

步骤状态符号输入串

00#abab#

103#abab#

2034#abab#

3038#aBab#

402#Bab#

5026#Bab#

60267#Bab#

70269#BaB#

8025#BB#

901#S#acc

《编译原理》期末试题(八)

1.(10分)处于/*和*/之间的串构成注解,注解中间没有*/。

画出接受这种注解的DFA的状态转换图。

2.为语言L={ambn|0m2n}(即a的个数不超过b的个数的两倍)

写一个LR

(1)文法,不准超过6个产生式。

(若超过6个产生式,不给分。

若所写文法不是LR

(1)文法,最多给5分。

3.(10分)构造下面文法的LL

(1)分析表。

DTL

Tint|real

LidR

R,idR|

4.(15分)就下面文法

S(L)|aLLS|S

给出一个语法制导定义,它输出配对括号的个数。

给出一个翻译方案,它输出每个a的嵌套深度。

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

当前位置:首页 > 小学教育 > 学科竞赛

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

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