/home/techb158/immovalet.com/vendor/doctrine/dbal/src/SQL
Edit: /home/techb158/immovalet.com/vendor/doctrine/dbal/src/SQL/Parser.php (3785B)
getMySQLStringLiteralPattern("'"),
$this->getMySQLStringLiteralPattern('"'),
];
} else {
$patterns = [
$this->getAnsiSQLStringLiteralPattern("'"),
$this->getAnsiSQLStringLiteralPattern('"'),
];
}
$patterns = array_merge($patterns, [
self::BACKTICK_IDENTIFIER,
self::BRACKET_IDENTIFIER,
self::MULTICHAR,
self::ONE_LINE_COMMENT,
self::MULTI_LINE_COMMENT,
self::OTHER,
]);
$this->sqlPattern = sprintf('(%s)+', implode('|', $patterns));
}
/**
* Parses the given SQL statement
*/
public function parse(string $sql, Visitor $visitor): void
{
/** @var array
$patterns */
$patterns = [
self::NAMED_PARAMETER => static function (string $sql) use ($visitor): void {
$visitor->acceptNamedParameter($sql);
},
self::POSITIONAL_PARAMETER => static function (string $sql) use ($visitor): void {
$visitor->acceptPositionalParameter($sql);
},
$this->sqlPattern => static function (string $sql) use ($visitor): void {
$visitor->acceptOther($sql);
},
self::SPECIAL => static function (string $sql) use ($visitor): void {
$visitor->acceptOther($sql);
},
];
$offset = 0;
while (($handler = current($patterns)) !== false) {
if (preg_match('~\G' . key($patterns) . '~s', $sql, $matches, 0, $offset) === 1) {
$handler($matches[0]);
reset($patterns);
$offset += strlen($matches[0]);
} else {
next($patterns);
}
}
assert($offset === strlen($sql));
}
private function getMySQLStringLiteralPattern(string $delimiter): string
{
return $delimiter . '((\\\\' . self::ANY . ')|(?![' . $delimiter . '\\\\])' . self::ANY . ')*' . $delimiter;
}
private function getAnsiSQLStringLiteralPattern(string $delimiter): string
{
return $delimiter . '[^' . $delimiter . ']*' . $delimiter;
}
}