private function processString($fullnspath = true)
{
if (strtolower($this->tokens[$this->id][1]) === 'null') {
$id = $this->addAtom('Null');
} elseif (in_array(strtolower($this->tokens[$this->id][1]), array('true', 'false'))) {
$id = $this->addAtom('Boolean');
} else {
$id = $this->addAtom('Identifier');
}
$this->setAtom($id, array('code' => $this->tokens[$this->id][1], 'fullcode' => $this->tokens[$this->id][1], 'line' => $this->tokens[$this->id][2], 'variadic' => false, 'token' => $this->getToken($this->tokens[$this->id][0]), 'absolute' => false));
// when this is not already done, we prepare the fullnspath as a constant
$fullnspath = $this->getFullnspath($id, 'const');
$this->setAtom($id, array('fullnspath' => $fullnspath));
$this->addCall('const', $fullnspath, $id);
if ($this->tokens[$this->id + 1][0] === T_NS_SEPARATOR) {
$this->pushExpression($id);
++$this->id;
$this->processNsname();
$id = $this->popExpression();
} elseif ($this->tokens[$this->id + 1][0] === T_COLON && !in_array($this->tokens[$this->id - 1][0], array(T_DOUBLE_COLON, T_OBJECT_OPERATOR, T_QUESTION, T_CASE))) {
$labelId = $this->addAtom('Label');
$this->addLink($labelId, $id, 'LABEL');
$this->setAtom($labelId, array('code' => ':', 'fullcode' => $this->atoms[$id]['fullcode'] . ' :', 'line' => $this->tokens[$this->id][2], 'token' => $this->getToken($this->tokens[$this->id][0])));
$this->pushExpression($labelId);
$this->processSemicolon();
return $labelId;
}
$this->pushExpression($id);
if (!$this->isContext(self::CONTEXT_NOSEQUENCE) && $this->tokens[$this->id + 1][0] === T_CLOSE_TAG) {
$this->processSemicolon();
} else {
// For functions and constants
$id = $this->processFCOA($id);
}
return $id;
}