编译原理考试陈火旺含答案.docx
- 文档编号:8743523
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:17
- 大小:21.37KB
编译原理考试陈火旺含答案.docx
《编译原理考试陈火旺含答案.docx》由会员分享,可在线阅读,更多相关《编译原理考试陈火旺含答案.docx(17页珍藏版)》请在冰豆网上搜索。
编译原理考试陈火旺含答案
编译原理试题A(2003.12.4)
一、回答下列问题:
(30分)
1.(6分)对于下面程序段
programtest(input,output)
vari,j:
integer;
procedureCAL(x,y:
integer);
begin
y:
=y*y;x:
=x-y;y:
=y-x
end;
begin
i:
=2;j:
=3;CAL(i,j)
writeln(j)
end.
若参数传递的方法分别为
(1)传值、
(2)传地址,(3)传名,请写出程序执行的
输出结果。
2.(6分)计算文法G(M)的每个非终结符的FIRST和FOLLOW集合,并判断该文
法是否是LL
(1)的,请说明理由。
G(M):
M→TB
T→Ba|
B→Db|eT|
D→d|
3.(4分)考虑下面的属性文法
产生式
语义规则
S→ABC
B.u:
=S.u
A.u:
=B.v+C.v
S.v:
=A.v
A→a
A.v:
=3*A.u
B→b
B.v:
=B.u
C→c
C.v:
=1
(1)画出字符串abc的语法树;
(2)对于该语法树,假设S.u的初始值为5,属性计算完成后,S.v的值为多少?
4.(4分)运行时的DISPLAY表的内容是什么?
它的作用是什么?
5.(5分)对下列四元式序列生成目标代码:
1
A:
=B*C
D:
=E+A
G:
=B+C
H:
=G*D
其中,H在基本块出口之后是活跃变量,R0和R1是可用寄存器。
6.(5分)写出表达式a+b*(c-d)对应的逆波兰式、三元式序列和抽象语法树。
二、(8分)构造一个DFA,它接受={a,b}上所有包含ab的字符串。
三、(6分)写一个文法使其语言为L(G)={anbncm|m,n≥1,n为奇数,m为偶数}。
四、(8分)对于文法G(S):
SbMb
M(L|aLMa)
1.写出句型b(Ma)b的最右推导并画出语法树。
2.写出上述句型的短语,直接短语和句柄。
五、(12分)对文法G(S):
S→a|^|(T)
T→T,S|S
(1)构造各非终结符的FIRSTVT和LASTVT集合;
(2)构造算符优先表;
(3)是算符优先文法吗?
(4)构造优先函数。
六、(8分)设某语言的do-while语句的语法形式为
SdoS
(1)WhileE
其语义解释为:
S
(1)的代码
真
E的代码假
2
针对自下而上的语法分析器,按如下要求构造该语句的翻译模式,将该语句翻译成四元式:
(1)写出适合语法制导翻译的产生式;
(2)写出每个产生式对应的语义动作。
七、(10分)将语句
whileC>0doifAB=0thenC:
=C+DelseC:
=C*D
翻译成四元式。
八、(10分)设有基本块如下:
T1:
=3
T2:
=A*B
T3:
=9+T1
M:
=A*B
T4:
=C-D
L:
=T3*T4
T2:
=C+D
N:
=T2
1.画出DAG图;
2.设L,M,N是出基本块后的活跃变量,请给出优化后的四元式序列。
九、(8
分)文法G(S)及其LR分析表如下,请给出串baba#的分析过程。
(1)S
→DbB
(2)D
→d
(3)D
→ε
(4)B
→a
(5)B
→Bba
(6)B
→ε
LR分析表
ACTION
GOTO
b
D
a
#
S
B
D
0
r3
s3
1
2
1
acc
2s4
3r2
4
r6
S5
r6
6
5
r4
r4
6
s7
r1
7
S8
8
r5
r5
(注:
答案格式为
步骤
状态
符号
输入串)
3
编译原理试题A(2003.12.4)
一、回答下列问题:
(30分)
1.(6分)对于下面程序段
programtest(input,output)
vari,j:
integer;
procedureCAL(x,y:
integer);
begin
y:
=y*y;x:
=x-y;y:
=y-x
end;
begin
i:
=2;j:
=3;CAL(i,j)
writeln(j)
end.
若参数传递的方法分别为
(1)传值、
(2)传地址,(3)传名,请写出程序执行的输出结果。
答:
(1)3
(2)16(3)16(每个值2分)
2.(6分)计算文法G(M)的每个非终结符的FIRST和FOLLOW集合,并判断该文法是否是LL
(1)的,请说明理由。
G(M):
M→TB
T→Ba|
B→Db|eT|D→d|
解答:
计算文法的FIRST和FOLLOW集合:
(4分)
FIRST(M)={a,b,e,d,}FIRST(T)={a,b,e,d,}
FIRST(B)={b,e,d,}FIRST(D)={d,}
FOLLOW(M)={#}FOLLOW(T)={a,b,e,d,#}
FOLLOW(B)={a,#}FOLLOW(D)={b}
检查文法的所有产生式,我们可以得到:
4
1.该文法不含左递归,
2.该文法中每一个非终结符M,T,B,D的各个产生式的候选首符集两两不相
交。
3.该文法的非终结符T、B和D,它们都有候选式,而且
FIRST(T)∩FOLLOW(T)={a,b,e,d}≠
所以该文法不是LL
(1)文法。
(2分)
3.(4分)考虑下面的属性文法
产生式
语义规则
S→ABC
B.u:
=S.u
A.u:
=B.v+C.v
S.v:
=A.v
A→a
A.v:
=3*A.u
B→b
B.v:
=B.u
C→c
C.v:
=1
(3)画出字符串abc的语法树;
(4)对于该语法树,假设S.u的初始值为5,属性计算完成后,S.v的值为多少。
答:
(1)(2分)
S
ABC
abc
(2)S.v的值为18(2分)
4.(4分)运行时的DISPLAY表的内容是什么?
它的作用是什么?
答:
DISPLAY表是嵌套层次显示表。
每当进入一个过程后,在建立它的活动记录区的同时建立一张嵌套层次显示表diaplay.假定现在进入的过程层次为i,则它的diaplay表含有i+1个单元,自顶向下每个单元依次存放着现行层、直接外层、⋯、直至最外层(主程序,0层)等每层过程的最新活动记录的起始地址。
通过DISPLAY表可以访问其外层过程的变量。
5
5.(5分)对下列四元式序列生成目标代码:
A:
=B*C
D:
=E+A
G:
=B+C
H:
=G*D
其中,H在基本块出口之后是活跃变量,R0和R1是可用寄存器。
答:
目标代码序列
LD
R0
B
MUL
R0
C
LD
R1
E
ADD
R1
R0
LD
R0
B
ADD
R0
C
MUL
R0
R1
ST
R0
H
6.(5分)写出表达式a+b*(c-d)对应的逆波兰式、三元式序列和抽象语法树。
答:
逆波兰式:
(abcd-*+)(1分)
三元式序列:
(2分)
OPARG1ARG2
(1)-cd
(2)*b
(1)
(3)+a
(2)
抽象语法树:
(2分)
+
*
-
a
c
d
b
二、(8分)构造一个DFA,它接受={a,b}上所有包含ab的字符串。
答:
6
(2分)构造相应的正规式:
(a|b)*ab(a|b)*
(3
分)
a
a
0
1
2
3
a
b
b
b
(3
分)确定化:
I
I0
{0,1,2}
{1,2,3}
{1,2,3}
{1,2,3}
{1,2}
{1,2,3}
{1,2,4,5,6}
{1,2,3,5,6}
{1,2,3,5,6}
{1,2,3,5,6}
{1,2,5,6}
{1,2,3,5,6}
b
b
b
a
a
a
a
a
0
1
2
a
b
b
b
最小化:
{0,1,2}{3,4,5}
{0,2},1,{3,4,5}
baa
ab
013
456
I1
{1,2}
{1,2,4,5,6}
{1,2}
{1,2,5,6}
{1,2,4,5,6}
{1,2,5,6}
345
三、(6
b
nnm
分)写一个文法使其语言为
L(G)={abc|m,n≥1,n为奇数,m为偶数}。
答:
文法G(S):
7
SAC
AaaAbb|ab
CccCcc|cc
四、(8分)对于文法G(S):
SbMb
M(L|aLMa)
1.写出句型b(Ma)b的最右推导并画出语法树。
2.写出上述句型的短语,直接短语和句柄。
答:
1.(4分)
S
SbMbb(Lbb(Ma)b
2.(4分)
短语:
Ma),(Ma),b(Ma)b
直接短语:
Ma)
句柄:
Ma)
bMb
(TL
Ma)
五、(12分)对文法G(S):
S→a|^|(T)
T→T,S|S
(1)构造各非终结符的FIRSTVT和LASTVT集合;
(2)构造算符优先表;
(3)是算符优先文法吗?
(4)构造优先函数。
答:
(1)(4分)
FIRSTVT(S){a,^,(}
FIRSTVT(T){,,a,^,(}
LASTVT(S){a,^,)}
LASTVT(T){,,a,^,)}
(2)(4分)
a^(),
8
a
>
>
^
>
>
(
<
<
<
=
<
)
>
>
<
<
<
>
>
(3)是算符优先文法,因为任何两个终结符之间至多只有一种优先关系。
(1分)
(4)优先函数(3分)
a
^
(
)
F
4
4
2
4
4
G
5
5
5
2
3
六、(8分)设某语言的do-while语句的语法形式为
SdoS
(1)WhileE
其语义解释为:
S
(1)的代码
真
E的代码
假
针对自下而上的语法分析器,按如下要求构造该语句的翻译模式,将该语句翻译成四元式:
(1)写出适合语法制导翻译的产生式;
(2)写出每个产生式对应的语义动作。
答:
(1).适合语法制导翻译的文法(4分)
G(S):
Rdo
URS
(1)While
SUE
(2).(4分)
Rdo
{R.QUAD:
=NXQ}
9
URS
(1)While
{U.QUAD:
=R.QUAD;BACKPATCH(S.CHAIN,NXQ)}
SUE
{BACKPATCH(E.TC,U.QUAD);S.CHAIN:
=E.FC}
答案二:
(1)SdoM1S
(1)WhileM2E
Mε(4分)
(2)Mε{M.QUAD:
=NXQ}(4分)
SdoM1S
(1)WhileM2E
{
BACKPATCH(S
(1).CHAIN,M2.QUAD);
BACKPATCH(E.TC,M1.QUAD);
S.CHAIN:
=E.FC
}
七、(10分)将语句
whileC>0doifAB=0thenC:
=C+DelseC:
=C*D
翻译成四元式。
答:
100(j>,C,0,102)
101(j,-,-,112)
102(jnz,A,-,106)
103(j,-,-,104)
104(j=,B,0,106)
105(j,-,-,109)
106(+,C,D,T1)
107(:
=,T1,-,C)
108(j,-,-,100)
109(*,C,D,T2)
110(:
=,T2,-,C)
10
111(j,-,-,100)
112
八、(10分)设有基本块如下:
T1:
=3
T2:
=A*B
T3:
=9+T1
M:
=A*B
T4:
=C-D
L:
=T3*T4
T2:
=C+D
N:
=T2
3.画出DAG图;
4.设L,M,N是出基本块后的活跃变量,请给出优化后的四元式序列。
答:
1.(6分)
L
n9
*
T2,M
n4T4
T2,N
n8
n10
*
-
+
n1
n2
n3
n5
n6
n7
T1
T3
3
A
B12
C
D
2.(4分)M:
=A*BS1:
=C-DL:
=12*S1N:
=C+D
九、(8
分)文法G(S)及其LR分析表如下,请给出串baba#的分析过程。
(1)S
→DbB
(2)D
→d
(3)D
→ε
(4)B
→a
(5)B
→Bba
(6)B
→ε
LR分析表
11
ACTION
GOTO
b
D
a
#
S
B
D
0
r3
s3
1
2
1
acc
2s4
3r2
4
r6
S5
r6
6
5
r4
r4
6
s7
r1
7
S8
8
r5
r5
解答:
步骤
状态
符号
输入串
0
0
#
baba#
1
02
#D
baba#
2
024
#Db
aba#
3
0245
#Dba
ba#
4
0246
#DbB
ba#
5
02467
#DbBb
a#
6
024678
#DbBba
#
7
0246
#DbB
#
8
01
#S
#
acc
12
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 考试 陈火旺含 答案