/** * This method parses a single list-statement node. * * @return PHP_Depend_Code_ASTListExpression * @author Joey Mazzarelli * @since 0.9.12 */ private function parseListExpression() { $this->tokenStack->push(); $token = $this->consumeToken(self::T_LIST); $this->consumeComments(); $list = $this->builder->buildAstListExpression($token->image); $this->consumeToken(self::T_PARENTHESIS_OPEN); $this->consumeComments(); while (($tokenType = $this->tokenizer->peek()) !== self::T_EOF) { // The variable is optional: // list(, , , , $something) = ...; // is valid. switch ($tokenType) { case self::T_COMMA: $this->consumeToken(self::T_COMMA); $this->consumeComments(); break; case self::T_PARENTHESIS_CLOSE: break 2; case self::T_LIST: $list->addChild($this->parseListExpression()); $this->consumeComments(); break; default: $list->addChild($this->parseVariableOrConstantOrPrimaryPrefix()); $this->consumeComments(); break; } } $this->consumeToken(self::T_PARENTHESIS_CLOSE); return $this->setNodePositionsAndReturn($list); }