Exemplo n.º 1
0
 /**
  * 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);
 }