Parser for handling JDOQL Single-String queries.
Takes a JDOQLQuery and the query string and parses it into its constituent parts, updating
the JDOQLQuery accordingly with the result that after calling the parse() method the JDOQLQuery
is populated.
select [unique] [{result}] [into {result-class-name}]
[from {candidate-class-name} [exclude subclasses] ]
[where {filter}]
[variables {variables-clause} ]
[parameters {parameters-clause} ]
[{imports-clause}]
[group by {grouping-clause} ]
[order by {ordering-clause} ]
[range {from-range} ,{to-range}]
or
UPDATE {candidate-class-name} SET fld1 = val[, fld2 = val2] WHERE {filter}
or
DELETE FROM {candidate-class-name} [exclude-subclasses] WHERE {filter}
Note that {filter} can contain subqueries, hence containing keywords
SELECT c FROM Customer c WHERE timeAvailable < (SELECT avg(hours) FROM Employee e)
So the "filter" for the outer query is "timeAvailable < (SELECT avg(hours) FROM Employee e)"