(Block (FunctionDef (Var "main") (args) (Block (Declare (Var "x") nil (Int "5")) (If (Equals (Var "x") (Int "1")) (Block (FunctionCall (Var "say") (Text "one"))) :else (If (Equals (Var "x") (Int "2")) (Block (FunctionCall (Var "say") (Text "two"))) :else (Block (FunctionCall (Var "say") (Text "many"))))) (For (vars (Var "i")) (iters (Int "10")) (Block (If (Equals (Var "i") (Int "3")) (Continue "")) (If (Equals (Var "i") (Int "5")) (Break ""))) nil) (While (GreaterThan (Var "x") (Int "0")) (Block (Assign (targets (Var "x")) (values (Minus (Var "x") (Int "1")))))) (If (Equals (Var "x") (Int "0")) (FunctionCall (Var "say") (Text "done"))))))
|