From 389396bd7aa1d9cbf7d473908612a4695c7cbcaf Mon Sep 17 00:00:00 2001 From: dantleech Date: Thu, 28 Aug 2014 10:10:02 +0200 Subject: [PATCH] Fixed parser so that square brackets count as delimiters --- src/PHPCR/Util/QOM/Sql2Scanner.php | 2 +- src/PHPCR/Util/QOM/Sql2ToQomQueryConverter.php | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/PHPCR/Util/QOM/Sql2Scanner.php b/src/PHPCR/Util/QOM/Sql2Scanner.php index 9afafe8..46966df 100644 --- a/src/PHPCR/Util/QOM/Sql2Scanner.php +++ b/src/PHPCR/Util/QOM/Sql2Scanner.php @@ -184,7 +184,7 @@ protected function tokenize(&$tokens, $token) $buffer = ''; for ($i = 0; $i < strlen($token); $i++) { $char = trim(substr($token, $i, 1)); - if (in_array($char, array('.', ',', '(', ')', '='))) { + if (in_array($char, array('[', ']', '.', ',', '(', ')', '='))) { if ($buffer !== '') { $tokens[] = $buffer; $buffer = ''; diff --git a/src/PHPCR/Util/QOM/Sql2ToQomQueryConverter.php b/src/PHPCR/Util/QOM/Sql2ToQomQueryConverter.php index 12311b5..16e63dd 100644 --- a/src/PHPCR/Util/QOM/Sql2ToQomQueryConverter.php +++ b/src/PHPCR/Util/QOM/Sql2ToQomQueryConverter.php @@ -789,6 +789,10 @@ protected function parseLiteralValue() return $this->parseCastLiteral($token); } + if ($this->scanner->tokenIs($token, 'NULL')) { + return null; + } + $quoteString = false; if (substr($token, 0, 1) === '\'') { $quoteString = "'"; @@ -935,9 +939,9 @@ private function fetchTokenWithoutBrackets() { $token = $this->scanner->fetchNextToken(); - if (substr($token, 0, 1) === '[' && substr($token, -1) === ']') { - // Remove brackets around the selector name - $token = substr($token, 1, -1); + if ($token === '[') { + $token = $this->scanner->fetchNextToken(); + $this->scanner->expectToken(']'); } return $token;