/* Comprehensive Precedence Test Cases */ /* Setup variables */ x : 5; y : 3; z : 2; /* Setup functions */ f : x -> x * 2; g : x -> x + 1; h : x -> x * x; /* 1. Basic Arithmetic Operations */ result1 : x + y; result2 : x - y; result3 : x * y; result4 : x / y; result5 : x % y; result6 : x ^ z; ..out "=== Basic Arithmetic ==="; ..out result1; ..out result2; ..out result3; ..out result4; ..out result5; ..out result6; /* 2. Unary Operations */ result7 : -x; result8 : not true; ..out "=== Unary Operations ==="; ..out result7; ..out result8; /* 3. Mixed Unary and Binary Operations */ result9 : x * -y; result10 : -x + y; result11 : x - -y; result12 : -x * -y; ..out "=== Mixed Operations ==="; ..out result9; ..out result10; ..out result11; ..out result12; /* 4. Function Application */ result13 : f 5; result14 : f g 5; result15 : f (g 5); ..out "=== Function Application ==="; ..out result13; ..out result14; ..out result15; /* 5. Function Composition */ result16 : f via g 5; result17 : f via g via h 3; result18 : pipe(f, g) 5; result19 : compose(f, g) 5; ..out "=== Function Composition ==="; ..out result16; ..out result17; ..out result18; ..out result19; /* 6. Comparison Operations */ result20 : x = y; result21 : x != y; result22 : x < y; result23 : x > y; result24 : x <= y; result25 : x >= y; ..out "=== Comparison Operations ==="; ..out result20; ..out result21; ..out result22; ..out result23; ..out result24; ..out result25; /* 7. Logical Operations */ a : true; b : false; result26 : a and b; result27 : a or b; result28 : a xor b; result29 : not a; ..out "=== Logical Operations ==="; ..out result26; ..out result27; ..out result28; ..out result29; /* 8. Complex Expressions */ result30 : x + y * z; result31 : (x + y) * z; result32 : x - y + z; result33 : x * -y + z; result34 : f x + g y; ..out "=== Complex Expressions ==="; ..out result30; ..out result31; ..out result32; ..out result33; ..out result34; /* 9. Edge Cases */ result35 : -5; result36 : 5 - 3; result37 : f -5; result38 : f 5 - 3; result39 : f (5 - 3); ..out "=== Edge Cases ==="; ..out result35; ..out result36; ..out result37; ..out result38; ..out result39; ..out "=== Test Complete ===";