编译原理期末试题(含答案+大题集+重要知识点)(8)

2018-11-17 20:53

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

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 b c < > < < > > > > 由于在优先关系中同时出现了aa以及bb,所以该文法不是算符优先文法。

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为:

(0) S′→ S (1) S → aAd (2) S → bAc (3) S → aec (4) S → bed (5) A → e

第36页共6页

试构造它的LR(1)项目集、可归前缀图和LR(1)分析表。 【】【答案:】 S I1:S′→S · , I0: # S′→· S , d # a A I4:S→aA· d , I8:S→aAd · , I: 2 S→· aAd , # S→a · Ad , # # e I:S→ae·S→a · ec , # c , c I:5 , 9S→aec ·S→ · bAc , A→· e , d # # # A→e · , d S→ ·aec , I10: b # I3: S→b · Ac , # A S→bAc · , I6: S→bA·c,# c S→b · ed , #

# e A→· e , c I7:S→be · d , d I11: # 构造LR(1)分析表 如下:

a b

S2 S3 0

1

2 3

4

5

6

7

8

9

10

11 八 已知源程序如下: prod:=0; i:=1;

while i≤20 do

状态 action c S9 S10 r5 S11 S8 r5 d e S5 S7 A→e · , c goto S 1 A S→bed · , # # acc r1 r3 r2 r4 第37页共6页

begin

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

end;

试按语法制导翻译法将源程序翻译成四元式序列(设A是数组a的起始地址,B是数组b的起始地址;机器按字节编址,每个数组元素占四个字节)。 【答案:】

九 设有以下程序段

procedure P(x,y,z) begin

Y:=y*3; Z:=X+z; end; begin

a:=5; b:=2; p(a*b,a,a); print(a); end

若参数传递的方法分别为(1)传值、(2)传地址、(3)传名,试问结果分别什么?

【】【】十 (1)传值 5; (2)传地址 25; (3)传名 45

十 对以下文法,请写出关于括号嵌套层数的属性文法。(为S,L引入属性h,用来

记录输出配对的括号个数) 文法规则 语 义 规 则 第38页共6页

S→(T) S→i T→T,S T→S 答案:

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

请在空缺处填空,完成该语句的编译算法: switch (SYM) { ?? case WHILESYM:

CX1=CX ;

GetSym();

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

CX2=CX ;

GEN(JPC,0,0); if (SYM==DOSYM)

else Error(18);

STATEMENT(FSYS,LEV,TX); GEN(JMP,0,CX1); break;

GetSym() ;

CODE[CX2].A=CX ; ??}

第39页共6页

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

一、回答下列问题:(30分)

1.什么是S-属性文法?什么是L-属性文法?它们之间有什么关系? 解答:

S-属性文法是只含有综合属性的属性文法。 (2分)

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

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

(2) A的继承属性。 (2分) S-属性文法是L-属性文法的特例。 (2分)

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是可用寄存器 答:

LD R0, B MUL R0, C LD R1, E ADD R1, F ADD R0, R1

第40页共6页


编译原理期末试题(含答案+大题集+重要知识点)(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:教育学提纲

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: