protected function parseSelector($stream)
{
$result = $this->parseSimpleSelector($stream);
while (1) {
$peek = $stream->peek();
if ($peek == ',' || $peek === null) {
return $result;
} elseif (in_array($peek, array('+', '>', '~'))) {
// A combinator
$combinator = (string) $stream->next();
} else {
$combinator = ' ';
}
$consumed = count($stream->getUsed());
$next_selector = $this->parseSimpleSelector($stream);
if ($consumed == count($stream->getUsed())) {
throw new SyntaxError(sprintf("Expected selector, got '%s'", $stream->peek()));
}
$result = new Node\CombinedSelectorNode($result, $combinator, $next_selector);
}
return $result;
}