private function processFunctioncall()
{
$nameId = $this->popExpression();
++$this->id;
// Skipping the name, set on (
$current = $this->id;
$argumentsId = $this->processArguments();
$functioncallId = $this->addAtom('Functioncall');
if ($this->isContext(self::CONTEXT_NEW)) {
$fullnspath = $this->getFullnspath($nameId, 'class');
$this->addCall('class', $fullnspath, $functioncallId);
} else {
$fullnspath = $this->getFullnspath($nameId, 'function');
// Probably weak check, since we haven't built fullnspath for functions yet...
if ($fullnspath === '\\define') {
$this->processDefineAsConstants($argumentsId);
}
$this->addCall('function', $fullnspath, $functioncallId);
}
$this->setAtom($functioncallId, array('code' => $this->atoms[$nameId]['code'], 'fullcode' => $this->atoms[$nameId]['fullcode'] . '(' . $this->atoms[$argumentsId]['fullcode'] . ')', 'line' => $this->tokens[$current][2], 'variadic' => false, 'reference' => false, 'token' => $this->atoms[$nameId]['token'], 'fullnspath' => $fullnspath));
$this->addLink($functioncallId, $argumentsId, 'ARGUMENTS');
$this->addLink($functioncallId, $nameId, 'NAME');
$this->pushExpression($functioncallId);
if (!$this->isContext(self::CONTEXT_NOSEQUENCE) && $this->tokens[$this->id + 1][0] === T_CLOSE_TAG) {
$this->processSemicolon();
} else {
$functioncallId = $this->processFCOA($functioncallId);
}
return $functioncallId;
}