private string ConsumeSubQuery() { StringBuilder sq = new StringBuilder(); while (!_tq.IsEmpty) { if (_tq.Matches("(")) { sq.Append("(").Append(_tq.ChompBalanced('(', ')')).Append(")"); } else if (_tq.Matches("[")) { sq.Append("[").Append(_tq.ChompBalanced('[', ']')).Append("]"); } else if (_tq.MatchesAny(combinators)) { break; } else { sq.Append(_tq.Consume()); } } return(sq.ToString()); }