Description
This is a valid query:
SELECT AnnualRevenue FROM Account WHERE Name <> NULL AND (NOT (AnnualRevenue > 0))
This is also a valid query:
SELECT AnnualRevenue FROM Account WHERE Name <> NULL AND (NOT AnnualRevenue > 0)
And this is not a valid query:
SELECT AnnualRevenue FROM Account WHERE Name <> NULL AND NOT (AnnualRevenue > 0)
This will throw a unexpected token: 'NOT' on Salesforce.
Yet the parser can parse both without an issue.
EDIT: I added another scenario for a valid query if the negated term is only a single expression.