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

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

private processDollar ( )
    private function processDollar()
    {
        if ($this->tokens[$this->id + 1][0] === T_OPEN_CURLY) {
            $current = $this->id;
            $variableId = $this->addAtom('Variable');
            ++$this->id;
            while (!in_array($this->tokens[$this->id + 1][0], array(T_CLOSE_CURLY))) {
                $id = $this->processNext();
            }
            // Skip }
            ++$this->id;
            $expressionId = $this->popExpression();
            $this->addLink($variableId, $expressionId, 'NAME');
            $x = array('code' => $this->tokens[$current][1], 'fullcode' => $this->tokens[$current][1] . '{' . $this->atoms[$expressionId]['fullcode'] . '}', 'variadic' => false, 'line' => $this->tokens[$current][2], 'token' => $this->getToken($this->tokens[$current][0]));
            $this->setAtom($variableId, $x);
            $this->pushExpression($variableId);
            if (!$this->isContext(self::CONTEXT_NOSEQUENCE) && $this->tokens[$this->id + 1][0] === T_CLOSE_TAG) {
                $this->processSemicolon();
            }
            return $this->processFCOA($variableId);
        } else {
            $this->nestContext();
            $id = $this->processSingleOperator('Variable', $this->precedence->get($this->tokens[$this->id][0]), 'NAME');
            $this->setAtom($id, array('variadic' => false));
            $this->exitContext();
            if (!$this->isContext(self::CONTEXT_NOSEQUENCE) && $this->tokens[$this->id + 1][0] === T_CLOSE_TAG) {
                $this->processSemicolon();
            }
            return $id;
        }
    }
Load