-//testcase {
-//
-// input "
-//
-//
-//
-// while x>0
-// while y>0
-// foo()
-// bar()
-//
-//
-// while x>0
-// while y>0
-// foo()
-// bar()
-//
-//
-//
-//";
-// output "smt:{while:{>:{{x} {0}} while:{>:{{y} {0}} sbb:{{f o o} {b a r}}}} while:{>:{{x} {0}} sbb:{while:{>:{{y} {0}} {f o o}} {b a r}}}}";
-//
-//indent ! = ww
-//outdent ! = " " outdent " "
-// | " " (~[]*) "\n"
-//
-//w ! = " " | "\n" | "\r"
-//ws ! = w*
-//ww ! = sp*
-//sp ! = " "
-//any ! = ~[]*
-//
-//s = ws statement ws statement ws => smt
-//
-//block = "\n" indent blockBody
-// &~ "\n" outdent ~[\ ] ~[]*
-//
-//blockBody = statement
-// > statement ws blockBody => "sbb"
-//
-//statement = call
-// | ^"while" expr block /ws
-//
-//expr = ident
-// | call
-// | expr ^">" expr /ws
-// | num
-//
-//call = expr "()" /ws
-//
-//num = [0-9]++
-//
-//ident = [a-z]++ &~ keyword
-//keyword = "if" | "then" | "else" | "while"
-//
-//
-//
-//}
-//