@ 3;                   # constants
@ -5;
@ 3 * 5;               # single arithmetic operations
@ 3 * 4 * 5;
@ 20 / 5;
@ 100 / 2 / 5;
@ 3 + 4;
@ 3 + 4 + 5;
@ 20 - 7;
@ 20 - 7 - 4;
@ 11111111;            # boundary for orientation
@ 2 <= 5;              # relational operations
@ 3 <= 3;
@ 5 <= 2;
@ 2 < 5;
@ 3 < 3;
@ 5 < 2;
@ 2 >= 5;
@ 3 >= 3;
@ 5 >= 2;
@ 22222222;
@ 2 > 5;
@ 3 > 3;
@ 5 > 2;
@ 2 == 5;
@ 3 == 3;
@ 5 == 2;
@ 2 != 5;
@ 3 != 3;
@ 5 != 2;
@ 33333333;
@ 2 <= 5 <= 3;         # relational operations associativity
@ 2 < 5 < 3;
@ 5 >= 0 >= 1;
@ 5 > 0 > 0;
@ 5 == 5 == 5;
@ 5 == 5 == 1;
@ 1 == 5 == 0;
@ 5 != 5 != 0;
@ 5 != 1 != 1;
@ 5 != 1 != 0;
@ 1 != 1 != 1;
@ 44444444;
@ 5 && 3;              # logical operators
@ 5 && 0;
@ 0 && 3;
@ 0 && 0;
@ 5 && 3 && 4;
@ 0 && 3 && 4;
@ 5 && 0 && 4;
@ 5 && 3 && 0;
@ 5 || 3;
@ 5 || 0;
@ 0 || 3;
@ 0 || 0;
@ 5 || 3 || 4;
@ 0 || 3 || 4;
@ 5 || 0 || 4;
@ 5 || 3 || 4;
@ 55555555;
@ 0 ? 7 : 9;           # conditional operator
@ 1 ? 7 : 9;
@ 1 ? 1 ? 7 : 9 : 11;
@ 1 ? 0 ? 7 : 9 : 11;
@ 0 ? 7 : 1 ? 9 : 11;
@ 0 ? 7 : 0 ? 9 : 11;
@ a;                   # variables and assignment
@ z;                   # (each line has exactly one @
@ A;                   # to make debugging easier)
@ Z;
a = 20; @ a;
a = 30; @ a;
b = a = 40; @ b;
@ a;
@ 66666666;
@ 3 * 5 + 4;           # mixed precedence
@ 3 * (5 + 4);
@ 3 + 5 * 4;
@ (3 + 5) * 4;
@ 3 * 5 - 4;
@ 3 * (5 - 4);
@ 3 - 5 * 4;
@ (3 - 5) * 4;
@ 30 / 5 + 4;
@ 30 / (5 + 4);
@ 30 + 5 / 4;
@ (30 + 5) / 4;
@ 30 / 5 - 4;
@ 30 / (5 - 4);
@ 30 - 5 / 4;
@ (30 - 5) / 4;
@ 77777777;
@ 3 + 5 > 2 + 7;
@ 3 + (5 > 2) + 7;
@ 5 > 2 == 7 >= 6;
@ 5 > (2 == 7) >= 6;
@ 5 > 2 != 7 >= 0;
@ 5 > (2 != 7) >= 0;
@ 5 == 7 && 5;
@ 5 == (7 && 5);
@ 7 || 5 && 3;
@ (7 || 5) && 3;
@ 0 && 5 || 3;
@ 0 && (5 || 3);
@ 3 || 0 ? 4 || 2 : 7 || 8;
@ 0 ? 4 || 2 : 7 || 8;
a = 1 ? 9 : 7; @ a;
(a = 1) ? 9 : 7; @ a;
@ 88888888;
a = 20; b = 50; c = a > 15 && b < 40 ? 3 * 5 + 2 : 17 / 2 - 5; @ c;
a = 30; f = 80; e = a > d && b < f ? 3 * 5 + 2 : 17 / 2 - 5; @ e;
