/**
* 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;
}