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