什么是控制语句?


控制语句是可以改变语句执行流程的语句。例如,If、If-else、Switch-Case、while-do 语句。在编程语言中,布尔表达式用于

  • 改变控制流− 布尔表达式用作语句中的条件表达式,以改变控制流。此类布尔表达式的值隐含在程序中达到的位置。例如,if (E) S,如果到达语句 S,则表达式 E 应该为真。

  • 计算逻辑值− 布尔表达式可以定义真或假值。可以使用带有逻辑运算符的三地址指令并行计算此类布尔表达式,如同算术表达式一样。

布尔表达式的设计用途由其语法上下文决定。例如,if 关键字后面的表达式用于改变控制流,而赋值右侧的表达式可以表示逻辑值。此类语法上下文可以通过多种方式定义。它可以使用多个非终结符、使用继承属性或在解析期间设置标志。它可以生成语法树并为布尔表达式的两种不同用途调用多个过程。

示例1− 为以下代码生成三地址码:

while (a < b) do

If (c < d) then

   x = y + z

else

   x = y – z.

解答

(1) If a < b goto(3)

(2) goto(11)

(3) If c < d goto(5)

(4) goto(8)

(5) t1 = y + z

(6) x = t1

(7) goto(1)

(8) t2 = y − z

(9) x = t2

(10) goto(1)

示例2− 为以下代码生成三地址码:

while (A < C and B < D) do
If A=1 then C = C + 1
else while AD do A = A + 2.

解答

(1) If A < C goto(3)

(2) goto(15)

(3) If B < D goto(5)

(4) goto(15)

(5) If A = 1 goto(7)

(6) goto (10)

(7) T1 = C + 1

(8) C = T1

(9) goto (1)

(10) If A ≤ D goto (12)

(11) goto (1)

(12) T2 = A + 2

(13) A = T2

(14) goto (10)

示例3− 为以下代码生成三地址码:

Switch (a)
{
   Case 1
      b = c + d
      break;
   Case 2
      e = f + g
      break;
}

解答

(1) If a = 1 goto(3)

(2) If a = 2 goto (6)

(3) t1 = c + d

(4) b = t1

(5) goto(9)

(6) t2 = f + g

(7) e = t2

(8) goto(9)

示例4− 为以下代码生成三地址码:

while (i<5)
{
   i=i+1;
}

解答

(1)if i<5 goto(3)

(2) goto (5)

(3) i = i + 1

(4) goto (1)

示例5− 将以下控制语句转换为三地址码。

If (A < B 𝐎𝐑 C > D)
X = X + Y + Z

解答

(1) If A < B goto(4)

(2) If C > D goto(4)

(3) goto(7)

(4) T1 = X + Y

(5) T2 = T1 + Z

(6) X = T2

更新于:2021年11月5日

18K+ 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告