function parseValueLiteral($isConst)
{
$token = $this->lexer->token;
switch ($token->kind) {
case Token::BRACKET_L:
return $this->parseArray($isConst);
case Token::BRACE_L:
return $this->parseObject($isConst);
case Token::INT:
$this->lexer->advance();
return new IntValueNode(['value' => $token->value, 'loc' => $this->loc($token)]);
case Token::FLOAT:
$this->lexer->advance();
return new FloatValueNode(['value' => $token->value, 'loc' => $this->loc($token)]);
case Token::STRING:
$this->lexer->advance();
return new StringValueNode(['value' => $token->value, 'loc' => $this->loc($token)]);
case Token::NAME:
if ($token->value === 'true' || $token->value === 'false') {
$this->lexer->advance();
return new BooleanValueNode(['value' => $token->value === 'true', 'loc' => $this->loc($token)]);
} else {
if ($token->value === 'null') {
$this->lexer->advance();
return new NullValueNode(['loc' => $this->loc($token)]);
} else {
$this->lexer->advance();
return new EnumValueNode(['value' => $token->value, 'loc' => $this->loc($token)]);
}
}
break;
case Token::DOLLAR:
if (!$isConst) {
return $this->parseVariable();
}
break;
}
throw $this->unexpected();
}