private function processObjectOperator()
{
$current = $this->id;
$left = $this->popExpression();
$this->nestContext();
if ($this->tokens[$this->id + 1][0] === T_OPEN_CURLY) {
$blockId = $this->processCurlyExpression();
$right = $this->processFCOA($blockId);
$this->popExpression();
} else {
if ($this->tokens[$this->id + 1][0] === T_VARIABLE) {
++$this->id;
$this->processSingle('Variable');
$right = $this->popExpression();
} else {
$right = $this->processNextAsIdentifier();
}
if ($this->tokens[$this->id + 1][0] === T_OPEN_PARENTHESIS) {
$this->pushExpression($right);
$right = $this->processFunctioncall();
$this->popExpression();
}
}
$this->exitContext();
if (in_array($this->atoms[$right]['atom'], array('Variable', 'Array', 'Identifier', 'Concatenation', 'Arrayappend', 'Property', 'MagicConstant', 'Block', 'Boolean', 'Null'))) {
$staticId = $this->addAtom('Property');
$links = 'PROPERTY';
$this->setAtom($staticId, array('enclosing' => false));
} elseif (in_array($this->atoms[$right]['atom'], array('Functioncall', 'Methodcall'))) {
$staticId = $this->addAtom('Methodcall');
$links = 'METHOD';
} else {
die("Unprocessed atom in object call (right) : " . $this->atoms[$right]['atom'] . "\n");
}
$this->addLink($staticId, $left, 'OBJECT');
$this->addLink($staticId, $right, $links);
$x = array('code' => $this->tokens[$current][1], 'fullcode' => $this->atoms[$left]['fullcode'] . '->' . $this->atoms[$right]['fullcode'], 'variadic' => false, 'reference' => false, 'line' => $this->tokens[$current][2], 'token' => $this->getToken($this->tokens[$current][0]));
$this->setAtom($staticId, $x);
$this->pushExpression($staticId);
if (!$this->isContext(self::CONTEXT_NOSEQUENCE) && $this->tokens[$this->id + 1][0] === T_CLOSE_TAG) {
$this->processSemicolon();
} else {
$staticId = $this->processFCOA($staticId);
}
return $staticId;
}