expr := expr ( "|" | "&" | "^" | "&&" | "||") clause | clause clause := clause ( "=" | "<" | ">" | "!=" | "<=" | ">=" ) term | term term := ["!"] "(" expr ")" | ["!"] identifier