123456789101112131415161718192021222324252627282930313233343536 |
- <?php
- namespace JmesPath;
- /**
- * Syntax errors raise this exception that gives context
- */
- class SyntaxErrorException extends \InvalidArgumentException
- {
- /**
- * @param string $expectedTypesOrMessage Expected array of tokens or message
- * @param array $token Current token
- * @param string $expression Expression input
- */
- public function __construct(
- $expectedTypesOrMessage,
- array $token,
- $expression
- ) {
- $message = "Syntax error at character {$token['pos']}\n"
- . $expression . "\n" . str_repeat(' ', $token['pos']) . "^\n";
- $message .= !is_array($expectedTypesOrMessage)
- ? $expectedTypesOrMessage
- : $this->createTokenMessage($token, $expectedTypesOrMessage);
- parent::__construct($message);
- }
- private function createTokenMessage(array $token, array $valid)
- {
- return sprintf(
- 'Expected one of the following: %s; found %s "%s"',
- implode(', ', array_keys($valid)),
- $token['type'],
- $token['value']
- );
- }
- }
|