SinglePartQuery = ReadOnlyEnd
| ReadUpdateEnd
| UpdatingEnd
;
ReadOnlyEnd = ReadPart, Return ;
ReadPart = { ReadingClause, [SP] } ;
ReadingClause = Match
| Unwind
| InQueryCall
;
ReadUpdateEnd = ReadingClause, { [SP], ReadingClause }, { [SP], UpdatingClause }-, [[SP], Return] ;
UpdatingClause = Create
| Merge
| Delete
| Set
| Remove
;
UpdatingEnd = UpdatingStartClause, { [SP], UpdatingClause }, [[SP], Return] ;
UpdatingStartClause = Create
| Merge
;