Note that a query can now contain any number of such-that, pattern and with clauses.
Clauses can be swapped without changing the meaning of the query.
and can be used to connect clauses of the same type.
The following queries are the same: assign a; while w;
Select a such that Modifies (a, "x") and Parent* (w, a) and Next* (1, a)Select a such that Parent* (w, a) and Modifies (a, "x") such that Next* (1, a)Select a such that Next* (1, a) such that Parent* (w, a) and Modifies (a, "x")The following queries are the same: assign a; while w;
Select a pattern a ("x", _) such that Parent* (w, a) and Next* (1, a)Select a such that Parent* (w, a) and Next* (1, a) pattern a ("x", _)Select a such that Next* (1, a) such that Parent* (w, a) pattern a ("x", _)However, the following queries are syntactically incorrect. and should not be used to connect or introduce clauses of different types. E.g.: assign a; while w;
Select a such that Parent* (w, a) and Modifies (a, "x") and such that Next* (1, a) and and such that together before Next* (1, a).Select a such that Parent* (w, a) and pattern a ("x", _) such that Next* (1, a) and and pattern together before a ("x", _).Select a such that Parent* (w, a) pattern a ("x", _) and Next* (1, a) and to connect a pattern clause a ("x", _) and such-that clause Next* (1, a).