发布时间 : 星期五 文章编译原理试题汇总+编译原理期末试题(8套含答案+大题集)(完整资料).doc更新完毕开始阅读43a89276dc3383c4bb4cf7ec4afe04a1b171b0f2
答案:
十一 对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);
GetSym() ;
CODE[CX2].A=CX ; break; ……}
《编译原理》期末试题(七)
一、回答下列问题:(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 MUL R0, 2 ST R0, H
二、设?={0,1}上的正规集S由倒数第二个字符为1的所有字符串组成,请给出该字集对应的正规式,并构造一个识别该正规集的DFA。(8分)
答:
构造相应的正规式:(0|1)*1(0|1) (3分) NFA: (2分)
1 1
? ? ? ? 1 0 1 2 3 4
0 0 确定化:(3分) I I0 I1 {0,1,2} {1,2} {1,2,3} {1,2,4} {1,2,3,4} {1,2} {1,2} {1,2,4} {1,2} {1,2,4} {1,2,3} {1,2,3} {1,2,3,4} {1,2,3} {1,2,3,4}
0
1 0 1 0 0 0 1 2 3 4
0 1 1 1
三、写一个文法使其语言为L(G)={ anbmambn | m,n≥1}。(6分)
答:文法G(S):
S ? aSb | B B ? bBa | ba
四、对于文法G(E): (8分)
E?T|E+T T?F|T*F F?(E)|i
1. 写出句型(T*F+i)的最右推导并画出语法树。
2. 写出上述句型的短语,直接短语、句柄和素短语。 答: 1. (4分)
E?T?F?(E) ?(E+T) ?(E+F)
E T F ?(E+i) ?(T+i) ?(T*F+i)
2. (4分)
短语:(T*F+i), T*F+i, T*F, i 直接短语:T*F, i 句柄:T*F 素短语:T*F, i
( E ) E + T T F T * F i
五、设文法G(S):(12分)
S?SiA|AA?A?B|B B?)A*|(1. 构造各非终结符的FIRSTVT和LASTVT集合; 2. 构造优先关系表和优先函数。(12分) 答:(6分)
FIRSTVT(S)={ i,+,),( } FIRSTVT(A)={ +,),( } FIRSTVT(B)={ ),( }
LASTVT(S)={ i,+,*,( } LASTVT(A)={ +,*,( } LASTVT(B)={ *,( }
优先关系表: (3分) i + ( ) i > < < < + > > < < ( > > ) < < < * > > 优先函数: (3分) i + ( ) f 2 6 6 1 g 1 4 6 6 六、设某语言的do-while语句的语法形式为 (9分) S ? do S(1) While E
其语义解释为:
针对自下而上的语法分析器,按如下要求构造该语句的翻译模式: (1) 写出适合语法制导翻译的产生式;
* > > > * 6 1 S(1)的代码 E的代码 真 假