Case Statement
The “case” or “switch” statement is available in various languages. The following is the syntax for the case statement:
1
2
3
4
5
6
7
8
9
|
switch (E) {
case V1: S1
case V2: S2
....
case Vn–1: Sn–1
default: Sn
}
|
Translation of Switch Statement
The translation scheme for the above code is shown below:
Code to evaluate E into T
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
goto test
L1: code for S 1
goto next
L2: code for S 2
goto next
.....
Ln–1: code for Sn – 1
goto next
Ln: code for Sn
goto next
test: if t = 1 goto L1
if t = 2 goto L2
.....
if t = Vn–1 goto Ln – 1
goto Ln
next:
|
- When we see the switch keyword, two labels test and next and a temporary variable t are generated.
- When we see the case keyword, a new label Li is created and entered into the symbol table. It is used to store the value Vi of the constant Li, or a pointer to the symbol table entry for Li is placed in the queue.