private function parseYield()
{
$this->tokenStack->push();
$token = $this->consumeToken(Tokens::T_YIELD);
$this->consumeComments();
$yield = $this->builder->buildAstYieldStatement($token->image);
$node = $this->parseOptionalExpression();
if ($node) {
$yield->addChild($node);
if ($this->tokenizer->peek() === Tokens::T_DOUBLE_ARROW) {
$this->consumeToken(Tokens::T_DOUBLE_ARROW);
$yield->addChild($this->parseOptionalExpression());
}
}
$this->consumeComments();
if (Tokens::T_PARENTHESIS_CLOSE === $this->tokenizer->peek()) {
return $this->setNodePositionsAndReturn($yield);
}
$this->parseStatementTermination();
return $this->setNodePositionsAndReturn($yield);
}