/** * This method parses a brace expression and adds all parsed node instances * to the given {@link \PDepend\Source\AST\ASTNode} object. Finally it returns * the prepared input node. * * A brace expression can be a compound: * * <code> * $this->{$foo ? 'foo' : 'bar'}(); * </code> * * or a parameter list: * * <code> * $this->foo($bar, $baz); * </code> * * or an array index: * * <code> * $foo[$bar]; * </code> * * @param \PDepend\Source\AST\ASTNode $node * @param \PDepend\Source\Tokenizer\Token $start * @param integer $closeToken * @return \PDepend\Source\AST\ASTNode * @throws \PDepend\Source\Parser\TokenStreamEndException * @since 0.9.6 */ private function parseBraceExpression(ASTNode $node, Token $start, $closeToken) { if (is_object($expr = $this->parseOptionalExpression())) { $node->addChild($expr); } $end = $this->consumeToken($closeToken); $node->configureLinesAndColumns($start->startLine, $end->endLine, $start->startColumn, $end->endColumn); return $node; }