/** * @inheritDoc */ public function parse(TokenStream $tokenStream) { $token = $tokenStream->getCurrent(); if ($tokenStream->nextIf(Token::T_FALSE)) { return false; } elseif ($tokenStream->nextIf(Token::T_TRUE)) { return true; } elseif ($tokenStream->nextIf(Token::T_NULL)) { return null; } elseif ($tokenStream->nextIf(Token::T_DATE)) { return new \DateTime($token->getValue()); } elseif ($tokenStream->nextIf(Token::T_STRING)) { return $token->getValue(); } elseif ($tokenStream->nextIf(Token::T_INTEGER)) { return (int) $token->getValue(); } elseif ($tokenStream->nextIf(Token::T_FLOAT)) { return (double) $token->getValue(); } throw new SyntaxErrorException(sprintf('Invalid scalar token "%s" (%s)', $token->getValue(), $token->getName())); }