Component result = parseValueExpr(tokens);
while (true) {
if (tokens.canConsumeAnyOf("intersect")) {
result = new Intersect(result, parseValueExpr(tokens));
} else if (tokens.canConsumeAnyOf("except")) {
result = new Except(result, parseValueExpr(tokens));
} else {
break; // no more
}
}
return result;