本文主要是介绍2017计科01-08编译原理练习题一语义分析中间代码生成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
2017计科01-08编译原理练习题一语义分析&中间代码生成
单选题
2-1中间代码生成所依据的是( C )。
A.语法规则
B.词法规则
C.语义规则
D.等价变换规则
2-2四元式之间的联系是通过( B )实现的。
A.指示器
B.临时变量
C.符号表
D.程序变量
2-3终结符具有(C )属性。
A.抽象
B.传递
C.综合
D.继承
2-4以下说法正确的是( A)。
A.语义规则中的属性有两种:综合属性与继承属性
B.终结符只有继承属性,它由词法分析器提供
C.非终结符可以有综合属性,但不能有继承属性
D.属性值在分析过程中可以进行计算,但不能传递
2-5四元式表示法的优点为( A )。
A.不便于优化处理,但便于表的更动
B.不便于优化处理,但节省存储空间
C.便于优化处理,也便于表的更动
D.便于表的更动,也节省存储空间
2-6文法符号的属性有两种,一种称(A ),另一种称为( )。
A.继承属性 综合属性
B.抽象属性 综合属性
C.传递属性 抽象属性
D.抽象属性 派生属性
2-7用( C)可以把a:=b+c翻译成四元式序列。
A.语法规则
B.词法规则
C.语义规则
D.等价变换规则
2-8有文法G及其语法制导翻译如下所示( 语义规则中的*和+分别是常规意义下的算术运算符)
E→E1∧ T { E.val = E1.val * T.val }
E→T { E.val =T.val }
T→T1# n { T.val = T1.val + n.val }
T→ n {T.val = n.val }
则分析句子 2 ∧ 3 # 4其值为( C)。
A.10
B.34
C.14
D.54
2-9使用( A)可以定义一个程序的意义。
A.语义规则
B.词法规则
C.产生规则
D.词法规则
2-10下面(A)语法制导翻译中,不采用拉链—回填技术。
A.赋值语句
B.布尔表达式
C.条件语句
D.循环语句
2-11有文法G及其语法制导翻译如下所示( 语义规则中的*和+分别是常规意义下的算术运算符):
E→E1 ∧ T {E.val = E1.val * T.val}
E→T {E.val = T.val}
T→T1# n {T.val = T1.val + n.val }
T→ n {T.val = n.val}
则分析句子3 ∧ 3 # 4其值为(B)。
A.10
B.21
C.14
D.24
多选题
3-1已知表达式a+b∗c+(d+e)/f, 翻译成三地址代码序列,假设从100开始编号,选择合适的选项将下表补充完整。
A.T1:=b*c
B.T2:=a+T1
C.T3:=d+e
D.T4:=T3/f
E.T5:=T2+T4
F.T2:=d+e
G.T3:=T2/f
H.T4:=a+T1
I.T5:=T4+T3
答案: ABCDE
3-2将下列语句采用“拉链-回填”的思想翻译成四元式序列,选择合适的选项将下表补充完整。
while a<b and c<d do
if x>0 then x:=y+z else x:=y-z
A.(j<,a,b,102)
B.(j, _ ,, 112)
C.(j<,c,d,104)
D.(j,,,112)
E.(j>,x,0,106)
F.(j,,,109)
G.(+,y,z,T1)
H.(:=,T1,,x)
I.(j,,,100)
J.(-,y,z,T2)
K.(:=,T2,,x)
L.(j,,,100)
M…
N.(j,,,102)
O.(j,,,104)
P.(j,,,111)
Q.(j,,_,108)
R.(:=,T1,x,100)
S.(:=,T2,x,100)
T.(-,z,y,T2)
U.(+,z,y,T1)
V.(j<,a,b,106)
W.(j<,c,d,106)
答案: ABCDEFGHIJKLM
3-3已知表达式(a+b)/(a-b)-a-(a+b∗c),翻译成三地址代码序列,假设从100开始编号,选择合适的选项将下表补充完整。
A.T1:=a+b
B.T2:=a-b
C.T3:=T1/T2
D.T4:=T3-a
E.T5:=b * c
F.T6:=a+T5
G.T7:=T4-T6
H.T4:=b*c
I.T5:=a+T4
J.T6:=T3-a
K.T7:=T6-T5
L.T1:=a-b
M.T2:=a+b
N.T3:=T2/T1
答案: ABCDEFG
这篇关于2017计科01-08编译原理练习题一语义分析中间代码生成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!