switch,while式を追加。

switch式は

a:"a"
switch(a){
case("a"){1}
case("b"){2}
default{3}
}

で、1が返ります。
http://sakurai.s59.xrea.com/compact/compact0.0.5/sumi.html?in=a%3A%22a%22%0D%0Aswitch%28a%29%7B%0D%0Acase%28%22a%22%29%7B1%7D%0D%0Acase%28%22b%22%29%7B2%7D%0D%0Adefault%7B3%7D%0D%0A%7D%0D%0A


while式は

a:0
while(a<10){
  print(a++ +"\n")
}

で、0,1,2,3,4,5,6,7,8,9と表示され、falseが返ります。

http://sakurai.s59.xrea.com/compact/compact0.0.5/sumi.html?in=a%3A0%0D%0Awhile%28a%3C10%29%7B%0D%0A++print%28a%2B%2B+%2B%22%5Cn%22%29%0D%0A%7D%0D%0A

問題は、do while文です。sumiでは、do {a}while(b)という式の{}とwhileの間の演算子
空白演算子です。これでは、うまくつながってくれません。
そこで、メソッドを使って実現することにしてみました。

a:0
{
  print(a++ + "\n")
}.while(a<10)

とすれば、
0,1,2,3,4,5,6,7,8,9と表示され、{}が返ります。
http://sakurai.s59.xrea.com/compact/compact0.0.5/sumi.html?in=a%3A0%0D%0A%7B%0D%0A++print%28a%2B%2B+%2B+%22%5Cn%22%29%0D%0A%7D.while%28a%3C10%29%0D%0A

with文はこんなので、、、。

a:{b:0;c:0}
with(a){
  b=10
  c=10
}

http://sakurai.s59.xrea.com/compact/compact0.0.5/sumi.html?in=a%3A%7Bb%3A0%3Bc%3A0%7D%0D%0Awith%28a%29%7B%0D%0A++b%3D10%0D%0A++c%3D10%0D%0A%7D%0D%0A

{b:10;c:10}
が返ります。