1/* 2 +----------------------------------------------------------------------+ 3 | Copyright (c) The PHP Group | 4 +----------------------------------------------------------------------+ 5 | This source file is subject to version 3.01 of the PHP license, | 6 | that is bundled with this package in the file LICENSE, and is | 7 | available through the world-wide-web at the following url: | 8 | https://www.php.net/license/3_01.txt | 9 | If you did not receive a copy of the PHP license and are unable to | 10 | obtain it through the world-wide-web, please send a note to | 11 | license@php.net so we can mail you a copy immediately. | 12 +----------------------------------------------------------------------+ 13 | Author: Matteo Beccati <mbeccati@php.net> | 14 +----------------------------------------------------------------------+ 15*/ 16 17 18#include "php.h" 19#include "ext/pdo/php_pdo_driver.h" 20#include "ext/pdo/pdo_sql_parser.h" 21 22int pdo_sqlite_scanner(pdo_scanner_t *s) 23{ 24 const char *cursor = s->cur; 25 26 s->tok = cursor; 27 /*!re2c 28 BINDCHR = [:][a-zA-Z0-9_]+; 29 QUESTION = [?]; 30 COMMENTS = ("/*"([^*]+|[*]+[^/*])*[*]*"*/"|"--".*); 31 SPECIALS = [:?"'`/[-]; 32 MULTICHAR = ([:]{2,}|[?]{2,}); 33 ANYNOEOF = [\001-\377]; 34 */ 35 36 /*!re2c 37 (["]((["]["])|ANYNOEOF)*["]) { RET(PDO_PARSER_TEXT); } 38 (['](([']['])|ANYNOEOF)*[']) { RET(PDO_PARSER_TEXT); } 39 ([`](([`][`])|ANYNOEOF)*[`]) { RET(PDO_PARSER_TEXT); } 40 ("["ANYNOEOF*"]") { RET(PDO_PARSER_TEXT); } 41 MULTICHAR { RET(PDO_PARSER_TEXT); } 42 BINDCHR { RET(PDO_PARSER_BIND); } 43 QUESTION { RET(PDO_PARSER_BIND_POS); } 44 SPECIALS { SKIP_ONE(PDO_PARSER_TEXT); } 45 COMMENTS { RET(PDO_PARSER_TEXT); } 46 (ANYNOEOF\SPECIALS)+ { RET(PDO_PARSER_TEXT); } 47 */ 48} 49