// Test conditions with comparisons
// while_stat		::=	WHILE condition DO body END

// not_clause	::=	"!" not_clause | "(" condition ")" | comparison | fn_call | boolean
// comparison	::=	expression comparator expression
// comparator	::=	"<" | "<=" | ">" | ">=" |"==" | "!=" | "=in" | "!in"
while !#a do end;
while (#f()) do end;
while (((a<1))) do end;
while !!!a<1 do end;

// and_clause		::=	not_clause ("&" and_clause)*
while a<1 & b<=2 do end;
while a>1 & b<=2 & c==3 & d!=4 do end;
while a =in 1 & ! b!in2 & ! ! c<3 & ! (d<4) do end;

// condition		::=	and_clause ("|" condition)*
while a<1 | b<2 do end;
while a<1 | b<2 | c<3 | d<4 do end;

// Operator | precedence
while a<1 | b<2 & ! c<3 do end;
while ! a<1 & b<2 | c<3 do end;
while ! a<1 & !  b<2 | ! c<3 & ! d<4 do end;

// Override precedence with parentheses
while ! (a<1 & b<2) do end;
while ! (a<1 | b<2) do end;
while (a<1 | b<2) & (c<3 | d<4) do end;
while ! ((a<1 | b<2) & (c<3 | d<4)) do end;