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)
.