fn add(a: i32, b: i32) i32 { ret a + b; } fn main() i32 { /* arithmetic */ var a := 1 + 2 * 3; if a != 7 { ret 1; } var b := 10 - 4; if b != 6 { ret 2; } var c := 12 / 5; if c != 2 { ret 3; } var d := 12 % 5; if d != 2 { ret 4; } /* comparison */ if (1 < 2) {} else { ret 5; } if (3 > 1) {} else { ret 6; } if (2 == 2) {} else { ret 7; } if (2 != 3) {} else { ret 8; } if (2 <= 2) {} else { ret 9; } if (3 >= 3) {} else { ret 10; } /* function call */ var s := add(3, 4); if s != 7 { ret 11; } /* if/else */ var x := 0; if x == 0 { x = 10; } else { x = 20; } if x != 10 { ret 12; } /* while */ var i := 0; while i < 5 { i = i + 1; } if i != 5 { ret 13; } /* loop/break */ var j := 0; loop { j = j + 1; if j >= 3 { break; } } if j != 3 { ret 14; } /* continue */ var k := 0; var n := 0; while k < 5 { k = k + 1; if k == 3 { continue; } n = n + 1; } if k != 5 { ret 15; } if n != 4 { ret 16; } /* compound assignment */ var y := 5; y += 3; if y != 8 { ret 17; } y -= 2; if y != 6 { ret 18; } y *= 2; if y != 12 { ret 19; } /* logical */ if (true) {} else { ret 20; } if (false) { ret 21; } if (!false) {} else { ret 22; } /* bitwise */ var m := 0xFF & 0x0F; if m != 0x0F { ret 23; } ret 0; }