case语句的翻译

【case语句的翻译】Switch和case语句支持多种语言。 case语句的语法如下:

switch Ebegin case V1: S1case V2: S2...case Vn-1: Sn-1default: Snend

其翻译方案如下所示:
将E评估为T的代码
goto TESTL1:code for S1goto NEXTL2:code for S2goto NEXT...Ln-1:code for Sn-1goto NEXTLn:code for Sngoto NEXTTEST:if T = V1 goto L1if T = V2goto L2...if T = Vn-1 goto Ln-1goto NEXT:

  • 当看到switch关键字时, 将生成一个新的临时T和两个新标签test和next。
  • 当出现case关键字时, 则为每个case关键字创建一个新标签Li, 并将其输入到符号表中。每种情况下常量的Vi值和指向此符号表条目的指针都放在堆栈上。

    推荐阅读