Switch和case语句支持多种语言。 case语句的语法如下:
switch E
begin
case V1: S1
case V2: S2
.
.
.
case Vn-1: Sn-1
default: Sn
end
其翻译方案如下所示:
将E评估为T的代码
goto TEST
L1: code for S1
goto NEXT
L2: code for S2
goto NEXT
.
.
.
Ln-1: code for Sn-1
goto NEXT
Ln: code for Sn
goto NEXT
TEST: if T = V1 goto L1
if T = V2goto L2
.
.
.
if T = Vn-1 goto Ln-1
goto
NEXT:
- 当看到switch关键字时, 将生成一个新的临时T和两个新标签test和next。
- 当出现case关键字时, 则为每个case关键字创建一个新标签Li, 并将其输入到符号表中。每种情况下常量的Vi值和指向此符号表条目的指针都放在堆栈上。
评论前必须登录!
注册