/** * This method parses a yield-statement node. * * @return \PDepend\Source\AST\ASTYieldStatmenet */ 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); }