语义分析&中间代码生成(chap07-08)

该内容涉及编译原理中的中间代码生成和语义分析概念。主要讨论了语义规则如何指导中间代码生成,四元式之间的联系,终结符和非终结符的属性,以及属性值的计算和传递。此外,还提到了四元式表示法的优缺点,并通过具体的例子展示了如何将表达式转换为三地址代码和四元式序列。同时,探讨了语法制导翻译,包括拉链-回填技术的应用和不同类型的语法制导翻译规则。

2-1

中间代码生成所依据的是( )。(4分)

  1. 语法规则
  2. 词法规则
  3. 语义规则
  4. 等价变换规则

2-2

四元式之间的联系是通过( )实现的。 (4分)

  1. 指示器
  2. 临时变量
  3. 符号表
  4. 程序变量

 

2-3

终结符具有( )属性。 (4分)

  1. 抽象
  2. 传递
  3. 综合
  4. 继承

2-4

以下说法正确的是( )。 (4分)

  1. 语义规则中的属性有两种:综合属性与继承属性
  2. 终结符只有继承属性,它由词法分析器提供
  3. 非终结符可以有综合属性,但不能有继承属性
  4. 属性值在分析过程中可以进行计算,但不能传递

2-5

四元式表示法的优点为( )。 (4分)

  1. 不便于优化处理,但便于表的更动
  2. 不便于优化处理,但节省存储空间
  3. 便于优化处理,也便于表的更动
  4. 便于表的更动,也节省存储空间

2-6

文法符号的属性有两种,一种称( ),另一种称为( )。 (4分)

  1. 继承属性 综合属性
  2. 抽象属性 综合属性
  3. 传递属性 抽象属性
  4. 抽象属性 派生属性

2-7

用( )可以把a:=b+c翻译成四元式序列。 (4分)

  1. 语法规则
  2. 词法规则
  3. 语义规则
  4. 等价变换规则

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其值为( )。 (8分)

  1. 10
  2. 34
  3. 14
  4. 54

2-9

使用( )可以定义一个程序的意义。 (4分)

  1. 语义规则
  2. 词法规则
  3. 产生规则
  4. 词法规则

2-10

下面()语法制导翻译中,不采用拉链—回填技术。 (4分)

  1. 赋值语句
  2. 布尔表达式
  3. 条件语句
  4. 循环语句

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其值为()。(8分)

  1. 10
  2. 21
  3. 14
  4. 24

3-1

8-1已知表达式a+b∗c+(d+e)/f, 翻译成三地址代码序列,假设从100开始编号,选择合适的选项将下表补充完整。 (15分)

QQ图片20191112092848.png

  1. T1:=b*c
  2. T2:=a+T1
  3. T3:=d+e
  4. T4:=T3/f
  5. T5:=T2+T4
  6. T2:=d+e
  7. T3:=T2/f
  8. T4:=a+T1
  9. T5:=T4+T3

3-2

9-1将下列语句采用“拉链-回填”的思想翻译成四元式序列,选择合适的选项将下表补充完整。(20分)

while a<b and c<d do
if x>0 then x:=y+z else x:=y-z  

QQ图片20191112093330.png

  1. (j<,a,b,102)
  2. (j, _ ,_, 112)
  3. (j<,c,d,104)
  4. (j,_,_,112)
  5. (j>,x,0,106)
  6. (j,_,_,109)
  7. (+,y,z,T1)
  8. (:=,T1,_,x)
  9. (j,_,_,100)
  10. (-,y,z,T2)
  11. (:=,T2,_,x)
  12. (j,_,_,100)
  13. .......
  14. (j,_,_,102)
  15. (j,_,_,104)
  16. (j,_,_,111)
  17. (j,_,_,108)
  18. (:=,T1,x,100)
  19. (:=,T2,x,100)
  20. (-,z,y,T2)
  21. (+,z,y,T1)
  22. (j<,a,b,106)
  23. (j<,c,d,106)

3-3

8-3已知表达式(a+b)/(a-b)-a-(a+b∗c),翻译成三地址代码序列,假设从100开始编号,选择合适的选项将下表补充完整。 (15分)

QQ图片20191112153244.png

  1. T1:=a+b
  2. T2:=a-b
  3. T3:=T1/T2
  4. T4:=T3-a
  5. T5:=b * c
  6. T6:=a+T5
  7. T7:=T4-T6
  8. T4:=b*c
  9. T5:=a+T4
  10. T6:=T3-a
  11. T7:=T6-T5
  12. T1:=a-b
  13. T2:=a+b
  14. T3:=T2/T1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值