Exakat\Tasks\Load::processObjectOperator PHP Метод

processObjectOperator() приватный Метод

private processObjectOperator ( )
    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;
    }
Load