mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Implemented PDO Driver specific SQL parsers
RFC: http://wiki.php.net/rfc/pdo_driver_specific_parsers
This commit is contained in:
parent
ac947925c0
commit
715b9aaa09
31 changed files with 391 additions and 44 deletions
48
ext/pdo_sqlite/sqlite_sql_parser.re
Normal file
48
ext/pdo_sqlite/sqlite_sql_parser.re
Normal file
|
@ -0,0 +1,48 @@
|
|||
/*
|
||||
+----------------------------------------------------------------------+
|
||||
| Copyright (c) The PHP Group |
|
||||
+----------------------------------------------------------------------+
|
||||
| This source file is subject to version 3.01 of the PHP license, |
|
||||
| that is bundled with this package in the file LICENSE, and is |
|
||||
| available through the world-wide-web at the following url: |
|
||||
| https://www.php.net/license/3_01.txt |
|
||||
| If you did not receive a copy of the PHP license and are unable to |
|
||||
| obtain it through the world-wide-web, please send a note to |
|
||||
| license@php.net so we can mail you a copy immediately. |
|
||||
+----------------------------------------------------------------------+
|
||||
| Author: Matteo Beccati <mbeccati@php.net> |
|
||||
+----------------------------------------------------------------------+
|
||||
*/
|
||||
|
||||
|
||||
#include "php.h"
|
||||
#include "ext/pdo/php_pdo_driver.h"
|
||||
#include "ext/pdo/php_pdo_int.h"
|
||||
#include "ext/pdo/pdo_sql_parser.h"
|
||||
|
||||
int pdo_sqlite_scanner(pdo_scanner_t *s)
|
||||
{
|
||||
const char *cursor = s->cur;
|
||||
|
||||
s->tok = cursor;
|
||||
/*!re2c
|
||||
BINDCHR = [:][a-zA-Z0-9_]+;
|
||||
QUESTION = [?];
|
||||
COMMENTS = ("/*"([^*]+|[*]+[^/*])*[*]*"*/"|"--"[^\r\n]*);
|
||||
SPECIALS = [:?"'`/-];
|
||||
MULTICHAR = ([:]{2,}|[?]{2,});
|
||||
ANYNOEOF = [\001-\377];
|
||||
*/
|
||||
|
||||
/*!re2c
|
||||
(["]((["]["])|ANYNOEOF)*["]) { RET(PDO_PARSER_TEXT); }
|
||||
(['](([']['])|ANYNOEOF)*[']) { RET(PDO_PARSER_TEXT); }
|
||||
([`](([`][`])|ANYNOEOF)*[`]) { RET(PDO_PARSER_TEXT); }
|
||||
MULTICHAR { RET(PDO_PARSER_TEXT); }
|
||||
BINDCHR { RET(PDO_PARSER_BIND); }
|
||||
QUESTION { RET(PDO_PARSER_BIND_POS); }
|
||||
SPECIALS { SKIP_ONE(PDO_PARSER_TEXT); }
|
||||
COMMENTS { RET(PDO_PARSER_TEXT); }
|
||||
(ANYNOEOF\SPECIALS)+ { RET(PDO_PARSER_TEXT); }
|
||||
*/
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue