编译原理10套试卷及答案

发布时间 : 星期日 文章编译原理10套试卷及答案更新完毕开始阅读

f g i 2 1 + 6 4 ( 6 6 ) 1 6 * 6 1 六、设某语言的do-while语句的语法形式为 (9分) S ? do S(1) While E

其语义解释为:

针对自下而上的语法分析器,按如下要求构造该语句的翻译模式: (1) 写出适合语法制导翻译的产生式; (2) 写出每个产生式对应的语义动作。 答:(1). 适合语法制导翻译的文法(3分) G(S): R? do

U?R S(1) While S?U E (2). (6分) R? do

{ R.QUAD:=NXQ }

U?R S(1) While { U.QUAD:=R.QUAD;

BACKPATCH(S.CHAIN, NXQ) }

S?U E

{ BACKPATCH(E.TC, U.QUAD); S.CHAIN:=E.FC }

答案二:

(1) S ? do M1 S(1) While M2 E

M ?ε (3分)

(2) M ?ε { M.QUAD := NXQ } (6分)

E的代码 假

S(1)的代码 真

S ? do M1 S(1) While M2 E {

BACKPATCH(S(1).CHAIN, M2.QUAD); BACKPATCH(E.TC, M1.QUAD);

S.CHAIN:=E. FC

七、(8分)将语句

if (A0) then while C>0 do C:=C+D 翻译成四元式。(8分) 答:

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 A:=T1-T4 T5:=S+R B:=T5

T6:=T5*T3 B:=T6

(1)画出DAG图;

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

答:(1) DAG如右图:(6分) n7 A n8 T6,B

_ *

n3 T1,T5, B n6 T4 + n1 S / n2 R n4 T2 3 n5 4 T3

(2) 四元式序列:(4分) T1:=S+R T4:=S/R A:=T1-T4 B:=T1*4

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

(1) S ? BB (2) B ? aB (3) B? b

的LR分析表如下

状态 0 1 2 3 4 5 6 7 8 9 a s3 s6 s3 r3 s6 r2 ACTION b s4 s7 s4 r3 s7 r2 # acc r1 r3 r2 S 1 GOTO B 2 5 8 9

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

步骤 状态 符号 输入串 0 0 # abab# 1 03 #a bab# 2 034 #ab ab# 3 038 #aB ab# 4 02 #B ab# 5 026 #Ba b# 6 0267 #Bab # 7 0269 #BaB #

8 9

025 01 #BB #S # #

acc

《编译原理》考试试题

(所有答案必须写在答题纸上)

(2006.12.25)

一、(5×6分)回答下列问题:

1.什么是S-属性文法?什么是L-属性文法?它们之间有什么关系? 2.什么是句柄?什么是素短语?

3.划分程序的基本块时,确定基本块的入口语句的条件是什么? 4.运行时的DISPLAY表的内容是什么?它的作用是什么? 5.对下列四元式序列生成目标代码:

A:=B*C D:=E+F G:=A+D H:=G*2

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

二、(8分)设?={0,1}上的正规集S由倒数第二个字符为1的所有字符串组成,请给出该字集对应的正规式,并构造一个识别该正规集的DFA。 三、(6分)写一个文法使其语言为L(G)={ anbmambn | m,n≥1}。 四、(8分)对于文法G(E):

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

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

2. 写出上述句型的短语,直接短语、句柄和素短语。 五、(12分)设文法G(S):

S?SiA|AA?A?B|BB?)A*|(

5.构造各非终结符的FIRSTVT和LASTVT集合; 6.构造优先关系表和优先函数。

六、(9分)设某语言的do-while语句的语法形式为 S ? do S(1) While E

联系合同范文客服:xxxxx#qq.com(#替换为@)