当前位置:首页 > 编译原理期末试题(8套含答案+大题集)
.
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,用来记
录输出配对的括号个数) 文法规则 .
语 义 规 则 .
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)
GetSym() ;
else Error(18);
STATEMENT(FSYS,LEV,TX); GEN(JMP,0,CX1);
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
.
共分享92篇相关文档