precedence-aware expression emission only inserts parentheses when the child binds more loosely than the parent expects. <<< main = fun () { var a int = 1 + 2 * 3 var b int = (1 + 2) * 3 var c int = 10 - 4 - 1 var d int = 10 - (4 - 1) var e int = -1 + 2 var f bool = a == b && c != 0 || d > 0 } >>> #include "core.c" void catskill_main(void); void catskill_main(void) { integer a = 1 + 2 * 3; integer b = (1 + 2) * 3; integer c = 10 - 4 - 1; integer d = 10 - (4 - 1); integer e = -1 + 2; bool f = a == b && c != 0 || d > 0; } #include "runtime.c"