📜  案例陈述

📅  最后修改于: 2020-12-06 07:34:00             🧑  作者: Mango

案例陈述

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值和指向此符号表条目的指针都放在堆栈上。