什么是控制语句?
控制语句是改变语句执行流程的语句。例如,If、If-else、Switch-Case、while-do语句。在编程语言中,布尔表达式用于
改变控制流-布尔表达式用作改变控制流的语句中的条件表达式。这种布尔表达式的值隐含在程序中到达的位置。例如,如果(E)S,则表达式E在到达语句S时应为真。
计算逻辑值-布尔表达式可以定义真值或假值。可以使用带有逻辑运算符的三个地址指令与算术表达式并行计算此类布尔表达式。
布尔表达式的设计用途由其语法上下文决定。例如,关键字“if”后面的表达式用于改变控制流,而赋值右侧的表达式可以指示逻辑值。这种语法上下文可以用多种方式定义。它可以使用多个非终结符、使用继承的属性或在解析过程中设置标志。它可以为布尔表达式的两种不同用途生成语法树并调用多个过程。
Example1-生成三个地址代码
而(a<b)做
如果(c<d)那么
x=y+z
别的
x=y–z。
解决方案
(1)如果a<b转到(3)
(2)转到(11)
(3)如果c<dgoto(5)
(4)转到(8)
(5)t1=y+z
(6)x=t1
(7)转到(1)
(8)t2=y−z
(9)x=t2
(10)转到(1)
Example2-生成三个地址代码
while (A < C and B < D) do If A=1 then C = C + 1 else while A≤D do A = A + 2.
解决方案
(1)如果A<C转到(3)
(2)转到(15)
(3)如果B<D转到(5)
(4)转到(15)
(5)如果A=1goto(7)
(6)转到(10)
(7)T1=C+1
(8)C=T1
(9)转到(1)
(10)如果A≤D转到(12)
(11)转到(1)
(12)T2=A+2
(13)A=T2
(14)转到(10)
Example3-生成三个地址代码
Switch (a) { Case 1− b = c + d break; Case 2− e = f + g break; }
解决方案
(1)如果a=1goto(3)
(2)如果a=2转到(6)
(3)t1=c+d
(4)b=t1
(5)转到(9)
(6)t2=f+g
(7)e=t2
(8)转到(9)
Example4-生成三个地址代码
while (i<5) { i=i+1; }
解决方案
(1)如果i<5转到(3)
(2)转到(5)
(3)i=i+1
(4)转到(1)
Example5-将以下控制语句转换为三个地址代码。
If (A < B