编译模拟试题及答案Word版Word文档下载推荐.docx
- 文档编号:22368596
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:13
- 大小:96.17KB
编译模拟试题及答案Word版Word文档下载推荐.docx
《编译模拟试题及答案Word版Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《编译模拟试题及答案Word版Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
→+TE’SELECT(②)={}
③E'
→εSELECT(③)={}
④T→FT'
SELECT(④)={}
⑤T'
→*FT’SELECT(⑤)={}
⑥T'
→εSELECT(⑥)={}
⑦F→(E)SELECT(⑦)={}
⑧F→iSELECT(⑧)={}
+
*
(
)
i
#
E
E'
T
T'
F
五、把下面的语句翻译成四元式序列。
(只给出最后结果,设nextstat当前值为100)
whileA<
CdoifA<
0thenA:
=A+1elseA:
=A+2
六、用基本块代码生成算法生成目标代码。
(假定允许使用R1和R2寄存器,临时变量Ti出基本块后都不活跃)
四元式
选取R
目标代码
RVALUE
AVALUE
T1:
=A+B
T2:
=C-T1
T3:
=D*E
T4:
=F+G
T5:
=T3-T4
W:
=T2/T5
二、填空
一组终结符号,一组非终结符号,一组产生式,以及一个开始符号。
2型文法,又称上下文无关文法;
3型文法,又称正规文法。
3.最右推导称为规范推导,由规范推导产生的句型称为规范句型。
4.设G是一个文法,S是它的开始符号,如果S=*>
α,则称α是一个句型。
仅由终结符号组成的句型是一个句子。
5对于一个文法G而言,如果L(G)中存在某个句子对应两棵不同的语法树,那么该文法就称为是二义的。
基本字、标识符、常数、算符、界限符。
7.在自底向上分析法中,LR分析法把“可归约串”定义为句柄。
8.编译中常用的中间代码形式有逆波兰式、三元式、树代码和四元式等。
9.对中间代码优化按涉及的范围分为局部优化,循环优化和全局优化。
10.局部优化主要包括合并已知量、利用公共子表达式和删除无用赋值等内容。
11.为了构造不带回溯的递归下降分析程序,我们通常要消除左递归和提取左公共因子
(15分)
答:
编译过程通常分为词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成六个主要阶段。
各个阶段的主要功能如下:
词法分析阶段:
读入源程序,对构成源程序的字符流进行扫描和分解,识别出一个个单词,并表示成计算机内部的形式(TOKEN字)。
语法分析阶段:
在词法分析的基础上,将单词序列分解成各类语法短语,如“表达式”、“语句”、“程序”等,确定整个输入串是否构成语法上正确的程序。
语义分析阶段:
审查源程序有无语义错误,为代码生成阶段收集类型信息。
中间代码生成阶段:
将源程序翻译成一种复杂性介于源程序与目标程序之间的内部形式(中间代码)。
代码优化:
对前阶段产生的中间代码进行等价变换,目的是使将来生成的目标代码更为高效。
目标代码生成:
把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。
证:
因为句型QbRae可由文法开始符S经过规范推导产生,推导过程如下:
S=R>
SaQ=R>
SaR=R>
Sae=R>
Qae=R>
QbRae
所以句型QbRae是规范句型。
2.给出句型QbRae的语法树和句柄:
语法树:
QbR
四、考虑以下文法:
D→ TV
T→ int|float
V→id,V|id
a.在该文法中提取左公因子。
b.为所得的文法的非终结符构造First集合和Follow集合。
c.说明所得的文法是LL
(1)文法。
d.为所得的文法构造LL
(1)分析表
e.假设有输入串
intx,y,z
写出相应的LL
(1)分析程序的动作。
a.文法存在左公因子,提取左公因子后的文法为:
D→ TV
T→ int|float
V→idV'
V'
→,V|ε
b.
非终结符
First集合
Follow集合
D
{int,float}
{$}
{id}
V
{,,ε}
c.
(1)
First(TV)={int,float}
First(int)∩First(float)={int}∩{float}=φ;
First(idV'
)={id};
First(,V)∩First(ε)={,}∩{ε}}=φ;
(2)
V'
=>
ε,
First(V'
)∩Follow(V'
)={,,ε}∩{$}=φ
根据LL
(1)文法的定义判断,此文法是LL
(1)文法;
d.LL
(1)分析表为:
int
float
id
$
D→TV
T→int
T→float
V→idV'
→,V
→ε
e.输入串intx,y,z的LL
(1)分析:
步骤
分析栈
输入串
分析程序的动作
1
$D
intx,y,z$
2
$VT
3
$Vint
int匹配
4
$V
x,y,z$
5
$V'
x
x匹配
6
y,z$
7
$V,
匹配
8
$V
y,z$
9
y
y匹配
10
z$
11
12
z$
13
z
z匹配
14
接受
五、考虑以下的文法:
E→(L)|a
L→L,E|E
a.为这个文法构造LR(0)项目的DFA。
b.判断这个文法是否是LR(0)文法?
若不是,请描述出LR(0)冲突,如果是,则构造LR(0)分析表。
c.判断这个文法是否为SLR
(1)文法?
若是,构造SLR
(1)分析表。
d.显示分析栈和输入串((a),a,(a,a))的SLR
(1)分析程序的工作。
拓广文法:
(0)E’→E
(1)E→(L)
(2)E→a
(3)L→L,E
(4)L→E
是LR(0)文法,LR(0)分析表为:
ACTION
GOTO
a
E
L
S3
S2
acc
s4
r2
S6
S7
r4
r1
r3
E’
{),,,$}
{),,}
是SLR
(1)文法,SLR
(1)分析表为:
输入
$0
((a),a,(a,a))$
$0(2
(a),a,(a,a))$
$0(2(2
a),a,(a,a))$
$0(2(2a3
),a,(a,a))$
$0(2(2E5
$0(2(2L4
$0(2(2L4)6
a,(a,a))$
$0(2E5
$0(2L4
$0(2L4,7
a,(a,a))$
$0(2L4,7a3
(a,a))$
$0(2L4,7E8
(a,a))$
15
$0(2L4,7(2
a,a))$
16
$0(2L4,7(2a3
a))$
17
$0(2L4,7(2E5
18
$0(2L4,7(2L4
19
$0(2L4,7(2L4,7
a))$
20
$0(2L4,7(2L4,7a3
))$
21
$0(2L4,7(2L4,7E8
22
23
$0(2L4,7(2L4)6
)$
24
25
26
$0(2L4)6
27
$0E1
六、把下面的语句翻译成四元式序列。
(只给出最后结果,设LABEL当前值为100)
100:
j<
A,C,102
101:
j,-,-,110
102:
A,0,104
103:
j,-,-,107
104:
+,A,1,T1
105:
:
=,T1,-,A
106:
j,-,-,100
107:
+,A,2,T2
108:
=,T2,-,A
109:
110:
S.NEXT=101
七、设有基本块
T1:
=2
T2:
=10/T1
T3:
=S-R
T4:
=S+R
A:
=T2*T4
B:
=A
T5:
T6:
=T3*T5
=T6
(1)画出DAG图;
(2)假设基本块出口时只有A,B还被引用,请写出优化后的四元序列。
T3:
=S-R
T4:
=S+R
A:
=5*T4
B:
=T4*T3
八、考虑下面程序
Vara:
integer;
ProcedureS(X);
VarX:
Begin
a:
=a+1;
X:
=a+X
End;
Begin
=5;
S(a);
Print(a)
End.
试问:
若参数传递方式分别采取传名和传值时,程序执行后输出a的值是什么?
答:
传名:
a=12
传值:
a=6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 模拟 试题 答案 Word