diff options
-rw-r--r-- | .gitignore | 15 | ||||
-rw-r--r-- | Zend/zend_ini_scanner.c | 3882 | ||||
-rw-r--r-- | Zend/zend_ini_scanner_defs.h | 13 | ||||
-rw-r--r-- | Zend/zend_language_scanner.c | 8168 | ||||
-rw-r--r-- | Zend/zend_language_scanner_defs.h | 15 | ||||
-rw-r--r-- | ext/json/json_scanner.c | 1661 | ||||
-rw-r--r-- | ext/json/php_json_scanner_defs.h | 8 | ||||
-rw-r--r-- | ext/pdo/pdo_sql_parser.c | 739 | ||||
-rw-r--r-- | ext/phar/phar_path_check.c | 259 | ||||
-rw-r--r-- | ext/standard/url_scanner_ex.c | 1431 | ||||
-rw-r--r-- | ext/standard/var_unserializer.c | 1500 | ||||
-rwxr-xr-x | genfiles | 111 | ||||
-rw-r--r-- | sapi/phpdbg/phpdbg_lexer.c | 2085 |
13 files changed, 103 insertions, 19784 deletions
diff --git a/.gitignore b/.gitignore index a43c15df34..c0e059714d 100644 --- a/.gitignore +++ b/.gitignore @@ -154,6 +154,21 @@ config.h.in php # ------------------------------------------------------------------------------ +# Lexer files generated by re2c +# ------------------------------------------------------------------------------ +/ext/json/json_scanner.c +/ext/json/php_json_scanner_defs.h +/ext/pdo/pdo_sql_parser.c +/ext/phar/phar_path_check.c +/ext/standard/url_scanner_ex.c +/ext/standard/var_unserializer.c +/sapi/phpdbg/phpdbg_lexer.c +/Zend/zend_ini_scanner.c +/Zend/zend_ini_scanner_defs.h +/Zend/zend_language_scanner.c +/Zend/zend_language_scanner_defs.h + +# ------------------------------------------------------------------------------ # PHP parser files generated by bison during the build process # ------------------------------------------------------------------------------ /ext/json/json_parser.tab.h diff --git a/Zend/zend_ini_scanner.c b/Zend/zend_ini_scanner.c deleted file mode 100644 index b563ce2a10..0000000000 --- a/Zend/zend_ini_scanner.c +++ /dev/null @@ -1,3882 +0,0 @@ -/* Generated by re2c 1.0.3 */ -#line 1 "Zend/zend_ini_scanner.l" -/* - +----------------------------------------------------------------------+ - | Zend Engine | - +----------------------------------------------------------------------+ - | Copyright (c) 1998-2018 Zend Technologies Ltd. (http://www.zend.com) | - +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Authors: Zeev Suraski <zeev@php.net> | - | Jani Taskinen <jani@php.net> | - | Marcus Boerger <helly@php.net> | - | Nuno Lopes <nlopess@php.net> | - | Scott MacVicar <scottmac@php.net> | - +----------------------------------------------------------------------+ -*/ - -#include <errno.h> -#include "zend.h" -#include "zend_API.h" -#include "zend_globals.h" -#include <zend_ini_parser.h> -#include "zend_ini_scanner.h" - -#ifdef YYDEBUG -#undef YYDEBUG -#endif - -#if 0 -# define YYDEBUG(s, c) printf("state: %d char: %c\n", s, c) -#else -# define YYDEBUG(s, c) -#endif - -#include "zend_ini_scanner_defs.h" - -#define YYCTYPE unsigned char -/* allow the scanner to read one null byte after the end of the string (from ZEND_MMAP_AHEAD) - * so that if will be able to terminate to match the current token (e.g. non-enclosed string) */ -#define YYFILL(n) { if (YYCURSOR > YYLIMIT) return 0; } -#define YYCURSOR SCNG(yy_cursor) -#define YYLIMIT SCNG(yy_limit) -#define YYMARKER SCNG(yy_marker) - -#define YYGETCONDITION() SCNG(yy_state) -#define YYSETCONDITION(s) SCNG(yy_state) = s - -#define STATE(name) yyc##name - -/* emulate flex constructs */ -#define BEGIN(state) YYSETCONDITION(STATE(state)) -#define YYSTATE YYGETCONDITION() -#define yytext ((char*)SCNG(yy_text)) -#define yyleng SCNG(yy_leng) -#define yyless(x) do { YYCURSOR = (unsigned char*)yytext + x; \ - yyleng = (unsigned int)x; } while(0) - -/* #define yymore() goto yymore_restart */ - -/* perform sanity check. If this message is triggered you should - increase the ZEND_MMAP_AHEAD value in the zend_streams.h file */ -#define YYMAXFILL 6 - -#if ZEND_MMAP_AHEAD < (YYMAXFILL + 1) -# error ZEND_MMAP_AHEAD should be greater than YYMAXFILL -#endif - - -/* How it works (for the core ini directives): - * =========================================== - * - * 1. Scanner scans file for tokens and passes them to parser. - * 2. Parser parses the tokens and passes the name/value pairs to the callback - * function which stores them in the configuration hash table. - * 3. Later REGISTER_INI_ENTRIES() is called which triggers the actual - * registering of ini entries and uses zend_get_configuration_directive() - * to fetch the previously stored name/value pair from configuration hash table - * and registers the static ini entries which match the name to the value - * into EG(ini_directives) hash table. - * 4. PATH section entries are used per-request from down to top, each overriding - * previous if one exists. zend_alter_ini_entry() is called for each entry. - * Settings in PATH section are ZEND_INI_SYSTEM accessible and thus mimics the - * php_admin_* directives used within Apache httpd.conf when PHP is compiled as - * module for Apache. - * 5. User defined ini files (like .htaccess for apache) are parsed for each request and - * stored in separate hash defined by SAPI. - */ - -/* TODO: (ordered by importance :-) - * =============================================================================== - * - * - Separate constant lookup totally from plain strings (using CONSTANT pattern) - * - Add #if .. #else .. #endif and ==, !=, <, > , <=, >= operators - * - Add #include "some.ini" - * - Allow variables to refer to options also when using parse_ini_file() - * - */ - -/* Globals Macros */ -#define SCNG INI_SCNG -#ifdef ZTS -ZEND_API ts_rsrc_id ini_scanner_globals_id; -#else -ZEND_API zend_ini_scanner_globals ini_scanner_globals; -#endif - -#define ZEND_SYSTEM_INI CG(ini_parser_unbuffered_errors) - -/* Eat leading whitespace */ -#define EAT_LEADING_WHITESPACE() \ - while (yyleng) { \ - if (yytext[0] == ' ' || yytext[0] == '\t') { \ - SCNG(yy_text)++; \ - yyleng--; \ - } else { \ - break; \ - } \ - } - -/* Eat trailing whitespace + extra char */ -#define EAT_TRAILING_WHITESPACE_EX(ch) \ - while (yyleng && ( \ - (ch != 'X' && yytext[yyleng - 1] == ch) || \ - yytext[yyleng - 1] == '\n' || \ - yytext[yyleng - 1] == '\r' || \ - yytext[yyleng - 1] == '\t' || \ - yytext[yyleng - 1] == ' ') \ - ) { \ - yyleng--; \ - } - -/* Eat trailing whitespace */ -#define EAT_TRAILING_WHITESPACE() EAT_TRAILING_WHITESPACE_EX('X') - -#define zend_ini_copy_value(retval, str, len) \ - ZVAL_NEW_STR(retval, zend_string_init(str, len, ZEND_SYSTEM_INI)) - - -#define RETURN_TOKEN(type, str, len) { \ - if (SCNG(scanner_mode) == ZEND_INI_SCANNER_TYPED) { \ - zend_ini_copy_typed_value(ini_lval, type, str, len); \ - } else { \ - zend_ini_copy_value(ini_lval, str, len); \ - } \ - return type; \ -} - -static inline int convert_to_number(zval *retval, const char *str, const int str_len) -{ - zend_uchar type; - int overflow; - zend_long lval; - double dval; - - if ((type = is_numeric_string_ex(str, str_len, &lval, &dval, 0, &overflow)) != 0) { - if (type == IS_LONG) { - ZVAL_LONG(retval, lval); - return SUCCESS; - } else if (type == IS_DOUBLE && !overflow) { - ZVAL_DOUBLE(retval, dval); - return SUCCESS; - } - } - - return FAILURE; -} - -static void zend_ini_copy_typed_value(zval *retval, const int type, const char *str, int len) -{ - switch (type) { - case BOOL_FALSE: - case BOOL_TRUE: - ZVAL_BOOL(retval, type == BOOL_TRUE); - break; - - case NULL_NULL: - ZVAL_NULL(retval); - break; - - case TC_NUMBER: - if (convert_to_number(retval, str, len) == SUCCESS) { - break; - } - /* intentional fall-through */ - default: - zend_ini_copy_value(retval, str, len); - } -} - -static void _yy_push_state(int new_state) -{ - zend_stack_push(&SCNG(state_stack), (void *) &YYGETCONDITION()); - YYSETCONDITION(new_state); -} - -#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm) - -static void yy_pop_state(void) -{ - int *stack_state = zend_stack_top(&SCNG(state_stack)); - YYSETCONDITION(*stack_state); - zend_stack_del_top(&SCNG(state_stack)); -} - -static void yy_scan_buffer(char *str, unsigned int len) -{ - YYCURSOR = (YYCTYPE*)str; - SCNG(yy_start) = YYCURSOR; - YYLIMIT = YYCURSOR + len; -} - -#define ini_filename SCNG(filename) - -/* {{{ init_ini_scanner() -*/ -static int init_ini_scanner(int scanner_mode, zend_file_handle *fh) -{ - /* Sanity check */ - if (scanner_mode != ZEND_INI_SCANNER_NORMAL && scanner_mode != ZEND_INI_SCANNER_RAW && scanner_mode != ZEND_INI_SCANNER_TYPED) { - zend_error(E_WARNING, "Invalid scanner mode"); - return FAILURE; - } - - SCNG(lineno) = 1; - SCNG(scanner_mode) = scanner_mode; - SCNG(yy_in) = fh; - - if (fh != NULL) { - ini_filename = zend_strndup(fh->filename, strlen(fh->filename)); - } else { - ini_filename = NULL; - } - - zend_stack_init(&SCNG(state_stack), sizeof(int)); - BEGIN(INITIAL); - - return SUCCESS; -} -/* }}} */ - -/* {{{ shutdown_ini_scanner() -*/ -void shutdown_ini_scanner(void) -{ - zend_stack_destroy(&SCNG(state_stack)); - if (ini_filename) { - free(ini_filename); - } -} -/* }}} */ - -/* {{{ zend_ini_scanner_get_lineno() -*/ -ZEND_COLD int zend_ini_scanner_get_lineno(void) -{ - return SCNG(lineno); -} -/* }}} */ - -/* {{{ zend_ini_scanner_get_filename() -*/ -ZEND_COLD char *zend_ini_scanner_get_filename(void) -{ - return ini_filename ? ini_filename : "Unknown"; -} -/* }}} */ - -/* {{{ zend_ini_open_file_for_scanning() -*/ -int zend_ini_open_file_for_scanning(zend_file_handle *fh, int scanner_mode) -{ - char *buf; - size_t size; - - if (zend_stream_fixup(fh, &buf, &size) == FAILURE) { - return FAILURE; - } - - if (init_ini_scanner(scanner_mode, fh) == FAILURE) { - zend_file_handle_dtor(fh); - return FAILURE; - } - - yy_scan_buffer(buf, (unsigned int)size); - - return SUCCESS; -} -/* }}} */ - -/* {{{ zend_ini_prepare_string_for_scanning() -*/ -int zend_ini_prepare_string_for_scanning(char *str, int scanner_mode) -{ - int len = (int)strlen(str); - - if (init_ini_scanner(scanner_mode, NULL) == FAILURE) { - return FAILURE; - } - - yy_scan_buffer(str, len); - - return SUCCESS; -} -/* }}} */ - -/* {{{ zend_ini_escape_string() - */ -static void zend_ini_escape_string(zval *lval, char *str, int len, char quote_type) -{ - register char *s, *t; - char *end; - - zend_ini_copy_value(lval, str, len); - - /* convert escape sequences */ - s = t = Z_STRVAL_P(lval); - end = s + Z_STRLEN_P(lval); - - while (s < end) { - if (*s == '\\') { - s++; - if (s >= end) { - *t++ = '\\'; - continue; - } - switch (*s) { - case '"': - if (*s != quote_type) { - *t++ = '\\'; - *t++ = *s; - break; - } - case '\\': - case '$': - *t++ = *s; - Z_STRLEN_P(lval)--; - break; - default: - *t++ = '\\'; - *t++ = *s; - break; - } - } else { - *t++ = *s; - } - if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) { - SCNG(lineno)++; - } - s++; - } - *t = 0; -} -/* }}} */ - -int ini_lex(zval *ini_lval) -{ -restart: - SCNG(yy_text) = YYCURSOR; - -/* yymore_restart: */ - /* detect EOF */ - if (YYCURSOR >= YYLIMIT) { - if (YYSTATE == STATE(ST_VALUE) || YYSTATE == STATE(ST_RAW)) { - BEGIN(INITIAL); - return END_OF_LINE; - } - return 0; - } - - /* Eat any UTF-8 BOM we find in the first 3 bytes */ - if (YYCURSOR == SCNG(yy_start) && YYCURSOR + 3 < YYLIMIT) { - if (memcmp(YYCURSOR, "\xef\xbb\xbf", 3) == 0) { - YYCURSOR += 3; - goto restart; - } - } - -#line 386 "Zend/zend_ini_scanner.c" -{ - YYCTYPE yych; - unsigned int yyaccept = 0; - if (YYGETCONDITION() < 4) { - if (YYGETCONDITION() < 2) { - if (YYGETCONDITION() < 1) { - goto yyc_INITIAL; - } else { - goto yyc_ST_OFFSET; - } - } else { - if (YYGETCONDITION() < 3) { - goto yyc_ST_SECTION_VALUE; - } else { - goto yyc_ST_VALUE; - } - } - } else { - if (YYGETCONDITION() < 6) { - if (YYGETCONDITION() < 5) { - goto yyc_ST_SECTION_RAW; - } else { - goto yyc_ST_DOUBLE_QUOTES; - } - } else { - if (YYGETCONDITION() < 7) { - goto yyc_ST_VARNAME; - } else { - goto yyc_ST_RAW; - } - } - } -/* *********************************** */ -yyc_INITIAL: - { - static const unsigned char yybm[] = { - 144, 144, 144, 144, 144, 144, 144, 144, - 144, 160, 0, 144, 144, 0, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - 240, 128, 128, 144, 128, 144, 128, 144, - 128, 128, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 128, 144, 128, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 128, 144, 144, 128, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 128, 128, 128, 128, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, 144, - }; - YYDEBUG(1, *YYCURSOR); - YYFILL(5); - yych = *YYCURSOR; - if (yybm[0+yych] & 64) { - goto yy12; - } - switch (yych) { - case '\t': goto yy6; - case '\n': goto yy9; - case '\r': goto yy11; - case ' ': - case '!': - case '"': - case '$': - case '&': - case '(': - case ')': - case '^': - case '{': - case '|': - case '}': - case '~': goto yy14; - case ';': goto yy16; - case '=': goto yy18; - case 'F': - case 'f': goto yy21; - case 'N': - case 'n': goto yy22; - case 'O': - case 'o': goto yy23; - case 'T': - case 't': goto yy24; - case 'Y': - case 'y': goto yy25; - case '[': goto yy26; - default: goto yy3; - } -yy3: - YYDEBUG(3, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy4: - YYDEBUG(4, *YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy3; - } - if (yych <= '=') goto yy5; - if (yych <= '[') goto yy28; -yy5: - YYDEBUG(5, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 481 "Zend/zend_ini_scanner.l" - { /* Get option name */ - /* Eat leading whitespace */ - EAT_LEADING_WHITESPACE(); - - /* Eat trailing whitespace */ - EAT_TRAILING_WHITESPACE(); - - RETURN_TOKEN(TC_LABEL, yytext, yyleng); -} -#line 518 "Zend/zend_ini_scanner.c" -yy6: - YYDEBUG(6, *YYCURSOR); - ++YYCURSOR; - YYFILL(2); - yych = *YYCURSOR; - YYDEBUG(7, *YYCURSOR); - if (yybm[0+yych] & 32) { - goto yy6; - } - if (yych <= '\r') { - if (yych <= 0x08) goto yy8; - if (yych <= '\n') goto yy9; - if (yych >= '\r') goto yy11; - } else { - if (yych <= ';') { - if (yych >= ';') goto yy16; - } else { - if (yych == '=') goto yy18; - } - } -yy8: - YYDEBUG(8, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 634 "Zend/zend_ini_scanner.l" - { - /* eat whitespace */ - goto restart; -} -#line 547 "Zend/zend_ini_scanner.c" -yy9: - YYDEBUG(9, *YYCURSOR); - ++YYCURSOR; -yy10: - YYDEBUG(10, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 639 "Zend/zend_ini_scanner.l" - { - SCNG(lineno)++; - return END_OF_LINE; -} -#line 559 "Zend/zend_ini_scanner.c" -yy11: - YYDEBUG(11, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy9; - goto yy10; -yy12: - YYDEBUG(12, *YYCURSOR); - ++YYCURSOR; - YYFILL(2); - yych = *YYCURSOR; - YYDEBUG(13, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy12; - } - if (yych <= '\'') { - if (yych <= 0x1F) { - if (yych <= '\n') { - if (yych <= 0x08) goto yy3; - if (yych <= '\t') goto yy6; - goto yy9; - } else { - if (yych == '\r') goto yy11; - goto yy3; - } - } else { - if (yych <= '$') { - if (yych == '#') goto yy3; - goto yy5; - } else { - if (yych == '&') goto yy5; - goto yy3; - } - } - } else { - if (yych <= 'Z') { - if (yych <= ';') { - if (yych <= ')') goto yy5; - if (yych <= ':') goto yy3; - goto yy16; - } else { - if (yych == '=') goto yy18; - goto yy3; - } - } else { - if (yych <= '^') { - if (yych <= '[') goto yy28; - if (yych <= ']') goto yy3; - goto yy5; - } else { - if (yych <= 'z') goto yy3; - if (yych <= '~') goto yy5; - goto yy3; - } - } - } -yy14: - YYDEBUG(14, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(15, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 562 "Zend/zend_ini_scanner.l" - { /* Disallow these chars outside option values */ - return yytext[0]; -} -#line 624 "Zend/zend_ini_scanner.c" -yy16: - YYDEBUG(16, *YYCURSOR); - ++YYCURSOR; - YYFILL(2); - yych = *YYCURSOR; - YYDEBUG(17, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy16; - } - if (yych <= '\n') goto yy31; - goto yy33; -yy18: - YYDEBUG(18, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(19, *YYCURSOR); - if (yych == '\t') goto yy18; - if (yych == ' ') goto yy18; - YYDEBUG(20, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 491 "Zend/zend_ini_scanner.l" - { /* Start option value */ - if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) { - BEGIN(ST_RAW); - } else { - BEGIN(ST_VALUE); - } - return '='; -} -#line 655 "Zend/zend_ini_scanner.c" -yy21: - YYDEBUG(21, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy34; - if (yych == 'a') goto yy34; - goto yy4; -yy22: - YYDEBUG(22, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'O') goto yy35; - if (yych <= 'T') goto yy4; - goto yy37; - } else { - if (yych <= 'o') { - if (yych <= 'n') goto yy4; - goto yy35; - } else { - if (yych == 'u') goto yy37; - goto yy4; - } - } -yy23: - YYDEBUG(23, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'N') { - if (yych == 'F') goto yy38; - if (yych <= 'M') goto yy4; - goto yy39; - } else { - if (yych <= 'f') { - if (yych <= 'e') goto yy4; - goto yy38; - } else { - if (yych == 'n') goto yy39; - goto yy4; - } - } -yy24: - YYDEBUG(24, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy42; - if (yych == 'r') goto yy42; - goto yy4; -yy25: - YYDEBUG(25, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy43; - if (yych == 'e') goto yy43; - goto yy4; -yy26: - YYDEBUG(26, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(27, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 406 "Zend/zend_ini_scanner.l" - { /* Section start */ - /* Enter section data lookup state */ - if (SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW) { - BEGIN(ST_SECTION_RAW); - } else { - BEGIN(ST_SECTION_VALUE); - } - return TC_SECTION; -} -#line 721 "Zend/zend_ini_scanner.c" -yy28: - YYDEBUG(28, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(29, *YYCURSOR); - if (yych == '\t') goto yy28; - if (yych == ' ') goto yy28; - YYDEBUG(30, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 431 "Zend/zend_ini_scanner.l" - { /* Start of option with offset */ - /* Eat leading whitespace */ - EAT_LEADING_WHITESPACE(); - - /* Eat trailing whitespace and [ */ - EAT_TRAILING_WHITESPACE_EX('['); - - /* Enter offset lookup state */ - BEGIN(ST_OFFSET); - - RETURN_TOKEN(TC_OFFSET, yytext, yyleng); -} -#line 745 "Zend/zend_ini_scanner.c" -yy31: - YYDEBUG(31, *YYCURSOR); - ++YYCURSOR; -yy32: - YYDEBUG(32, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 644 "Zend/zend_ini_scanner.l" - { /* Comment */ - BEGIN(INITIAL); - SCNG(lineno)++; - return END_OF_LINE; -} -#line 758 "Zend/zend_ini_scanner.c" -yy33: - YYDEBUG(33, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy31; - goto yy32; -yy34: - YYDEBUG(34, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy44; - if (yych == 'l') goto yy44; - goto yy4; -yy35: - YYDEBUG(35, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '\'') { - if (yych <= 0x1F) { - if (yych <= '\n') { - if (yych <= 0x08) goto yy4; - if (yych <= '\t') goto yy45; - } else { - if (yych != '\r') goto yy4; - } - } else { - if (yych <= '#') { - if (yych <= ' ') goto yy47; - if (yych >= '#') goto yy4; - } else { - if (yych == '%') goto yy4; - if (yych >= '\'') goto yy4; - } - } - } else { - if (yych <= 'N') { - if (yych <= ';') { - if (yych <= ')') goto yy36; - if (yych <= ':') goto yy4; - } else { - if (yych == '=') goto yy36; - if (yych <= 'M') goto yy4; - goto yy49; - } - } else { - if (yych <= 'm') { - if (yych != '^') goto yy4; - } else { - if (yych <= 'n') goto yy49; - if (yych <= 'z') goto yy4; - if (yych >= 0x7F) goto yy4; - } - } - } -yy36: - YYDEBUG(36, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 473 "Zend/zend_ini_scanner.l" - { /* FALSE value (when used outside option value/offset this causes parse error!)*/ - RETURN_TOKEN(BOOL_FALSE, "", 0); -} -#line 817 "Zend/zend_ini_scanner.c" -yy37: - YYDEBUG(37, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy50; - if (yych == 'l') goto yy50; - goto yy4; -yy38: - YYDEBUG(38, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy47; - if (yych == 'f') goto yy47; - goto yy4; -yy39: - YYDEBUG(39, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(40, *YYCURSOR); - if (yych <= '&') { - if (yych <= 0x1F) { - if (yych <= '\n') { - if (yych <= 0x08) goto yy3; - if (yych <= '\t') goto yy51; - } else { - if (yych != '\r') goto yy3; - } - } else { - if (yych <= '#') { - if (yych <= ' ') goto yy39; - if (yych >= '#') goto yy3; - } else { - if (yych == '%') goto yy3; - } - } - } else { - if (yych <= '=') { - if (yych <= ':') { - if (yych <= '\'') goto yy3; - if (yych >= '*') goto yy3; - } else { - if (yych == '<') goto yy3; - } - } else { - if (yych <= ']') { - if (yych == '[') goto yy28; - goto yy3; - } else { - if (yych <= '^') goto yy41; - if (yych <= 'z') goto yy3; - if (yych >= 0x7F) goto yy3; - } - } - } -yy41: - YYDEBUG(41, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 469 "Zend/zend_ini_scanner.l" - { /* TRUE value (when used outside option value/offset this causes parse error!) */ - RETURN_TOKEN(BOOL_TRUE, "1", 1); -} -#line 878 "Zend/zend_ini_scanner.c" -yy42: - YYDEBUG(42, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy53; - if (yych == 'u') goto yy53; - goto yy4; -yy43: - YYDEBUG(43, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy39; - if (yych == 's') goto yy39; - goto yy4; -yy44: - YYDEBUG(44, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy49; - if (yych == 's') goto yy49; - goto yy4; -yy45: - YYDEBUG(45, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(46, *YYCURSOR); - if (yych == '\t') goto yy45; - if (yych == ' ') goto yy45; - goto yy36; -yy47: - YYDEBUG(47, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(48, *YYCURSOR); - if (yych <= '&') { - if (yych <= 0x1F) { - if (yych <= '\n') { - if (yych <= 0x08) goto yy3; - if (yych <= '\t') goto yy45; - goto yy36; - } else { - if (yych == '\r') goto yy36; - goto yy3; - } - } else { - if (yych <= '#') { - if (yych <= ' ') goto yy47; - if (yych <= '"') goto yy36; - goto yy3; - } else { - if (yych == '%') goto yy3; - goto yy36; - } - } - } else { - if (yych <= '=') { - if (yych <= ':') { - if (yych <= '\'') goto yy3; - if (yych <= ')') goto yy36; - goto yy3; - } else { - if (yych == '<') goto yy3; - goto yy36; - } - } else { - if (yych <= ']') { - if (yych == '[') goto yy28; - goto yy3; - } else { - if (yych <= '^') goto yy36; - if (yych <= 'z') goto yy3; - if (yych <= '~') goto yy36; - goto yy3; - } - } - } -yy49: - YYDEBUG(49, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy47; - if (yych == 'e') goto yy47; - goto yy4; -yy50: - YYDEBUG(50, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy54; - if (yych == 'l') goto yy54; - goto yy4; -yy51: - YYDEBUG(51, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(52, *YYCURSOR); - if (yych == '\t') goto yy51; - if (yych == ' ') goto yy51; - goto yy41; -yy53: - YYDEBUG(53, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy39; - if (yych == 'e') goto yy39; - goto yy4; -yy54: - YYDEBUG(54, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(55, *YYCURSOR); - if (yych <= '&') { - if (yych <= 0x1F) { - if (yych <= '\n') { - if (yych <= 0x08) goto yy3; - if (yych <= '\t') goto yy57; - } else { - if (yych != '\r') goto yy3; - } - } else { - if (yych <= '#') { - if (yych <= ' ') goto yy54; - if (yych >= '#') goto yy3; - } else { - if (yych == '%') goto yy3; - } - } - } else { - if (yych <= '=') { - if (yych <= ':') { - if (yych <= '\'') goto yy3; - if (yych >= '*') goto yy3; - } else { - if (yych == '<') goto yy3; - } - } else { - if (yych <= ']') { - if (yych == '[') goto yy28; - goto yy3; - } else { - if (yych <= '^') goto yy56; - if (yych <= 'z') goto yy3; - if (yych >= 0x7F) goto yy3; - } - } - } -yy56: - YYDEBUG(56, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 477 "Zend/zend_ini_scanner.l" - { - RETURN_TOKEN(NULL_NULL, "", 0); -} -#line 1029 "Zend/zend_ini_scanner.c" -yy57: - YYDEBUG(57, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(58, *YYCURSOR); - if (yych == '\t') goto yy57; - if (yych == ' ') goto yy57; - goto yy56; - } -/* *********************************** */ -yyc_ST_OFFSET: - { - static const unsigned char yybm[] = { - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 140, 128, 132, 132, 128, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 140, 132, 128, 132, 192, 132, 132, 0, - 132, 132, 132, 132, 132, 132, 132, 132, - 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 132, 128, 132, 132, 132, 132, - 132, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 132, 192, 128, 132, 164, - 132, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - }; - YYDEBUG(59, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yybm[0+yych] & 8) { - goto yy64; - } - if (yych <= '/') { - if (yych <= '"') { - if (yych <= '\f') { - if (yych <= 0x08) goto yy61; - if (yych <= '\n') goto yy66; - } else { - if (yych <= '\r') goto yy66; - if (yych >= '"') goto yy68; - } - } else { - if (yych <= '&') { - if (yych == '$') goto yy70; - } else { - if (yych <= '\'') goto yy71; - if (yych <= ',') goto yy61; - if (yych <= '.') goto yy72; - } - } - } else { - if (yych <= '[') { - if (yych <= ';') { - if (yych <= '9') goto yy73; - if (yych >= ';') goto yy66; - } else { - if (yych <= '@') goto yy61; - if (yych <= 'Z') goto yy76; - } - } else { - if (yych <= '^') { - if (yych <= '\\') goto yy79; - if (yych <= ']') goto yy80; - } else { - if (yych == '`') goto yy61; - if (yych <= 'z') goto yy76; - } - } - } -yy61: - YYDEBUG(61, *YYCURSOR); - yyaccept = 0; - YYMARKER = ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy62: - YYDEBUG(62, *YYCURSOR); - if (yybm[0+yych] & 4) { - goto yy61; - } - if (yych <= '"') goto yy63; - if (yych <= '$') goto yy82; - if (yych <= ';') goto yy63; - if (yych <= '\\') goto yy79; -yy63: - YYDEBUG(63, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 580 "Zend/zend_ini_scanner.l" - { /* Get rest as section/offset value */ - RETURN_TOKEN(TC_STRING, yytext, yyleng); -} -#line 1142 "Zend/zend_ini_scanner.c" -yy64: - YYDEBUG(64, *YYCURSOR); - yyaccept = 0; - YYMARKER = ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(65, *YYCURSOR); - if (yybm[0+yych] & 8) { - goto yy64; - } - if (yych <= '$') { - if (yych <= '\r') { - if (yych <= 0x08) goto yy61; - if (yych <= '\n') goto yy63; - if (yych <= '\f') goto yy61; - goto yy63; - } else { - if (yych == '"') goto yy68; - if (yych <= '#') goto yy61; - goto yy82; - } - } else { - if (yych <= ';') { - if (yych == '\'') goto yy63; - if (yych <= ':') goto yy61; - goto yy63; - } else { - if (yych <= '[') goto yy61; - if (yych <= '\\') goto yy79; - if (yych <= ']') goto yy80; - goto yy61; - } - } -yy66: - YYDEBUG(66, *YYCURSOR); - ++YYCURSOR; -yy67: - YYDEBUG(67, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 655 "Zend/zend_ini_scanner.l" - { - return 0; -} -#line 1186 "Zend/zend_ini_scanner.c" -yy68: - YYDEBUG(68, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(69, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 584 "Zend/zend_ini_scanner.l" - { /* Double quoted '"' string start */ - yy_push_state(ST_DOUBLE_QUOTES); - return '"'; -} -#line 1197 "Zend/zend_ini_scanner.c" -yy70: - YYDEBUG(70, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '\\') { - if (yych <= 0x00) goto yy67; - if (yych <= '[') goto yy61; - goto yy84; - } else { - if (yych == '{') goto yy86; - goto yy61; - } -yy71: - YYDEBUG(71, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy88; - } - goto yy67; -yy72: - YYDEBUG(72, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy62; - if (yych <= '9') goto yy90; - goto yy62; -yy73: - YYDEBUG(73, *YYCURSOR); - yyaccept = 1; - YYMARKER = ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(74, *YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy73; - } - if (yych <= '&') { - if (yych <= '\r') { - if (yych == '\n') goto yy75; - if (yych <= '\f') goto yy61; - } else { - if (yych <= '"') { - if (yych <= '!') goto yy61; - } else { - if (yych == '$') goto yy82; - goto yy61; - } - } - } else { - if (yych <= ':') { - if (yych <= '\'') goto yy75; - if (yych == '.') goto yy90; - goto yy61; - } else { - if (yych <= '[') { - if (yych >= '<') goto yy61; - } else { - if (yych <= '\\') goto yy79; - if (yych >= '^') goto yy61; - } - } - } -yy75: - YYDEBUG(75, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 558 "Zend/zend_ini_scanner.l" - { /* Get number option value as string */ - RETURN_TOKEN(TC_NUMBER, yytext, yyleng); -} -#line 1266 "Zend/zend_ini_scanner.c" -yy76: - YYDEBUG(76, *YYCURSOR); - yyaccept = 2; - YYMARKER = ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(77, *YYCURSOR); - if (yybm[0+yych] & 32) { - goto yy76; - } - if (yych <= '$') { - if (yych <= '\r') { - if (yych == '\n') goto yy78; - if (yych <= '\f') goto yy61; - } else { - if (yych == '"') goto yy78; - if (yych <= '#') goto yy61; - goto yy82; - } - } else { - if (yych <= ';') { - if (yych == '\'') goto yy78; - if (yych <= ':') goto yy61; - } else { - if (yych <= '[') goto yy61; - if (yych <= '\\') goto yy79; - if (yych >= '^') goto yy61; - } - } -yy78: - YYDEBUG(78, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 554 "Zend/zend_ini_scanner.l" - { /* Get constant option value */ - RETURN_TOKEN(TC_CONSTANT, yytext, yyleng); -} -#line 1303 "Zend/zend_ini_scanner.c" -yy79: - YYDEBUG(79, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - goto yy61; -yy80: - YYDEBUG(80, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(81, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 444 "Zend/zend_ini_scanner.l" - { /* End of section or an option offset */ - BEGIN(INITIAL); - return ']'; -} -#line 1320 "Zend/zend_ini_scanner.c" -yy82: - YYDEBUG(82, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - if (yych <= '\\') { - if (yych <= 0x00) goto yy83; - if (yych <= '[') goto yy61; - goto yy84; - } else { - if (yych != '{') goto yy61; - } -yy83: - YYDEBUG(83, *YYCURSOR); - YYCURSOR = YYMARKER; - if (yyaccept <= 1) { - if (yyaccept == 0) { - goto yy63; - } else { - goto yy75; - } - } else { - goto yy78; - } -yy84: - YYDEBUG(84, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(85, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy84; - } - goto yy61; -yy86: - YYDEBUG(86, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(87, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 449 "Zend/zend_ini_scanner.l" - { /* Variable start */ - yy_push_state(ST_VARNAME); - return TC_DOLLAR_CURLY; -} -#line 1365 "Zend/zend_ini_scanner.c" -yy88: - YYDEBUG(88, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(89, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy88; - } - goto yy92; -yy90: - YYDEBUG(90, *YYCURSOR); - yyaccept = 1; - YYMARKER = ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(91, *YYCURSOR); - if (yych <= '&') { - if (yych <= '\r') { - if (yych == '\n') goto yy75; - if (yych <= '\f') goto yy61; - goto yy75; - } else { - if (yych <= '"') { - if (yych <= '!') goto yy61; - goto yy75; - } else { - if (yych == '$') goto yy82; - goto yy61; - } - } - } else { - if (yych <= ':') { - if (yych <= '\'') goto yy75; - if (yych <= '/') goto yy61; - if (yych <= '9') goto yy90; - goto yy61; - } else { - if (yych <= '[') { - if (yych <= ';') goto yy75; - goto yy61; - } else { - if (yych <= '\\') goto yy79; - if (yych <= ']') goto yy75; - goto yy61; - } - } - } -yy92: - YYDEBUG(92, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(93, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 416 "Zend/zend_ini_scanner.l" - { /* Raw string */ - /* Eat leading and trailing single quotes */ - if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') { - SCNG(yy_text)++; - yyleng = yyleng - 2; - } - RETURN_TOKEN(TC_RAW, yytext, yyleng); -} -#line 1428 "Zend/zend_ini_scanner.c" - } -/* *********************************** */ -yyc_ST_SECTION_VALUE: - { - static const unsigned char yybm[] = { - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 140, 128, 132, 132, 128, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 140, 132, 128, 132, 192, 132, 132, 0, - 132, 132, 132, 132, 132, 132, 132, 132, - 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 132, 128, 132, 132, 132, 132, - 132, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 132, 192, 128, 132, 164, - 132, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 132, 132, 132, 132, 132, - }; - YYDEBUG(94, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yybm[0+yych] & 8) { - goto yy99; - } - if (yych <= '/') { - if (yych <= '"') { - if (yych <= '\f') { - if (yych <= 0x08) goto yy96; - if (yych <= '\n') goto yy101; - } else { - if (yych <= '\r') goto yy101; - if (yych >= '"') goto yy103; - } - } else { - if (yych <= '&') { - if (yych == '$') goto yy105; - } else { - if (yych <= '\'') goto yy106; - if (yych <= ',') goto yy96; - if (yych <= '.') goto yy107; - } - } - } else { - if (yych <= '[') { - if (yych <= ';') { - if (yych <= '9') goto yy108; - if (yych >= ';') goto yy101; - } else { - if (yych <= '@') goto yy96; - if (yych <= 'Z') goto yy111; - } - } else { - if (yych <= '^') { - if (yych <= '\\') goto yy114; - if (yych <= ']') goto yy115; - } else { - if (yych == '`') goto yy96; - if (yych <= 'z') goto yy111; - } - } - } -yy96: - YYDEBUG(96, *YYCURSOR); - yyaccept = 0; - YYMARKER = ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy97: - YYDEBUG(97, *YYCURSOR); - if (yybm[0+yych] & 4) { - goto yy96; - } - if (yych <= '"') goto yy98; - if (yych <= '$') goto yy118; - if (yych <= ';') goto yy98; - if (yych <= '\\') goto yy114; -yy98: - YYDEBUG(98, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 580 "Zend/zend_ini_scanner.l" - { /* Get rest as section/offset value */ - RETURN_TOKEN(TC_STRING, yytext, yyleng); -} -#line 1532 "Zend/zend_ini_scanner.c" -yy99: - YYDEBUG(99, *YYCURSOR); - yyaccept = 0; - YYMARKER = ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(100, *YYCURSOR); - if (yybm[0+yych] & 8) { - goto yy99; - } - if (yych <= '$') { - if (yych <= '\r') { - if (yych <= 0x08) goto yy96; - if (yych <= '\n') goto yy98; - if (yych <= '\f') goto yy96; - goto yy98; - } else { - if (yych == '"') goto yy103; - if (yych <= '#') goto yy96; - goto yy118; - } - } else { - if (yych <= ';') { - if (yych == '\'') goto yy98; - if (yych <= ':') goto yy96; - goto yy98; - } else { - if (yych <= '[') goto yy96; - if (yych <= '\\') goto yy114; - if (yych <= ']') goto yy98; - goto yy96; - } - } -yy101: - YYDEBUG(101, *YYCURSOR); - ++YYCURSOR; -yy102: - YYDEBUG(102, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 655 "Zend/zend_ini_scanner.l" - { - return 0; -} -#line 1576 "Zend/zend_ini_scanner.c" -yy103: - YYDEBUG(103, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(104, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 584 "Zend/zend_ini_scanner.l" - { /* Double quoted '"' string start */ - yy_push_state(ST_DOUBLE_QUOTES); - return '"'; -} -#line 1587 "Zend/zend_ini_scanner.c" -yy105: - YYDEBUG(105, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '\\') { - if (yych <= 0x00) goto yy102; - if (yych <= '[') goto yy96; - goto yy120; - } else { - if (yych == '{') goto yy122; - goto yy96; - } -yy106: - YYDEBUG(106, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy124; - } - goto yy102; -yy107: - YYDEBUG(107, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy97; - if (yych <= '9') goto yy126; - goto yy97; -yy108: - YYDEBUG(108, *YYCURSOR); - yyaccept = 1; - YYMARKER = ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(109, *YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy108; - } - if (yych <= '&') { - if (yych <= '\r') { - if (yych == '\n') goto yy110; - if (yych <= '\f') goto yy96; - } else { - if (yych <= '"') { - if (yych <= '!') goto yy96; - } else { - if (yych == '$') goto yy118; - goto yy96; - } - } - } else { - if (yych <= ':') { - if (yych <= '\'') goto yy110; - if (yych == '.') goto yy126; - goto yy96; - } else { - if (yych <= '[') { - if (yych >= '<') goto yy96; - } else { - if (yych <= '\\') goto yy114; - if (yych >= '^') goto yy96; - } - } - } -yy110: - YYDEBUG(110, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 558 "Zend/zend_ini_scanner.l" - { /* Get number option value as string */ - RETURN_TOKEN(TC_NUMBER, yytext, yyleng); -} -#line 1656 "Zend/zend_ini_scanner.c" -yy111: - YYDEBUG(111, *YYCURSOR); - yyaccept = 2; - YYMARKER = ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(112, *YYCURSOR); - if (yybm[0+yych] & 32) { - goto yy111; - } - if (yych <= '$') { - if (yych <= '\r') { - if (yych == '\n') goto yy113; - if (yych <= '\f') goto yy96; - } else { - if (yych == '"') goto yy113; - if (yych <= '#') goto yy96; - goto yy118; - } - } else { - if (yych <= ';') { - if (yych == '\'') goto yy113; - if (yych <= ':') goto yy96; - } else { - if (yych <= '[') goto yy96; - if (yych <= '\\') goto yy114; - if (yych >= '^') goto yy96; - } - } -yy113: - YYDEBUG(113, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 554 "Zend/zend_ini_scanner.l" - { /* Get constant option value */ - RETURN_TOKEN(TC_CONSTANT, yytext, yyleng); -} -#line 1693 "Zend/zend_ini_scanner.c" -yy114: - YYDEBUG(114, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - goto yy96; -yy115: - YYDEBUG(115, *YYCURSOR); - ++YYCURSOR; - YYFILL(2); - yych = *YYCURSOR; - YYDEBUG(116, *YYCURSOR); - if (yych <= '\f') { - if (yych <= 0x08) goto yy117; - if (yych <= '\t') goto yy115; - if (yych <= '\n') goto yy128; - } else { - if (yych <= '\r') goto yy129; - if (yych == ' ') goto yy115; - } -yy117: - YYDEBUG(117, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 425 "Zend/zend_ini_scanner.l" - { /* End of section */ - BEGIN(INITIAL); - SCNG(lineno)++; - return ']'; -} -#line 1723 "Zend/zend_ini_scanner.c" -yy118: - YYDEBUG(118, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - if (yych <= '\\') { - if (yych <= 0x00) goto yy119; - if (yych <= '[') goto yy96; - goto yy120; - } else { - if (yych != '{') goto yy96; - } -yy119: - YYDEBUG(119, *YYCURSOR); - YYCURSOR = YYMARKER; - if (yyaccept <= 1) { - if (yyaccept == 0) { - goto yy98; - } else { - goto yy110; - } - } else { - goto yy113; - } -yy120: - YYDEBUG(120, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(121, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy120; - } - goto yy96; -yy122: - YYDEBUG(122, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(123, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 449 "Zend/zend_ini_scanner.l" - { /* Variable start */ - yy_push_state(ST_VARNAME); - return TC_DOLLAR_CURLY; -} -#line 1768 "Zend/zend_ini_scanner.c" -yy124: - YYDEBUG(124, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(125, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy124; - } - goto yy130; -yy126: - YYDEBUG(126, *YYCURSOR); - yyaccept = 1; - YYMARKER = ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(127, *YYCURSOR); - if (yych <= '&') { - if (yych <= '\r') { - if (yych == '\n') goto yy110; - if (yych <= '\f') goto yy96; - goto yy110; - } else { - if (yych <= '"') { - if (yych <= '!') goto yy96; - goto yy110; - } else { - if (yych == '$') goto yy118; - goto yy96; - } - } - } else { - if (yych <= ':') { - if (yych <= '\'') goto yy110; - if (yych <= '/') goto yy96; - if (yych <= '9') goto yy126; - goto yy96; - } else { - if (yych <= '[') { - if (yych <= ';') goto yy110; - goto yy96; - } else { - if (yych <= '\\') goto yy114; - if (yych <= ']') goto yy110; - goto yy96; - } - } - } -yy128: - YYDEBUG(128, *YYCURSOR); - ++YYCURSOR; - goto yy117; -yy129: - YYDEBUG(129, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy128; - goto yy117; -yy130: - YYDEBUG(130, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(131, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 416 "Zend/zend_ini_scanner.l" - { /* Raw string */ - /* Eat leading and trailing single quotes */ - if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') { - SCNG(yy_text)++; - yyleng = yyleng - 2; - } - RETURN_TOKEN(TC_RAW, yytext, yyleng); -} -#line 1840 "Zend/zend_ini_scanner.c" - } -/* *********************************** */ -yyc_ST_VALUE: - { - static const unsigned char yybm[] = { - 80, 82, 82, 82, 82, 82, 82, 82, - 82, 84, 64, 82, 82, 64, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, - 84, 80, 80, 82, 208, 82, 80, 16, - 80, 80, 82, 82, 82, 82, 82, 82, - 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 82, 80, 82, 80, 82, 82, - 82, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 82, 82, 82, 80, 114, - 82, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 114, 114, 114, 114, - 114, 114, 114, 82, 80, 82, 80, 82, - 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, - }; - YYDEBUG(132, *YYCURSOR); - YYFILL(6); - yych = *YYCURSOR; - if (yybm[0+yych] & 4) { - goto yy139; - } - switch (yych) { - case 0x00: goto yy134; - case '\t': - case '\n': goto yy142; - case '\r': goto yy144; - case ' ': - case '!': - case '&': - case '(': - case ')': - case '^': - case '|': - case '~': goto yy145; - case '"': goto yy148; - case '$': goto yy150; - case '\'': goto yy151; - case '-': - case '.': goto yy152; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy153; - case ';': goto yy156; - case '=': goto yy158; - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Z': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'p': - case 'q': - case 'r': - case 's': - case 'u': - case 'v': - case 'w': - case 'x': - case 'z': goto yy160; - case 'F': - case 'f': goto yy163; - case 'N': - case 'n': goto yy164; - case 'O': - case 'o': goto yy165; - case 'T': - case 't': goto yy166; - case 'Y': - case 'y': goto yy167; - default: goto yy136; - } -yy134: - YYDEBUG(134, *YYCURSOR); - ++YYCURSOR; -yy135: - YYDEBUG(135, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 650 "Zend/zend_ini_scanner.l" - { /* End of option value (if EOF is reached before EOL */ - BEGIN(INITIAL); - return END_OF_LINE; -} -#line 1981 "Zend/zend_ini_scanner.c" -yy136: - YYDEBUG(136, *YYCURSOR); - yyaccept = 0; - YYMARKER = ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy137: - YYDEBUG(137, *YYCURSOR); - if (yybm[0+yych] & 2) { - goto yy136; - } - if (yych <= '"') goto yy138; - if (yych <= '$') goto yy168; -yy138: - YYDEBUG(138, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 576 "Zend/zend_ini_scanner.l" - { /* Get everything else as option/offset value */ - RETURN_TOKEN(TC_STRING, yytext, yyleng); -} -#line 2002 "Zend/zend_ini_scanner.c" -yy139: - YYDEBUG(139, *YYCURSOR); - ++YYCURSOR; - YYFILL(2); - yych = *YYCURSOR; - YYDEBUG(140, *YYCURSOR); - if (yybm[0+yych] & 4) { - goto yy139; - } - if (yych <= '\r') { - if (yych <= 0x08) goto yy141; - if (yych <= '\n') goto yy142; - if (yych >= '\r') goto yy144; - } else { - if (yych <= '"') { - if (yych >= '"') goto yy148; - } else { - if (yych == ';') goto yy156; - } - } -yy141: - YYDEBUG(141, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 630 "Zend/zend_ini_scanner.l" - { - RETURN_TOKEN(TC_WHITESPACE, yytext, yyleng); -} -#line 2030 "Zend/zend_ini_scanner.c" -yy142: - YYDEBUG(142, *YYCURSOR); - ++YYCURSOR; -yy143: - YYDEBUG(143, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 548 "Zend/zend_ini_scanner.l" - { /* End of option value */ - BEGIN(INITIAL); - SCNG(lineno)++; - return END_OF_LINE; -} -#line 2043 "Zend/zend_ini_scanner.c" -yy144: - YYDEBUG(144, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy142; - goto yy143; -yy145: - YYDEBUG(145, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(146, *YYCURSOR); - if (yych == '\t') goto yy145; - if (yych == ' ') goto yy145; - YYDEBUG(147, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 566 "Zend/zend_ini_scanner.l" - { /* Boolean operators */ - return yytext[0]; -} -#line 2063 "Zend/zend_ini_scanner.c" -yy148: - YYDEBUG(148, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(149, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 584 "Zend/zend_ini_scanner.l" - { /* Double quoted '"' string start */ - yy_push_state(ST_DOUBLE_QUOTES); - return '"'; -} -#line 2074 "Zend/zend_ini_scanner.c" -yy150: - YYDEBUG(150, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '\\') { - if (yych <= 0x00) goto yy135; - if (yych <= '[') goto yy136; - goto yy170; - } else { - if (yych == '{') goto yy171; - goto yy136; - } -yy151: - YYDEBUG(151, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 64) { - goto yy173; - } - goto yy135; -yy152: - YYDEBUG(152, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy137; - if (yych <= '9') goto yy175; - goto yy137; -yy153: - YYDEBUG(153, *YYCURSOR); - yyaccept = 1; - YYMARKER = ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(154, *YYCURSOR); - if (yybm[0+yych] & 8) { - goto yy153; - } - if (yych <= '-') { - if (yych <= 0x1F) { - if (yych <= '\n') { - if (yych <= 0x00) goto yy155; - if (yych <= 0x08) goto yy136; - } else { - if (yych != '\r') goto yy136; - } - } else { - if (yych <= '$') { - if (yych <= '"') goto yy155; - if (yych <= '#') goto yy136; - goto yy168; - } else { - if (yych <= '%') goto yy136; - if (yych >= '*') goto yy136; - } - } - } else { - if (yych <= ']') { - if (yych <= ';') { - if (yych <= '.') goto yy175; - if (yych <= ':') goto yy136; - } else { - if (yych != '=') goto yy136; - } - } else { - if (yych <= '|') { - if (yych <= '^') goto yy155; - if (yych <= '{') goto yy136; - } else { - if (yych != '~') goto yy136; - } - } - } -yy155: - YYDEBUG(155, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 558 "Zend/zend_ini_scanner.l" - { /* Get number option value as string */ - RETURN_TOKEN(TC_NUMBER, yytext, yyleng); -} -#line 2152 "Zend/zend_ini_scanner.c" -yy156: - YYDEBUG(156, *YYCURSOR); - ++YYCURSOR; - YYFILL(2); - yych = *YYCURSOR; - YYDEBUG(157, *YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy156; - } - if (yych <= '\n') goto yy177; - goto yy179; -yy158: - YYDEBUG(158, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(159, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 570 "Zend/zend_ini_scanner.l" - { /* Make = used in option value to trigger error */ - yyless(0); - BEGIN(INITIAL); - return END_OF_LINE; -} -#line 2175 "Zend/zend_ini_scanner.c" -yy160: - YYDEBUG(160, *YYCURSOR); - yyaccept = 2; - YYMARKER = ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(161, *YYCURSOR); - if (yybm[0+yych] & 32) { - goto yy160; - } - if (yych <= ')') { - if (yych <= '\r') { - if (yych <= 0x08) { - if (yych >= 0x01) goto yy136; - } else { - if (yych <= '\n') goto yy162; - if (yych <= '\f') goto yy136; - } - } else { - if (yych <= '#') { - if (yych <= 0x1F) goto yy136; - if (yych >= '#') goto yy136; - } else { - if (yych <= '$') goto yy168; - if (yych <= '%') goto yy136; - } - } - } else { - if (yych <= ']') { - if (yych <= ';') { - if (yych <= ':') goto yy136; - } else { - if (yych != '=') goto yy136; - } - } else { - if (yych <= '|') { - if (yych <= '^') goto yy162; - if (yych <= '{') goto yy136; - } else { - if (yych != '~') goto yy136; - } - } - } -yy162: - YYDEBUG(162, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 554 "Zend/zend_ini_scanner.l" - { /* Get constant option value */ - RETURN_TOKEN(TC_CONSTANT, yytext, yyleng); -} -#line 2226 "Zend/zend_ini_scanner.c" -yy163: - YYDEBUG(163, *YYCURSOR); - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '<') { - if (yych <= '"') { - if (yych <= '\n') { - if (yych <= 0x00) goto yy162; - if (yych <= 0x08) goto yy137; - goto yy162; - } else { - if (yych == '\r') goto yy162; - if (yych <= 0x1F) goto yy137; - goto yy162; - } - } else { - if (yych <= '/') { - if (yych <= '%') goto yy137; - if (yych <= ')') goto yy162; - goto yy137; - } else { - if (yych <= '9') goto yy160; - if (yych == ';') goto yy162; - goto yy137; - } - } - } else { - if (yych <= '_') { - if (yych <= 'A') { - if (yych <= '=') goto yy162; - if (yych <= '@') goto yy137; - goto yy180; - } else { - if (yych <= 'Z') goto yy160; - if (yych <= ']') goto yy137; - if (yych <= '^') goto yy162; - goto yy160; - } - } else { - if (yych <= '{') { - if (yych <= '`') goto yy137; - if (yych <= 'a') goto yy180; - if (yych <= 'z') goto yy160; - goto yy137; - } else { - if (yych == '}') goto yy137; - if (yych <= '~') goto yy162; - goto yy137; - } - } - } -yy164: - YYDEBUG(164, *YYCURSOR); - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'N') { - if (yych <= '%') { - if (yych <= '\f') { - if (yych <= 0x00) goto yy162; - if (yych <= 0x08) goto yy137; - if (yych <= '\n') goto yy162; - goto yy137; - } else { - if (yych <= '\r') goto yy162; - if (yych <= 0x1F) goto yy137; - if (yych <= '"') goto yy162; - goto yy137; - } - } else { - if (yych <= ':') { - if (yych <= ')') goto yy162; - if (yych <= '/') goto yy137; - if (yych <= '9') goto yy160; - goto yy137; - } else { - if (yych <= '<') { - if (yych <= ';') goto yy162; - goto yy137; - } else { - if (yych <= '=') goto yy162; - if (yych <= '@') goto yy137; - goto yy160; - } - } - } - } else { - if (yych <= 'n') { - if (yych <= 'Z') { - if (yych <= 'O') goto yy181; - if (yych == 'U') goto yy183; - goto yy160; - } else { - if (yych <= '^') { - if (yych <= ']') goto yy137; - goto yy162; - } else { - if (yych == '`') goto yy137; - goto yy160; - } - } - } else { - if (yych <= 'z') { - if (yych <= 'o') goto yy181; - if (yych == 'u') goto yy183; - goto yy160; - } else { - if (yych <= '|') { - if (yych <= '{') goto yy137; - goto yy162; - } else { - if (yych == '~') goto yy162; - goto yy137; - } - } - } - } -yy165: - YYDEBUG(165, *YYCURSOR); - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'E') { - if (yych <= '%') { - if (yych <= '\f') { - if (yych <= 0x00) goto yy162; - if (yych <= 0x08) goto yy137; - if (yych <= '\n') goto yy162; - goto yy137; - } else { - if (yych <= '\r') goto yy162; - if (yych <= 0x1F) goto yy137; - if (yych <= '"') goto yy162; - goto yy137; - } - } else { - if (yych <= ':') { - if (yych <= ')') goto yy162; - if (yych <= '/') goto yy137; - if (yych <= '9') goto yy160; - goto yy137; - } else { - if (yych <= '<') { - if (yych <= ';') goto yy162; - goto yy137; - } else { - if (yych <= '=') goto yy162; - if (yych <= '@') goto yy137; - goto yy160; - } - } - } - } else { - if (yych <= 'e') { - if (yych <= 'Z') { - if (yych <= 'F') goto yy184; - if (yych == 'N') goto yy185; - goto yy160; - } else { - if (yych <= '^') { - if (yych <= ']') goto yy137; - goto yy162; - } else { - if (yych == '`') goto yy137; - goto yy160; - } - } - } else { - if (yych <= 'z') { - if (yych <= 'f') goto yy184; - if (yych == 'n') goto yy185; - goto yy160; - } else { - if (yych <= '|') { - if (yych <= '{') goto yy137; - goto yy162; - } else { - if (yych == '~') goto yy162; - goto yy137; - } - } - } - } -yy166: - YYDEBUG(166, *YYCURSOR); - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '=') { - if (yych <= '"') { - if (yych <= '\n') { - if (yych <= 0x00) goto yy162; - if (yych <= 0x08) goto yy137; - goto yy162; - } else { - if (yych == '\r') goto yy162; - if (yych <= 0x1F) goto yy137; - goto yy162; - } - } else { - if (yych <= '9') { - if (yych <= '%') goto yy137; - if (yych <= ')') goto yy162; - if (yych <= '/') goto yy137; - goto yy160; - } else { - if (yych == ';') goto yy162; - if (yych <= '<') goto yy137; - goto yy162; - } - } - } else { - if (yych <= '`') { - if (yych <= 'Z') { - if (yych <= '@') goto yy137; - if (yych == 'R') goto yy187; - goto yy160; - } else { - if (yych <= ']') goto yy137; - if (yych <= '^') goto yy162; - if (yych <= '_') goto yy160; - goto yy137; - } - } else { - if (yych <= '{') { - if (yych == 'r') goto yy187; - if (yych <= 'z') goto yy160; - goto yy137; - } else { - if (yych == '}') goto yy137; - if (yych <= '~') goto yy162; - goto yy137; - } - } - } -yy167: - YYDEBUG(167, *YYCURSOR); - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '=') { - if (yych <= '"') { - if (yych <= '\n') { - if (yych <= 0x00) goto yy162; - if (yych <= 0x08) goto yy137; - goto yy162; - } else { - if (yych == '\r') goto yy162; - if (yych <= 0x1F) goto yy137; - goto yy162; - } - } else { - if (yych <= '9') { - if (yych <= '%') goto yy137; - if (yych <= ')') goto yy162; - if (yych <= '/') goto yy137; - goto yy160; - } else { - if (yych == ';') goto yy162; - if (yych <= '<') goto yy137; - goto yy162; - } - } - } else { - if (yych <= '`') { - if (yych <= 'Z') { - if (yych <= '@') goto yy137; - if (yych == 'E') goto yy188; - goto yy160; - } else { - if (yych <= ']') goto yy137; - if (yych <= '^') goto yy162; - if (yych <= '_') goto yy160; - goto yy137; - } - } else { - if (yych <= '{') { - if (yych == 'e') goto yy188; - if (yych <= 'z') goto yy160; - goto yy137; - } else { - if (yych == '}') goto yy137; - if (yych <= '~') goto yy162; - goto yy137; - } - } - } -yy168: - YYDEBUG(168, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - if (yych <= '\\') { - if (yych <= 0x00) goto yy169; - if (yych <= '[') goto yy136; - goto yy170; - } else { - if (yych != '{') goto yy136; - } -yy169: - YYDEBUG(169, *YYCURSOR); - YYCURSOR = YYMARKER; - if (yyaccept <= 2) { - if (yyaccept <= 1) { - if (yyaccept == 0) { - goto yy138; - } else { - goto yy155; - } - } else { - goto yy162; - } - } else { - if (yyaccept <= 4) { - if (yyaccept == 3) { - goto yy182; - } else { - goto yy186; - } - } else { - goto yy203; - } - } -yy170: - YYDEBUG(170, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy189; - } - goto yy136; -yy171: - YYDEBUG(171, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(172, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 449 "Zend/zend_ini_scanner.l" - { /* Variable start */ - yy_push_state(ST_VARNAME); - return TC_DOLLAR_CURLY; -} -#line 2565 "Zend/zend_ini_scanner.c" -yy173: - YYDEBUG(173, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(174, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy173; - } - goto yy191; -yy175: - YYDEBUG(175, *YYCURSOR); - yyaccept = 1; - YYMARKER = ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(176, *YYCURSOR); - if (yych <= '/') { - if (yych <= 0x1F) { - if (yych <= '\n') { - if (yych <= 0x00) goto yy155; - if (yych <= 0x08) goto yy136; - goto yy155; - } else { - if (yych == '\r') goto yy155; - goto yy136; - } - } else { - if (yych <= '$') { - if (yych <= '"') goto yy155; - if (yych <= '#') goto yy136; - goto yy168; - } else { - if (yych <= '%') goto yy136; - if (yych <= ')') goto yy155; - goto yy136; - } - } - } else { - if (yych <= ']') { - if (yych <= ';') { - if (yych <= '9') goto yy175; - if (yych <= ':') goto yy136; - goto yy155; - } else { - if (yych == '=') goto yy155; - goto yy136; - } - } else { - if (yych <= '|') { - if (yych <= '^') goto yy155; - if (yych <= '{') goto yy136; - goto yy155; - } else { - if (yych == '~') goto yy155; - goto yy136; - } - } - } -yy177: - YYDEBUG(177, *YYCURSOR); - ++YYCURSOR; -yy178: - YYDEBUG(178, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 644 "Zend/zend_ini_scanner.l" - { /* Comment */ - BEGIN(INITIAL); - SCNG(lineno)++; - return END_OF_LINE; -} -#line 2637 "Zend/zend_ini_scanner.c" -yy179: - YYDEBUG(179, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy177; - goto yy178; -yy180: - YYDEBUG(180, *YYCURSOR); - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '=') { - if (yych <= '"') { - if (yych <= '\n') { - if (yych <= 0x00) goto yy162; - if (yych <= 0x08) goto yy137; - goto yy162; - } else { - if (yych == '\r') goto yy162; - if (yych <= 0x1F) goto yy137; - goto yy162; - } - } else { - if (yych <= '9') { - if (yych <= '%') goto yy137; - if (yych <= ')') goto yy162; - if (yych <= '/') goto yy137; - goto yy160; - } else { - if (yych == ';') goto yy162; - if (yych <= '<') goto yy137; - goto yy162; - } - } - } else { - if (yych <= '`') { - if (yych <= 'Z') { - if (yych <= '@') goto yy137; - if (yych == 'L') goto yy193; - goto yy160; - } else { - if (yych <= ']') goto yy137; - if (yych <= '^') goto yy162; - if (yych <= '_') goto yy160; - goto yy137; - } - } else { - if (yych <= '{') { - if (yych == 'l') goto yy193; - if (yych <= 'z') goto yy160; - goto yy137; - } else { - if (yych == '}') goto yy137; - if (yych <= '~') goto yy162; - goto yy137; - } - } - } -yy181: - YYDEBUG(181, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '<') { - if (yych <= ' ') { - if (yych <= '\n') { - if (yych <= 0x00) goto yy182; - if (yych <= 0x08) goto yy137; - if (yych <= '\t') goto yy194; - } else { - if (yych == '\r') goto yy182; - if (yych <= 0x1F) goto yy137; - goto yy194; - } - } else { - if (yych <= '/') { - if (yych <= '"') goto yy182; - if (yych <= '%') goto yy137; - if (yych >= '*') goto yy137; - } else { - if (yych <= '9') goto yy160; - if (yych != ';') goto yy137; - } - } - } else { - if (yych <= '_') { - if (yych <= 'N') { - if (yych <= '=') goto yy182; - if (yych <= '@') goto yy137; - if (yych <= 'M') goto yy160; - goto yy196; - } else { - if (yych <= 'Z') goto yy160; - if (yych <= ']') goto yy137; - if (yych >= '_') goto yy160; - } - } else { - if (yych <= 'z') { - if (yych <= '`') goto yy137; - if (yych == 'n') goto yy196; - goto yy160; - } else { - if (yych <= '|') { - if (yych <= '{') goto yy137; - } else { - if (yych != '~') goto yy137; - } - } - } - } -yy182: - YYDEBUG(182, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 473 "Zend/zend_ini_scanner.l" - { /* FALSE value (when used outside option value/offset this causes parse error!)*/ - RETURN_TOKEN(BOOL_FALSE, "", 0); -} -#line 2752 "Zend/zend_ini_scanner.c" -yy183: - YYDEBUG(183, *YYCURSOR); - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '=') { - if (yych <= '"') { - if (yych <= '\n') { - if (yych <= 0x00) goto yy162; - if (yych <= 0x08) goto yy137; - goto yy162; - } else { - if (yych == '\r') goto yy162; - if (yych <= 0x1F) goto yy137; - goto yy162; - } - } else { - if (yych <= '9') { - if (yych <= '%') goto yy137; - if (yych <= ')') goto yy162; - if (yych <= '/') goto yy137; - goto yy160; - } else { - if (yych == ';') goto yy162; - if (yych <= '<') goto yy137; - goto yy162; - } - } - } else { - if (yych <= '`') { - if (yych <= 'Z') { - if (yych <= '@') goto yy137; - if (yych == 'L') goto yy197; - goto yy160; - } else { - if (yych <= ']') goto yy137; - if (yych <= '^') goto yy162; - if (yych <= '_') goto yy160; - goto yy137; - } - } else { - if (yych <= '{') { - if (yych == 'l') goto yy197; - if (yych <= 'z') goto yy160; - goto yy137; - } else { - if (yych == '}') goto yy137; - if (yych <= '~') goto yy162; - goto yy137; - } - } - } -yy184: - YYDEBUG(184, *YYCURSOR); - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '=') { - if (yych <= '"') { - if (yych <= '\n') { - if (yych <= 0x00) goto yy162; - if (yych <= 0x08) goto yy137; - goto yy162; - } else { - if (yych == '\r') goto yy162; - if (yych <= 0x1F) goto yy137; - goto yy162; - } - } else { - if (yych <= '9') { - if (yych <= '%') goto yy137; - if (yych <= ')') goto yy162; - if (yych <= '/') goto yy137; - goto yy160; - } else { - if (yych == ';') goto yy162; - if (yych <= '<') goto yy137; - goto yy162; - } - } - } else { - if (yych <= '`') { - if (yych <= 'Z') { - if (yych <= '@') goto yy137; - if (yych == 'F') goto yy198; - goto yy160; - } else { - if (yych <= ']') goto yy137; - if (yych <= '^') goto yy162; - if (yych <= '_') goto yy160; - goto yy137; - } - } else { - if (yych <= '{') { - if (yych == 'f') goto yy198; - if (yych <= 'z') goto yy160; - goto yy137; - } else { - if (yych == '}') goto yy137; - if (yych <= '~') goto yy162; - goto yy137; - } - } - } -yy185: - YYDEBUG(185, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 32) { - goto yy160; - } - if (yych <= ')') { - if (yych <= '\f') { - if (yych <= 0x08) { - if (yych >= 0x01) goto yy137; - } else { - if (yych <= '\t') goto yy199; - if (yych >= '\v') goto yy137; - } - } else { - if (yych <= ' ') { - if (yych <= '\r') goto yy186; - if (yych <= 0x1F) goto yy137; - goto yy199; - } else { - if (yych <= '"') goto yy186; - if (yych <= '%') goto yy137; - } - } - } else { - if (yych <= ']') { - if (yych <= ';') { - if (yych <= ':') goto yy137; - } else { - if (yych != '=') goto yy137; - } - } else { - if (yych <= '|') { - if (yych <= '^') goto yy186; - if (yych <= '{') goto yy137; - } else { - if (yych != '~') goto yy137; - } - } - } -yy186: - YYDEBUG(186, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 469 "Zend/zend_ini_scanner.l" - { /* TRUE value (when used outside option value/offset this causes parse error!) */ - RETURN_TOKEN(BOOL_TRUE, "1", 1); -} -#line 2903 "Zend/zend_ini_scanner.c" -yy187: - YYDEBUG(187, *YYCURSOR); - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '=') { - if (yych <= '"') { - if (yych <= '\n') { - if (yych <= 0x00) goto yy162; - if (yych <= 0x08) goto yy137; - goto yy162; - } else { - if (yych == '\r') goto yy162; - if (yych <= 0x1F) goto yy137; - goto yy162; - } - } else { - if (yych <= '9') { - if (yych <= '%') goto yy137; - if (yych <= ')') goto yy162; - if (yych <= '/') goto yy137; - goto yy160; - } else { - if (yych == ';') goto yy162; - if (yych <= '<') goto yy137; - goto yy162; - } - } - } else { - if (yych <= '`') { - if (yych <= 'Z') { - if (yych <= '@') goto yy137; - if (yych == 'U') goto yy201; - goto yy160; - } else { - if (yych <= ']') goto yy137; - if (yych <= '^') goto yy162; - if (yych <= '_') goto yy160; - goto yy137; - } - } else { - if (yych <= '{') { - if (yych == 'u') goto yy201; - if (yych <= 'z') goto yy160; - goto yy137; - } else { - if (yych == '}') goto yy137; - if (yych <= '~') goto yy162; - goto yy137; - } - } - } -yy188: - YYDEBUG(188, *YYCURSOR); - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '=') { - if (yych <= '"') { - if (yych <= '\n') { - if (yych <= 0x00) goto yy162; - if (yych <= 0x08) goto yy137; - goto yy162; - } else { - if (yych == '\r') goto yy162; - if (yych <= 0x1F) goto yy137; - goto yy162; - } - } else { - if (yych <= '9') { - if (yych <= '%') goto yy137; - if (yych <= ')') goto yy162; - if (yych <= '/') goto yy137; - goto yy160; - } else { - if (yych == ';') goto yy162; - if (yych <= '<') goto yy137; - goto yy162; - } - } - } else { - if (yych <= '`') { - if (yych <= 'Z') { - if (yych <= '@') goto yy137; - if (yych == 'S') goto yy185; - goto yy160; - } else { - if (yych <= ']') goto yy137; - if (yych <= '^') goto yy162; - if (yych <= '_') goto yy160; - goto yy137; - } - } else { - if (yych <= '{') { - if (yych == 's') goto yy185; - if (yych <= 'z') goto yy160; - goto yy137; - } else { - if (yych == '}') goto yy137; - if (yych <= '~') goto yy162; - goto yy137; - } - } - } -yy189: - YYDEBUG(189, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(190, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy189; - } - if (yych <= 0x00) goto yy138; - if (yych == '\\') goto yy170; - goto yy136; -yy191: - YYDEBUG(191, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(192, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 416 "Zend/zend_ini_scanner.l" - { /* Raw string */ - /* Eat leading and trailing single quotes */ - if (yytext[0] == '\'' && yytext[yyleng - 1] == '\'') { - SCNG(yy_text)++; - yyleng = yyleng - 2; - } - RETURN_TOKEN(TC_RAW, yytext, yyleng); -} -#line 3032 "Zend/zend_ini_scanner.c" -yy193: - YYDEBUG(193, *YYCURSOR); - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '=') { - if (yych <= '"') { - if (yych <= '\n') { - if (yych <= 0x00) goto yy162; - if (yych <= 0x08) goto yy137; - goto yy162; - } else { - if (yych == '\r') goto yy162; - if (yych <= 0x1F) goto yy137; - goto yy162; - } - } else { - if (yych <= '9') { - if (yych <= '%') goto yy137; - if (yych <= ')') goto yy162; - if (yych <= '/') goto yy137; - goto yy160; - } else { - if (yych == ';') goto yy162; - if (yych <= '<') goto yy137; - goto yy162; - } - } - } else { - if (yych <= '`') { - if (yych <= 'Z') { - if (yych <= '@') goto yy137; - if (yych == 'S') goto yy196; - goto yy160; - } else { - if (yych <= ']') goto yy137; - if (yych <= '^') goto yy162; - if (yych <= '_') goto yy160; - goto yy137; - } - } else { - if (yych <= '{') { - if (yych == 's') goto yy196; - if (yych <= 'z') goto yy160; - goto yy137; - } else { - if (yych == '}') goto yy137; - if (yych <= '~') goto yy162; - goto yy137; - } - } - } -yy194: - YYDEBUG(194, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(195, *YYCURSOR); - if (yych == '\t') goto yy194; - if (yych == ' ') goto yy194; - goto yy182; -yy196: - YYDEBUG(196, *YYCURSOR); - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '=') { - if (yych <= '"') { - if (yych <= '\n') { - if (yych <= 0x00) goto yy162; - if (yych <= 0x08) goto yy137; - goto yy162; - } else { - if (yych == '\r') goto yy162; - if (yych <= 0x1F) goto yy137; - goto yy162; - } - } else { - if (yych <= '9') { - if (yych <= '%') goto yy137; - if (yych <= ')') goto yy162; - if (yych <= '/') goto yy137; - goto yy160; - } else { - if (yych == ';') goto yy162; - if (yych <= '<') goto yy137; - goto yy162; - } - } - } else { - if (yych <= '`') { - if (yych <= 'Z') { - if (yych <= '@') goto yy137; - if (yych == 'E') goto yy198; - goto yy160; - } else { - if (yych <= ']') goto yy137; - if (yych <= '^') goto yy162; - if (yych <= '_') goto yy160; - goto yy137; - } - } else { - if (yych <= '{') { - if (yych == 'e') goto yy198; - if (yych <= 'z') goto yy160; - goto yy137; - } else { - if (yych == '}') goto yy137; - if (yych <= '~') goto yy162; - goto yy137; - } - } - } -yy197: - YYDEBUG(197, *YYCURSOR); - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '=') { - if (yych <= '"') { - if (yych <= '\n') { - if (yych <= 0x00) goto yy162; - if (yych <= 0x08) goto yy137; - goto yy162; - } else { - if (yych == '\r') goto yy162; - if (yych <= 0x1F) goto yy137; - goto yy162; - } - } else { - if (yych <= '9') { - if (yych <= '%') goto yy137; - if (yych <= ')') goto yy162; - if (yych <= '/') goto yy137; - goto yy160; - } else { - if (yych == ';') goto yy162; - if (yych <= '<') goto yy137; - goto yy162; - } - } - } else { - if (yych <= '`') { - if (yych <= 'Z') { - if (yych <= '@') goto yy137; - if (yych == 'L') goto yy202; - goto yy160; - } else { - if (yych <= ']') goto yy137; - if (yych <= '^') goto yy162; - if (yych <= '_') goto yy160; - goto yy137; - } - } else { - if (yych <= '{') { - if (yych == 'l') goto yy202; - if (yych <= 'z') goto yy160; - goto yy137; - } else { - if (yych == '}') goto yy137; - if (yych <= '~') goto yy162; - goto yy137; - } - } - } -yy198: - YYDEBUG(198, *YYCURSOR); - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 32) { - goto yy160; - } - if (yych <= ')') { - if (yych <= '\f') { - if (yych <= 0x08) { - if (yych <= 0x00) goto yy182; - goto yy137; - } else { - if (yych <= '\t') goto yy194; - if (yych <= '\n') goto yy182; - goto yy137; - } - } else { - if (yych <= ' ') { - if (yych <= '\r') goto yy182; - if (yych <= 0x1F) goto yy137; - goto yy194; - } else { - if (yych <= '"') goto yy182; - if (yych <= '%') goto yy137; - goto yy182; - } - } - } else { - if (yych <= ']') { - if (yych <= ';') { - if (yych <= ':') goto yy137; - goto yy182; - } else { - if (yych == '=') goto yy182; - goto yy137; - } - } else { - if (yych <= '|') { - if (yych <= '^') goto yy182; - if (yych <= '{') goto yy137; - goto yy182; - } else { - if (yych == '~') goto yy182; - goto yy137; - } - } - } -yy199: - YYDEBUG(199, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(200, *YYCURSOR); - if (yych == '\t') goto yy199; - if (yych == ' ') goto yy199; - goto yy186; -yy201: - YYDEBUG(201, *YYCURSOR); - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '=') { - if (yych <= '"') { - if (yych <= '\n') { - if (yych <= 0x00) goto yy162; - if (yych <= 0x08) goto yy137; - goto yy162; - } else { - if (yych == '\r') goto yy162; - if (yych <= 0x1F) goto yy137; - goto yy162; - } - } else { - if (yych <= '9') { - if (yych <= '%') goto yy137; - if (yych <= ')') goto yy162; - if (yych <= '/') goto yy137; - goto yy160; - } else { - if (yych == ';') goto yy162; - if (yych <= '<') goto yy137; - goto yy162; - } - } - } else { - if (yych <= '`') { - if (yych <= 'Z') { - if (yych <= '@') goto yy137; - if (yych == 'E') goto yy185; - goto yy160; - } else { - if (yych <= ']') goto yy137; - if (yych <= '^') goto yy162; - if (yych <= '_') goto yy160; - goto yy137; - } - } else { - if (yych <= '{') { - if (yych == 'e') goto yy185; - if (yych <= 'z') goto yy160; - goto yy137; - } else { - if (yych == '}') goto yy137; - if (yych <= '~') goto yy162; - goto yy137; - } - } - } -yy202: - YYDEBUG(202, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 32) { - goto yy160; - } - if (yych <= ')') { - if (yych <= '\f') { - if (yych <= 0x08) { - if (yych >= 0x01) goto yy137; - } else { - if (yych <= '\t') goto yy204; - if (yych >= '\v') goto yy137; - } - } else { - if (yych <= ' ') { - if (yych <= '\r') goto yy203; - if (yych <= 0x1F) goto yy137; - goto yy204; - } else { - if (yych <= '"') goto yy203; - if (yych <= '%') goto yy137; - } - } - } else { - if (yych <= ']') { - if (yych <= ';') { - if (yych <= ':') goto yy137; - } else { - if (yych != '=') goto yy137; - } - } else { - if (yych <= '|') { - if (yych <= '^') goto yy203; - if (yych <= '{') goto yy137; - } else { - if (yych != '~') goto yy137; - } - } - } -yy203: - YYDEBUG(203, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 477 "Zend/zend_ini_scanner.l" - { - RETURN_TOKEN(NULL_NULL, "", 0); -} -#line 3351 "Zend/zend_ini_scanner.c" -yy204: - YYDEBUG(204, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(205, *YYCURSOR); - if (yych == '\t') goto yy204; - if (yych == ' ') goto yy204; - goto yy203; - } -/* *********************************** */ -yyc_ST_SECTION_RAW: - { - static const unsigned char yybm[] = { - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 192, 0, 64, 64, 0, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 192, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 0, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - }; - YYDEBUG(206, *YYCURSOR); - YYFILL(1); - yych = *YYCURSOR; - if (yybm[0+yych] & 64) { - goto yy208; - } - if (yych <= '\r') goto yy211; - goto yy213; -yy208: - YYDEBUG(208, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(209, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy208; - } - YYDEBUG(210, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 544 "Zend/zend_ini_scanner.l" - { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */ - RETURN_TOKEN(TC_RAW, yytext, yyleng); -} -#line 3422 "Zend/zend_ini_scanner.c" -yy211: - YYDEBUG(211, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(212, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 655 "Zend/zend_ini_scanner.l" - { - return 0; -} -#line 3432 "Zend/zend_ini_scanner.c" -yy213: - YYDEBUG(213, *YYCURSOR); - ++YYCURSOR; - YYFILL(2); - yych = *YYCURSOR; - YYDEBUG(214, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy213; - } - if (yych <= 0x08) goto yy215; - if (yych <= '\n') goto yy216; - if (yych == '\r') goto yy217; -yy215: - YYDEBUG(215, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 425 "Zend/zend_ini_scanner.l" - { /* End of section */ - BEGIN(INITIAL); - SCNG(lineno)++; - return ']'; -} -#line 3454 "Zend/zend_ini_scanner.c" -yy216: - YYDEBUG(216, *YYCURSOR); - ++YYCURSOR; - goto yy215; -yy217: - YYDEBUG(217, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy216; - goto yy215; - } -/* *********************************** */ -yyc_ST_DOUBLE_QUOTES: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 128, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - YYDEBUG(218, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yych == '"') goto yy222; - if (yych == '$') goto yy225; - YYDEBUG(220, *YYCURSOR); - ++YYCURSOR; -yy221: - YYDEBUG(221, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 594 "Zend/zend_ini_scanner.l" - { /* Escape double quoted string contents */ - if (YYCURSOR > YYLIMIT) { - return 0; - } - - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '"': - if (YYCURSOR < YYLIMIT && YYCURSOR[-2] == '\\' && *YYCURSOR != '\r' && *YYCURSOR != '\n') { - continue; - } - break; - case '$': - if (*YYCURSOR == '{') { - break; - } - continue; - case '\\': - if (YYCURSOR < YYLIMIT && *YYCURSOR != '"') { - YYCURSOR++; - } - /* fall through */ - default: - continue; - } - - YYCURSOR--; - break; - } - - yyleng = YYCURSOR - SCNG(yy_text); - - zend_ini_escape_string(ini_lval, yytext, yyleng, '"'); - return TC_QUOTED_STRING; -} -#line 3548 "Zend/zend_ini_scanner.c" -yy222: - YYDEBUG(222, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(223, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy222; - } - YYDEBUG(224, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 589 "Zend/zend_ini_scanner.l" - { /* Double quoted '"' string ends */ - yy_pop_state(); - return '"'; -} -#line 3565 "Zend/zend_ini_scanner.c" -yy225: - YYDEBUG(225, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '{') goto yy221; - YYDEBUG(226, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(227, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 449 "Zend/zend_ini_scanner.l" - { /* Variable start */ - yy_push_state(ST_VARNAME); - return TC_DOLLAR_CURLY; -} -#line 3579 "Zend/zend_ini_scanner.c" - } -/* *********************************** */ -yyc_ST_VARNAME: - { - static const unsigned char yybm[] = { - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 0, 0, 128, 128, 0, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 0, 0, 128, 0, 128, 0, 128, - 0, 0, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 128, 0, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 128, 128, 0, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; - YYDEBUG(228, *YYCURSOR); - YYFILL(1); - yych = *YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy230; - } - if (yych == '}') goto yy235; - goto yy233; -yy230: - YYDEBUG(230, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(231, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy230; - } - YYDEBUG(232, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 454 "Zend/zend_ini_scanner.l" - { /* Variable name */ - /* Eat leading whitespace */ - EAT_LEADING_WHITESPACE(); - - /* Eat trailing whitespace */ - EAT_TRAILING_WHITESPACE(); - - RETURN_TOKEN(TC_VARNAME, yytext, yyleng); -} -#line 3647 "Zend/zend_ini_scanner.c" -yy233: - YYDEBUG(233, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(234, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 655 "Zend/zend_ini_scanner.l" - { - return 0; -} -#line 3657 "Zend/zend_ini_scanner.c" -yy235: - YYDEBUG(235, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(236, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 464 "Zend/zend_ini_scanner.l" - { /* Variable end */ - yy_pop_state(); - return '}'; -} -#line 3668 "Zend/zend_ini_scanner.c" - } -/* *********************************** */ -yyc_ST_RAW: - { - static const unsigned char yybm[] = { - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 192, 0, 64, 64, 0, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 192, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - }; - YYDEBUG(237, *YYCURSOR); - YYFILL(3); - yych = *YYCURSOR; - if (yych <= '\f') { - if (yych <= 0x08) { - if (yych >= 0x01) goto yy241; - } else { - if (yych <= '\t') goto yy243; - if (yych <= '\n') goto yy244; - goto yy241; - } - } else { - if (yych <= ' ') { - if (yych <= '\r') goto yy246; - if (yych <= 0x1F) goto yy241; - goto yy243; - } else { - if (yych == ';') goto yy247; - goto yy241; - } - } - YYDEBUG(239, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(240, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 650 "Zend/zend_ini_scanner.l" - { /* End of option value (if EOF is reached before EOL */ - BEGIN(INITIAL); - return END_OF_LINE; -} -#line 3737 "Zend/zend_ini_scanner.c" -yy241: - YYDEBUG(241, *YYCURSOR); - ++YYCURSOR; -yy242: - YYDEBUG(242, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 500 "Zend/zend_ini_scanner.l" - { /* Raw value, only used when SCNG(scanner_mode) == ZEND_INI_SCANNER_RAW. */ - unsigned char *sc = NULL; - EAT_LEADING_WHITESPACE(); - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR) { - case '\n': - case '\r': - goto end_raw_value_chars; - break; - case ';': - if (sc == NULL) { - sc = YYCURSOR; - } - YYCURSOR++; - break; - case '"': - if (yytext[0] == '"') { - sc = NULL; - } - YYCURSOR++; - break; - default: - YYCURSOR++; - break; - } - } -end_raw_value_chars: - if (sc) { - yyleng = sc - SCNG(yy_text); - } else { - yyleng = YYCURSOR - SCNG(yy_text); - } - - EAT_TRAILING_WHITESPACE(); - - /* Eat leading and trailing double quotes */ - if (yyleng > 1 && yytext[0] == '"' && yytext[yyleng - 1] == '"') { - SCNG(yy_text)++; - yyleng = yyleng - 2; - } - - RETURN_TOKEN(TC_RAW, yytext, yyleng); -} -#line 3788 "Zend/zend_ini_scanner.c" -yy243: - YYDEBUG(243, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '\r') { - if (yych <= 0x08) goto yy242; - if (yych <= '\n') goto yy250; - if (yych <= '\f') goto yy242; - goto yy250; - } else { - if (yych <= ' ') { - if (yych <= 0x1F) goto yy242; - goto yy250; - } else { - if (yych == ';') goto yy250; - goto yy242; - } - } -yy244: - YYDEBUG(244, *YYCURSOR); - ++YYCURSOR; -yy245: - YYDEBUG(245, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 548 "Zend/zend_ini_scanner.l" - { /* End of option value */ - BEGIN(INITIAL); - SCNG(lineno)++; - return END_OF_LINE; -} -#line 3818 "Zend/zend_ini_scanner.c" -yy246: - YYDEBUG(246, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy244; - goto yy245; -yy247: - YYDEBUG(247, *YYCURSOR); - ++YYCURSOR; - YYFILL(2); - yych = *YYCURSOR; - YYDEBUG(248, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy247; - } - if (yych <= '\n') goto yy252; - goto yy254; -yy249: - YYDEBUG(249, *YYCURSOR); - ++YYCURSOR; - YYFILL(2); - yych = *YYCURSOR; -yy250: - YYDEBUG(250, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy249; - } - if (yych <= '\f') { - if (yych <= 0x08) goto yy251; - if (yych <= '\n') goto yy244; - } else { - if (yych <= '\r') goto yy246; - if (yych == ';') goto yy247; - } -yy251: - YYDEBUG(251, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 634 "Zend/zend_ini_scanner.l" - { - /* eat whitespace */ - goto restart; -} -#line 3860 "Zend/zend_ini_scanner.c" -yy252: - YYDEBUG(252, *YYCURSOR); - ++YYCURSOR; -yy253: - YYDEBUG(253, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 644 "Zend/zend_ini_scanner.l" - { /* Comment */ - BEGIN(INITIAL); - SCNG(lineno)++; - return END_OF_LINE; -} -#line 3873 "Zend/zend_ini_scanner.c" -yy254: - YYDEBUG(254, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy252; - goto yy253; - } -} -#line 659 "Zend/zend_ini_scanner.l" - -} diff --git a/Zend/zend_ini_scanner_defs.h b/Zend/zend_ini_scanner_defs.h deleted file mode 100644 index e446d7aeea..0000000000 --- a/Zend/zend_ini_scanner_defs.h +++ /dev/null @@ -1,13 +0,0 @@ -/* Generated by re2c 1.0.3 */ -#line 3 "Zend/zend_ini_scanner_defs.h" - -enum YYCONDTYPE { - yycINITIAL, - yycST_OFFSET, - yycST_SECTION_VALUE, - yycST_VALUE, - yycST_SECTION_RAW, - yycST_DOUBLE_QUOTES, - yycST_VARNAME, - yycST_RAW, -}; diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c deleted file mode 100644 index e0a38029e2..0000000000 --- a/Zend/zend_language_scanner.c +++ /dev/null @@ -1,8168 +0,0 @@ -/* Generated by re2c 1.0.1 */ -#line 1 "Zend/zend_language_scanner.l" -/* - +----------------------------------------------------------------------+ - | Zend Engine | - +----------------------------------------------------------------------+ - | Copyright (c) 1998-2018 Zend Technologies Ltd. (http://www.zend.com) | - +----------------------------------------------------------------------+ - | This source file is subject to version 2.00 of the Zend license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | http://www.zend.com/license/2_00.txt. | - | If you did not receive a copy of the Zend license and are unable to | - | obtain it through the world-wide-web, please send a note to | - | license@zend.com so we can mail you a copy immediately. | - +----------------------------------------------------------------------+ - | Authors: Marcus Boerger <helly@php.net> | - | Nuno Lopes <nlopess@php.net> | - | Scott MacVicar <scottmac@php.net> | - | Flex version authors: | - | Andi Gutmans <andi@php.net> | - | Zeev Suraski <zeev@php.net> | - +----------------------------------------------------------------------+ -*/ - -#if 0 -# define YYDEBUG(s, c) printf("state: %d char: %c\n", s, c) -#else -# define YYDEBUG(s, c) -#endif - -#include "zend_language_scanner_defs.h" - -#include <errno.h> -#include "zend.h" -#ifdef ZEND_WIN32 -# include <Winuser.h> -#endif -#include "zend_alloc.h" -#include <zend_language_parser.h> -#include "zend_compile.h" -#include "zend_language_scanner.h" -#include "zend_highlight.h" -#include "zend_constants.h" -#include "zend_variables.h" -#include "zend_operators.h" -#include "zend_API.h" -#include "zend_strtod.h" -#include "zend_exceptions.h" -#include "zend_virtual_cwd.h" -#include "tsrm_config_common.h" - -#define YYCTYPE unsigned char -#define YYFILL(n) { if ((YYCURSOR + n) >= (YYLIMIT + ZEND_MMAP_AHEAD)) { return 0; } } -#define YYCURSOR SCNG(yy_cursor) -#define YYLIMIT SCNG(yy_limit) -#define YYMARKER SCNG(yy_marker) - -#define YYGETCONDITION() SCNG(yy_state) -#define YYSETCONDITION(s) SCNG(yy_state) = s - -#define STATE(name) yyc##name - -/* emulate flex constructs */ -#define BEGIN(state) YYSETCONDITION(STATE(state)) -#define YYSTATE YYGETCONDITION() -#define yytext ((char*)SCNG(yy_text)) -#define yyleng SCNG(yy_leng) -#define yyless(x) do { YYCURSOR = (unsigned char*)yytext + x; \ - yyleng = (unsigned int)x; } while(0) -#define yymore() goto yymore_restart - -/* perform sanity check. If this message is triggered you should - increase the ZEND_MMAP_AHEAD value in the zend_streams.h file */ -#define YYMAXFILL 16 - -#if ZEND_MMAP_AHEAD < YYMAXFILL -# error ZEND_MMAP_AHEAD should be greater than or equal to YYMAXFILL -#endif - -#include <stdarg.h> - -#ifdef HAVE_UNISTD_H -# include <unistd.h> -#endif - -/* Globals Macros */ -#define SCNG LANG_SCNG -#ifdef ZTS -ZEND_API ts_rsrc_id language_scanner_globals_id; -#else -ZEND_API zend_php_scanner_globals language_scanner_globals; -#endif - -#define HANDLE_NEWLINES(s, l) \ -do { \ - char *p = (s), *boundary = p+(l); \ - \ - while (p<boundary) { \ - if (*p == '\n' || (*p == '\r' && (*(p+1) != '\n'))) { \ - CG(zend_lineno)++; \ - } \ - p++; \ - } \ -} while (0) - -#define HANDLE_NEWLINE(c) \ -{ \ - if (c == '\n' || c == '\r') { \ - CG(zend_lineno)++; \ - } \ -} - -/* To save initial string length after scanning to first variable */ -#define SET_DOUBLE_QUOTES_SCANNED_LENGTH(len) SCNG(scanned_string_len) = (len) -#define GET_DOUBLE_QUOTES_SCANNED_LENGTH() SCNG(scanned_string_len) - -#define IS_LABEL_START(c) (((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && (c) <= 'Z') || (c) == '_' || (c) >= 0x80) - -#define ZEND_IS_OCT(c) ((c)>='0' && (c)<='7') -#define ZEND_IS_HEX(c) (((c)>='0' && (c)<='9') || ((c)>='a' && (c)<='f') || ((c)>='A' && (c)<='F')) - -BEGIN_EXTERN_C() - -static size_t encoding_filter_script_to_internal(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length) -{ - const zend_encoding *internal_encoding = zend_multibyte_get_internal_encoding(); - ZEND_ASSERT(internal_encoding); - return zend_multibyte_encoding_converter(to, to_length, from, from_length, internal_encoding, LANG_SCNG(script_encoding)); -} - -static size_t encoding_filter_script_to_intermediate(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length) -{ - return zend_multibyte_encoding_converter(to, to_length, from, from_length, zend_multibyte_encoding_utf8, LANG_SCNG(script_encoding)); -} - -static size_t encoding_filter_intermediate_to_script(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length) -{ - return zend_multibyte_encoding_converter(to, to_length, from, from_length, -LANG_SCNG(script_encoding), zend_multibyte_encoding_utf8); -} - -static size_t encoding_filter_intermediate_to_internal(unsigned char **to, size_t *to_length, const unsigned char *from, size_t from_length) -{ - const zend_encoding *internal_encoding = zend_multibyte_get_internal_encoding(); - ZEND_ASSERT(internal_encoding); - return zend_multibyte_encoding_converter(to, to_length, from, from_length, -internal_encoding, zend_multibyte_encoding_utf8); -} - - -static void _yy_push_state(int new_state) -{ - zend_stack_push(&SCNG(state_stack), (void *) &YYGETCONDITION()); - YYSETCONDITION(new_state); -} - -#define yy_push_state(state_and_tsrm) _yy_push_state(yyc##state_and_tsrm) - -static void yy_pop_state(void) -{ - int *stack_state = zend_stack_top(&SCNG(state_stack)); - YYSETCONDITION(*stack_state); - zend_stack_del_top(&SCNG(state_stack)); -} - -static void yy_scan_buffer(char *str, unsigned int len) -{ - YYCURSOR = (YYCTYPE*)str; - YYLIMIT = YYCURSOR + len; - if (!SCNG(yy_start)) { - SCNG(yy_start) = YYCURSOR; - } -} - -void startup_scanner(void) -{ - CG(parse_error) = 0; - CG(doc_comment) = NULL; - CG(extra_fn_flags) = 0; - zend_stack_init(&SCNG(state_stack), sizeof(int)); - zend_ptr_stack_init(&SCNG(heredoc_label_stack)); - SCNG(heredoc_scan_ahead) = 0; -} - -static void heredoc_label_dtor(zend_heredoc_label *heredoc_label) { - efree(heredoc_label->label); -} - -void shutdown_scanner(void) -{ - CG(parse_error) = 0; - RESET_DOC_COMMENT(); - zend_stack_destroy(&SCNG(state_stack)); - zend_ptr_stack_clean(&SCNG(heredoc_label_stack), (void (*)(void *)) &heredoc_label_dtor, 1); - zend_ptr_stack_destroy(&SCNG(heredoc_label_stack)); - SCNG(heredoc_scan_ahead) = 0; - SCNG(on_event) = NULL; -} - -ZEND_API void zend_save_lexical_state(zend_lex_state *lex_state) -{ - lex_state->yy_leng = SCNG(yy_leng); - lex_state->yy_start = SCNG(yy_start); - lex_state->yy_text = SCNG(yy_text); - lex_state->yy_cursor = SCNG(yy_cursor); - lex_state->yy_marker = SCNG(yy_marker); - lex_state->yy_limit = SCNG(yy_limit); - - lex_state->state_stack = SCNG(state_stack); - zend_stack_init(&SCNG(state_stack), sizeof(int)); - - lex_state->heredoc_label_stack = SCNG(heredoc_label_stack); - zend_ptr_stack_init(&SCNG(heredoc_label_stack)); - - lex_state->in = SCNG(yy_in); - lex_state->yy_state = YYSTATE; - lex_state->filename = zend_get_compiled_filename(); - lex_state->lineno = CG(zend_lineno); - - lex_state->script_org = SCNG(script_org); - lex_state->script_org_size = SCNG(script_org_size); - lex_state->script_filtered = SCNG(script_filtered); - lex_state->script_filtered_size = SCNG(script_filtered_size); - lex_state->input_filter = SCNG(input_filter); - lex_state->output_filter = SCNG(output_filter); - lex_state->script_encoding = SCNG(script_encoding); - - lex_state->on_event = SCNG(on_event); - lex_state->on_event_context = SCNG(on_event_context); - - lex_state->ast = CG(ast); - lex_state->ast_arena = CG(ast_arena); -} - -ZEND_API void zend_restore_lexical_state(zend_lex_state *lex_state) -{ - SCNG(yy_leng) = lex_state->yy_leng; - SCNG(yy_start) = lex_state->yy_start; - SCNG(yy_text) = lex_state->yy_text; - SCNG(yy_cursor) = lex_state->yy_cursor; - SCNG(yy_marker) = lex_state->yy_marker; - SCNG(yy_limit) = lex_state->yy_limit; - - zend_stack_destroy(&SCNG(state_stack)); - SCNG(state_stack) = lex_state->state_stack; - - zend_ptr_stack_clean(&SCNG(heredoc_label_stack), (void (*)(void *)) &heredoc_label_dtor, 1); - zend_ptr_stack_destroy(&SCNG(heredoc_label_stack)); - SCNG(heredoc_label_stack) = lex_state->heredoc_label_stack; - - SCNG(yy_in) = lex_state->in; - YYSETCONDITION(lex_state->yy_state); - CG(zend_lineno) = lex_state->lineno; - zend_restore_compiled_filename(lex_state->filename); - - if (SCNG(script_filtered)) { - efree(SCNG(script_filtered)); - SCNG(script_filtered) = NULL; - } - SCNG(script_org) = lex_state->script_org; - SCNG(script_org_size) = lex_state->script_org_size; - SCNG(script_filtered) = lex_state->script_filtered; - SCNG(script_filtered_size) = lex_state->script_filtered_size; - SCNG(input_filter) = lex_state->input_filter; - SCNG(output_filter) = lex_state->output_filter; - SCNG(script_encoding) = lex_state->script_encoding; - - SCNG(on_event) = lex_state->on_event; - SCNG(on_event_context) = lex_state->on_event_context; - - CG(ast) = lex_state->ast; - CG(ast_arena) = lex_state->ast_arena; - - RESET_DOC_COMMENT(); -} - -ZEND_API void zend_destroy_file_handle(zend_file_handle *file_handle) -{ - zend_llist_del_element(&CG(open_files), file_handle, (int (*)(void *, void *)) zend_compare_file_handles); - /* zend_file_handle_dtor() operates on the copy, so we have to NULLify the original here */ - file_handle->opened_path = NULL; - if (file_handle->free_filename) { - file_handle->filename = NULL; - } -} - -ZEND_API void zend_lex_tstring(zval *zv) -{ - if (SCNG(on_event)) { - SCNG(on_event)(ON_FEEDBACK, T_STRING, 0, SCNG(on_event_context)); - } - - ZVAL_STRINGL(zv, (char*)SCNG(yy_text), SCNG(yy_leng)); -} - -#define BOM_UTF32_BE "\x00\x00\xfe\xff" -#define BOM_UTF32_LE "\xff\xfe\x00\x00" -#define BOM_UTF16_BE "\xfe\xff" -#define BOM_UTF16_LE "\xff\xfe" -#define BOM_UTF8 "\xef\xbb\xbf" - -static const zend_encoding *zend_multibyte_detect_utf_encoding(const unsigned char *script, size_t script_size) -{ - const unsigned char *p; - int wchar_size = 2; - int le = 0; - - /* utf-16 or utf-32? */ - p = script; - assert(p >= script); - while ((size_t)(p-script) < script_size) { - p = memchr(p, 0, script_size-(p-script)-2); - if (!p) { - break; - } - if (*(p+1) == '\0' && *(p+2) == '\0') { - wchar_size = 4; - break; - } - - /* searching for UTF-32 specific byte orders, so this will do */ - p += 4; - } - - /* BE or LE? */ - p = script; - assert(p >= script); - while ((size_t)(p-script) < script_size) { - if (*p == '\0' && *(p+wchar_size-1) != '\0') { - /* BE */ - le = 0; - break; - } else if (*p != '\0' && *(p+wchar_size-1) == '\0') { - /* LE* */ - le = 1; - break; - } - p += wchar_size; - } - - if (wchar_size == 2) { - return le ? zend_multibyte_encoding_utf16le : zend_multibyte_encoding_utf16be; - } else { - return le ? zend_multibyte_encoding_utf32le : zend_multibyte_encoding_utf32be; - } - - return NULL; -} - -static const zend_encoding* zend_multibyte_detect_unicode(void) -{ - const zend_encoding *script_encoding = NULL; - int bom_size; - unsigned char *pos1, *pos2; - - if (LANG_SCNG(script_org_size) < sizeof(BOM_UTF32_LE)-1) { - return NULL; - } - - /* check out BOM */ - if (!memcmp(LANG_SCNG(script_org), BOM_UTF32_BE, sizeof(BOM_UTF32_BE)-1)) { - script_encoding = zend_multibyte_encoding_utf32be; - bom_size = sizeof(BOM_UTF32_BE)-1; - } else if (!memcmp(LANG_SCNG(script_org), BOM_UTF32_LE, sizeof(BOM_UTF32_LE)-1)) { - script_encoding = zend_multibyte_encoding_utf32le; - bom_size = sizeof(BOM_UTF32_LE)-1; - } else if (!memcmp(LANG_SCNG(script_org), BOM_UTF16_BE, sizeof(BOM_UTF16_BE)-1)) { - script_encoding = zend_multibyte_encoding_utf16be; - bom_size = sizeof(BOM_UTF16_BE)-1; - } else if (!memcmp(LANG_SCNG(script_org), BOM_UTF16_LE, sizeof(BOM_UTF16_LE)-1)) { - script_encoding = zend_multibyte_encoding_utf16le; - bom_size = sizeof(BOM_UTF16_LE)-1; - } else if (!memcmp(LANG_SCNG(script_org), BOM_UTF8, sizeof(BOM_UTF8)-1)) { - script_encoding = zend_multibyte_encoding_utf8; - bom_size = sizeof(BOM_UTF8)-1; - } - - if (script_encoding) { - /* remove BOM */ - LANG_SCNG(script_org) += bom_size; - LANG_SCNG(script_org_size) -= bom_size; - - return script_encoding; - } - - /* script contains NULL bytes -> auto-detection */ - if ((pos1 = memchr(LANG_SCNG(script_org), 0, LANG_SCNG(script_org_size)))) { - /* check if the NULL byte is after the __HALT_COMPILER(); */ - pos2 = LANG_SCNG(script_org); - - while ((size_t)(pos1 - pos2) >= sizeof("__HALT_COMPILER();")-1) { - pos2 = memchr(pos2, '_', pos1 - pos2); - if (!pos2) break; - pos2++; - if (strncasecmp((char*)pos2, "_HALT_COMPILER", sizeof("_HALT_COMPILER")-1) == 0) { - pos2 += sizeof("_HALT_COMPILER")-1; - while (*pos2 == ' ' || - *pos2 == '\t' || - *pos2 == '\r' || - *pos2 == '\n') { - pos2++; - } - if (*pos2 == '(') { - pos2++; - while (*pos2 == ' ' || - *pos2 == '\t' || - *pos2 == '\r' || - *pos2 == '\n') { - pos2++; - } - if (*pos2 == ')') { - pos2++; - while (*pos2 == ' ' || - *pos2 == '\t' || - *pos2 == '\r' || - *pos2 == '\n') { - pos2++; - } - if (*pos2 == ';') { - return NULL; - } - } - } - } - } - /* make best effort if BOM is missing */ - return zend_multibyte_detect_utf_encoding(LANG_SCNG(script_org), LANG_SCNG(script_org_size)); - } - - return NULL; -} - -static const zend_encoding* zend_multibyte_find_script_encoding(void) -{ - const zend_encoding *script_encoding; - - if (CG(detect_unicode)) { - /* check out bom(byte order mark) and see if containing wchars */ - script_encoding = zend_multibyte_detect_unicode(); - if (script_encoding != NULL) { - /* bom or wchar detection is prior to 'script_encoding' option */ - return script_encoding; - } - } - - /* if no script_encoding specified, just leave alone */ - if (!CG(script_encoding_list) || !CG(script_encoding_list_size)) { - return NULL; - } - - /* if multiple encodings specified, detect automagically */ - if (CG(script_encoding_list_size) > 1) { - return zend_multibyte_encoding_detector(LANG_SCNG(script_org), LANG_SCNG(script_org_size), CG(script_encoding_list), CG(script_encoding_list_size)); - } - - return CG(script_encoding_list)[0]; -} - -ZEND_API int zend_multibyte_set_filter(const zend_encoding *onetime_encoding) -{ - const zend_encoding *internal_encoding = zend_multibyte_get_internal_encoding(); - const zend_encoding *script_encoding = onetime_encoding ? onetime_encoding: zend_multibyte_find_script_encoding(); - - if (!script_encoding) { - return FAILURE; - } - - /* judge input/output filter */ - LANG_SCNG(script_encoding) = script_encoding; - LANG_SCNG(input_filter) = NULL; - LANG_SCNG(output_filter) = NULL; - - if (!internal_encoding || LANG_SCNG(script_encoding) == internal_encoding) { - if (!zend_multibyte_check_lexer_compatibility(LANG_SCNG(script_encoding))) { - /* and if not, work around w/ script_encoding -> utf-8 -> script_encoding conversion */ - LANG_SCNG(input_filter) = encoding_filter_script_to_intermediate; - LANG_SCNG(output_filter) = encoding_filter_intermediate_to_script; - } else { - LANG_SCNG(input_filter) = NULL; - LANG_SCNG(output_filter) = NULL; - } - return SUCCESS; - } - - if (zend_multibyte_check_lexer_compatibility(internal_encoding)) { - LANG_SCNG(input_filter) = encoding_filter_script_to_internal; - LANG_SCNG(output_filter) = NULL; - } else if (zend_multibyte_check_lexer_compatibility(LANG_SCNG(script_encoding))) { - LANG_SCNG(input_filter) = NULL; - LANG_SCNG(output_filter) = encoding_filter_script_to_internal; - } else { - /* both script and internal encodings are incompatible w/ flex */ - LANG_SCNG(input_filter) = encoding_filter_script_to_intermediate; - LANG_SCNG(output_filter) = encoding_filter_intermediate_to_internal; - } - - return 0; -} - -ZEND_API int open_file_for_scanning(zend_file_handle *file_handle) -{ - char *buf; - size_t size, offset = 0; - zend_string *compiled_filename; - - /* The shebang line was read, get the current position to obtain the buffer start */ - if (CG(start_lineno) == 2 && file_handle->type == ZEND_HANDLE_FP && file_handle->handle.fp) { - if ((offset = ftell(file_handle->handle.fp)) == (size_t)-1) { - offset = 0; - } - } - - if (zend_stream_fixup(file_handle, &buf, &size) == FAILURE) { - return FAILURE; - } - - zend_llist_add_element(&CG(open_files), file_handle); - if (file_handle->handle.stream.handle >= (void*)file_handle && file_handle->handle.stream.handle <= (void*)(file_handle+1)) { - zend_file_handle *fh = (zend_file_handle*)zend_llist_get_last(&CG(open_files)); - size_t diff = (char*)file_handle->handle.stream.handle - (char*)file_handle; - fh->handle.stream.handle = (void*)(((char*)fh) + diff); - file_handle->handle.stream.handle = fh->handle.stream.handle; - } - - /* Reset the scanner for scanning the new file */ - SCNG(yy_in) = file_handle; - SCNG(yy_start) = NULL; - - if (size != (size_t)-1) { - if (CG(multibyte)) { - SCNG(script_org) = (unsigned char*)buf; - SCNG(script_org_size) = size; - SCNG(script_filtered) = NULL; - - zend_multibyte_set_filter(NULL); - - if (SCNG(input_filter)) { - if ((size_t)-1 == SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size))) { - zend_error_noreturn(E_COMPILE_ERROR, "Could not convert the script from the detected " - "encoding \"%s\" to a compatible encoding", zend_multibyte_get_encoding_name(LANG_SCNG(script_encoding))); - } - buf = (char*)SCNG(script_filtered); - size = SCNG(script_filtered_size); - } - } - SCNG(yy_start) = (unsigned char *)buf - offset; - yy_scan_buffer(buf, (unsigned int)size); - } else { - zend_error_noreturn(E_COMPILE_ERROR, "zend_stream_mmap() failed"); - } - - BEGIN(INITIAL); - - if (file_handle->opened_path) { - compiled_filename = zend_string_copy(file_handle->opened_path); - } else { - compiled_filename = zend_string_init(file_handle->filename, strlen(file_handle->filename), 0); - } - - zend_set_compiled_filename(compiled_filename); - zend_string_release_ex(compiled_filename, 0); - - if (CG(start_lineno)) { - CG(zend_lineno) = CG(start_lineno); - CG(start_lineno) = 0; - } else { - CG(zend_lineno) = 1; - } - - RESET_DOC_COMMENT(); - CG(increment_lineno) = 0; - return SUCCESS; -} -END_EXTERN_C() - -static zend_op_array *zend_compile(int type) -{ - zend_op_array *op_array = NULL; - zend_bool original_in_compilation = CG(in_compilation); - - CG(in_compilation) = 1; - CG(ast) = NULL; - CG(ast_arena) = zend_arena_create(1024 * 32); - - if (!zendparse()) { - int last_lineno = CG(zend_lineno); - zend_file_context original_file_context; - zend_oparray_context original_oparray_context; - zend_op_array *original_active_op_array = CG(active_op_array); - - op_array = emalloc(sizeof(zend_op_array)); - init_op_array(op_array, type, INITIAL_OP_ARRAY_SIZE); - CG(active_op_array) = op_array; - - /* Use heap to not waste arena memory */ - op_array->fn_flags |= ZEND_ACC_HEAP_RT_CACHE; - - if (zend_ast_process) { - zend_ast_process(CG(ast)); - } - - zend_file_context_begin(&original_file_context); - zend_oparray_context_begin(&original_oparray_context); - zend_compile_top_stmt(CG(ast)); - CG(zend_lineno) = last_lineno; - zend_emit_final_return(type == ZEND_USER_FUNCTION); - op_array->line_start = 1; - op_array->line_end = last_lineno; - pass_two(op_array); - zend_oparray_context_end(&original_oparray_context); - zend_file_context_end(&original_file_context); - - CG(active_op_array) = original_active_op_array; - } - - zend_ast_destroy(CG(ast)); - zend_arena_destroy(CG(ast_arena)); - - CG(in_compilation) = original_in_compilation; - - return op_array; -} - -ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type) -{ - zend_lex_state original_lex_state; - zend_op_array *op_array = NULL; - zend_save_lexical_state(&original_lex_state); - - if (open_file_for_scanning(file_handle)==FAILURE) { - if (type==ZEND_REQUIRE) { - zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename); - zend_bailout(); - } else { - zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename); - } - } else { - op_array = zend_compile(ZEND_USER_FUNCTION); - } - - zend_restore_lexical_state(&original_lex_state); - return op_array; -} - - -zend_op_array *compile_filename(int type, zval *filename) -{ - zend_file_handle file_handle; - zval tmp; - zend_op_array *retval; - zend_string *opened_path = NULL; - - if (Z_TYPE_P(filename) != IS_STRING) { - ZVAL_STR(&tmp, zval_get_string(filename)); - filename = &tmp; - } - file_handle.filename = Z_STRVAL_P(filename); - file_handle.free_filename = 0; - file_handle.type = ZEND_HANDLE_FILENAME; - file_handle.opened_path = NULL; - file_handle.handle.fp = NULL; - - retval = zend_compile_file(&file_handle, type); - if (retval && file_handle.handle.stream.handle) { - if (!file_handle.opened_path) { - file_handle.opened_path = opened_path = zend_string_copy(Z_STR_P(filename)); - } - - zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path); - - if (opened_path) { - zend_string_release_ex(opened_path, 0); - } - } - zend_destroy_file_handle(&file_handle); - - if (UNEXPECTED(filename == &tmp)) { - zval_ptr_dtor(&tmp); - } - return retval; -} - -ZEND_API int zend_prepare_string_for_scanning(zval *str, char *filename) -{ - char *buf; - size_t size, old_len; - zend_string *new_compiled_filename; - - /* enforce ZEND_MMAP_AHEAD trailing NULLs for flex... */ - old_len = Z_STRLEN_P(str); - Z_STR_P(str) = zend_string_extend(Z_STR_P(str), old_len + ZEND_MMAP_AHEAD, 0); - Z_TYPE_INFO_P(str) = IS_STRING_EX; - memset(Z_STRVAL_P(str) + old_len, 0, ZEND_MMAP_AHEAD + 1); - - SCNG(yy_in) = NULL; - SCNG(yy_start) = NULL; - - buf = Z_STRVAL_P(str); - size = old_len; - - if (CG(multibyte)) { - SCNG(script_org) = (unsigned char*)buf; - SCNG(script_org_size) = size; - SCNG(script_filtered) = NULL; - - zend_multibyte_set_filter(zend_multibyte_get_internal_encoding()); - - if (SCNG(input_filter)) { - if ((size_t)-1 == SCNG(input_filter)(&SCNG(script_filtered), &SCNG(script_filtered_size), SCNG(script_org), SCNG(script_org_size))) { - zend_error_noreturn(E_COMPILE_ERROR, "Could not convert the script from the detected " - "encoding \"%s\" to a compatible encoding", zend_multibyte_get_encoding_name(LANG_SCNG(script_encoding))); - } - buf = (char*)SCNG(script_filtered); - size = SCNG(script_filtered_size); - } - } - - yy_scan_buffer(buf, (unsigned int)size); - - new_compiled_filename = zend_string_init(filename, strlen(filename), 0); - zend_set_compiled_filename(new_compiled_filename); - zend_string_release_ex(new_compiled_filename, 0); - CG(zend_lineno) = 1; - CG(increment_lineno) = 0; - RESET_DOC_COMMENT(); - return SUCCESS; -} - - -ZEND_API size_t zend_get_scanned_file_offset(void) -{ - size_t offset = SCNG(yy_cursor) - SCNG(yy_start); - if (SCNG(input_filter)) { - size_t original_offset = offset, length = 0; - do { - unsigned char *p = NULL; - if ((size_t)-1 == SCNG(input_filter)(&p, &length, SCNG(script_org), offset)) { - return (size_t)-1; - } - efree(p); - if (length > original_offset) { - offset--; - } else if (length < original_offset) { - offset++; - } - } while (original_offset != length); - } - return offset; -} - -zend_op_array *compile_string(zval *source_string, char *filename) -{ - zend_lex_state original_lex_state; - zend_op_array *op_array = NULL; - zval tmp; - - if (UNEXPECTED(Z_TYPE_P(source_string) != IS_STRING)) { - ZVAL_STR(&tmp, zval_get_string_func(source_string)); - } else { - ZVAL_COPY(&tmp, source_string); - } - - if (Z_STRLEN(tmp)==0) { - zval_ptr_dtor(&tmp); - return NULL; - } - - zend_save_lexical_state(&original_lex_state); - if (zend_prepare_string_for_scanning(&tmp, filename) == SUCCESS) { - BEGIN(ST_IN_SCRIPTING); - op_array = zend_compile(ZEND_EVAL_CODE); - } - - zend_restore_lexical_state(&original_lex_state); - zval_ptr_dtor(&tmp); - - return op_array; -} - - -BEGIN_EXTERN_C() -int highlight_file(char *filename, zend_syntax_highlighter_ini *syntax_highlighter_ini) -{ - zend_lex_state original_lex_state; - zend_file_handle file_handle; - - file_handle.type = ZEND_HANDLE_FILENAME; - file_handle.filename = filename; - file_handle.free_filename = 0; - file_handle.opened_path = NULL; - zend_save_lexical_state(&original_lex_state); - if (open_file_for_scanning(&file_handle)==FAILURE) { - zend_message_dispatcher(ZMSG_FAILED_HIGHLIGHT_FOPEN, filename); - zend_restore_lexical_state(&original_lex_state); - return FAILURE; - } - zend_highlight(syntax_highlighter_ini); - if (SCNG(script_filtered)) { - efree(SCNG(script_filtered)); - SCNG(script_filtered) = NULL; - } - zend_destroy_file_handle(&file_handle); - zend_restore_lexical_state(&original_lex_state); - return SUCCESS; -} - -int highlight_string(zval *str, zend_syntax_highlighter_ini *syntax_highlighter_ini, char *str_name) -{ - zend_lex_state original_lex_state; - zval tmp; - - if (UNEXPECTED(Z_TYPE_P(str) != IS_STRING)) { - ZVAL_STR(&tmp, zval_get_string_func(str)); - str = &tmp; - } - zend_save_lexical_state(&original_lex_state); - if (zend_prepare_string_for_scanning(str, str_name)==FAILURE) { - zend_restore_lexical_state(&original_lex_state); - if (UNEXPECTED(str == &tmp)) { - zval_ptr_dtor(&tmp); - } - return FAILURE; - } - BEGIN(INITIAL); - zend_highlight(syntax_highlighter_ini); - if (SCNG(script_filtered)) { - efree(SCNG(script_filtered)); - SCNG(script_filtered) = NULL; - } - zend_restore_lexical_state(&original_lex_state); - if (UNEXPECTED(str == &tmp)) { - zval_ptr_dtor(&tmp); - } - return SUCCESS; -} - -ZEND_API void zend_multibyte_yyinput_again(zend_encoding_filter old_input_filter, const zend_encoding *old_encoding) -{ - size_t length; - unsigned char *new_yy_start; - - /* convert and set */ - if (!SCNG(input_filter)) { - if (SCNG(script_filtered)) { - efree(SCNG(script_filtered)); - SCNG(script_filtered) = NULL; - } - SCNG(script_filtered_size) = 0; - length = SCNG(script_org_size); - new_yy_start = SCNG(script_org); - } else { - if ((size_t)-1 == SCNG(input_filter)(&new_yy_start, &length, SCNG(script_org), SCNG(script_org_size))) { - zend_error_noreturn(E_COMPILE_ERROR, "Could not convert the script from the detected " - "encoding \"%s\" to a compatible encoding", zend_multibyte_get_encoding_name(LANG_SCNG(script_encoding))); - } - if (SCNG(script_filtered)) { - efree(SCNG(script_filtered)); - } - SCNG(script_filtered) = new_yy_start; - SCNG(script_filtered_size) = length; - } - - SCNG(yy_cursor) = new_yy_start + (SCNG(yy_cursor) - SCNG(yy_start)); - SCNG(yy_marker) = new_yy_start + (SCNG(yy_marker) - SCNG(yy_start)); - SCNG(yy_text) = new_yy_start + (SCNG(yy_text) - SCNG(yy_start)); - SCNG(yy_limit) = new_yy_start + length; - - SCNG(yy_start) = new_yy_start; -} - - -// TODO: avoid reallocation ??? -# define zend_copy_value(zendlval, yytext, yyleng) \ - if (SCNG(output_filter)) { \ - size_t sz = 0; \ - char *s = NULL; \ - SCNG(output_filter)((unsigned char **)&s, &sz, (unsigned char *)yytext, (size_t)yyleng); \ - ZVAL_STRINGL(zendlval, s, sz); \ - efree(s); \ - } else if (yyleng == 1) { \ - ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR((zend_uchar)*(yytext))); \ - } else { \ - ZVAL_STRINGL(zendlval, yytext, yyleng); \ - } - -static int zend_scan_escape_string(zval *zendlval, char *str, int len, char quote_type) -{ - register char *s, *t; - char *end; - - if (len <= 1) { - if (len < 1) { - ZVAL_EMPTY_STRING(zendlval); - } else { - zend_uchar c = (zend_uchar)*str; - if (c == '\n' || c == '\r') { - CG(zend_lineno)++; - } - ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR(c)); - } - goto skip_escape_conversion; - } - - ZVAL_STRINGL(zendlval, str, len); - - /* convert escape sequences */ - s = Z_STRVAL_P(zendlval); - end = s+Z_STRLEN_P(zendlval); - while (1) { - if (UNEXPECTED(*s=='\\')) { - break; - } - if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) { - CG(zend_lineno)++; - } - s++; - if (s == end) { - goto skip_escape_conversion; - } - } - - t = s; - while (s<end) { - if (*s=='\\') { - s++; - if (s >= end) { - *t++ = '\\'; - break; - } - - switch(*s) { - case 'n': - *t++ = '\n'; - break; - case 'r': - *t++ = '\r'; - break; - case 't': - *t++ = '\t'; - break; - case 'f': - *t++ = '\f'; - break; - case 'v': - *t++ = '\v'; - break; - case 'e': -#ifdef ZEND_WIN32 - *t++ = VK_ESCAPE; -#else - *t++ = '\e'; -#endif - break; - case '"': - case '`': - if (*s != quote_type) { - *t++ = '\\'; - *t++ = *s; - break; - } - case '\\': - case '$': - *t++ = *s; - break; - case 'x': - case 'X': - if (ZEND_IS_HEX(*(s+1))) { - char hex_buf[3] = { 0, 0, 0 }; - - hex_buf[0] = *(++s); - if (ZEND_IS_HEX(*(s+1))) { - hex_buf[1] = *(++s); - } - *t++ = (char) ZEND_STRTOL(hex_buf, NULL, 16); - } else { - *t++ = '\\'; - *t++ = *s; - } - break; - /* UTF-8 codepoint escape, format: /\\u\{\x+\}/ */ - case 'u': - { - /* cache where we started so we can parse after validating */ - char *start = s + 1; - size_t len = 0; - zend_bool valid = 1; - unsigned long codepoint; - - if (*start != '{') { - /* we silently let this pass to avoid breaking code - * with JSON in string literals (e.g. "\"\u202e\"" - */ - *t++ = '\\'; - *t++ = 'u'; - break; - } else { - /* on the other hand, invalid \u{blah} errors */ - s++; - len++; - s++; - while (*s != '}') { - if (!ZEND_IS_HEX(*s)) { - valid = 0; - break; - } else { - len++; - } - s++; - } - if (*s == '}') { - valid = 1; - len++; - } - } - - /* \u{} is invalid */ - if (len <= 2) { - valid = 0; - } - - if (!valid) { - zend_throw_exception(zend_ce_parse_error, - "Invalid UTF-8 codepoint escape sequence", 0); - zval_ptr_dtor(zendlval); - ZVAL_UNDEF(zendlval); - return FAILURE; - } - - errno = 0; - codepoint = strtoul(start + 1, NULL, 16); - - /* per RFC 3629, UTF-8 can only represent 21 bits */ - if (codepoint > 0x10FFFF || errno) { - zend_throw_exception(zend_ce_parse_error, - "Invalid UTF-8 codepoint escape sequence: Codepoint too large", 0); - zval_ptr_dtor(zendlval); - ZVAL_UNDEF(zendlval); - return FAILURE; - } - - /* based on https://en.wikipedia.org/wiki/UTF-8#Sample_code */ - if (codepoint < 0x80) { - *t++ = codepoint; - } else if (codepoint <= 0x7FF) { - *t++ = (codepoint >> 6) + 0xC0; - *t++ = (codepoint & 0x3F) + 0x80; - } else if (codepoint <= 0xFFFF) { - *t++ = (codepoint >> 12) + 0xE0; - *t++ = ((codepoint >> 6) & 0x3F) + 0x80; - *t++ = (codepoint & 0x3F) + 0x80; - } else if (codepoint <= 0x10FFFF) { - *t++ = (codepoint >> 18) + 0xF0; - *t++ = ((codepoint >> 12) & 0x3F) + 0x80; - *t++ = ((codepoint >> 6) & 0x3F) + 0x80; - *t++ = (codepoint & 0x3F) + 0x80; - } - } - break; - default: - /* check for an octal */ - if (ZEND_IS_OCT(*s)) { - char octal_buf[4] = { 0, 0, 0, 0 }; - - octal_buf[0] = *s; - if (ZEND_IS_OCT(*(s+1))) { - octal_buf[1] = *(++s); - if (ZEND_IS_OCT(*(s+1))) { - octal_buf[2] = *(++s); - } - } - if (octal_buf[2] && - (octal_buf[0] > '3')) { - /* 3 octit values must not overflow 0xFF (\377) */ - zend_error(E_COMPILE_WARNING, "Octal escape sequence overflow \\%s is greater than \\377", octal_buf); - } - - *t++ = (char) ZEND_STRTOL(octal_buf, NULL, 8); - } else { - *t++ = '\\'; - *t++ = *s; - } - break; - } - } else { - *t++ = *s; - } - - if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) { - CG(zend_lineno)++; - } - s++; - } - *t = 0; - Z_STRLEN_P(zendlval) = t - Z_STRVAL_P(zendlval); - -skip_escape_conversion: - if (SCNG(output_filter)) { - size_t sz = 0; - unsigned char *str; - // TODO: avoid realocation ??? - s = Z_STRVAL_P(zendlval); - SCNG(output_filter)(&str, &sz, (unsigned char *)s, (size_t)Z_STRLEN_P(zendlval)); - zval_ptr_dtor(zendlval); - ZVAL_STRINGL(zendlval, (char *) str, sz); - efree(str); - } - return SUCCESS; -} - -#define HEREDOC_USING_SPACES 1 -#define HEREDOC_USING_TABS 2 - -static const char *next_newline(const char *str, const char *end, size_t *newline_len) { - for (; str < end; str++) { - if (*str == '\r') { - *newline_len = str + 1 < end && *(str + 1) == '\n' ? 2 : 1; - } else if (*str == '\n') { - *newline_len = 1; - return str; - } - } - *newline_len = 0; - return NULL; -} - -static zend_bool strip_multiline_string_indentation( - zval *zendlval, int indentation, zend_bool using_spaces, - zend_bool newline_at_start, zend_bool newline_at_end) -{ - const char *str = Z_STRVAL_P(zendlval), *end = str + Z_STRLEN_P(zendlval); - char *copy = Z_STRVAL_P(zendlval); - - int newline_count = 0; - size_t newline_len; - const char *nl; - - if (!newline_at_start) { - nl = next_newline(str, end, &newline_len); - if (!nl) { - return 1; - } - - str = nl + newline_len; - copy = (char *) nl + newline_len; - newline_count++; - } else { - nl = str; - } - - /* <= intentional */ - while (str <= end && nl) { - size_t skip; - nl = next_newline(str, end, &newline_len); - if (!nl && newline_at_end) { - nl = end; - } - - /* Try to skip indentation */ - for (skip = 0; skip < indentation; skip++, str++) { - if (str == nl) { - /* Don't require full indentation on whitespace-only lines */ - break; - } - - if (str == end || (*str != ' ' && *str != '\t')) { - CG(zend_lineno) += newline_count; - zend_throw_exception_ex(zend_ce_parse_error, 0, - "Invalid body indentation level (expecting an indentation level of at least %d)", indentation); - goto error; - } - - if ((!using_spaces && *str == ' ') || (using_spaces && *str == '\t')) { - CG(zend_lineno) += newline_count; - zend_throw_exception(zend_ce_parse_error, - "Invalid indentation - tabs and spaces cannot be mixed", 0); - goto error; - } - } - - if (str == end) { - break; - } - - size_t len = nl ? (nl - str + newline_len) : (end - str); - memmove(copy, str, len); - str += len; - copy += len; - newline_count++; - } - - *copy = '\0'; - Z_STRLEN_P(zendlval) = copy - Z_STRVAL_P(zendlval); - return 1; - -error: - zval_ptr_dtor_str(zendlval); - ZVAL_UNDEF(zendlval); - - return 0; -} - -static void copy_heredoc_label_stack(void *void_heredoc_label) -{ - zend_heredoc_label *heredoc_label = void_heredoc_label; - zend_heredoc_label *new_heredoc_label = emalloc(sizeof(zend_heredoc_label)); - - *new_heredoc_label = *heredoc_label; - new_heredoc_label->label = estrndup(heredoc_label->label, heredoc_label->length); - - zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) new_heredoc_label); -} - -#define PARSER_MODE() \ - EXPECTED(elem != NULL) - -#define RETURN_TOKEN(_token) do { \ - token = _token; \ - goto emit_token; \ - } while (0) - -#define RETURN_TOKEN_WITH_VAL(_token) do { \ - token = _token; \ - goto emit_token_with_val; \ - } while (0) - -#define RETURN_TOKEN_WITH_STR(_token, _offset) do { \ - token = _token; \ - offset = _offset; \ - goto emit_token_with_str; \ - } while (0) - -#define SKIP_TOKEN(_token) do { \ - token = _token; \ - goto skip_token; \ - } while (0) - -int ZEND_FASTCALL lex_scan(zval *zendlval, zend_parser_stack_elem *elem) -{ -int token; -int offset; -int start_line = CG(zend_lineno); - - ZVAL_UNDEF(zendlval); -restart: - SCNG(yy_text) = YYCURSOR; - - -#line 1250 "Zend/zend_language_scanner.c" -{ - YYCTYPE yych; - unsigned int yyaccept = 0; - if (YYGETCONDITION() < 5) { - if (YYGETCONDITION() < 2) { - if (YYGETCONDITION() < 1) { - goto yyc_ST_IN_SCRIPTING; - } else { - goto yyc_ST_LOOKING_FOR_PROPERTY; - } - } else { - if (YYGETCONDITION() < 3) { - goto yyc_ST_BACKQUOTE; - } else { - if (YYGETCONDITION() < 4) { - goto yyc_ST_DOUBLE_QUOTES; - } else { - goto yyc_ST_HEREDOC; - } - } - } - } else { - if (YYGETCONDITION() < 7) { - if (YYGETCONDITION() < 6) { - goto yyc_ST_LOOKING_FOR_VARNAME; - } else { - goto yyc_ST_VAR_OFFSET; - } - } else { - if (YYGETCONDITION() < 8) { - goto yyc_INITIAL; - } else { - if (YYGETCONDITION() < 9) { - goto yyc_ST_END_HEREDOC; - } else { - goto yyc_ST_NOWDOC; - } - } - } - } -/* *********************************** */ -yyc_ST_IN_SCRIPTING: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 36, 4, 0, 0, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 36, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 216, 216, 152, 152, 152, 152, 152, 152, - 152, 152, 0, 0, 0, 0, 0, 0, - 0, 144, 144, 144, 144, 144, 144, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 0, 0, 0, 0, 16, - 0, 144, 144, 144, 144, 144, 144, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 0, 0, 0, 0, 0, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, - }; - YYDEBUG(1, *YYCURSOR); - YYFILL(16); - yych = *YYCURSOR; - if (yybm[0+yych] & 4) { - goto yy5; - } - switch (yych) { - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case '\t': - case '\n': - case '\v': - case '\f': - case '\r': - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - case 0x7F: goto yy3; - case ' ': - case '!': goto yy8; - case '"': goto yy10; - case '#': goto yy12; - case '$': goto yy14; - case '%': goto yy15; - case '&': goto yy16; - case '\'': goto yy17; - case '(': goto yy19; - case ')': - case ',': - case ';': - case '@': - case '[': - case ']': - case '~': goto yy20; - case '*': goto yy21; - case '+': goto yy22; - case '-': goto yy23; - case '.': goto yy24; - case '/': goto yy25; - case '0': goto yy26; - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy28; - case ':': goto yy30; - case '<': goto yy31; - case '=': goto yy32; - case '>': goto yy33; - case '?': goto yy34; - case 'A': - case 'a': goto yy35; - case 'B': - case 'b': goto yy37; - case 'C': - case 'c': goto yy38; - case 'D': - case 'd': goto yy39; - case 'E': - case 'e': goto yy40; - case 'F': - case 'f': goto yy41; - case 'G': - case 'g': goto yy42; - case 'I': - case 'i': goto yy45; - case 'L': - case 'l': goto yy46; - case 'N': - case 'n': goto yy47; - case 'O': - case 'o': goto yy48; - case 'P': - case 'p': goto yy49; - case 'R': - case 'r': goto yy50; - case 'S': - case 's': goto yy51; - case 'T': - case 't': goto yy52; - case 'U': - case 'u': goto yy53; - case 'V': - case 'v': goto yy54; - case 'W': - case 'w': goto yy55; - case 'X': - case 'x': goto yy56; - case 'Y': - case 'y': goto yy57; - case '\\': goto yy58; - case '^': goto yy60; - case '_': goto yy61; - case '`': goto yy62; - case '{': goto yy64; - case '|': goto yy66; - case '}': goto yy67; - default: goto yy43; - } -yy3: - YYDEBUG(3, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(4, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2749 "Zend/zend_language_scanner.l" - { - if (YYCURSOR > YYLIMIT) { - RETURN_TOKEN(END); - } - - zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); - goto restart; -} -#line 1467 "Zend/zend_language_scanner.c" -yy5: - YYDEBUG(5, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(6, *YYCURSOR); - if (yybm[0+yych] & 4) { - goto yy5; - } - YYDEBUG(7, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1429 "Zend/zend_language_scanner.l" - { - goto return_whitespace; -} -#line 1483 "Zend/zend_language_scanner.c" -yy8: - YYDEBUG(8, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy69; -yy9: - YYDEBUG(9, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1712 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(yytext[0]); -} -#line 1495 "Zend/zend_language_scanner.c" -yy10: - YYDEBUG(10, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(11, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2223 "Zend/zend_language_scanner.l" - { - int bprefix = (yytext[0] != '"') ? 1 : 0; - - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '"': - yyleng = YYCURSOR - SCNG(yy_text); - if (EXPECTED(zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"') == SUCCESS) - || !PARSER_MODE()) { - RETURN_TOKEN_WITH_VAL(T_CONSTANT_ENCAPSED_STRING); - } else { - RETURN_TOKEN(T_ERROR); - } - case '$': - if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { - break; - } - continue; - case '{': - if (*YYCURSOR == '$') { - break; - } - continue; - case '\\': - if (YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - /* fall through */ - default: - continue; - } - - YYCURSOR--; - break; - } - - /* Remember how much was scanned to save rescanning */ - SET_DOUBLE_QUOTES_SCANNED_LENGTH(YYCURSOR - SCNG(yy_text) - yyleng); - - YYCURSOR = SCNG(yy_text) + yyleng; - - BEGIN(ST_DOUBLE_QUOTES); - RETURN_TOKEN('"'); -} -#line 1546 "Zend/zend_language_scanner.c" -yy12: - YYDEBUG(12, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(13, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2050 "Zend/zend_language_scanner.l" - { - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '\r': - if (*YYCURSOR == '\n') { - YYCURSOR++; - } - /* fall through */ - case '\n': - CG(zend_lineno)++; - break; - case '?': - if (*YYCURSOR == '>') { - YYCURSOR--; - break; - } - /* fall through */ - default: - continue; - } - - break; - } - - yyleng = YYCURSOR - SCNG(yy_text); - - if (PARSER_MODE()) { - SKIP_TOKEN(T_COMMENT); - } - RETURN_TOKEN(T_COMMENT); -} -#line 1584 "Zend/zend_language_scanner.c" -yy14: - YYDEBUG(14, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy9; - if (yych <= 'Z') goto yy71; - if (yych <= '^') goto yy9; - goto yy71; - } else { - if (yych <= '`') goto yy9; - if (yych <= 'z') goto yy71; - if (yych <= 0x7F) goto yy9; - goto yy71; - } -yy15: - YYDEBUG(15, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy74; - goto yy9; -yy16: - YYDEBUG(16, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '&') goto yy76; - if (yych == '=') goto yy78; - goto yy9; -yy17: - YYDEBUG(17, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(18, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2133 "Zend/zend_language_scanner.l" - { - register char *s, *t; - char *end; - int bprefix = (yytext[0] != '\'') ? 1 : 0; - - while (1) { - if (YYCURSOR < YYLIMIT) { - if (*YYCURSOR == '\'') { - YYCURSOR++; - yyleng = YYCURSOR - SCNG(yy_text); - - break; - } else if (*YYCURSOR++ == '\\' && YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - } else { - yyleng = YYLIMIT - SCNG(yy_text); - - /* Unclosed single quotes; treat similar to double quotes, but without a separate token - * for ' (unrecognized by parser), instead of old flex fallback to "Unexpected character..." - * rule, which continued in ST_IN_SCRIPTING state after the quote */ - ZVAL_NULL(zendlval); - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); - } - } - - if (yyleng-bprefix-2 <= 1) { - if (yyleng-bprefix-2 < 1) { - ZVAL_EMPTY_STRING(zendlval); - } else { - zend_uchar c = (zend_uchar)*(yytext+bprefix+1); - if (c == '\n' || c == '\r') { - CG(zend_lineno)++; - } - ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR(c)); - } - goto skip_escape_conversion; - } - ZVAL_STRINGL(zendlval, yytext+bprefix+1, yyleng-bprefix-2); - - /* convert escape sequences */ - s = Z_STRVAL_P(zendlval); - end = s+Z_STRLEN_P(zendlval); - while (1) { - if (UNEXPECTED(*s=='\\')) { - break; - } - if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) { - CG(zend_lineno)++; - } - s++; - if (s == end) { - goto skip_escape_conversion; - } - } - - t = s; - while (s<end) { - if (*s=='\\') { - s++; - if (*s == '\\' || *s == '\'') { - *t++ = *s; - } else { - *t++ = '\\'; - *t++ = *s; - } - } else { - *t++ = *s; - } - if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) { - CG(zend_lineno)++; - } - s++; - } - *t = 0; - Z_STRLEN_P(zendlval) = t - Z_STRVAL_P(zendlval); - -skip_escape_conversion: - if (SCNG(output_filter)) { - size_t sz = 0; - char *str = NULL; - s = Z_STRVAL_P(zendlval); - // TODO: avoid reallocation ??? - SCNG(output_filter)((unsigned char **)&str, &sz, (unsigned char *)s, (size_t)Z_STRLEN_P(zendlval)); - ZVAL_STRINGL(zendlval, str, sz); - } - RETURN_TOKEN_WITH_VAL(T_CONSTANT_ENCAPSED_STRING); -} -#line 1704 "Zend/zend_language_scanner.c" -yy19: - YYDEBUG(19, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'S') { - if (yych <= 'D') { - if (yych <= ' ') { - if (yych == '\t') goto yy81; - if (yych <= 0x1F) goto yy9; - goto yy81; - } else { - if (yych <= '@') goto yy9; - if (yych == 'C') goto yy9; - goto yy81; - } - } else { - if (yych <= 'I') { - if (yych == 'F') goto yy81; - if (yych <= 'H') goto yy9; - goto yy81; - } else { - if (yych == 'O') goto yy81; - if (yych <= 'Q') goto yy9; - goto yy81; - } - } - } else { - if (yych <= 'f') { - if (yych <= 'b') { - if (yych == 'U') goto yy81; - if (yych <= '`') goto yy9; - goto yy81; - } else { - if (yych == 'd') goto yy81; - if (yych <= 'e') goto yy9; - goto yy81; - } - } else { - if (yych <= 'o') { - if (yych == 'i') goto yy81; - if (yych <= 'n') goto yy9; - goto yy81; - } else { - if (yych <= 's') { - if (yych <= 'q') goto yy9; - goto yy81; - } else { - if (yych == 'u') goto yy81; - goto yy9; - } - } - } - } -yy20: - YYDEBUG(20, *YYCURSOR); - ++YYCURSOR; - goto yy9; -yy21: - YYDEBUG(21, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '*') goto yy92; - if (yych == '=') goto yy94; - goto yy9; -yy22: - YYDEBUG(22, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '+') goto yy96; - if (yych == '=') goto yy98; - goto yy9; -yy23: - YYDEBUG(23, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '<') { - if (yych == '-') goto yy100; - goto yy9; - } else { - if (yych <= '=') goto yy102; - if (yych <= '>') goto yy104; - goto yy9; - } -yy24: - YYDEBUG(24, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy106; - goto yy9; - } else { - if (yych <= '9') goto yy107; - if (yych == '=') goto yy110; - goto yy9; - } -yy25: - YYDEBUG(25, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '.') { - if (yych == '*') goto yy112; - goto yy9; - } else { - if (yych <= '/') goto yy12; - if (yych == '=') goto yy114; - goto yy9; - } -yy26: - YYDEBUG(26, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'X') { - if (yych == 'B') goto yy116; - if (yych <= 'W') goto yy29; - goto yy118; - } else { - if (yych <= 'b') { - if (yych <= 'a') goto yy29; - goto yy116; - } else { - if (yych == 'x') goto yy118; - goto yy29; - } - } -yy27: - YYDEBUG(27, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1781 "Zend/zend_language_scanner.l" - { - char *end; - if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ - errno = 0; - ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0)); - /* This isn't an assert, we need to ensure 019 isn't valid octal - * Because the lexing itself doesn't do that for us - */ - if (end != yytext + yyleng) { - zend_throw_exception(zend_ce_parse_error, "Invalid numeric literal", 0); - ZVAL_UNDEF(zendlval); - if (PARSER_MODE()) { - RETURN_TOKEN(T_ERROR); - } - RETURN_TOKEN_WITH_VAL(T_LNUMBER); - } - } else { - errno = 0; - ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 0)); - if (errno == ERANGE) { /* Overflow */ - errno = 0; - if (yytext[0] == '0') { /* octal overflow */ - ZVAL_DOUBLE(zendlval, zend_oct_strtod(yytext, (const char **)&end)); - } else { - ZVAL_DOUBLE(zendlval, zend_strtod(yytext, (const char **)&end)); - } - /* Also not an assert for the same reason */ - if (end != yytext + yyleng) { - zend_throw_exception(zend_ce_parse_error, - "Invalid numeric literal", 0); - ZVAL_UNDEF(zendlval); - if (PARSER_MODE()) { - RETURN_TOKEN(T_ERROR); - } - } - RETURN_TOKEN_WITH_VAL(T_DNUMBER); - } - /* Also not an assert for the same reason */ - if (end != yytext + yyleng) { - zend_throw_exception(zend_ce_parse_error, "Invalid numeric literal", 0); - ZVAL_UNDEF(zendlval); - if (PARSER_MODE()) { - RETURN_TOKEN(T_ERROR); - } - RETURN_TOKEN_WITH_VAL(T_DNUMBER); - } - } - ZEND_ASSERT(!errno); - RETURN_TOKEN_WITH_VAL(T_LNUMBER); -} -#line 1879 "Zend/zend_language_scanner.c" -yy28: - YYDEBUG(28, *YYCURSOR); - yyaccept = 1; - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; -yy29: - YYDEBUG(29, *YYCURSOR); - if (yybm[0+yych] & 8) { - goto yy28; - } - if (yych <= 'D') { - if (yych == '.') goto yy107; - goto yy27; - } else { - if (yych <= 'E') goto yy117; - if (yych == 'e') goto yy117; - goto yy27; - } -yy30: - YYDEBUG(30, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == ':') goto yy119; - goto yy9; -yy31: - YYDEBUG(31, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= ';') goto yy9; - if (yych <= '<') goto yy121; - if (yych <= '=') goto yy123; - if (yych <= '>') goto yy125; - goto yy9; -yy32: - YYDEBUG(32, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '<') goto yy9; - if (yych <= '=') goto yy126; - if (yych <= '>') goto yy128; - goto yy9; -yy33: - YYDEBUG(33, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '<') goto yy9; - if (yych <= '=') goto yy130; - if (yych <= '>') goto yy132; - goto yy9; -yy34: - YYDEBUG(34, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '=') goto yy9; - if (yych <= '>') goto yy134; - if (yych <= '?') goto yy136; - goto yy9; -yy35: - YYDEBUG(35, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych <= 'M') { - if (yych == 'B') goto yy138; - goto yy44; - } else { - if (yych <= 'N') goto yy139; - if (yych <= 'Q') goto yy44; - if (yych <= 'R') goto yy140; - goto yy141; - } - } else { - if (yych <= 'n') { - if (yych == 'b') goto yy138; - if (yych <= 'm') goto yy44; - goto yy139; - } else { - if (yych <= 'q') goto yy44; - if (yych <= 'r') goto yy140; - if (yych <= 's') goto yy141; - goto yy44; - } - } -yy36: - YYDEBUG(36, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2045 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN_WITH_STR(T_STRING, 0); -} -#line 1965 "Zend/zend_language_scanner.c" -yy37: - YYDEBUG(37, *YYCURSOR); - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ';') { - if (yych <= '"') { - if (yych <= '!') goto yy44; - goto yy10; - } else { - if (yych == '\'') goto yy17; - goto yy44; - } - } else { - if (yych <= 'R') { - if (yych <= '<') goto yy143; - if (yych <= 'Q') goto yy44; - goto yy144; - } else { - if (yych == 'r') goto yy144; - goto yy44; - } - } -yy38: - YYDEBUG(38, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych <= 'K') { - if (yych == 'A') goto yy145; - goto yy44; - } else { - if (yych <= 'L') goto yy146; - if (yych <= 'N') goto yy44; - goto yy147; - } - } else { - if (yych <= 'k') { - if (yych == 'a') goto yy145; - goto yy44; - } else { - if (yych <= 'l') goto yy146; - if (yych == 'o') goto yy147; - goto yy44; - } - } -yy39: - YYDEBUG(39, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych <= 'H') { - if (yych == 'E') goto yy148; - goto yy44; - } else { - if (yych <= 'I') goto yy149; - if (yych <= 'N') goto yy44; - goto yy150; - } - } else { - if (yych <= 'h') { - if (yych == 'e') goto yy148; - goto yy44; - } else { - if (yych <= 'i') goto yy149; - if (yych == 'o') goto yy150; - goto yy44; - } - } -yy40: - YYDEBUG(40, *YYCURSOR); - yych = *++YYCURSOR; - switch (yych) { - case 'C': - case 'c': goto yy152; - case 'L': - case 'l': goto yy153; - case 'M': - case 'm': goto yy154; - case 'N': - case 'n': goto yy155; - case 'V': - case 'v': goto yy156; - case 'X': - case 'x': goto yy157; - default: goto yy44; - } -yy41: - YYDEBUG(41, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych <= 'N') { - if (yych == 'I') goto yy158; - goto yy44; - } else { - if (yych <= 'O') goto yy159; - if (yych <= 'T') goto yy44; - goto yy160; - } - } else { - if (yych <= 'n') { - if (yych == 'i') goto yy158; - goto yy44; - } else { - if (yych <= 'o') goto yy159; - if (yych == 'u') goto yy160; - goto yy44; - } - } -yy42: - YYDEBUG(42, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'L') goto yy161; - if (yych <= 'N') goto yy44; - goto yy162; - } else { - if (yych <= 'l') { - if (yych <= 'k') goto yy44; - goto yy161; - } else { - if (yych == 'o') goto yy162; - goto yy44; - } - } -yy43: - YYDEBUG(43, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy44: - YYDEBUG(44, *YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy43; - } - goto yy36; -yy45: - YYDEBUG(45, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych <= 'L') { - if (yych == 'F') goto yy163; - goto yy44; - } else { - if (yych <= 'M') goto yy165; - if (yych <= 'N') goto yy166; - if (yych <= 'R') goto yy44; - goto yy167; - } - } else { - if (yych <= 'm') { - if (yych == 'f') goto yy163; - if (yych <= 'l') goto yy44; - goto yy165; - } else { - if (yych <= 'n') goto yy166; - if (yych == 's') goto yy167; - goto yy44; - } - } -yy46: - YYDEBUG(46, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy168; - if (yych == 'i') goto yy168; - goto yy44; -yy47: - YYDEBUG(47, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych == 'A') goto yy169; - if (yych <= 'D') goto yy44; - goto yy170; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy44; - goto yy169; - } else { - if (yych == 'e') goto yy170; - goto yy44; - } - } -yy48: - YYDEBUG(48, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy171; - if (yych == 'r') goto yy171; - goto yy44; -yy49: - YYDEBUG(49, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'R') goto yy173; - if (yych <= 'T') goto yy44; - goto yy174; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy44; - goto yy173; - } else { - if (yych == 'u') goto yy174; - goto yy44; - } - } -yy50: - YYDEBUG(50, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy175; - if (yych == 'e') goto yy175; - goto yy44; -yy51: - YYDEBUG(51, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'W') { - if (yych == 'T') goto yy176; - if (yych <= 'V') goto yy44; - goto yy177; - } else { - if (yych <= 't') { - if (yych <= 's') goto yy44; - goto yy176; - } else { - if (yych == 'w') goto yy177; - goto yy44; - } - } -yy52: - YYDEBUG(52, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'R') { - if (yych == 'H') goto yy178; - if (yych <= 'Q') goto yy44; - goto yy179; - } else { - if (yych <= 'h') { - if (yych <= 'g') goto yy44; - goto yy178; - } else { - if (yych == 'r') goto yy179; - goto yy44; - } - } -yy53: - YYDEBUG(53, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych == 'N') goto yy180; - if (yych <= 'R') goto yy44; - goto yy181; - } else { - if (yych <= 'n') { - if (yych <= 'm') goto yy44; - goto yy180; - } else { - if (yych == 's') goto yy181; - goto yy44; - } - } -yy54: - YYDEBUG(54, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy182; - if (yych == 'a') goto yy182; - goto yy44; -yy55: - YYDEBUG(55, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy183; - if (yych == 'h') goto yy183; - goto yy44; -yy56: - YYDEBUG(56, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy184; - if (yych == 'o') goto yy184; - goto yy44; -yy57: - YYDEBUG(57, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy185; - if (yych == 'i') goto yy185; - goto yy44; -yy58: - YYDEBUG(58, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(59, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1452 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_NS_SEPARATOR); -} -#line 2254 "Zend/zend_language_scanner.c" -yy60: - YYDEBUG(60, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy186; - goto yy9; -yy61: - YYDEBUG(61, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy188; - goto yy44; -yy62: - YYDEBUG(62, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(63, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2402 "Zend/zend_language_scanner.l" - { - BEGIN(ST_BACKQUOTE); - RETURN_TOKEN('`'); -} -#line 2275 "Zend/zend_language_scanner.c" -yy64: - YYDEBUG(64, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(65, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1717 "Zend/zend_language_scanner.l" - { - yy_push_state(ST_IN_SCRIPTING); - RETURN_TOKEN('{'); -} -#line 2286 "Zend/zend_language_scanner.c" -yy66: - YYDEBUG(66, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy189; - if (yych == '|') goto yy191; - goto yy9; -yy67: - YYDEBUG(67, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(68, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1729 "Zend/zend_language_scanner.l" - { - RESET_DOC_COMMENT(); - if (!zend_stack_is_empty(&SCNG(state_stack))) { - yy_pop_state(); - } - RETURN_TOKEN('}'); -} -#line 2306 "Zend/zend_language_scanner.c" -yy69: - YYDEBUG(69, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy193; -yy70: - YYDEBUG(70, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1616 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_NOT_EQUAL); -} -#line 2318 "Zend/zend_language_scanner.c" -yy71: - YYDEBUG(71, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(72, *YYCURSOR); - if (yych <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy71; - } else { - if (yych <= '@') goto yy73; - if (yych <= 'Z') goto yy71; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy71; - } else { - if (yych <= 'z') goto yy71; - if (yych >= 0x80) goto yy71; - } - } -yy73: - YYDEBUG(73, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2023 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 2347 "Zend/zend_language_scanner.c" -yy74: - YYDEBUG(74, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(75, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1660 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_MOD_EQUAL); -} -#line 2357 "Zend/zend_language_scanner.c" -yy76: - YYDEBUG(76, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(77, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1688 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_BOOLEAN_AND); -} -#line 2367 "Zend/zend_language_scanner.c" -yy78: - YYDEBUG(78, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(79, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1672 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_AND_EQUAL); -} -#line 2377 "Zend/zend_language_scanner.c" -yy80: - YYDEBUG(80, *YYCURSOR); - ++YYCURSOR; - YYFILL(7); - yych = *YYCURSOR; -yy81: - YYDEBUG(81, *YYCURSOR); - if (yybm[0+yych] & 32) { - goto yy80; - } - switch (yych) { - case 'A': - case 'a': goto yy83; - case 'B': - case 'b': goto yy84; - case 'D': - case 'd': goto yy85; - case 'F': - case 'f': goto yy86; - case 'I': - case 'i': goto yy87; - case 'O': - case 'o': goto yy88; - case 'R': - case 'r': goto yy89; - case 'S': - case 's': goto yy90; - case 'U': - case 'u': goto yy91; - default: goto yy82; - } -yy82: - YYDEBUG(82, *YYCURSOR); - YYCURSOR = YYMARKER; - if (yyaccept <= 3) { - if (yyaccept <= 1) { - if (yyaccept == 0) { - goto yy9; - } else { - goto yy27; - } - } else { - if (yyaccept == 2) { - goto yy36; - } else { - goto yy109; - } - } - } else { - if (yyaccept <= 5) { - if (yyaccept == 4) { - goto yy113; - } else { - goto yy122; - } - } else { - goto yy457; - } - } -yy83: - YYDEBUG(83, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy195; - if (yych == 'r') goto yy195; - goto yy82; -yy84: - YYDEBUG(84, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'I') goto yy196; - if (yych <= 'N') goto yy82; - goto yy197; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy82; - goto yy196; - } else { - if (yych == 'o') goto yy197; - goto yy82; - } - } -yy85: - YYDEBUG(85, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy198; - if (yych == 'o') goto yy198; - goto yy82; -yy86: - YYDEBUG(86, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy199; - if (yych == 'l') goto yy199; - goto yy82; -yy87: - YYDEBUG(87, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy200; - if (yych == 'n') goto yy200; - goto yy82; -yy88: - YYDEBUG(88, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy201; - if (yych == 'b') goto yy201; - goto yy82; -yy89: - YYDEBUG(89, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy202; - if (yych == 'e') goto yy202; - goto yy82; -yy90: - YYDEBUG(90, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy203; - if (yych == 't') goto yy203; - goto yy82; -yy91: - YYDEBUG(91, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy204; - if (yych == 'n') goto yy204; - goto yy82; -yy92: - YYDEBUG(92, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy205; - YYDEBUG(93, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1644 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_POW); -} -#line 2511 "Zend/zend_language_scanner.c" -yy94: - YYDEBUG(94, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(95, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1640 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_MUL_EQUAL); -} -#line 2521 "Zend/zend_language_scanner.c" -yy96: - YYDEBUG(96, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(97, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1596 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INC); -} -#line 2531 "Zend/zend_language_scanner.c" -yy98: - YYDEBUG(98, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(99, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1632 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PLUS_EQUAL); -} -#line 2541 "Zend/zend_language_scanner.c" -yy100: - YYDEBUG(100, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(101, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1600 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DEC); -} -#line 2551 "Zend/zend_language_scanner.c" -yy102: - YYDEBUG(102, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(103, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1636 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_MINUS_EQUAL); -} -#line 2561 "Zend/zend_language_scanner.c" -yy104: - YYDEBUG(104, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(105, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1424 "Zend/zend_language_scanner.l" - { - yy_push_state(ST_LOOKING_FOR_PROPERTY); - RETURN_TOKEN(T_OBJECT_OPERATOR); -} -#line 2572 "Zend/zend_language_scanner.c" -yy106: - YYDEBUG(106, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '.') goto yy207; - goto yy82; -yy107: - YYDEBUG(107, *YYCURSOR); - yyaccept = 3; - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; - YYDEBUG(108, *YYCURSOR); - if (yych <= 'D') { - if (yych <= '/') goto yy109; - if (yych <= '9') goto yy107; - } else { - if (yych <= 'E') goto yy117; - if (yych == 'e') goto yy117; - } -yy109: - YYDEBUG(109, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1885 "Zend/zend_language_scanner.l" - { - const char *end; - - ZVAL_DOUBLE(zendlval, zend_strtod(yytext, &end)); - /* errno isn't checked since we allow HUGE_VAL/INF overflow */ - ZEND_ASSERT(end == yytext + yyleng); - RETURN_TOKEN_WITH_VAL(T_DNUMBER); -} -#line 2604 "Zend/zend_language_scanner.c" -yy110: - YYDEBUG(110, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(111, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1656 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CONCAT_EQUAL); -} -#line 2614 "Zend/zend_language_scanner.c" -yy112: - YYDEBUG(112, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '*') goto yy209; -yy113: - YYDEBUG(113, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2082 "Zend/zend_language_scanner.l" - { - int doc_com; - - if (yyleng > 2) { - doc_com = 1; - RESET_DOC_COMMENT(); - } else { - doc_com = 0; - } - - while (YYCURSOR < YYLIMIT) { - if (*YYCURSOR++ == '*' && *YYCURSOR == '/') { - break; - } - } - - if (YYCURSOR < YYLIMIT) { - YYCURSOR++; - } else { - zend_error(E_COMPILE_WARNING, "Unterminated comment starting line %d", CG(zend_lineno)); - } - - yyleng = YYCURSOR - SCNG(yy_text); - HANDLE_NEWLINES(yytext, yyleng); - - if (doc_com) { - CG(doc_comment) = zend_string_init(yytext, yyleng, 0); - if (PARSER_MODE()) { - SKIP_TOKEN(T_DOC_COMMENT); - } - RETURN_TOKEN(T_DOC_COMMENT); - } - - if (PARSER_MODE()) { - SKIP_TOKEN(T_COMMENT); - } - RETURN_TOKEN(T_COMMENT); -} -#line 2662 "Zend/zend_language_scanner.c" -yy114: - YYDEBUG(114, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(115, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1652 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DIV_EQUAL); -} -#line 2672 "Zend/zend_language_scanner.c" -yy116: - YYDEBUG(116, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 64) { - goto yy210; - } - goto yy82; -yy117: - YYDEBUG(117, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '+') goto yy213; - goto yy82; - } else { - if (yych <= '-') goto yy213; - if (yych <= '/') goto yy82; - if (yych <= '9') goto yy214; - goto yy82; - } -yy118: - YYDEBUG(118, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy216; - } - goto yy82; -yy119: - YYDEBUG(119, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(120, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1448 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); -} -#line 2708 "Zend/zend_language_scanner.c" -yy121: - YYDEBUG(121, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ';') goto yy122; - if (yych <= '<') goto yy219; - if (yych <= '=') goto yy221; -yy122: - YYDEBUG(122, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1704 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SL); -} -#line 2723 "Zend/zend_language_scanner.c" -yy123: - YYDEBUG(123, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '>') goto yy223; - YYDEBUG(124, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1624 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); -} -#line 2734 "Zend/zend_language_scanner.c" -yy125: - YYDEBUG(125, *YYCURSOR); - ++YYCURSOR; - goto yy70; -yy126: - YYDEBUG(126, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy225; - YYDEBUG(127, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1612 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_EQUAL); -} -#line 2749 "Zend/zend_language_scanner.c" -yy128: - YYDEBUG(128, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(129, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1580 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DOUBLE_ARROW); -} -#line 2759 "Zend/zend_language_scanner.c" -yy130: - YYDEBUG(130, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(131, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1628 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); -} -#line 2769 "Zend/zend_language_scanner.c" -yy132: - YYDEBUG(132, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '=') goto yy227; - YYDEBUG(133, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1708 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SR); -} -#line 2780 "Zend/zend_language_scanner.c" -yy134: - YYDEBUG(134, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy229; - if (yych == '\r') goto yy230; -yy135: - YYDEBUG(135, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2121 "Zend/zend_language_scanner.l" - { - BEGIN(INITIAL); - if (yytext[yyleng-1] != '>') { - CG(increment_lineno) = 1; - } - if (PARSER_MODE()) { - RETURN_TOKEN(';'); /* implicit ';' at php-end tag */ - } - RETURN_TOKEN(T_CLOSE_TAG); -} -#line 2800 "Zend/zend_language_scanner.c" -yy136: - YYDEBUG(136, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(137, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1460 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_COALESCE); -} -#line 2810 "Zend/zend_language_scanner.c" -yy138: - YYDEBUG(138, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy231; - if (yych == 's') goto yy231; - goto yy44; -yy139: - YYDEBUG(139, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy232; - if (yych == 'd') goto yy232; - goto yy44; -yy140: - YYDEBUG(140, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy234; - if (yych == 'r') goto yy234; - goto yy44; -yy141: - YYDEBUG(141, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(142, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1364 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_AS); -} -#line 2841 "Zend/zend_language_scanner.c" -yy143: - YYDEBUG(143, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '<') goto yy235; - goto yy82; -yy144: - YYDEBUG(144, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy236; - if (yych == 'e') goto yy236; - goto yy44; -yy145: - YYDEBUG(145, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'L') { - if (yych <= 'K') goto yy44; - goto yy237; - } else { - if (yych <= 'R') goto yy44; - if (yych <= 'S') goto yy238; - goto yy239; - } - } else { - if (yych <= 'r') { - if (yych == 'l') goto yy237; - goto yy44; - } else { - if (yych <= 's') goto yy238; - if (yych <= 't') goto yy239; - goto yy44; - } - } -yy146: - YYDEBUG(146, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'A') goto yy240; - if (yych <= 'N') goto yy44; - goto yy241; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy44; - goto yy240; - } else { - if (yych == 'o') goto yy241; - goto yy44; - } - } -yy147: - YYDEBUG(147, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy242; - if (yych == 'n') goto yy242; - goto yy44; -yy148: - YYDEBUG(148, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'F') { - if (yych == 'C') goto yy243; - if (yych <= 'E') goto yy44; - goto yy244; - } else { - if (yych <= 'c') { - if (yych <= 'b') goto yy44; - goto yy243; - } else { - if (yych == 'f') goto yy244; - goto yy44; - } - } -yy149: - YYDEBUG(149, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy245; - if (yych == 'e') goto yy245; - goto yy44; -yy150: - YYDEBUG(150, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(151, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1332 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DO); -} -#line 2931 "Zend/zend_language_scanner.c" -yy152: - YYDEBUG(152, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy247; - if (yych == 'h') goto yy247; - goto yy44; -yy153: - YYDEBUG(153, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy248; - if (yych == 's') goto yy248; - goto yy44; -yy154: - YYDEBUG(154, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy249; - if (yych == 'p') goto yy249; - goto yy44; -yy155: - YYDEBUG(155, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy250; - if (yych == 'd') goto yy250; - goto yy44; -yy156: - YYDEBUG(156, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy251; - if (yych == 'a') goto yy251; - goto yy44; -yy157: - YYDEBUG(157, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych == 'I') goto yy252; - if (yych <= 'S') goto yy44; - goto yy253; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy44; - goto yy252; - } else { - if (yych == 't') goto yy253; - goto yy44; - } - } -yy158: - YYDEBUG(158, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy254; - if (yych == 'n') goto yy254; - goto yy44; -yy159: - YYDEBUG(159, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy255; - if (yych == 'r') goto yy255; - goto yy44; -yy160: - YYDEBUG(160, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy257; - if (yych == 'n') goto yy257; - goto yy44; -yy161: - YYDEBUG(161, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy258; - if (yych == 'o') goto yy258; - goto yy44; -yy162: - YYDEBUG(162, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy259; - if (yych == 't') goto yy259; - goto yy44; -yy163: - YYDEBUG(163, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(164, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1308 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IF); -} -#line 3020 "Zend/zend_language_scanner.c" -yy165: - YYDEBUG(165, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy260; - if (yych == 'p') goto yy260; - goto yy44; -yy166: - YYDEBUG(166, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'C') { - if (yych <= 'B') goto yy44; - goto yy261; - } else { - if (yych <= 'R') goto yy44; - if (yych <= 'S') goto yy262; - goto yy263; - } - } else { - if (yych <= 'r') { - if (yych == 'c') goto yy261; - goto yy44; - } else { - if (yych <= 's') goto yy262; - if (yych <= 't') goto yy263; - goto yy44; - } - } -yy167: - YYDEBUG(167, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy264; - if (yych == 's') goto yy264; - goto yy44; -yy168: - YYDEBUG(168, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy265; - if (yych == 's') goto yy265; - goto yy44; -yy169: - YYDEBUG(169, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy266; - if (yych == 'm') goto yy266; - goto yy44; -yy170: - YYDEBUG(170, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'W') goto yy267; - if (yych == 'w') goto yy267; - goto yy44; -yy171: - YYDEBUG(171, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(172, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1692 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LOGICAL_OR); -} -#line 3085 "Zend/zend_language_scanner.c" -yy173: - YYDEBUG(173, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'O') { - if (yych == 'I') goto yy269; - if (yych <= 'N') goto yy44; - goto yy270; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy44; - goto yy269; - } else { - if (yych == 'o') goto yy270; - goto yy44; - } - } -yy174: - YYDEBUG(174, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy271; - if (yych == 'b') goto yy271; - goto yy44; -yy175: - YYDEBUG(175, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych == 'Q') goto yy272; - if (yych <= 'S') goto yy44; - goto yy273; - } else { - if (yych <= 'q') { - if (yych <= 'p') goto yy44; - goto yy272; - } else { - if (yych == 't') goto yy273; - goto yy44; - } - } -yy176: - YYDEBUG(176, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy274; - if (yych == 'a') goto yy274; - goto yy44; -yy177: - YYDEBUG(177, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy275; - if (yych == 'i') goto yy275; - goto yy44; -yy178: - YYDEBUG(178, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy276; - if (yych == 'r') goto yy276; - goto yy44; -yy179: - YYDEBUG(179, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'Y') { - if (yych == 'A') goto yy277; - if (yych <= 'X') goto yy44; - goto yy278; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy44; - goto yy277; - } else { - if (yych == 'y') goto yy278; - goto yy44; - } - } -yy180: - YYDEBUG(180, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy280; - if (yych == 's') goto yy280; - goto yy44; -yy181: - YYDEBUG(181, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy281; - if (yych == 'e') goto yy281; - goto yy44; -yy182: - YYDEBUG(182, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy283; - if (yych == 'r') goto yy283; - goto yy44; -yy183: - YYDEBUG(183, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy285; - if (yych == 'i') goto yy285; - goto yy44; -yy184: - YYDEBUG(184, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy286; - if (yych == 'r') goto yy286; - goto yy44; -yy185: - YYDEBUG(185, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy288; - if (yych == 'e') goto yy288; - goto yy44; -yy186: - YYDEBUG(186, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(187, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1680 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_XOR_EQUAL); -} -#line 3203 "Zend/zend_language_scanner.c" -yy188: - YYDEBUG(188, *YYCURSOR); - yych = *++YYCURSOR; - switch (yych) { - case 'C': - case 'c': goto yy289; - case 'D': - case 'd': goto yy290; - case 'F': - case 'f': goto yy291; - case 'H': - case 'h': goto yy292; - case 'L': - case 'l': goto yy293; - case 'M': - case 'm': goto yy294; - case 'N': - case 'n': goto yy295; - case 'T': - case 't': goto yy296; - default: goto yy44; - } -yy189: - YYDEBUG(189, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(190, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1676 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_OR_EQUAL); -} -#line 3235 "Zend/zend_language_scanner.c" -yy191: - YYDEBUG(191, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(192, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1684 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_BOOLEAN_OR); -} -#line 3245 "Zend/zend_language_scanner.c" -yy193: - YYDEBUG(193, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(194, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1608 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_NOT_IDENTICAL); -} -#line 3255 "Zend/zend_language_scanner.c" -yy195: - YYDEBUG(195, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy297; - if (yych == 'r') goto yy297; - goto yy82; -yy196: - YYDEBUG(196, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy298; - if (yych == 'n') goto yy298; - goto yy82; -yy197: - YYDEBUG(197, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy299; - if (yych == 'o') goto yy299; - goto yy82; -yy198: - YYDEBUG(198, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy300; - if (yych == 'u') goto yy300; - goto yy82; -yy199: - YYDEBUG(199, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy301; - if (yych == 'o') goto yy301; - goto yy82; -yy200: - YYDEBUG(200, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy302; - if (yych == 't') goto yy302; - goto yy82; -yy201: - YYDEBUG(201, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'J') goto yy303; - if (yych == 'j') goto yy303; - goto yy82; -yy202: - YYDEBUG(202, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy304; - if (yych == 'a') goto yy304; - goto yy82; -yy203: - YYDEBUG(203, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy305; - if (yych == 'r') goto yy305; - goto yy82; -yy204: - YYDEBUG(204, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy306; - if (yych == 's') goto yy306; - goto yy82; -yy205: - YYDEBUG(205, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(206, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1648 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_POW_EQUAL); -} -#line 3325 "Zend/zend_language_scanner.c" -yy207: - YYDEBUG(207, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(208, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1456 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ELLIPSIS); -} -#line 3335 "Zend/zend_language_scanner.c" -yy209: - YYDEBUG(209, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '\f') { - if (yych <= 0x08) goto yy82; - if (yych <= '\n') goto yy307; - goto yy82; - } else { - if (yych <= '\r') goto yy307; - if (yych == ' ') goto yy307; - goto yy82; - } -yy210: - YYDEBUG(210, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(211, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy210; - } - YYDEBUG(212, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1753 "Zend/zend_language_scanner.l" - { - char *bin = yytext + 2; /* Skip "0b" */ - int len = yyleng - 2; - char *end; - - /* Skip any leading 0s */ - while (*bin == '0') { - ++bin; - --len; - } - - if (len < SIZEOF_ZEND_LONG * 8) { - if (len == 0) { - ZVAL_LONG(zendlval, 0); - } else { - errno = 0; - ZVAL_LONG(zendlval, ZEND_STRTOL(bin, &end, 2)); - ZEND_ASSERT(!errno && end == yytext + yyleng); - } - RETURN_TOKEN_WITH_VAL(T_LNUMBER); - } else { - ZVAL_DOUBLE(zendlval, zend_bin_strtod(bin, (const char **)&end)); - /* errno isn't checked since we allow HUGE_VAL/INF overflow */ - ZEND_ASSERT(end == yytext + yyleng); - RETURN_TOKEN_WITH_VAL(T_DNUMBER); - } -} -#line 3387 "Zend/zend_language_scanner.c" -yy213: - YYDEBUG(213, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy82; - if (yych >= ':') goto yy82; -yy214: - YYDEBUG(214, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(215, *YYCURSOR); - if (yych <= '/') goto yy109; - if (yych <= '9') goto yy214; - goto yy109; -yy216: - YYDEBUG(216, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(217, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy216; - } - YYDEBUG(218, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1832 "Zend/zend_language_scanner.l" - { - char *hex = yytext + 2; /* Skip "0x" */ - int len = yyleng - 2; - char *end; - - /* Skip any leading 0s */ - while (*hex == '0') { - hex++; - len--; - } - - if (len < SIZEOF_ZEND_LONG * 2 || (len == SIZEOF_ZEND_LONG * 2 && *hex <= '7')) { - if (len == 0) { - ZVAL_LONG(zendlval, 0); - } else { - errno = 0; - ZVAL_LONG(zendlval, ZEND_STRTOL(hex, &end, 16)); - ZEND_ASSERT(!errno && end == hex + len); - } - RETURN_TOKEN_WITH_VAL(T_LNUMBER); - } else { - ZVAL_DOUBLE(zendlval, zend_hex_strtod(hex, (const char **)&end)); - /* errno isn't checked since we allow HUGE_VAL/INF overflow */ - ZEND_ASSERT(end == hex + len); - RETURN_TOKEN_WITH_VAL(T_DNUMBER); - } -} -#line 3441 "Zend/zend_language_scanner.c" -yy219: - YYDEBUG(219, *YYCURSOR); - ++YYCURSOR; - YYFILL(2); - yych = *YYCURSOR; - YYDEBUG(220, *YYCURSOR); - if (yych <= '\'') { - if (yych <= ' ') { - if (yych == '\t') goto yy219; - if (yych <= 0x1F) goto yy82; - goto yy219; - } else { - if (yych == '"') goto yy309; - if (yych <= '&') goto yy82; - goto yy310; - } - } else { - if (yych <= '_') { - if (yych <= '@') goto yy82; - if (yych <= 'Z') goto yy311; - if (yych <= '^') goto yy82; - goto yy311; - } else { - if (yych <= '`') goto yy82; - if (yych <= 'z') goto yy311; - if (yych <= 0x7F) goto yy82; - goto yy311; - } - } -yy221: - YYDEBUG(221, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(222, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1664 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SL_EQUAL); -} -#line 3480 "Zend/zend_language_scanner.c" -yy223: - YYDEBUG(223, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(224, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1620 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SPACESHIP); -} -#line 3490 "Zend/zend_language_scanner.c" -yy225: - YYDEBUG(225, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(226, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1604 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IS_IDENTICAL); -} -#line 3500 "Zend/zend_language_scanner.c" -yy227: - YYDEBUG(227, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(228, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1668 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SR_EQUAL); -} -#line 3510 "Zend/zend_language_scanner.c" -yy229: - YYDEBUG(229, *YYCURSOR); - ++YYCURSOR; - goto yy135; -yy230: - YYDEBUG(230, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy229; - goto yy135; -yy231: - YYDEBUG(231, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy313; - if (yych == 't') goto yy313; - goto yy44; -yy232: - YYDEBUG(232, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(233, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1696 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LOGICAL_AND); -} -#line 3538 "Zend/zend_language_scanner.c" -yy234: - YYDEBUG(234, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy314; - if (yych == 'a') goto yy314; - goto yy44; -yy235: - YYDEBUG(235, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '<') goto yy219; - goto yy82; -yy236: - YYDEBUG(236, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy315; - if (yych == 'a') goto yy315; - goto yy44; -yy237: - YYDEBUG(237, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy316; - if (yych == 'l') goto yy316; - goto yy44; -yy238: - YYDEBUG(238, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy317; - if (yych == 'e') goto yy317; - goto yy44; -yy239: - YYDEBUG(239, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy319; - if (yych == 'c') goto yy319; - goto yy44; -yy240: - YYDEBUG(240, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy320; - if (yych == 's') goto yy320; - goto yy44; -yy241: - YYDEBUG(241, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy321; - if (yych == 'n') goto yy321; - goto yy44; -yy242: - YYDEBUG(242, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'R') goto yy44; - if (yych <= 'S') goto yy322; - goto yy323; - } else { - if (yych <= 'r') goto yy44; - if (yych <= 's') goto yy322; - if (yych <= 't') goto yy323; - goto yy44; - } -yy243: - YYDEBUG(243, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy324; - if (yych == 'l') goto yy324; - goto yy44; -yy244: - YYDEBUG(244, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy325; - if (yych == 'a') goto yy325; - goto yy44; -yy245: - YYDEBUG(245, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(246, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1266 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_EXIT); -} -#line 3623 "Zend/zend_language_scanner.c" -yy247: - YYDEBUG(247, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy326; - if (yych == 'o') goto yy326; - goto yy44; -yy248: - YYDEBUG(248, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy328; - if (yych == 'e') goto yy328; - goto yy44; -yy249: - YYDEBUG(249, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy330; - if (yych == 't') goto yy330; - goto yy44; -yy250: - YYDEBUG(250, *YYCURSOR); - yych = *++YYCURSOR; - switch (yych) { - case 'D': - case 'd': goto yy331; - case 'F': - case 'f': goto yy332; - case 'I': - case 'i': goto yy333; - case 'S': - case 's': goto yy334; - case 'W': - case 'w': goto yy335; - default: goto yy44; - } -yy251: - YYDEBUG(251, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy336; - if (yych == 'l') goto yy336; - goto yy44; -yy252: - YYDEBUG(252, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy338; - if (yych == 't') goto yy338; - goto yy44; -yy253: - YYDEBUG(253, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy340; - if (yych == 'e') goto yy340; - goto yy44; -yy254: - YYDEBUG(254, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy341; - if (yych == 'a') goto yy341; - goto yy44; -yy255: - YYDEBUG(255, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy256; - if (yych <= '9') goto yy43; - } else { - if (yych == 'E') goto yy342; - if (yych <= 'Z') goto yy43; - } - } else { - if (yych <= 'd') { - if (yych != '`') goto yy43; - } else { - if (yych <= 'e') goto yy342; - if (yych <= 'z') goto yy43; - if (yych >= 0x80) goto yy43; - } - } -yy256: - YYDEBUG(256, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1336 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FOR); -} -#line 3709 "Zend/zend_language_scanner.c" -yy257: - YYDEBUG(257, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy343; - if (yych == 'c') goto yy343; - goto yy44; -yy258: - YYDEBUG(258, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy344; - if (yych == 'b') goto yy344; - goto yy44; -yy259: - YYDEBUG(259, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy345; - if (yych == 'o') goto yy345; - goto yy44; -yy260: - YYDEBUG(260, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy347; - if (yych == 'l') goto yy347; - goto yy44; -yy261: - YYDEBUG(261, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy348; - if (yych == 'l') goto yy348; - goto yy44; -yy262: - YYDEBUG(262, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy349; - if (yych == 't') goto yy349; - goto yy44; -yy263: - YYDEBUG(263, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy350; - if (yych == 'e') goto yy350; - goto yy44; -yy264: - YYDEBUG(264, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy351; - if (yych == 'e') goto yy351; - goto yy44; -yy265: - YYDEBUG(265, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy352; - if (yych == 't') goto yy352; - goto yy44; -yy266: - YYDEBUG(266, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy354; - if (yych == 'e') goto yy354; - goto yy44; -yy267: - YYDEBUG(267, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(268, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1464 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_NEW); -} -#line 3782 "Zend/zend_language_scanner.c" -yy269: - YYDEBUG(269, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'V') { - if (yych == 'N') goto yy355; - if (yych <= 'U') goto yy44; - goto yy356; - } else { - if (yych <= 'n') { - if (yych <= 'm') goto yy44; - goto yy355; - } else { - if (yych == 'v') goto yy356; - goto yy44; - } - } -yy270: - YYDEBUG(270, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy357; - if (yych == 't') goto yy357; - goto yy44; -yy271: - YYDEBUG(271, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy358; - if (yych == 'l') goto yy358; - goto yy44; -yy272: - YYDEBUG(272, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy359; - if (yych == 'u') goto yy359; - goto yy44; -yy273: - YYDEBUG(273, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy360; - if (yych == 'u') goto yy360; - goto yy44; -yy274: - YYDEBUG(274, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy361; - if (yych == 't') goto yy361; - goto yy44; -yy275: - YYDEBUG(275, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy362; - if (yych == 't') goto yy362; - goto yy44; -yy276: - YYDEBUG(276, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy363; - if (yych == 'o') goto yy363; - goto yy44; -yy277: - YYDEBUG(277, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy364; - if (yych == 'i') goto yy364; - goto yy44; -yy278: - YYDEBUG(278, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(279, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1292 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_TRY); -} -#line 3859 "Zend/zend_language_scanner.c" -yy280: - YYDEBUG(280, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy365; - if (yych == 'e') goto yy365; - goto yy44; -yy281: - YYDEBUG(281, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(282, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1528 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_USE); -} -#line 3878 "Zend/zend_language_scanner.c" -yy283: - YYDEBUG(283, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(284, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1472 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_VAR); -} -#line 3891 "Zend/zend_language_scanner.c" -yy285: - YYDEBUG(285, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy366; - if (yych == 'l') goto yy366; - goto yy44; -yy286: - YYDEBUG(286, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(287, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1700 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LOGICAL_XOR); -} -#line 3910 "Zend/zend_language_scanner.c" -yy288: - YYDEBUG(288, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy367; - if (yych == 'l') goto yy367; - goto yy44; -yy289: - YYDEBUG(289, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy368; - if (yych == 'l') goto yy368; - goto yy44; -yy290: - YYDEBUG(290, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy369; - if (yych == 'i') goto yy369; - goto yy44; -yy291: - YYDEBUG(291, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'I') goto yy370; - if (yych <= 'T') goto yy44; - goto yy371; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy44; - goto yy370; - } else { - if (yych == 'u') goto yy371; - goto yy44; - } - } -yy292: - YYDEBUG(292, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy372; - if (yych == 'a') goto yy372; - goto yy44; -yy293: - YYDEBUG(293, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy373; - if (yych == 'i') goto yy373; - goto yy44; -yy294: - YYDEBUG(294, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy374; - if (yych == 'e') goto yy374; - goto yy44; -yy295: - YYDEBUG(295, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy375; - if (yych == 'a') goto yy375; - goto yy44; -yy296: - YYDEBUG(296, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy376; - if (yych == 'r') goto yy376; - goto yy44; -yy297: - YYDEBUG(297, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy377; - if (yych == 'a') goto yy377; - goto yy82; -yy298: - YYDEBUG(298, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy378; - if (yych == 'a') goto yy378; - goto yy82; -yy299: - YYDEBUG(299, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy379; - if (yych == 'l') goto yy379; - goto yy82; -yy300: - YYDEBUG(300, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy380; - if (yych == 'b') goto yy380; - goto yy82; -yy301: - YYDEBUG(301, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy381; - if (yych == 'a') goto yy381; - goto yy82; -yy302: - YYDEBUG(302, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy386; - if (yych == 'e') goto yy386; - goto yy383; -yy303: - YYDEBUG(303, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy387; - if (yych == 'e') goto yy387; - goto yy82; -yy304: - YYDEBUG(304, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy388; - if (yych == 'l') goto yy388; - goto yy82; -yy305: - YYDEBUG(305, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy390; - if (yych == 'i') goto yy390; - goto yy82; -yy306: - YYDEBUG(306, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy391; - if (yych == 'e') goto yy391; - goto yy82; -yy307: - YYDEBUG(307, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(308, *YYCURSOR); - if (yych <= '\f') { - if (yych <= 0x08) goto yy113; - if (yych <= '\n') goto yy307; - goto yy113; - } else { - if (yych <= '\r') goto yy307; - if (yych == ' ') goto yy307; - goto yy113; - } -yy309: - YYDEBUG(309, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '"') goto yy82; - if (yych <= '/') goto yy393; - if (yych <= '9') goto yy82; - goto yy393; -yy310: - YYDEBUG(310, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\'') goto yy82; - if (yych <= '/') goto yy395; - if (yych <= '9') goto yy82; - goto yy395; -yy311: - YYDEBUG(311, *YYCURSOR); - ++YYCURSOR; - YYFILL(2); - yych = *YYCURSOR; - YYDEBUG(312, *YYCURSOR); - if (yych <= '@') { - if (yych <= '\f') { - if (yych == '\n') goto yy396; - goto yy82; - } else { - if (yych <= '\r') goto yy398; - if (yych <= '/') goto yy82; - if (yych <= '9') goto yy311; - goto yy82; - } - } else { - if (yych <= '_') { - if (yych <= 'Z') goto yy311; - if (yych <= '^') goto yy82; - goto yy311; - } else { - if (yych <= '`') goto yy82; - if (yych <= 'z') goto yy311; - if (yych <= 0x7F) goto yy82; - goto yy311; - } - } -yy313: - YYDEBUG(313, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy399; - if (yych == 'r') goto yy399; - goto yy44; -yy314: - YYDEBUG(314, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy400; - if (yych == 'y') goto yy400; - goto yy44; -yy315: - YYDEBUG(315, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'K') goto yy402; - if (yych == 'k') goto yy402; - goto yy44; -yy316: - YYDEBUG(316, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy404; - if (yych == 'a') goto yy404; - goto yy44; -yy317: - YYDEBUG(317, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(318, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1376 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CASE); -} -#line 4128 "Zend/zend_language_scanner.c" -yy319: - YYDEBUG(319, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy405; - if (yych == 'h') goto yy405; - goto yy44; -yy320: - YYDEBUG(320, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy407; - if (yych == 's') goto yy407; - goto yy44; -yy321: - YYDEBUG(321, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy409; - if (yych == 'e') goto yy409; - goto yy44; -yy322: - YYDEBUG(322, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy411; - if (yych == 't') goto yy411; - goto yy44; -yy323: - YYDEBUG(323, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy413; - if (yych == 'i') goto yy413; - goto yy44; -yy324: - YYDEBUG(324, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy414; - if (yych == 'a') goto yy414; - goto yy44; -yy325: - YYDEBUG(325, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy415; - if (yych == 'u') goto yy415; - goto yy44; -yy326: - YYDEBUG(326, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(327, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1396 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ECHO); -} -#line 4183 "Zend/zend_language_scanner.c" -yy328: - YYDEBUG(328, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy329; - if (yych <= '9') goto yy43; - } else { - if (yych == 'I') goto yy416; - if (yych <= 'Z') goto yy43; - } - } else { - if (yych <= 'h') { - if (yych != '`') goto yy43; - } else { - if (yych <= 'i') goto yy416; - if (yych <= 'z') goto yy43; - if (yych >= 0x80) goto yy43; - } - } -yy329: - YYDEBUG(329, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1320 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ELSE); -} -#line 4211 "Zend/zend_language_scanner.c" -yy330: - YYDEBUG(330, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy417; - if (yych == 'y') goto yy417; - goto yy44; -yy331: - YYDEBUG(331, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy419; - if (yych == 'e') goto yy419; - goto yy44; -yy332: - YYDEBUG(332, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy420; - if (yych == 'o') goto yy420; - goto yy44; -yy333: - YYDEBUG(333, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy421; - if (yych == 'f') goto yy421; - goto yy44; -yy334: - YYDEBUG(334, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'W') goto yy423; - if (yych == 'w') goto yy423; - goto yy44; -yy335: - YYDEBUG(335, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy424; - if (yych == 'h') goto yy424; - goto yy44; -yy336: - YYDEBUG(336, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(337, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1504 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_EVAL); -} -#line 4260 "Zend/zend_language_scanner.c" -yy338: - YYDEBUG(338, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(339, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1262 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_EXIT); -} -#line 4273 "Zend/zend_language_scanner.c" -yy340: - YYDEBUG(340, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy425; - if (yych == 'n') goto yy425; - goto yy44; -yy341: - YYDEBUG(341, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy426; - if (yych == 'l') goto yy426; - goto yy44; -yy342: - YYDEBUG(342, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy428; - if (yych == 'a') goto yy428; - goto yy44; -yy343: - YYDEBUG(343, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy429; - if (yych == 't') goto yy429; - goto yy44; -yy344: - YYDEBUG(344, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy430; - if (yych == 'a') goto yy430; - goto yy44; -yy345: - YYDEBUG(345, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(346, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1392 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_GOTO); -} -#line 4316 "Zend/zend_language_scanner.c" -yy347: - YYDEBUG(347, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy431; - if (yych == 'e') goto yy431; - goto yy44; -yy348: - YYDEBUG(348, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy432; - if (yych == 'u') goto yy432; - goto yy44; -yy349: - YYDEBUG(349, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'E') { - if (yych == 'A') goto yy433; - if (yych <= 'D') goto yy44; - goto yy434; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy44; - goto yy433; - } else { - if (yych == 'e') goto yy434; - goto yy44; - } - } -yy350: - YYDEBUG(350, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy435; - if (yych == 'r') goto yy435; - goto yy44; -yy351: - YYDEBUG(351, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy436; - if (yych == 't') goto yy436; - goto yy44; -yy352: - YYDEBUG(352, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(353, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1584 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LIST); -} -#line 4369 "Zend/zend_language_scanner.c" -yy354: - YYDEBUG(354, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy438; - if (yych == 's') goto yy438; - goto yy44; -yy355: - YYDEBUG(355, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy439; - if (yych == 't') goto yy439; - goto yy44; -yy356: - YYDEBUG(356, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy441; - if (yych == 'a') goto yy441; - goto yy44; -yy357: - YYDEBUG(357, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy442; - if (yych == 'e') goto yy442; - goto yy44; -yy358: - YYDEBUG(358, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy443; - if (yych == 'i') goto yy443; - goto yy44; -yy359: - YYDEBUG(359, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy444; - if (yych == 'i') goto yy444; - goto yy44; -yy360: - YYDEBUG(360, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy445; - if (yych == 'r') goto yy445; - goto yy44; -yy361: - YYDEBUG(361, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy446; - if (yych == 'i') goto yy446; - goto yy44; -yy362: - YYDEBUG(362, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy447; - if (yych == 'c') goto yy447; - goto yy44; -yy363: - YYDEBUG(363, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'W') goto yy448; - if (yych == 'w') goto yy448; - goto yy44; -yy364: - YYDEBUG(364, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy450; - if (yych == 't') goto yy450; - goto yy44; -yy365: - YYDEBUG(365, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy452; - if (yych == 't') goto yy452; - goto yy44; -yy366: - YYDEBUG(366, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy454; - if (yych == 'e') goto yy454; - goto yy44; -yy367: - YYDEBUG(367, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy456; - if (yych == 'd') goto yy456; - goto yy44; -yy368: - YYDEBUG(368, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy458; - if (yych == 'a') goto yy458; - goto yy44; -yy369: - YYDEBUG(369, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy459; - if (yych == 'r') goto yy459; - goto yy44; -yy370: - YYDEBUG(370, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy460; - if (yych == 'l') goto yy460; - goto yy44; -yy371: - YYDEBUG(371, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy461; - if (yych == 'n') goto yy461; - goto yy44; -yy372: - YYDEBUG(372, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy462; - if (yych == 'l') goto yy462; - goto yy44; -yy373: - YYDEBUG(373, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy463; - if (yych == 'n') goto yy463; - goto yy44; -yy374: - YYDEBUG(374, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy464; - if (yych == 't') goto yy464; - goto yy44; -yy375: - YYDEBUG(375, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy465; - if (yych == 'm') goto yy465; - goto yy44; -yy376: - YYDEBUG(376, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy466; - if (yych == 'a') goto yy466; - goto yy44; -yy377: - YYDEBUG(377, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy467; - if (yych == 'y') goto yy467; - goto yy82; -yy378: - YYDEBUG(378, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy469; - if (yych == 'r') goto yy469; - goto yy82; -yy379: - YYDEBUG(379, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy474; - if (yych == 'e') goto yy474; - goto yy471; -yy380: - YYDEBUG(380, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy475; - if (yych == 'l') goto yy475; - goto yy82; -yy381: - YYDEBUG(381, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy388; - if (yych == 't') goto yy388; - goto yy82; -yy382: - YYDEBUG(382, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy383: - YYDEBUG(383, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy382; - goto yy82; - } else { - if (yych <= ' ') goto yy382; - if (yych != ')') goto yy82; - } - YYDEBUG(384, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(385, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1476 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INT_CAST); -} -#line 4560 "Zend/zend_language_scanner.c" -yy386: - YYDEBUG(386, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'G') goto yy476; - if (yych == 'g') goto yy476; - goto yy82; -yy387: - YYDEBUG(387, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy477; - if (yych == 'c') goto yy477; - goto yy82; -yy388: - YYDEBUG(388, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(389, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy388; - goto yy82; - } else { - if (yych <= ' ') goto yy388; - if (yych == ')') goto yy478; - goto yy82; - } -yy390: - YYDEBUG(390, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy480; - if (yych == 'n') goto yy480; - goto yy82; -yy391: - YYDEBUG(391, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy481; - if (yych == 't') goto yy481; - goto yy82; -yy392: - YYDEBUG(392, *YYCURSOR); - ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; -yy393: - YYDEBUG(393, *YYCURSOR); - if (yych <= 'Z') { - if (yych <= '/') { - if (yych == '"') goto yy483; - goto yy82; - } else { - if (yych <= '9') goto yy392; - if (yych <= '@') goto yy82; - goto yy392; - } - } else { - if (yych <= '`') { - if (yych == '_') goto yy392; - goto yy82; - } else { - if (yych <= 'z') goto yy392; - if (yych <= 0x7F) goto yy82; - goto yy392; - } - } -yy394: - YYDEBUG(394, *YYCURSOR); - ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; -yy395: - YYDEBUG(395, *YYCURSOR); - if (yych <= 'Z') { - if (yych <= '/') { - if (yych == '\'') goto yy483; - goto yy82; - } else { - if (yych <= '9') goto yy394; - if (yych <= '@') goto yy82; - goto yy394; - } - } else { - if (yych <= '`') { - if (yych == '_') goto yy394; - goto yy82; - } else { - if (yych <= 'z') goto yy394; - if (yych <= 0x7F) goto yy82; - goto yy394; - } - } -yy396: - YYDEBUG(396, *YYCURSOR); - ++YYCURSOR; -yy397: - YYDEBUG(397, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2269 "Zend/zend_language_scanner.l" - { - char *s; - unsigned char *saved_cursor; - int bprefix = (yytext[0] != '<') ? 1 : 0, spacing = 0, indentation = 0; - zend_heredoc_label *heredoc_label = emalloc(sizeof(zend_heredoc_label)); - zend_bool is_heredoc = 1; - - CG(zend_lineno)++; - heredoc_label->length = yyleng-bprefix-3-1-(yytext[yyleng-2]=='\r'?1:0); - s = yytext+bprefix+3; - while ((*s == ' ') || (*s == '\t')) { - s++; - heredoc_label->length--; - } - - if (*s == '\'') { - s++; - heredoc_label->length -= 2; - is_heredoc = 0; - - BEGIN(ST_NOWDOC); - } else { - if (*s == '"') { - s++; - heredoc_label->length -= 2; - } - - BEGIN(ST_HEREDOC); - } - - heredoc_label->label = estrndup(s, heredoc_label->length); - heredoc_label->indentation = 0; - saved_cursor = YYCURSOR; - - zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) heredoc_label); - - while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { - if (*YYCURSOR == '\t') { - spacing |= HEREDOC_USING_TABS; - } else { - spacing |= HEREDOC_USING_SPACES; - } - ++YYCURSOR; - ++indentation; - } - - if (YYCURSOR == YYLIMIT) { - YYCURSOR = saved_cursor; - RETURN_TOKEN(T_START_HEREDOC); - } - - /* Check for ending label on the next line */ - if (heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, heredoc_label->length)) { - if (!IS_LABEL_START(YYCURSOR[heredoc_label->length])) { - if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { - zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - } - - YYCURSOR = saved_cursor; - heredoc_label->indentation = indentation; - - BEGIN(ST_END_HEREDOC); - RETURN_TOKEN(T_START_HEREDOC); - } - } - - YYCURSOR = saved_cursor; - - if (is_heredoc && !SCNG(heredoc_scan_ahead)) { - zend_lex_state current_state; - int heredoc_nesting_level = 1; - int first_token = 0; - - zend_save_lexical_state(¤t_state); - - SCNG(heredoc_scan_ahead) = 1; - SCNG(heredoc_indentation) = 0; - SCNG(heredoc_indentation_uses_spaces) = 0; - LANG_SCNG(on_event) = NULL; - - zend_ptr_stack_reverse_apply(¤t_state.heredoc_label_stack, copy_heredoc_label_stack); - - zend_exception_save(); - while (heredoc_nesting_level) { - zval zv; - int retval; - - ZVAL_UNDEF(&zv); - retval = lex_scan(&zv, NULL); - zval_ptr_dtor_nogc(&zv); - - if (EG(exception)) { - zend_clear_exception(); - break; - } - - if (!first_token) { - first_token = retval; - } - - switch (retval) { - case T_START_HEREDOC: - ++heredoc_nesting_level; - break; - case T_END_HEREDOC: - --heredoc_nesting_level; - break; - case END: - heredoc_nesting_level = 0; - } - } - zend_exception_restore(); - - if ( - (first_token == T_VARIABLE - || first_token == T_DOLLAR_OPEN_CURLY_BRACES - || first_token == T_CURLY_OPEN - ) && SCNG(heredoc_indentation)) { - zend_throw_exception_ex(zend_ce_parse_error, 0, "Invalid body indentation level (expecting an indentation level of at least %d)", SCNG(heredoc_indentation)); - } - - heredoc_label->indentation = SCNG(heredoc_indentation); - heredoc_label->indentation_uses_spaces = SCNG(heredoc_indentation_uses_spaces); - - zend_restore_lexical_state(¤t_state); - SCNG(heredoc_scan_ahead) = 0; - CG(increment_lineno) = 0; - } - - RETURN_TOKEN(T_START_HEREDOC); -} -#line 4789 "Zend/zend_language_scanner.c" -yy398: - YYDEBUG(398, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy396; - goto yy397; -yy399: - YYDEBUG(399, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy484; - if (yych == 'a') goto yy484; - goto yy44; -yy400: - YYDEBUG(400, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(401, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1588 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ARRAY); -} -#line 4813 "Zend/zend_language_scanner.c" -yy402: - YYDEBUG(402, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(403, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1384 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_BREAK); -} -#line 4826 "Zend/zend_language_scanner.c" -yy404: - YYDEBUG(404, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy485; - if (yych == 'b') goto yy485; - goto yy44; -yy405: - YYDEBUG(405, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(406, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1296 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CATCH); -} -#line 4845 "Zend/zend_language_scanner.c" -yy407: - YYDEBUG(407, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(408, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1404 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CLASS); -} -#line 4858 "Zend/zend_language_scanner.c" -yy409: - YYDEBUG(409, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(410, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1468 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CLONE); -} -#line 4871 "Zend/zend_language_scanner.c" -yy411: - YYDEBUG(411, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(412, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1274 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CONST); -} -#line 4884 "Zend/zend_language_scanner.c" -yy413: - YYDEBUG(413, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy486; - if (yych == 'n') goto yy486; - goto yy44; -yy414: - YYDEBUG(414, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy487; - if (yych == 'r') goto yy487; - goto yy44; -yy415: - YYDEBUG(415, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy488; - if (yych == 'l') goto yy488; - goto yy44; -yy416: - YYDEBUG(416, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy489; - if (yych == 'f') goto yy489; - goto yy44; -yy417: - YYDEBUG(417, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(418, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1544 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_EMPTY); -} -#line 4921 "Zend/zend_language_scanner.c" -yy419: - YYDEBUG(419, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy491; - if (yych == 'c') goto yy491; - goto yy44; -yy420: - YYDEBUG(420, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy492; - if (yych == 'r') goto yy492; - goto yy44; -yy421: - YYDEBUG(421, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(422, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1316 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDIF); -} -#line 4946 "Zend/zend_language_scanner.c" -yy423: - YYDEBUG(423, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy494; - if (yych == 'i') goto yy494; - goto yy44; -yy424: - YYDEBUG(424, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy495; - if (yych == 'i') goto yy495; - goto yy44; -yy425: - YYDEBUG(425, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy496; - if (yych == 'd') goto yy496; - goto yy44; -yy426: - YYDEBUG(426, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy427; - if (yych <= '9') goto yy43; - } else { - if (yych == 'L') goto yy497; - if (yych <= 'Z') goto yy43; - } - } else { - if (yych <= 'k') { - if (yych != '`') goto yy43; - } else { - if (yych <= 'l') goto yy497; - if (yych <= 'z') goto yy43; - if (yych >= 0x80) goto yy43; - } - } -yy427: - YYDEBUG(427, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1560 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FINAL); -} -#line 4992 "Zend/zend_language_scanner.c" -yy428: - YYDEBUG(428, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy498; - if (yych == 'c') goto yy498; - goto yy44; -yy429: - YYDEBUG(429, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy499; - if (yych == 'i') goto yy499; - goto yy44; -yy430: - YYDEBUG(430, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy500; - if (yych == 'l') goto yy500; - goto yy44; -yy431: - YYDEBUG(431, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy502; - if (yych == 'm') goto yy502; - goto yy44; -yy432: - YYDEBUG(432, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy503; - if (yych == 'd') goto yy503; - goto yy44; -yy433: - YYDEBUG(433, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy504; - if (yych == 'n') goto yy504; - goto yy44; -yy434: - YYDEBUG(434, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy505; - if (yych == 'a') goto yy505; - goto yy44; -yy435: - YYDEBUG(435, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy506; - if (yych == 'f') goto yy506; - goto yy44; -yy436: - YYDEBUG(436, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(437, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1540 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ISSET); -} -#line 5053 "Zend/zend_language_scanner.c" -yy438: - YYDEBUG(438, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy507; - if (yych == 'p') goto yy507; - goto yy44; -yy439: - YYDEBUG(439, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(440, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1400 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PRINT); -} -#line 5072 "Zend/zend_language_scanner.c" -yy441: - YYDEBUG(441, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy508; - if (yych == 't') goto yy508; - goto yy44; -yy442: - YYDEBUG(442, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy509; - if (yych == 'c') goto yy509; - goto yy44; -yy443: - YYDEBUG(443, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy510; - if (yych == 'c') goto yy510; - goto yy44; -yy444: - YYDEBUG(444, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy512; - if (yych == 'r') goto yy512; - goto yy44; -yy445: - YYDEBUG(445, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy513; - if (yych == 'n') goto yy513; - goto yy44; -yy446: - YYDEBUG(446, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy515; - if (yych == 'c') goto yy515; - goto yy44; -yy447: - YYDEBUG(447, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy517; - if (yych == 'h') goto yy517; - goto yy44; -yy448: - YYDEBUG(448, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(449, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1304 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_THROW); -} -#line 5127 "Zend/zend_language_scanner.c" -yy450: - YYDEBUG(450, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(451, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1412 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_TRAIT); -} -#line 5140 "Zend/zend_language_scanner.c" -yy452: - YYDEBUG(452, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(453, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1576 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_UNSET); -} -#line 5153 "Zend/zend_language_scanner.c" -yy454: - YYDEBUG(454, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(455, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1324 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_WHILE); -} -#line 5166 "Zend/zend_language_scanner.c" -yy456: - YYDEBUG(456, *YYCURSOR); - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy43; - } - if (yych <= '\f') { - if (yych <= 0x08) goto yy457; - if (yych <= '\n') goto yy519; - } else { - if (yych <= '\r') goto yy519; - if (yych == ' ') goto yy519; - } -yy457: - YYDEBUG(457, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1288 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_YIELD); -} -#line 5188 "Zend/zend_language_scanner.c" -yy458: - YYDEBUG(458, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy521; - if (yych == 's') goto yy521; - goto yy44; -yy459: - YYDEBUG(459, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy522; - goto yy44; -yy460: - YYDEBUG(460, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy523; - if (yych == 'e') goto yy523; - goto yy44; -yy461: - YYDEBUG(461, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy524; - if (yych == 'c') goto yy524; - goto yy44; -yy462: - YYDEBUG(462, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy525; - if (yych == 't') goto yy525; - goto yy44; -yy463: - YYDEBUG(463, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy526; - if (yych == 'e') goto yy526; - goto yy44; -yy464: - YYDEBUG(464, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy527; - if (yych == 'h') goto yy527; - goto yy44; -yy465: - YYDEBUG(465, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy528; - if (yych == 'e') goto yy528; - goto yy44; -yy466: - YYDEBUG(466, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy529; - if (yych == 'i') goto yy529; - goto yy44; -yy467: - YYDEBUG(467, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(468, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy467; - goto yy82; - } else { - if (yych <= ' ') goto yy467; - if (yych == ')') goto yy530; - goto yy82; - } -yy469: - YYDEBUG(469, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy532; - if (yych == 'y') goto yy532; - goto yy82; -yy470: - YYDEBUG(470, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy471: - YYDEBUG(471, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy470; - goto yy82; - } else { - if (yych <= ' ') goto yy470; - if (yych != ')') goto yy82; - } - YYDEBUG(472, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(473, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1496 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_BOOL_CAST); -} -#line 5284 "Zend/zend_language_scanner.c" -yy474: - YYDEBUG(474, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy534; - if (yych == 'a') goto yy534; - goto yy82; -yy475: - YYDEBUG(475, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy388; - if (yych == 'e') goto yy388; - goto yy82; -yy476: - YYDEBUG(476, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy535; - if (yych == 'e') goto yy535; - goto yy82; -yy477: - YYDEBUG(477, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy536; - if (yych == 't') goto yy536; - goto yy82; -yy478: - YYDEBUG(478, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(479, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1480 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DOUBLE_CAST); -} -#line 5318 "Zend/zend_language_scanner.c" -yy480: - YYDEBUG(480, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'G') goto yy532; - if (yych == 'g') goto yy532; - goto yy82; -yy481: - YYDEBUG(481, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(482, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy481; - goto yy82; - } else { - if (yych <= ' ') goto yy481; - if (yych == ')') goto yy538; - goto yy82; - } -yy483: - YYDEBUG(483, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy396; - if (yych == '\r') goto yy398; - goto yy82; -yy484: - YYDEBUG(484, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy540; - if (yych == 'c') goto yy540; - goto yy44; -yy485: - YYDEBUG(485, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy541; - if (yych == 'l') goto yy541; - goto yy44; -yy486: - YYDEBUG(486, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy542; - if (yych == 'u') goto yy542; - goto yy44; -yy487: - YYDEBUG(487, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy543; - if (yych == 'e') goto yy543; - goto yy44; -yy488: - YYDEBUG(488, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy545; - if (yych == 't') goto yy545; - goto yy44; -yy489: - YYDEBUG(489, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(490, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1312 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ELSEIF); -} -#line 5387 "Zend/zend_language_scanner.c" -yy491: - YYDEBUG(491, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy547; - if (yych == 'l') goto yy547; - goto yy44; -yy492: - YYDEBUG(492, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '^') { - if (yych <= '@') { - if (yych <= '/') goto yy493; - if (yych <= '9') goto yy43; - } else { - if (yych == 'E') goto yy548; - if (yych <= 'Z') goto yy43; - } - } else { - if (yych <= 'd') { - if (yych != '`') goto yy43; - } else { - if (yych <= 'e') goto yy548; - if (yych <= 'z') goto yy43; - if (yych >= 0x80) goto yy43; - } - } -yy493: - YYDEBUG(493, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1340 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDFOR); -} -#line 5421 "Zend/zend_language_scanner.c" -yy494: - YYDEBUG(494, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy549; - if (yych == 't') goto yy549; - goto yy44; -yy495: - YYDEBUG(495, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy550; - if (yych == 'l') goto yy550; - goto yy44; -yy496: - YYDEBUG(496, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy551; - if (yych == 's') goto yy551; - goto yy44; -yy497: - YYDEBUG(497, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy553; - if (yych == 'y') goto yy553; - goto yy44; -yy498: - YYDEBUG(498, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy555; - if (yych == 'h') goto yy555; - goto yy44; -yy499: - YYDEBUG(499, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy557; - if (yych == 'o') goto yy557; - goto yy44; -yy500: - YYDEBUG(500, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(501, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1536 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_GLOBAL); -} -#line 5470 "Zend/zend_language_scanner.c" -yy502: - YYDEBUG(502, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy558; - if (yych == 'e') goto yy558; - goto yy44; -yy503: - YYDEBUG(503, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy559; - if (yych == 'e') goto yy559; - goto yy44; -yy504: - YYDEBUG(504, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy561; - if (yych == 'c') goto yy561; - goto yy44; -yy505: - YYDEBUG(505, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy562; - if (yych == 'd') goto yy562; - goto yy44; -yy506: - YYDEBUG(506, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy563; - if (yych == 'a') goto yy563; - goto yy44; -yy507: - YYDEBUG(507, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy564; - if (yych == 'a') goto yy564; - goto yy44; -yy508: - YYDEBUG(508, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy565; - if (yych == 'e') goto yy565; - goto yy44; -yy509: - YYDEBUG(509, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy567; - if (yych == 't') goto yy567; - goto yy44; -yy510: - YYDEBUG(510, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(511, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1572 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PUBLIC); -} -#line 5531 "Zend/zend_language_scanner.c" -yy512: - YYDEBUG(512, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy568; - if (yych == 'e') goto yy568; - goto yy44; -yy513: - YYDEBUG(513, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(514, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1278 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_RETURN); -} -#line 5550 "Zend/zend_language_scanner.c" -yy515: - YYDEBUG(515, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(516, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1552 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_STATIC); -} -#line 5563 "Zend/zend_language_scanner.c" -yy517: - YYDEBUG(517, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(518, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1368 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_SWITCH); -} -#line 5576 "Zend/zend_language_scanner.c" -yy519: - YYDEBUG(519, *YYCURSOR); - ++YYCURSOR; - YYFILL(5); - yych = *YYCURSOR; - YYDEBUG(520, *YYCURSOR); - if (yych <= 0x1F) { - if (yych <= '\n') { - if (yych <= 0x08) goto yy82; - goto yy519; - } else { - if (yych == '\r') goto yy519; - goto yy82; - } - } else { - if (yych <= 'F') { - if (yych <= ' ') goto yy519; - if (yych <= 'E') goto yy82; - goto yy570; - } else { - if (yych == 'f') goto yy570; - goto yy82; - } - } -yy521: - YYDEBUG(521, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy571; - if (yych == 's') goto yy571; - goto yy44; -yy522: - YYDEBUG(522, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy572; - goto yy44; -yy523: - YYDEBUG(523, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy574; - goto yy44; -yy524: - YYDEBUG(524, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy575; - if (yych == 't') goto yy575; - goto yy44; -yy525: - YYDEBUG(525, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy576; - goto yy44; -yy526: - YYDEBUG(526, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy577; - goto yy44; -yy527: - YYDEBUG(527, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy578; - if (yych == 'o') goto yy578; - goto yy44; -yy528: - YYDEBUG(528, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy579; - if (yych == 's') goto yy579; - goto yy44; -yy529: - YYDEBUG(529, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy580; - if (yych == 't') goto yy580; - goto yy44; -yy530: - YYDEBUG(530, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(531, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1488 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ARRAY_CAST); -} -#line 5660 "Zend/zend_language_scanner.c" -yy532: - YYDEBUG(532, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(533, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy82; - } else { - if (yych <= ' ') goto yy532; - if (yych == ')') goto yy581; - goto yy82; - } -yy534: - YYDEBUG(534, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy470; - if (yych == 'n') goto yy470; - goto yy82; -yy535: - YYDEBUG(535, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy382; - if (yych == 'r') goto yy382; - goto yy82; -yy536: - YYDEBUG(536, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(537, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy536; - goto yy82; - } else { - if (yych <= ' ') goto yy536; - if (yych == ')') goto yy583; - goto yy82; - } -yy538: - YYDEBUG(538, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(539, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1500 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_UNSET_CAST); -} -#line 5710 "Zend/zend_language_scanner.c" -yy540: - YYDEBUG(540, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy585; - if (yych == 't') goto yy585; - goto yy44; -yy541: - YYDEBUG(541, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy587; - if (yych == 'e') goto yy587; - goto yy44; -yy542: - YYDEBUG(542, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy589; - if (yych == 'e') goto yy589; - goto yy44; -yy543: - YYDEBUG(543, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(544, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1352 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DECLARE); -} -#line 5741 "Zend/zend_language_scanner.c" -yy545: - YYDEBUG(545, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(546, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1380 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DEFAULT); -} -#line 5754 "Zend/zend_language_scanner.c" -yy547: - YYDEBUG(547, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy591; - if (yych == 'a') goto yy591; - goto yy44; -yy548: - YYDEBUG(548, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy592; - if (yych == 'a') goto yy592; - goto yy44; -yy549: - YYDEBUG(549, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy593; - if (yych == 'c') goto yy593; - goto yy44; -yy550: - YYDEBUG(550, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy594; - if (yych == 'e') goto yy594; - goto yy44; -yy551: - YYDEBUG(551, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(552, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1416 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_EXTENDS); -} -#line 5791 "Zend/zend_language_scanner.c" -yy553: - YYDEBUG(553, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(554, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1300 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FINALLY); -} -#line 5804 "Zend/zend_language_scanner.c" -yy555: - YYDEBUG(555, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(556, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1344 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FOREACH); -} -#line 5817 "Zend/zend_language_scanner.c" -yy557: - YYDEBUG(557, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy596; - if (yych == 'n') goto yy596; - goto yy44; -yy558: - YYDEBUG(558, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy598; - if (yych == 'n') goto yy598; - goto yy44; -yy559: - YYDEBUG(559, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy43; - } else { - if (yych <= '@') goto yy560; - if (yych <= 'Z') goto yy43; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy599; - } else { - if (yych <= 'z') goto yy43; - if (yych >= 0x80) goto yy43; - } - } -yy560: - YYDEBUG(560, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1508 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INCLUDE); -} -#line 5855 "Zend/zend_language_scanner.c" -yy561: - YYDEBUG(561, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy600; - if (yych == 'e') goto yy600; - goto yy44; -yy562: - YYDEBUG(562, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy601; - if (yych == 'o') goto yy601; - goto yy44; -yy563: - YYDEBUG(563, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy602; - if (yych == 'c') goto yy602; - goto yy44; -yy564: - YYDEBUG(564, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy603; - if (yych == 'c') goto yy603; - goto yy44; -yy565: - YYDEBUG(565, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(566, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1564 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PRIVATE); -} -#line 5892 "Zend/zend_language_scanner.c" -yy567: - YYDEBUG(567, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy604; - if (yych == 'e') goto yy604; - goto yy44; -yy568: - YYDEBUG(568, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy43; - } else { - if (yych <= '@') goto yy569; - if (yych <= 'Z') goto yy43; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy605; - } else { - if (yych <= 'z') goto yy43; - if (yych >= 0x80) goto yy43; - } - } -yy569: - YYDEBUG(569, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1516 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_REQUIRE); -} -#line 5924 "Zend/zend_language_scanner.c" -yy570: - YYDEBUG(570, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy606; - if (yych == 'r') goto yy606; - goto yy82; -yy571: - YYDEBUG(571, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy607; - goto yy44; -yy572: - YYDEBUG(572, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(573, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1918 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_DIR); -} -#line 5948 "Zend/zend_language_scanner.c" -yy574: - YYDEBUG(574, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy608; - goto yy44; -yy575: - YYDEBUG(575, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy610; - if (yych == 'i') goto yy610; - goto yy44; -yy576: - YYDEBUG(576, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy611; - if (yych == 'c') goto yy611; - goto yy44; -yy577: - YYDEBUG(577, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy612; - goto yy44; -yy578: - YYDEBUG(578, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy614; - if (yych == 'd') goto yy614; - goto yy44; -yy579: - YYDEBUG(579, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy615; - if (yych == 'p') goto yy615; - goto yy44; -yy580: - YYDEBUG(580, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy616; - goto yy44; -yy581: - YYDEBUG(581, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(582, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1484 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_STRING_CAST); -} -#line 5997 "Zend/zend_language_scanner.c" -yy583: - YYDEBUG(583, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(584, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1492 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_OBJECT_CAST); -} -#line 6007 "Zend/zend_language_scanner.c" -yy585: - YYDEBUG(585, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(586, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1556 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ABSTRACT); -} -#line 6020 "Zend/zend_language_scanner.c" -yy587: - YYDEBUG(587, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(588, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1592 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CALLABLE); -} -#line 6033 "Zend/zend_language_scanner.c" -yy589: - YYDEBUG(589, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(590, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1388 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CONTINUE); -} -#line 6046 "Zend/zend_language_scanner.c" -yy591: - YYDEBUG(591, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy617; - if (yych == 'r') goto yy617; - goto yy44; -yy592: - YYDEBUG(592, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy618; - if (yych == 'c') goto yy618; - goto yy44; -yy593: - YYDEBUG(593, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy619; - if (yych == 'h') goto yy619; - goto yy44; -yy594: - YYDEBUG(594, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(595, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1328 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDWHILE); -} -#line 6077 "Zend/zend_language_scanner.c" -yy596: - YYDEBUG(596, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(597, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1270 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FUNCTION); -} -#line 6090 "Zend/zend_language_scanner.c" -yy598: - YYDEBUG(598, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy621; - if (yych == 't') goto yy621; - goto yy44; -yy599: - YYDEBUG(599, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy622; - if (yych == 'o') goto yy622; - goto yy44; -yy600: - YYDEBUG(600, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy623; - if (yych == 'o') goto yy623; - goto yy44; -yy601: - YYDEBUG(601, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy624; - if (yych == 'f') goto yy624; - goto yy44; -yy602: - YYDEBUG(602, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy626; - if (yych == 'e') goto yy626; - goto yy44; -yy603: - YYDEBUG(603, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy628; - if (yych == 'e') goto yy628; - goto yy44; -yy604: - YYDEBUG(604, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy630; - if (yych == 'd') goto yy630; - goto yy44; -yy605: - YYDEBUG(605, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy632; - if (yych == 'o') goto yy632; - goto yy44; -yy606: - YYDEBUG(606, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy633; - if (yych == 'o') goto yy633; - goto yy82; -yy607: - YYDEBUG(607, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy634; - goto yy44; -yy608: - YYDEBUG(608, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(609, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1914 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FILE); -} -#line 6162 "Zend/zend_language_scanner.c" -yy610: - YYDEBUG(610, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy636; - if (yych == 'o') goto yy636; - goto yy44; -yy611: - YYDEBUG(611, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy637; - if (yych == 'o') goto yy637; - goto yy44; -yy612: - YYDEBUG(612, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(613, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1910 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_LINE); -} -#line 6187 "Zend/zend_language_scanner.c" -yy614: - YYDEBUG(614, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy638; - goto yy44; -yy615: - YYDEBUG(615, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy639; - if (yych == 'a') goto yy639; - goto yy44; -yy616: - YYDEBUG(616, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy640; - goto yy44; -yy617: - YYDEBUG(617, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy642; - if (yych == 'e') goto yy642; - goto yy44; -yy618: - YYDEBUG(618, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy644; - if (yych == 'h') goto yy644; - goto yy44; -yy619: - YYDEBUG(619, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(620, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1372 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDSWITCH); -} -#line 6228 "Zend/zend_language_scanner.c" -yy621: - YYDEBUG(621, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy646; - if (yych == 's') goto yy646; - goto yy44; -yy622: - YYDEBUG(622, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy648; - if (yych == 'n') goto yy648; - goto yy44; -yy623: - YYDEBUG(623, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy649; - if (yych == 'f') goto yy649; - goto yy44; -yy624: - YYDEBUG(624, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(625, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1532 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INSTEADOF); -} -#line 6259 "Zend/zend_language_scanner.c" -yy626: - YYDEBUG(626, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(627, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1408 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INTERFACE); -} -#line 6272 "Zend/zend_language_scanner.c" -yy628: - YYDEBUG(628, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(629, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1524 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_NAMESPACE); -} -#line 6285 "Zend/zend_language_scanner.c" -yy630: - YYDEBUG(630, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(631, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1568 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_PROTECTED); -} -#line 6298 "Zend/zend_language_scanner.c" -yy632: - YYDEBUG(632, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy651; - if (yych == 'n') goto yy651; - goto yy44; -yy633: - YYDEBUG(633, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy652; - if (yych == 'm') goto yy652; - goto yy82; -yy634: - YYDEBUG(634, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(635, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1894 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_CLASS_C); -} -#line 6323 "Zend/zend_language_scanner.c" -yy636: - YYDEBUG(636, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy653; - if (yych == 'n') goto yy653; - goto yy44; -yy637: - YYDEBUG(637, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy654; - if (yych == 'm') goto yy654; - goto yy44; -yy638: - YYDEBUG(638, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy655; - goto yy44; -yy639: - YYDEBUG(639, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy657; - if (yych == 'c') goto yy657; - goto yy44; -yy640: - YYDEBUG(640, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(641, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1898 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_TRAIT_C); -} -#line 6359 "Zend/zend_language_scanner.c" -yy642: - YYDEBUG(642, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(643, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1356 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDDECLARE); -} -#line 6372 "Zend/zend_language_scanner.c" -yy644: - YYDEBUG(644, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(645, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1348 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_ENDFOREACH); -} -#line 6385 "Zend/zend_language_scanner.c" -yy646: - YYDEBUG(646, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(647, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1420 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_IMPLEMENTS); -} -#line 6398 "Zend/zend_language_scanner.c" -yy648: - YYDEBUG(648, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy658; - if (yych == 'c') goto yy658; - goto yy44; -yy649: - YYDEBUG(649, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(650, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1360 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INSTANCEOF); -} -#line 6417 "Zend/zend_language_scanner.c" -yy651: - YYDEBUG(651, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy659; - if (yych == 'c') goto yy659; - goto yy44; -yy652: - YYDEBUG(652, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '^') { - if (yych <= '9') { - if (yych <= '/') goto yy660; - goto yy82; - } else { - if (yych <= '@') goto yy660; - if (yych <= 'Z') goto yy82; - goto yy660; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy82; - goto yy660; - } else { - if (yych <= 'z') goto yy82; - if (yych <= 0x7F) goto yy660; - goto yy82; - } - } -yy653: - YYDEBUG(653, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy662; - goto yy44; -yy654: - YYDEBUG(654, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy663; - if (yych == 'p') goto yy663; - goto yy44; -yy655: - YYDEBUG(655, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(656, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1906 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_METHOD_C); -} -#line 6469 "Zend/zend_language_scanner.c" -yy657: - YYDEBUG(657, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy664; - if (yych == 'e') goto yy664; - goto yy44; -yy658: - YYDEBUG(658, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy665; - if (yych == 'e') goto yy665; - goto yy44; -yy659: - YYDEBUG(659, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy667; - if (yych == 'e') goto yy667; - goto yy44; -yy660: - YYDEBUG(660, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(661, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1282 "Zend/zend_language_scanner.l" - { - yyless(yyleng - 1); - HANDLE_NEWLINES(yytext, yyleng); - RETURN_TOKEN(T_YIELD_FROM); -} -#line 6499 "Zend/zend_language_scanner.c" -yy662: - YYDEBUG(662, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy669; - goto yy44; -yy663: - YYDEBUG(663, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy671; - if (yych == 'i') goto yy671; - goto yy44; -yy664: - YYDEBUG(664, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy672; - goto yy44; -yy665: - YYDEBUG(665, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(666, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1512 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_INCLUDE_ONCE); -} -#line 6528 "Zend/zend_language_scanner.c" -yy667: - YYDEBUG(667, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(668, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1520 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_REQUIRE_ONCE); -} -#line 6541 "Zend/zend_language_scanner.c" -yy669: - YYDEBUG(669, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(670, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1902 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_FUNC_C); -} -#line 6554 "Zend/zend_language_scanner.c" -yy671: - YYDEBUG(671, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy673; - if (yych == 'l') goto yy673; - goto yy44; -yy672: - YYDEBUG(672, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy674; - goto yy44; -yy673: - YYDEBUG(673, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy676; - if (yych == 'e') goto yy676; - goto yy44; -yy674: - YYDEBUG(674, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(675, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1922 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_NS_C); -} -#line 6584 "Zend/zend_language_scanner.c" -yy676: - YYDEBUG(676, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy677; - if (yych != 'r') goto yy44; -yy677: - YYDEBUG(677, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy43; - } - YYDEBUG(678, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1548 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_HALT_COMPILER); -} -#line 6602 "Zend/zend_language_scanner.c" - } -/* *********************************** */ -yyc_ST_LOOKING_FOR_PROPERTY: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 64, 64, 0, 0, 64, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 64, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 128, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; - YYDEBUG(679, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yybm[0+yych] & 64) { - goto yy683; - } - if (yych <= '^') { - if (yych <= '-') { - if (yych >= '-') goto yy686; - } else { - if (yych <= '@') goto yy681; - if (yych <= 'Z') goto yy687; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy687; - } else { - if (yych <= 'z') goto yy687; - if (yych >= 0x80) goto yy687; - } - } -yy681: - YYDEBUG(681, *YYCURSOR); - ++YYCURSOR; -yy682: - YYDEBUG(682, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1442 "Zend/zend_language_scanner.l" - { - yyless(0); - yy_pop_state(); - goto restart; -} -#line 6674 "Zend/zend_language_scanner.c" -yy683: - YYDEBUG(683, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(684, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy683; - } - YYDEBUG(685, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1429 "Zend/zend_language_scanner.l" - { - goto return_whitespace; -} -#line 6690 "Zend/zend_language_scanner.c" -yy686: - YYDEBUG(686, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '>') goto yy690; - goto yy682; -yy687: - YYDEBUG(687, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(688, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy687; - } - YYDEBUG(689, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1437 "Zend/zend_language_scanner.l" - { - yy_pop_state(); - RETURN_TOKEN_WITH_STR(T_STRING, 0); -} -#line 6712 "Zend/zend_language_scanner.c" -yy690: - YYDEBUG(690, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(691, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1433 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN(T_OBJECT_OPERATOR); -} -#line 6722 "Zend/zend_language_scanner.c" - } -/* *********************************** */ -yyc_ST_BACKQUOTE: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 128, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; - YYDEBUG(692, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yych <= '_') { - if (yych == '$') goto yy696; - } else { - if (yych <= '`') goto yy697; - if (yych == '{') goto yy699; - } - YYDEBUG(694, *YYCURSOR); - ++YYCURSOR; -yy695: - YYDEBUG(695, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2494 "Zend/zend_language_scanner.l" - { - if (YYCURSOR > YYLIMIT) { - RETURN_TOKEN(END); - } - if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '`': - break; - case '$': - if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { - break; - } - continue; - case '{': - if (*YYCURSOR == '$') { - break; - } - continue; - case '\\': - if (YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - /* fall through */ - default: - continue; - } - - YYCURSOR--; - break; - } - - yyleng = YYCURSOR - SCNG(yy_text); - - if (EXPECTED(zend_scan_escape_string(zendlval, yytext, yyleng, '`') == SUCCESS) - || !PARSER_MODE()) { - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); - } else { - RETURN_TOKEN(T_ERROR); - } -} -#line 6820 "Zend/zend_language_scanner.c" -yy696: - YYDEBUG(696, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy695; - if (yych <= 'Z') goto yy700; - if (yych <= '^') goto yy695; - goto yy700; - } else { - if (yych <= 'z') { - if (yych <= '`') goto yy695; - goto yy700; - } else { - if (yych <= '{') goto yy703; - if (yych <= 0x7F) goto yy695; - goto yy700; - } - } -yy697: - YYDEBUG(697, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(698, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2434 "Zend/zend_language_scanner.l" - { - BEGIN(ST_IN_SCRIPTING); - RETURN_TOKEN('`'); -} -#line 6849 "Zend/zend_language_scanner.c" -yy699: - YYDEBUG(699, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '$') goto yy705; - goto yy695; -yy700: - YYDEBUG(700, *YYCURSOR); - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; - YYDEBUG(701, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy700; - } - if (yych == '-') goto yy707; - if (yych <= '@') goto yy702; - if (yych <= '[') goto yy709; -yy702: - YYDEBUG(702, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2023 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 6874 "Zend/zend_language_scanner.c" -yy703: - YYDEBUG(703, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(704, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1723 "Zend/zend_language_scanner.l" - { - yy_push_state(ST_LOOKING_FOR_VARNAME); - RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); -} -#line 6885 "Zend/zend_language_scanner.c" -yy705: - YYDEBUG(705, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(706, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2422 "Zend/zend_language_scanner.l" - { - yy_push_state(ST_IN_SCRIPTING); - yyless(1); - RETURN_TOKEN(T_CURLY_OPEN); -} -#line 6897 "Zend/zend_language_scanner.c" -yy707: - YYDEBUG(707, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '>') goto yy711; -yy708: - YYDEBUG(708, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy702; -yy709: - YYDEBUG(709, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(710, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2017 "Zend/zend_language_scanner.l" - { - yyless(yyleng - 1); - yy_push_state(ST_VAR_OFFSET); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 6917 "Zend/zend_language_scanner.c" -yy711: - YYDEBUG(711, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy708; - if (yych <= 'Z') goto yy712; - if (yych <= '^') goto yy708; - } else { - if (yych <= '`') goto yy708; - if (yych <= 'z') goto yy712; - if (yych <= 0x7F) goto yy708; - } -yy712: - YYDEBUG(712, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(713, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2009 "Zend/zend_language_scanner.l" - { - yyless(yyleng - 3); - yy_push_state(ST_LOOKING_FOR_PROPERTY); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 6941 "Zend/zend_language_scanner.c" - } -/* *********************************** */ -yyc_ST_DOUBLE_QUOTES: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 128, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; - YYDEBUG(714, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yych <= '#') { - if (yych == '"') goto yy718; - } else { - if (yych <= '$') goto yy720; - if (yych == '{') goto yy721; - } - YYDEBUG(716, *YYCURSOR); - ++YYCURSOR; -yy717: - YYDEBUG(717, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2440 "Zend/zend_language_scanner.l" - { - if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { - YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; - SET_DOUBLE_QUOTES_SCANNED_LENGTH(0); - - goto double_quotes_scan_done; - } - - if (YYCURSOR > YYLIMIT) { - RETURN_TOKEN(END); - } - if (yytext[0] == '\\' && YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '"': - break; - case '$': - if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { - break; - } - continue; - case '{': - if (*YYCURSOR == '$') { - break; - } - continue; - case '\\': - if (YYCURSOR < YYLIMIT) { - YYCURSOR++; - } - /* fall through */ - default: - continue; - } - - YYCURSOR--; - break; - } - -double_quotes_scan_done: - yyleng = YYCURSOR - SCNG(yy_text); - - if (EXPECTED(zend_scan_escape_string(zendlval, yytext, yyleng, '"') == SUCCESS) - || !PARSER_MODE()) { - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); - } else { - RETURN_TOKEN(T_ERROR); - } -} -#line 7047 "Zend/zend_language_scanner.c" -yy718: - YYDEBUG(718, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(719, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2429 "Zend/zend_language_scanner.l" - { - BEGIN(ST_IN_SCRIPTING); - RETURN_TOKEN('"'); -} -#line 7058 "Zend/zend_language_scanner.c" -yy720: - YYDEBUG(720, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy717; - if (yych <= 'Z') goto yy722; - if (yych <= '^') goto yy717; - goto yy722; - } else { - if (yych <= 'z') { - if (yych <= '`') goto yy717; - goto yy722; - } else { - if (yych <= '{') goto yy725; - if (yych <= 0x7F) goto yy717; - goto yy722; - } - } -yy721: - YYDEBUG(721, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '$') goto yy727; - goto yy717; -yy722: - YYDEBUG(722, *YYCURSOR); - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; - YYDEBUG(723, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy722; - } - if (yych == '-') goto yy729; - if (yych <= '@') goto yy724; - if (yych <= '[') goto yy731; -yy724: - YYDEBUG(724, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2023 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 7101 "Zend/zend_language_scanner.c" -yy725: - YYDEBUG(725, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(726, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1723 "Zend/zend_language_scanner.l" - { - yy_push_state(ST_LOOKING_FOR_VARNAME); - RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); -} -#line 7112 "Zend/zend_language_scanner.c" -yy727: - YYDEBUG(727, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(728, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2422 "Zend/zend_language_scanner.l" - { - yy_push_state(ST_IN_SCRIPTING); - yyless(1); - RETURN_TOKEN(T_CURLY_OPEN); -} -#line 7124 "Zend/zend_language_scanner.c" -yy729: - YYDEBUG(729, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '>') goto yy733; -yy730: - YYDEBUG(730, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy724; -yy731: - YYDEBUG(731, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(732, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2017 "Zend/zend_language_scanner.l" - { - yyless(yyleng - 1); - yy_push_state(ST_VAR_OFFSET); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 7144 "Zend/zend_language_scanner.c" -yy733: - YYDEBUG(733, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy730; - if (yych <= 'Z') goto yy734; - if (yych <= '^') goto yy730; - } else { - if (yych <= '`') goto yy730; - if (yych <= 'z') goto yy734; - if (yych <= 0x7F) goto yy730; - } -yy734: - YYDEBUG(734, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(735, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2009 "Zend/zend_language_scanner.l" - { - yyless(yyleng - 3); - yy_push_state(ST_LOOKING_FOR_PROPERTY); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 7168 "Zend/zend_language_scanner.c" - } -/* *********************************** */ -yyc_ST_HEREDOC: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 128, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; - YYDEBUG(736, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yych == '$') goto yy740; - if (yych == '{') goto yy741; - YYDEBUG(738, *YYCURSOR); - ++YYCURSOR; -yy739: - YYDEBUG(739, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2540 "Zend/zend_language_scanner.l" - { - zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); - int newline = 0, indentation = 0, spacing = 0; - - if (YYCURSOR > YYLIMIT) { - RETURN_TOKEN(END); - } - - YYCURSOR--; - - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '\r': - if (*YYCURSOR == '\n') { - YYCURSOR++; - } - /* fall through */ - case '\n': - indentation = spacing = 0; - - while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { - if (*YYCURSOR == '\t') { - spacing |= HEREDOC_USING_TABS; - } else { - spacing |= HEREDOC_USING_SPACES; - } - ++YYCURSOR; - ++indentation; - } - - if (YYCURSOR == YYLIMIT) { - yyleng = YYCURSOR - SCNG(yy_text); - HANDLE_NEWLINES(yytext, yyleng); - ZVAL_NULL(zendlval); - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); - } - - /* Check for ending label on the next line */ - if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { - if (IS_LABEL_START(YYCURSOR[heredoc_label->length])) { - continue; - } - - if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { - zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - } - - /* newline before label will be subtracted from returned text, but - * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ - if (YYCURSOR[-indentation - 2] == '\r' && YYCURSOR[-indentation - 1] == '\n') { - newline = 2; /* Windows newline */ - } else { - newline = 1; - } - - CG(increment_lineno) = 1; /* For newline before label */ - - if (SCNG(heredoc_scan_ahead)) { - SCNG(heredoc_indentation) = indentation; - SCNG(heredoc_indentation_uses_spaces) = (spacing == HEREDOC_USING_SPACES); - } else { - YYCURSOR -= indentation; - } - - BEGIN(ST_END_HEREDOC); - - goto heredoc_scan_done; - } - continue; - case '$': - if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') { - break; - } - continue; - case '{': - if (*YYCURSOR == '$') { - break; - } - continue; - case '\\': - if (YYCURSOR < YYLIMIT && *YYCURSOR != '\n' && *YYCURSOR != '\r') { - YYCURSOR++; - } - /* fall through */ - default: - continue; - } - - YYCURSOR--; - break; - } - -heredoc_scan_done: - - yyleng = YYCURSOR - SCNG(yy_text); - ZVAL_STRINGL(zendlval, yytext, yyleng - newline); - - if (!SCNG(heredoc_scan_ahead) && !EG(exception) && PARSER_MODE()) { - zend_bool newline_at_start = *(yytext - 1) == '\n' || *(yytext - 1) == '\r'; - zend_string *copy = Z_STR_P(zendlval); - - if (!strip_multiline_string_indentation( - zendlval, heredoc_label->indentation, heredoc_label->indentation_uses_spaces, - newline_at_start, newline != 0)) { - RETURN_TOKEN(T_ERROR); - } - - if (UNEXPECTED(zend_scan_escape_string(zendlval, ZSTR_VAL(copy), ZSTR_LEN(copy), 0) != SUCCESS)) { - zend_string_efree(copy); - RETURN_TOKEN(T_ERROR); - } - - zend_string_efree(copy); - } else { - HANDLE_NEWLINES(yytext, yyleng - newline); - } - - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); -} -#line 7337 "Zend/zend_language_scanner.c" -yy740: - YYDEBUG(740, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy739; - if (yych <= 'Z') goto yy742; - if (yych <= '^') goto yy739; - goto yy742; - } else { - if (yych <= 'z') { - if (yych <= '`') goto yy739; - goto yy742; - } else { - if (yych <= '{') goto yy745; - if (yych <= 0x7F) goto yy739; - goto yy742; - } - } -yy741: - YYDEBUG(741, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '$') goto yy747; - goto yy739; -yy742: - YYDEBUG(742, *YYCURSOR); - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; - YYDEBUG(743, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy742; - } - if (yych == '-') goto yy749; - if (yych <= '@') goto yy744; - if (yych <= '[') goto yy751; -yy744: - YYDEBUG(744, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2023 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 7380 "Zend/zend_language_scanner.c" -yy745: - YYDEBUG(745, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(746, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1723 "Zend/zend_language_scanner.l" - { - yy_push_state(ST_LOOKING_FOR_VARNAME); - RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); -} -#line 7391 "Zend/zend_language_scanner.c" -yy747: - YYDEBUG(747, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(748, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2422 "Zend/zend_language_scanner.l" - { - yy_push_state(ST_IN_SCRIPTING); - yyless(1); - RETURN_TOKEN(T_CURLY_OPEN); -} -#line 7403 "Zend/zend_language_scanner.c" -yy749: - YYDEBUG(749, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '>') goto yy753; -yy750: - YYDEBUG(750, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy744; -yy751: - YYDEBUG(751, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(752, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2017 "Zend/zend_language_scanner.l" - { - yyless(yyleng - 1); - yy_push_state(ST_VAR_OFFSET); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 7423 "Zend/zend_language_scanner.c" -yy753: - YYDEBUG(753, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy750; - if (yych <= 'Z') goto yy754; - if (yych <= '^') goto yy750; - } else { - if (yych <= '`') goto yy750; - if (yych <= 'z') goto yy754; - if (yych <= 0x7F) goto yy750; - } -yy754: - YYDEBUG(754, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(755, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2009 "Zend/zend_language_scanner.l" - { - yyless(yyleng - 3); - yy_push_state(ST_LOOKING_FOR_PROPERTY); - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 7447 "Zend/zend_language_scanner.c" - } -/* *********************************** */ -yyc_ST_LOOKING_FOR_VARNAME: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 128, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; - YYDEBUG(756, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy758; - if (yych <= 'Z') goto yy760; - if (yych >= '_') goto yy760; - } else { - if (yych <= '`') goto yy758; - if (yych <= 'z') goto yy760; - if (yych >= 0x80) goto yy760; - } -yy758: - YYDEBUG(758, *YYCURSOR); - ++YYCURSOR; -yy759: - YYDEBUG(759, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1746 "Zend/zend_language_scanner.l" - { - yyless(0); - yy_pop_state(); - yy_push_state(ST_IN_SCRIPTING); - goto restart; -} -#line 7511 "Zend/zend_language_scanner.c" -yy760: - YYDEBUG(760, *YYCURSOR); - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '_') { - if (yych <= '@') { - if (yych <= '/') goto yy759; - if (yych <= '9') goto yy762; - goto yy759; - } else { - if (yych <= '[') goto yy762; - if (yych <= '^') goto yy759; - goto yy762; - } - } else { - if (yych <= '|') { - if (yych <= '`') goto yy759; - if (yych <= 'z') goto yy762; - goto yy759; - } else { - if (yych <= '}') goto yy762; - if (yych <= 0x7F) goto yy759; - goto yy762; - } - } -yy761: - YYDEBUG(761, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy762: - YYDEBUG(762, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy761; - } - if (yych <= '@') goto yy763; - if (yych <= '[') goto yy764; - if (yych == '}') goto yy764; -yy763: - YYDEBUG(763, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy759; -yy764: - YYDEBUG(764, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(765, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1738 "Zend/zend_language_scanner.l" - { - yyless(yyleng - 1); - yy_pop_state(); - yy_push_state(ST_IN_SCRIPTING); - RETURN_TOKEN_WITH_STR(T_STRING_VARNAME, 0); -} -#line 7565 "Zend/zend_language_scanner.c" - } -/* *********************************** */ -yyc_ST_VAR_OFFSET: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 240, 240, 176, 176, 176, 176, 176, 176, - 176, 176, 0, 0, 0, 0, 0, 0, - 0, 160, 160, 160, 160, 160, 160, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 0, 0, 0, 0, 32, - 0, 160, 160, 160, 160, 160, 160, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 0, 0, 0, 0, 0, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - }; - YYDEBUG(766, *YYCURSOR); - YYFILL(3); - yych = *YYCURSOR; - if (yych <= '0') { - if (yych <= ' ') { - if (yych <= '\f') { - if (yych <= 0x08) goto yy768; - if (yych <= '\n') goto yy770; - } else { - if (yych <= '\r') goto yy770; - if (yych >= ' ') goto yy770; - } - } else { - if (yych <= '$') { - if (yych <= '"') goto yy772; - if (yych <= '#') goto yy770; - goto yy774; - } else { - if (yych == '\'') goto yy770; - if (yych <= '/') goto yy772; - goto yy775; - } - } - } else { - if (yych <= ']') { - if (yych <= 'Z') { - if (yych <= '9') goto yy777; - if (yych <= '@') goto yy772; - goto yy779; - } else { - if (yych <= '[') goto yy772; - if (yych <= '\\') goto yy770; - goto yy782; - } - } else { - if (yych <= '`') { - if (yych == '_') goto yy779; - goto yy772; - } else { - if (yych <= 'z') goto yy779; - if (yych <= '~') goto yy772; - if (yych >= 0x80) goto yy779; - } - } - } -yy768: - YYDEBUG(768, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(769, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2749 "Zend/zend_language_scanner.l" - { - if (YYCURSOR > YYLIMIT) { - RETURN_TOKEN(END); - } - - zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); - goto restart; -} -#line 7663 "Zend/zend_language_scanner.c" -yy770: - YYDEBUG(770, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(771, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2037 "Zend/zend_language_scanner.l" - { - /* Invalid rule to return a more explicit parse error with proper line number */ - yyless(0); - yy_pop_state(); - ZVAL_NULL(zendlval); - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); -} -#line 7677 "Zend/zend_language_scanner.c" -yy772: - YYDEBUG(772, *YYCURSOR); - ++YYCURSOR; -yy773: - YYDEBUG(773, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2032 "Zend/zend_language_scanner.l" - { - /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */ - RETURN_TOKEN(yytext[0]); -} -#line 7689 "Zend/zend_language_scanner.c" -yy774: - YYDEBUG(774, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy773; - if (yych <= 'Z') goto yy784; - if (yych <= '^') goto yy773; - goto yy784; - } else { - if (yych <= '`') goto yy773; - if (yych <= 'z') goto yy784; - if (yych <= 0x7F) goto yy773; - goto yy784; - } -yy775: - YYDEBUG(775, *YYCURSOR); - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'W') { - if (yych <= '9') { - if (yych >= '0') goto yy787; - } else { - if (yych == 'B') goto yy790; - } - } else { - if (yych <= 'b') { - if (yych <= 'X') goto yy792; - if (yych >= 'b') goto yy790; - } else { - if (yych == 'x') goto yy792; - } - } -yy776: - YYDEBUG(776, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1860 "Zend/zend_language_scanner.l" - { /* Offset could be treated as a long */ - if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) { - char *end; - errno = 0; - ZVAL_LONG(zendlval, ZEND_STRTOL(yytext, &end, 10)); - if (errno == ERANGE) { - goto string; - } - ZEND_ASSERT(end == yytext + yyleng); - } else { -string: - ZVAL_STRINGL(zendlval, yytext, yyleng); - } - RETURN_TOKEN_WITH_VAL(T_NUM_STRING); -} -#line 7740 "Zend/zend_language_scanner.c" -yy777: - YYDEBUG(777, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(778, *YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy777; - } - goto yy776; -yy779: - YYDEBUG(779, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(780, *YYCURSOR); - if (yybm[0+yych] & 32) { - goto yy779; - } - YYDEBUG(781, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2045 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN_WITH_STR(T_STRING, 0); -} -#line 7766 "Zend/zend_language_scanner.c" -yy782: - YYDEBUG(782, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(783, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2027 "Zend/zend_language_scanner.l" - { - yy_pop_state(); - RETURN_TOKEN(']'); -} -#line 7777 "Zend/zend_language_scanner.c" -yy784: - YYDEBUG(784, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(785, *YYCURSOR); - if (yych <= '^') { - if (yych <= '9') { - if (yych >= '0') goto yy784; - } else { - if (yych <= '@') goto yy786; - if (yych <= 'Z') goto yy784; - } - } else { - if (yych <= '`') { - if (yych <= '_') goto yy784; - } else { - if (yych <= 'z') goto yy784; - if (yych >= 0x80) goto yy784; - } - } -yy786: - YYDEBUG(786, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2023 "Zend/zend_language_scanner.l" - { - RETURN_TOKEN_WITH_STR(T_VARIABLE, 1); -} -#line 7806 "Zend/zend_language_scanner.c" -yy787: - YYDEBUG(787, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(788, *YYCURSOR); - if (yych <= '/') goto yy789; - if (yych <= '9') goto yy787; -yy789: - YYDEBUG(789, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1876 "Zend/zend_language_scanner.l" - { /* Offset must be treated as a string */ - if (yyleng == 1) { - ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR((zend_uchar)*(yytext))); - } else { - ZVAL_STRINGL(zendlval, yytext, yyleng); - } - RETURN_TOKEN_WITH_VAL(T_NUM_STRING); -} -#line 7827 "Zend/zend_language_scanner.c" -yy790: - YYDEBUG(790, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 64) { - goto yy793; - } -yy791: - YYDEBUG(791, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy776; -yy792: - YYDEBUG(792, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy795; - } - goto yy791; -yy793: - YYDEBUG(793, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(794, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy793; - } - goto yy789; -yy795: - YYDEBUG(795, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(796, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy795; - } - goto yy789; - } -/* *********************************** */ -yyc_INITIAL: - YYDEBUG(797, *YYCURSOR); - YYFILL(7); - yych = *YYCURSOR; - if (yych == '<') goto yy801; - YYDEBUG(799, *YYCURSOR); - ++YYCURSOR; -yy800: - YYDEBUG(800, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1958 "Zend/zend_language_scanner.l" - { - if (YYCURSOR > YYLIMIT) { - RETURN_TOKEN(END); - } - -inline_char_handler: - - while (1) { - YYCTYPE *ptr = memchr(YYCURSOR, '<', YYLIMIT - YYCURSOR); - - YYCURSOR = ptr ? ptr + 1 : YYLIMIT; - - if (YYCURSOR >= YYLIMIT) { - break; - } - - if (*YYCURSOR == '?') { - if (CG(short_tags) || !strncasecmp((char*)YYCURSOR + 1, "php", 3) || (*(YYCURSOR + 1) == '=')) { /* Assume [ \t\n\r] follows "php" */ - - YYCURSOR--; - break; - } - } - } - - yyleng = YYCURSOR - SCNG(yy_text); - - if (SCNG(output_filter)) { - size_t readsize; - char *s = NULL; - size_t sz = 0; - // TODO: avoid reallocation ??? - readsize = SCNG(output_filter)((unsigned char **)&s, &sz, (unsigned char *)yytext, (size_t)yyleng); - ZVAL_STRINGL(zendlval, s, sz); - efree(s); - if (readsize < yyleng) { - yyless(readsize); - } - } else if (yyleng == 1) { - ZVAL_INTERNED_STR(zendlval, ZSTR_CHAR((zend_uchar)*yytext)); - } else { - ZVAL_STRINGL(zendlval, yytext, yyleng); - } - HANDLE_NEWLINES(yytext, yyleng); - RETURN_TOKEN_WITH_VAL(T_INLINE_HTML); -} -#line 7924 "Zend/zend_language_scanner.c" -yy801: - YYDEBUG(801, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '?') goto yy800; - YYDEBUG(802, *YYCURSOR); - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'O') { - if (yych == '=') goto yy804; - } else { - if (yych <= 'P') goto yy806; - if (yych == 'p') goto yy806; - } -yy803: - YYDEBUG(803, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1946 "Zend/zend_language_scanner.l" - { - if (CG(short_tags)) { - BEGIN(ST_IN_SCRIPTING); - if (PARSER_MODE()) { - SKIP_TOKEN(T_OPEN_TAG); - } - RETURN_TOKEN(T_OPEN_TAG); - } else { - goto inline_char_handler; - } -} -#line 7952 "Zend/zend_language_scanner.c" -yy804: - YYDEBUG(804, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(805, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1927 "Zend/zend_language_scanner.l" - { - BEGIN(ST_IN_SCRIPTING); - if (PARSER_MODE()) { - RETURN_TOKEN(T_ECHO); - } - RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); -} -#line 7966 "Zend/zend_language_scanner.c" -yy806: - YYDEBUG(806, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy808; - if (yych == 'h') goto yy808; -yy807: - YYDEBUG(807, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy803; -yy808: - YYDEBUG(808, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy809; - if (yych != 'p') goto yy807; -yy809: - YYDEBUG(809, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '\f') { - if (yych <= 0x08) goto yy807; - if (yych >= '\v') goto yy807; - } else { - if (yych <= '\r') goto yy812; - if (yych != ' ') goto yy807; - } -yy810: - YYDEBUG(810, *YYCURSOR); - ++YYCURSOR; -yy811: - YYDEBUG(811, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1936 "Zend/zend_language_scanner.l" - { - HANDLE_NEWLINE(yytext[yyleng-1]); - BEGIN(ST_IN_SCRIPTING); - if (PARSER_MODE()) { - SKIP_TOKEN(T_OPEN_TAG); - } - RETURN_TOKEN(T_OPEN_TAG); -} -#line 8006 "Zend/zend_language_scanner.c" -yy812: - YYDEBUG(812, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy810; - goto yy811; -/* *********************************** */ -yyc_ST_END_HEREDOC: - YYDEBUG(813, *YYCURSOR); - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(815, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(816, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2408 "Zend/zend_language_scanner.l" - { - zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); - - yyleng = heredoc_label->indentation + heredoc_label->length; - YYCURSOR += yyleng - 1; - - heredoc_label_dtor(heredoc_label); - efree(heredoc_label); - - BEGIN(ST_IN_SCRIPTING); - RETURN_TOKEN(T_END_HEREDOC); -} -#line 8034 "Zend/zend_language_scanner.c" -/* *********************************** */ -yyc_ST_NOWDOC: - YYDEBUG(817, *YYCURSOR); - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(819, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(820, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 2661 "Zend/zend_language_scanner.l" - { - zend_heredoc_label *heredoc_label = zend_ptr_stack_top(&SCNG(heredoc_label_stack)); - int newline = 0, indentation = 0, spacing = -1; - - if (YYCURSOR > YYLIMIT) { - RETURN_TOKEN(END); - } - - YYCURSOR--; - - while (YYCURSOR < YYLIMIT) { - switch (*YYCURSOR++) { - case '\r': - if (*YYCURSOR == '\n') { - YYCURSOR++; - } - /* fall through */ - case '\n': - indentation = spacing = 0; - - while (YYCURSOR < YYLIMIT && (*YYCURSOR == ' ' || *YYCURSOR == '\t')) { - if (*YYCURSOR == '\t') { - spacing |= HEREDOC_USING_TABS; - } else { - spacing |= HEREDOC_USING_SPACES; - } - ++YYCURSOR; - ++indentation; - } - - if (YYCURSOR == YYLIMIT) { - yyleng = YYCURSOR - SCNG(yy_text); - HANDLE_NEWLINES(yytext, yyleng); - ZVAL_NULL(zendlval); - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); - } - - /* Check for ending label on the next line */ - if (IS_LABEL_START(*YYCURSOR) && heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, heredoc_label->label, heredoc_label->length)) { - if (IS_LABEL_START(YYCURSOR[heredoc_label->length])) { - continue; - } - - if (spacing == (HEREDOC_USING_SPACES | HEREDOC_USING_TABS)) { - zend_throw_exception(zend_ce_parse_error, "Invalid indentation - tabs and spaces cannot be mixed", 0); - } - - /* newline before label will be subtracted from returned text, but - * yyleng/yytext will include it, for zend_highlight/strip, tokenizer, etc. */ - if (YYCURSOR[-indentation - 2] == '\r' && YYCURSOR[-indentation - 1] == '\n') { - newline = 2; /* Windows newline */ - } else { - newline = 1; - } - - CG(increment_lineno) = 1; /* For newline before label */ - - YYCURSOR -= indentation; - heredoc_label->indentation = indentation; - - BEGIN(ST_END_HEREDOC); - - goto nowdoc_scan_done; - } - /* fall through */ - default: - continue; - } - } - -nowdoc_scan_done: - yyleng = YYCURSOR - SCNG(yy_text); - ZVAL_STRINGL(zendlval, yytext, yyleng - newline); - - if (!EG(exception) && spacing != -1 && PARSER_MODE()) { - zend_bool newline_at_start = *(yytext - 1) == '\n' || *(yytext - 1) == '\r'; - if (!strip_multiline_string_indentation( - zendlval, indentation, spacing == HEREDOC_USING_SPACES, - newline_at_start, newline != 0)) { - RETURN_TOKEN(T_ERROR); - } - } - - HANDLE_NEWLINES(yytext, yyleng - newline); - RETURN_TOKEN_WITH_VAL(T_ENCAPSED_AND_WHITESPACE); -} -#line 8131 "Zend/zend_language_scanner.c" -} -#line 2758 "Zend/zend_language_scanner.l" - - -emit_token_with_str: - zend_copy_value(zendlval, (yytext + offset), (yyleng - offset)); - -emit_token_with_val: - if (PARSER_MODE()) { - ZEND_ASSERT(Z_TYPE_P(zendlval) != IS_UNDEF); - elem->ast = zend_ast_create_zval_with_lineno(zendlval, start_line); - } - -emit_token: - if (SCNG(on_event)) { - SCNG(on_event)(ON_TOKEN, token, start_line, SCNG(on_event_context)); - } - return token; - -return_whitespace: - HANDLE_NEWLINES(yytext, yyleng); - if (SCNG(on_event)) { - SCNG(on_event)(ON_TOKEN, T_WHITESPACE, start_line, SCNG(on_event_context)); - } - if (PARSER_MODE()) { - start_line = CG(zend_lineno); - goto restart; - } else { - return T_WHITESPACE; - } - -skip_token: - if (SCNG(on_event)) { - SCNG(on_event)(ON_TOKEN, token, start_line, SCNG(on_event_context)); - } - start_line = CG(zend_lineno); - goto restart; -} diff --git a/Zend/zend_language_scanner_defs.h b/Zend/zend_language_scanner_defs.h deleted file mode 100644 index 3c01b5bc76..0000000000 --- a/Zend/zend_language_scanner_defs.h +++ /dev/null @@ -1,15 +0,0 @@ -/* Generated by re2c 1.0.1 */ -#line 3 "Zend/zend_language_scanner_defs.h" - -enum YYCONDTYPE { - yycST_IN_SCRIPTING, - yycST_LOOKING_FOR_PROPERTY, - yycST_BACKQUOTE, - yycST_DOUBLE_QUOTES, - yycST_HEREDOC, - yycST_LOOKING_FOR_VARNAME, - yycST_VAR_OFFSET, - yycINITIAL, - yycST_END_HEREDOC, - yycST_NOWDOC, -}; diff --git a/ext/json/json_scanner.c b/ext/json/json_scanner.c deleted file mode 100644 index 32930fa934..0000000000 --- a/ext/json/json_scanner.c +++ /dev/null @@ -1,1661 +0,0 @@ -/* Generated by re2c 1.0.3 */ -/* - +----------------------------------------------------------------------+ - | PHP Version 7 | - +----------------------------------------------------------------------+ - | Copyright (c) 1997-2018 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: | - | http://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: Jakub Zelenka <bukka@php.net> | - +----------------------------------------------------------------------+ -*/ - -#include "php.h" -#include "php_json_scanner.h" -#include "php_json_scanner_defs.h" -#include "php_json_parser.h" -#include "json_parser.tab.h" - -#define YYCTYPE php_json_ctype -#define YYCURSOR s->cursor -#define YYLIMIT s->limit -#define YYMARKER s->marker -#define YYCTXMARKER s->ctxmarker - -#define YYGETCONDITION() s->state -#define YYSETCONDITION(yystate) s->state = yystate - -#define YYFILL(n) - -#define PHP_JSON_CONDITION_SET(condition) YYSETCONDITION(yyc##condition) -#define PHP_JSON_CONDITION_GOTO(condition) goto yyc_##condition -#define PHP_JSON_CONDITION_SET_AND_GOTO(condition) \ - PHP_JSON_CONDITION_SET(condition); \ - PHP_JSON_CONDITION_GOTO(condition) -#define PHP_JSON_CONDITION_GOTO_STR_P2() \ - do { \ - if (s->utf8_invalid) { \ - PHP_JSON_CONDITION_GOTO(STR_P2_BIN); \ - } else { \ - PHP_JSON_CONDITION_GOTO(STR_P2_UTF); \ - } \ - } while(0) - - -#define PHP_JSON_SCANNER_COPY_ESC() php_json_scanner_copy_string(s, 0) -#define PHP_JSON_SCANNER_COPY_UTF() php_json_scanner_copy_string(s, 5) -#define PHP_JSON_SCANNER_COPY_UTF_SP() php_json_scanner_copy_string(s, 11) - -#define PHP_JSON_INT_MAX_LENGTH (MAX_LENGTH_OF_LONG - 1) - - -static void php_json_scanner_copy_string(php_json_scanner *s, int esc_size) -{ - size_t len = s->cursor - s->str_start - esc_size - 1; - if (len) { - memcpy(s->pstr, s->str_start, len); - s->pstr += len; - } -} - -static int php_json_hex_to_int(char code) -{ - if (code >= '0' && code <= '9') { - return code - '0'; - } else if (code >= 'A' && code <= 'F') { - return code - ('A' - 10); - } else if (code >= 'a' && code <= 'f') { - return code - ('a' - 10); - } else { - /* this should never happened (just to suppress compiler warning) */ - return -1; - } -} - -static int php_json_ucs2_to_int_ex(php_json_scanner *s, int size, int start) -{ - int i, code = 0; - php_json_ctype *pc = s->cursor - start; - for (i = 0; i < size; i++) { - code |= php_json_hex_to_int(*(pc--)) << (i * 4); - } - return code; -} - -static int php_json_ucs2_to_int(php_json_scanner *s, int size) -{ - return php_json_ucs2_to_int_ex(s, size, 1); -} - -void php_json_scanner_init(php_json_scanner *s, char *str, size_t str_len, int options) -{ - s->cursor = (php_json_ctype *) str; - s->limit = (php_json_ctype *) str + str_len; - s->options = options; - PHP_JSON_CONDITION_SET(JS); -} - -int php_json_scan(php_json_scanner *s) -{ - ZVAL_NULL(&s->value); - -std: - s->token = s->cursor; - - - { - YYCTYPE yych; - unsigned int yyaccept = 0; - if (YYGETCONDITION() < 2) { - if (YYGETCONDITION() < 1) { - goto yyc_JS; - } else { - goto yyc_STR_P1; - } - } else { - if (YYGETCONDITION() < 3) { - goto yyc_STR_P2_BIN; - } else { - goto yyc_STR_P2_UTF; - } - } -/* *********************************** */ -yyc_JS: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 64, 0, 0, 0, 64, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 64, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - yych = *YYCURSOR; - if (yych <= ']') { - if (yych <= '"') { - if (yych <= '\f') { - if (yych <= 0x08) { - if (yych >= 0x01) goto yy5; - } else { - if (yych <= '\t') goto yy7; - if (yych <= '\n') goto yy10; - goto yy5; - } - } else { - if (yych <= 0x1F) { - if (yych <= '\r') goto yy11; - goto yy5; - } else { - if (yych <= ' ') goto yy7; - if (yych <= '!') goto yy12; - goto yy14; - } - } - } else { - if (yych <= '0') { - if (yych <= ',') { - if (yych <= '+') goto yy12; - goto yy16; - } else { - if (yych <= '-') goto yy18; - if (yych <= '/') goto yy12; - goto yy19; - } - } else { - if (yych <= 'Z') { - if (yych <= '9') goto yy21; - if (yych <= ':') goto yy23; - goto yy12; - } else { - if (yych <= '[') goto yy25; - if (yych <= '\\') goto yy12; - goto yy27; - } - } - } - } else { - if (yych <= '}') { - if (yych <= 's') { - if (yych <= 'f') { - if (yych <= 'e') goto yy12; - goto yy29; - } else { - if (yych == 'n') goto yy30; - goto yy12; - } - } else { - if (yych <= 'z') { - if (yych <= 't') goto yy31; - goto yy12; - } else { - if (yych <= '{') goto yy32; - if (yych <= '|') goto yy12; - goto yy34; - } - } - } else { - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= 0x7F) goto yy12; - goto yy36; - } else { - if (yych <= 0xDF) goto yy38; - if (yych <= 0xE0) goto yy39; - goto yy40; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy41; - if (yych <= 0xEF) goto yy40; - goto yy42; - } else { - if (yych <= 0xF3) goto yy43; - if (yych <= 0xF4) goto yy44; - goto yy36; - } - } - } - } - ++YYCURSOR; - { - if (s->limit < s->cursor) { - return PHP_JSON_T_EOI; - } else { - s->errcode = PHP_JSON_ERROR_CTRL_CHAR; - return PHP_JSON_T_ERROR; - } - } -yy5: - ++YYCURSOR; - { - s->errcode = PHP_JSON_ERROR_CTRL_CHAR; - return PHP_JSON_T_ERROR; - } -yy7: - yych = *++YYCURSOR; -yy8: - if (yybm[0+yych] & 64) { - goto yy7; - } -yy9: - { goto std; } -yy10: - ++YYCURSOR; - goto yy9; -yy11: - yych = *++YYCURSOR; - if (yych == '\n') goto yy10; - goto yy8; -yy12: - ++YYCURSOR; -yy13: - { - s->errcode = PHP_JSON_ERROR_SYNTAX; - return PHP_JSON_T_ERROR; - } -yy14: - ++YYCURSOR; - { - s->str_start = s->cursor; - s->str_esc = 0; - s->utf8_invalid = 0; - s->utf8_invalid_count = 0; - PHP_JSON_CONDITION_SET_AND_GOTO(STR_P1); - } -yy16: - ++YYCURSOR; - { return ','; } -yy18: - yych = *++YYCURSOR; - if (yych <= '/') goto yy13; - if (yych <= '0') goto yy19; - if (yych <= '9') goto yy21; - goto yy13; -yy19: - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'D') { - if (yych == '.') goto yy45; - } else { - if (yych <= 'E') goto yy47; - if (yych == 'e') goto yy47; - } -yy20: - { - zend_bool bigint = 0, negative = s->token[0] == '-'; - size_t digits = (size_t) (s->cursor - s->token - negative); - if (digits >= PHP_JSON_INT_MAX_LENGTH) { - if (digits == PHP_JSON_INT_MAX_LENGTH) { - int cmp = strncmp((char *) (s->token + negative), LONG_MIN_DIGITS, PHP_JSON_INT_MAX_LENGTH); - if (!(cmp < 0 || (cmp == 0 && negative))) { - bigint = 1; - } - } else { - bigint = 1; - } - } - if (!bigint) { - ZVAL_LONG(&s->value, ZEND_STRTOL((char *) s->token, NULL, 10)); - return PHP_JSON_T_INT; - } else if (s->options & PHP_JSON_BIGINT_AS_STRING) { - ZVAL_STRINGL(&s->value, (char *) s->token, s->cursor - s->token); - return PHP_JSON_T_STRING; - } else { - ZVAL_DOUBLE(&s->value, zend_strtod((char *) s->token, NULL)); - return PHP_JSON_T_DOUBLE; - } - } -yy21: - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy21; - } - if (yych <= 'D') { - if (yych == '.') goto yy45; - goto yy20; - } else { - if (yych <= 'E') goto yy47; - if (yych == 'e') goto yy47; - goto yy20; - } -yy23: - ++YYCURSOR; - { return ':'; } -yy25: - ++YYCURSOR; - { return '['; } -yy27: - ++YYCURSOR; - { return ']'; } -yy29: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'a') goto yy48; - goto yy13; -yy30: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'u') goto yy49; - goto yy13; -yy31: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'r') goto yy50; - goto yy13; -yy32: - ++YYCURSOR; - { return '{'; } -yy34: - ++YYCURSOR; - { return '}'; } -yy36: - ++YYCURSOR; -yy37: - { - s->errcode = PHP_JSON_ERROR_UTF8; - return PHP_JSON_T_ERROR; - } -yy38: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy37; - if (yych <= 0xBF) goto yy12; - goto yy37; -yy39: - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x9F) goto yy37; - if (yych <= 0xBF) goto yy51; - goto yy37; -yy40: - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy37; - if (yych <= 0xBF) goto yy51; - goto yy37; -yy41: - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy37; - if (yych <= 0x9F) goto yy51; - goto yy37; -yy42: - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x8F) goto yy37; - if (yych <= 0xBF) goto yy52; - goto yy37; -yy43: - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy37; - if (yych <= 0xBF) goto yy52; - goto yy37; -yy44: - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy37; - if (yych <= 0x8F) goto yy52; - goto yy37; -yy45: - yych = *++YYCURSOR; - if (yych <= '/') goto yy46; - if (yych <= '9') goto yy53; -yy46: - YYCURSOR = YYMARKER; - if (yyaccept <= 1) { - if (yyaccept == 0) { - goto yy20; - } else { - goto yy13; - } - } else { - if (yyaccept == 2) { - goto yy37; - } else { - goto yy55; - } - } -yy47: - yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '+') goto yy56; - goto yy46; - } else { - if (yych <= '-') goto yy56; - if (yych <= '/') goto yy46; - if (yych <= '9') goto yy57; - goto yy46; - } -yy48: - yych = *++YYCURSOR; - if (yych == 'l') goto yy59; - goto yy46; -yy49: - yych = *++YYCURSOR; - if (yych == 'l') goto yy60; - goto yy46; -yy50: - yych = *++YYCURSOR; - if (yych == 'u') goto yy61; - goto yy46; -yy51: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy46; - if (yych <= 0xBF) goto yy12; - goto yy46; -yy52: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy46; - if (yych <= 0xBF) goto yy51; - goto yy46; -yy53: - yyaccept = 3; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'D') { - if (yych <= '/') goto yy55; - if (yych <= '9') goto yy53; - } else { - if (yych <= 'E') goto yy47; - if (yych == 'e') goto yy47; - } -yy55: - { - ZVAL_DOUBLE(&s->value, zend_strtod((char *) s->token, NULL)); - return PHP_JSON_T_DOUBLE; - } -yy56: - yych = *++YYCURSOR; - if (yych <= '/') goto yy46; - if (yych >= ':') goto yy46; -yy57: - yych = *++YYCURSOR; - if (yych <= '/') goto yy55; - if (yych <= '9') goto yy57; - goto yy55; -yy59: - yych = *++YYCURSOR; - if (yych == 's') goto yy62; - goto yy46; -yy60: - yych = *++YYCURSOR; - if (yych == 'l') goto yy63; - goto yy46; -yy61: - yych = *++YYCURSOR; - if (yych == 'e') goto yy65; - goto yy46; -yy62: - yych = *++YYCURSOR; - if (yych == 'e') goto yy67; - goto yy46; -yy63: - ++YYCURSOR; - { - ZVAL_NULL(&s->value); - return PHP_JSON_T_NUL; - } -yy65: - ++YYCURSOR; - { - ZVAL_TRUE(&s->value); - return PHP_JSON_T_TRUE; - } -yy67: - ++YYCURSOR; - { - ZVAL_FALSE(&s->value); - return PHP_JSON_T_FALSE; - } - } -/* *********************************** */ -yyc_STR_P1: - yych = *YYCURSOR; - if (yych <= 0xDF) { - if (yych <= '[') { - if (yych <= 0x1F) goto yy71; - if (yych == '"') goto yy75; - goto yy73; - } else { - if (yych <= '\\') goto yy77; - if (yych <= 0x7F) goto yy73; - if (yych <= 0xC1) goto yy79; - goto yy81; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) goto yy82; - if (yych == 0xED) goto yy84; - goto yy83; - } else { - if (yych <= 0xF0) goto yy85; - if (yych <= 0xF3) goto yy86; - if (yych <= 0xF4) goto yy87; - goto yy79; - } - } -yy71: - ++YYCURSOR; - { - s->errcode = PHP_JSON_ERROR_CTRL_CHAR; - return PHP_JSON_T_ERROR; - } -yy73: - ++YYCURSOR; - { PHP_JSON_CONDITION_GOTO(STR_P1); } -yy75: - ++YYCURSOR; - { - zend_string *str; - size_t len = s->cursor - s->str_start - s->str_esc - 1 + s->utf8_invalid_count; - if (len == 0) { - PHP_JSON_CONDITION_SET(JS); - ZVAL_EMPTY_STRING(&s->value); - return PHP_JSON_T_ESTRING; - } - str = zend_string_alloc(len, 0); - ZSTR_VAL(str)[len] = '\0'; - ZVAL_STR(&s->value, str); - if (s->str_esc || s->utf8_invalid) { - s->pstr = (php_json_ctype *) Z_STRVAL(s->value); - s->cursor = s->str_start; - PHP_JSON_CONDITION_GOTO_STR_P2(); - } else { - memcpy(Z_STRVAL(s->value), s->str_start, len); - PHP_JSON_CONDITION_SET(JS); - return PHP_JSON_T_STRING; - } - } -yy77: - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'e') { - if (yych <= '/') { - if (yych == '"') goto yy88; - if (yych >= '/') goto yy88; - } else { - if (yych <= '\\') { - if (yych >= '\\') goto yy88; - } else { - if (yych == 'b') goto yy88; - } - } - } else { - if (yych <= 'q') { - if (yych <= 'f') goto yy88; - if (yych == 'n') goto yy88; - } else { - if (yych <= 's') { - if (yych <= 'r') goto yy88; - } else { - if (yych <= 't') goto yy88; - if (yych <= 'u') goto yy90; - } - } - } -yy78: - { - s->errcode = PHP_JSON_ERROR_SYNTAX; - return PHP_JSON_T_ERROR; - } -yy79: - ++YYCURSOR; -yy80: - { - if (s->options & (PHP_JSON_INVALID_UTF8_IGNORE | PHP_JSON_INVALID_UTF8_SUBSTITUTE)) { - if (s->options & PHP_JSON_INVALID_UTF8_SUBSTITUTE) { - if (s->utf8_invalid_count > INT_MAX - 2) { - s->errcode = PHP_JSON_ERROR_UTF8; - return PHP_JSON_T_ERROR; - } - s->utf8_invalid_count += 2; - } else { - s->utf8_invalid_count--; - } - s->utf8_invalid = 1; - PHP_JSON_CONDITION_GOTO(STR_P1); - } - s->errcode = PHP_JSON_ERROR_UTF8; - return PHP_JSON_T_ERROR; - } -yy81: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy80; - if (yych <= 0xBF) goto yy73; - goto yy80; -yy82: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x9F) goto yy80; - if (yych <= 0xBF) goto yy92; - goto yy80; -yy83: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy80; - if (yych <= 0xBF) goto yy92; - goto yy80; -yy84: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy80; - if (yych <= 0x9F) goto yy92; - goto yy80; -yy85: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x8F) goto yy80; - if (yych <= 0xBF) goto yy93; - goto yy80; -yy86: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy80; - if (yych <= 0xBF) goto yy93; - goto yy80; -yy87: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy80; - if (yych <= 0x8F) goto yy93; - goto yy80; -yy88: - ++YYCURSOR; - { - s->str_esc++; - PHP_JSON_CONDITION_GOTO(STR_P1); - } -yy90: - yych = *++YYCURSOR; - if (yych <= 'D') { - if (yych <= '9') { - if (yych <= '/') goto yy91; - if (yych <= '0') goto yy94; - goto yy95; - } else { - if (yych <= '@') goto yy91; - if (yych <= 'C') goto yy95; - goto yy96; - } - } else { - if (yych <= 'c') { - if (yych <= 'F') goto yy95; - if (yych >= 'a') goto yy95; - } else { - if (yych <= 'd') goto yy96; - if (yych <= 'f') goto yy95; - } - } -yy91: - YYCURSOR = YYMARKER; - if (yyaccept <= 1) { - if (yyaccept == 0) { - goto yy78; - } else { - goto yy80; - } - } else { - goto yy114; - } -yy92: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy91; - if (yych <= 0xBF) goto yy73; - goto yy91; -yy93: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy91; - if (yych <= 0xBF) goto yy92; - goto yy91; -yy94: - yych = *++YYCURSOR; - if (yych <= '9') { - if (yych <= '/') goto yy91; - if (yych <= '0') goto yy97; - if (yych <= '7') goto yy98; - goto yy99; - } else { - if (yych <= 'F') { - if (yych <= '@') goto yy91; - goto yy99; - } else { - if (yych <= '`') goto yy91; - if (yych <= 'f') goto yy99; - goto yy91; - } - } -yy95: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy91; - if (yych <= '9') goto yy99; - goto yy91; - } else { - if (yych <= 'F') goto yy99; - if (yych <= '`') goto yy91; - if (yych <= 'f') goto yy99; - goto yy91; - } -yy96: - yych = *++YYCURSOR; - if (yych <= 'B') { - if (yych <= '7') { - if (yych <= '/') goto yy91; - goto yy99; - } else { - if (yych <= '9') goto yy100; - if (yych <= '@') goto yy91; - goto yy100; - } - } else { - if (yych <= '`') { - if (yych <= 'F') goto yy101; - goto yy91; - } else { - if (yych <= 'b') goto yy100; - if (yych <= 'f') goto yy101; - goto yy91; - } - } -yy97: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy91; - if (yych <= '7') goto yy102; - if (yych <= '9') goto yy103; - goto yy91; - } else { - if (yych <= 'F') goto yy103; - if (yych <= '`') goto yy91; - if (yych <= 'f') goto yy103; - goto yy91; - } -yy98: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy91; - if (yych <= '9') goto yy103; - goto yy91; - } else { - if (yych <= 'F') goto yy103; - if (yych <= '`') goto yy91; - if (yych <= 'f') goto yy103; - goto yy91; - } -yy99: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy91; - if (yych <= '9') goto yy104; - goto yy91; - } else { - if (yych <= 'F') goto yy104; - if (yych <= '`') goto yy91; - if (yych <= 'f') goto yy104; - goto yy91; - } -yy100: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy91; - if (yych <= '9') goto yy105; - goto yy91; - } else { - if (yych <= 'F') goto yy105; - if (yych <= '`') goto yy91; - if (yych <= 'f') goto yy105; - goto yy91; - } -yy101: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy91; - if (yych <= '9') goto yy106; - goto yy91; - } else { - if (yych <= 'F') goto yy106; - if (yych <= '`') goto yy91; - if (yych <= 'f') goto yy106; - goto yy91; - } -yy102: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy91; - if (yych <= '9') goto yy107; - goto yy91; - } else { - if (yych <= 'F') goto yy107; - if (yych <= '`') goto yy91; - if (yych <= 'f') goto yy107; - goto yy91; - } -yy103: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy91; - if (yych <= '9') goto yy109; - goto yy91; - } else { - if (yych <= 'F') goto yy109; - if (yych <= '`') goto yy91; - if (yych <= 'f') goto yy109; - goto yy91; - } -yy104: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy91; - if (yych <= '9') goto yy111; - goto yy91; - } else { - if (yych <= 'F') goto yy111; - if (yych <= '`') goto yy91; - if (yych <= 'f') goto yy111; - goto yy91; - } -yy105: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy91; - if (yych <= '9') goto yy113; - goto yy91; - } else { - if (yych <= 'F') goto yy113; - if (yych <= '`') goto yy91; - if (yych <= 'f') goto yy113; - goto yy91; - } -yy106: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy91; - if (yych <= '9') goto yy115; - goto yy91; - } else { - if (yych <= 'F') goto yy115; - if (yych <= '`') goto yy91; - if (yych <= 'f') goto yy115; - goto yy91; - } -yy107: - ++YYCURSOR; - { - s->str_esc += 5; - PHP_JSON_CONDITION_GOTO(STR_P1); - } -yy109: - ++YYCURSOR; - { - s->str_esc += 4; - PHP_JSON_CONDITION_GOTO(STR_P1); - } -yy111: - ++YYCURSOR; - { - s->str_esc += 3; - PHP_JSON_CONDITION_GOTO(STR_P1); - } -yy113: - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '\\') goto yy116; -yy114: - { - s->errcode = PHP_JSON_ERROR_UTF16; - return PHP_JSON_T_ERROR; - } -yy115: - ++YYCURSOR; - goto yy114; -yy116: - yych = *++YYCURSOR; - if (yych != 'u') goto yy91; - yych = *++YYCURSOR; - if (yych == 'D') goto yy118; - if (yych != 'd') goto yy91; -yy118: - yych = *++YYCURSOR; - if (yych <= 'B') goto yy91; - if (yych <= 'F') goto yy119; - if (yych <= 'b') goto yy91; - if (yych >= 'g') goto yy91; -yy119: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy91; - if (yych >= ':') goto yy91; - } else { - if (yych <= 'F') goto yy120; - if (yych <= '`') goto yy91; - if (yych >= 'g') goto yy91; - } -yy120: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy91; - if (yych >= ':') goto yy91; - } else { - if (yych <= 'F') goto yy121; - if (yych <= '`') goto yy91; - if (yych >= 'g') goto yy91; - } -yy121: - ++YYCURSOR; - { - s->str_esc += 8; - PHP_JSON_CONDITION_GOTO(STR_P1); - } -/* *********************************** */ -yyc_STR_P2_BIN: - yych = *YYCURSOR; - if (yych <= 0xDF) { - if (yych <= '[') { - if (yych == '"') goto yy127; - } else { - if (yych <= '\\') goto yy129; - if (yych <= 0x7F) goto yy125; - if (yych <= 0xC1) goto yy131; - goto yy133; - } - } else { - if (yych <= 0xEF) { - if (yych <= 0xE0) goto yy134; - if (yych == 0xED) goto yy136; - goto yy135; - } else { - if (yych <= 0xF0) goto yy137; - if (yych <= 0xF3) goto yy138; - if (yych <= 0xF4) goto yy139; - goto yy131; - } - } -yy125: - ++YYCURSOR; - { PHP_JSON_CONDITION_GOTO(STR_P2_BIN); } -yy127: - ++YYCURSOR; - YYSETCONDITION(yycJS); - { - PHP_JSON_SCANNER_COPY_ESC(); - return PHP_JSON_T_STRING; - } -yy129: - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'u') goto yy140; -yy130: - { - char esc; - PHP_JSON_SCANNER_COPY_ESC(); - switch (*s->cursor) { - case 'b': - esc = '\b'; - break; - case 'f': - esc = '\f'; break; - case 'n': - esc = '\n'; - break; - case 'r': - esc = '\r'; - break; - case 't': - esc = '\t'; - break; - case '\\': - case '/': - case '"': - esc = *s->cursor; - break; - default: - s->errcode = PHP_JSON_ERROR_SYNTAX; - return PHP_JSON_T_ERROR; - } - *(s->pstr++) = esc; - ++YYCURSOR; - s->str_start = s->cursor; - PHP_JSON_CONDITION_GOTO_STR_P2(); - } -yy131: - ++YYCURSOR; -yy132: - { - if (s->utf8_invalid) { - PHP_JSON_SCANNER_COPY_ESC(); - if (s->options & PHP_JSON_INVALID_UTF8_SUBSTITUTE) { - *(s->pstr++) = (char) (0xe0 | (0xfffd >> 12)); - *(s->pstr++) = (char) (0x80 | ((0xfffd >> 6) & 0x3f)); - *(s->pstr++) = (char) (0x80 | (0xfffd & 0x3f)); - } - s->str_start = s->cursor; - } - PHP_JSON_CONDITION_GOTO(STR_P2_BIN); - } -yy133: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy132; - if (yych <= 0xBF) goto yy125; - goto yy132; -yy134: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x9F) goto yy132; - if (yych <= 0xBF) goto yy142; - goto yy132; -yy135: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy132; - if (yych <= 0xBF) goto yy142; - goto yy132; -yy136: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy132; - if (yych <= 0x9F) goto yy142; - goto yy132; -yy137: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x8F) goto yy132; - if (yych <= 0xBF) goto yy143; - goto yy132; -yy138: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy132; - if (yych <= 0xBF) goto yy143; - goto yy132; -yy139: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy132; - if (yych <= 0x8F) goto yy143; - goto yy132; -yy140: - yych = *++YYCURSOR; - if (yych <= 'D') { - if (yych <= '9') { - if (yych <= '/') goto yy141; - if (yych <= '0') goto yy144; - goto yy145; - } else { - if (yych <= '@') goto yy141; - if (yych <= 'C') goto yy145; - goto yy146; - } - } else { - if (yych <= 'c') { - if (yych <= 'F') goto yy145; - if (yych >= 'a') goto yy145; - } else { - if (yych <= 'd') goto yy146; - if (yych <= 'f') goto yy145; - } - } -yy141: - YYCURSOR = YYMARKER; - if (yyaccept == 0) { - goto yy130; - } else { - goto yy132; - } -yy142: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy141; - if (yych <= 0xBF) goto yy125; - goto yy141; -yy143: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy141; - if (yych <= 0xBF) goto yy142; - goto yy141; -yy144: - yych = *++YYCURSOR; - if (yych <= '9') { - if (yych <= '/') goto yy141; - if (yych <= '0') goto yy147; - if (yych <= '7') goto yy148; - goto yy149; - } else { - if (yych <= 'F') { - if (yych <= '@') goto yy141; - goto yy149; - } else { - if (yych <= '`') goto yy141; - if (yych <= 'f') goto yy149; - goto yy141; - } - } -yy145: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy141; - if (yych <= '9') goto yy149; - goto yy141; - } else { - if (yych <= 'F') goto yy149; - if (yych <= '`') goto yy141; - if (yych <= 'f') goto yy149; - goto yy141; - } -yy146: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy141; - if (yych <= '7') goto yy149; - if (yych <= '9') goto yy150; - goto yy141; - } else { - if (yych <= 'B') goto yy150; - if (yych <= '`') goto yy141; - if (yych <= 'b') goto yy150; - goto yy141; - } -yy147: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy141; - if (yych <= '7') goto yy151; - if (yych <= '9') goto yy152; - goto yy141; - } else { - if (yych <= 'F') goto yy152; - if (yych <= '`') goto yy141; - if (yych <= 'f') goto yy152; - goto yy141; - } -yy148: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy141; - if (yych <= '9') goto yy152; - goto yy141; - } else { - if (yych <= 'F') goto yy152; - if (yych <= '`') goto yy141; - if (yych <= 'f') goto yy152; - goto yy141; - } -yy149: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy141; - if (yych <= '9') goto yy153; - goto yy141; - } else { - if (yych <= 'F') goto yy153; - if (yych <= '`') goto yy141; - if (yych <= 'f') goto yy153; - goto yy141; - } -yy150: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy141; - if (yych <= '9') goto yy154; - goto yy141; - } else { - if (yych <= 'F') goto yy154; - if (yych <= '`') goto yy141; - if (yych <= 'f') goto yy154; - goto yy141; - } -yy151: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy141; - if (yych <= '9') goto yy155; - goto yy141; - } else { - if (yych <= 'F') goto yy155; - if (yych <= '`') goto yy141; - if (yych <= 'f') goto yy155; - goto yy141; - } -yy152: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy141; - if (yych <= '9') goto yy157; - goto yy141; - } else { - if (yych <= 'F') goto yy157; - if (yych <= '`') goto yy141; - if (yych <= 'f') goto yy157; - goto yy141; - } -yy153: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy141; - if (yych <= '9') goto yy159; - goto yy141; - } else { - if (yych <= 'F') goto yy159; - if (yych <= '`') goto yy141; - if (yych <= 'f') goto yy159; - goto yy141; - } -yy154: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy141; - if (yych <= '9') goto yy161; - goto yy141; - } else { - if (yych <= 'F') goto yy161; - if (yych <= '`') goto yy141; - if (yych <= 'f') goto yy161; - goto yy141; - } -yy155: - ++YYCURSOR; - { - int utf16 = php_json_ucs2_to_int(s, 2); - PHP_JSON_SCANNER_COPY_UTF(); - *(s->pstr++) = (char) utf16; - s->str_start = s->cursor; - PHP_JSON_CONDITION_GOTO_STR_P2(); - } -yy157: - ++YYCURSOR; - { - int utf16 = php_json_ucs2_to_int(s, 3); - PHP_JSON_SCANNER_COPY_UTF(); - *(s->pstr++) = (char) (0xc0 | (utf16 >> 6)); - *(s->pstr++) = (char) (0x80 | (utf16 & 0x3f)); - s->str_start = s->cursor; - PHP_JSON_CONDITION_GOTO_STR_P2(); - } -yy159: - ++YYCURSOR; - { - int utf16 = php_json_ucs2_to_int(s, 4); - PHP_JSON_SCANNER_COPY_UTF(); - *(s->pstr++) = (char) (0xe0 | (utf16 >> 12)); - *(s->pstr++) = (char) (0x80 | ((utf16 >> 6) & 0x3f)); - *(s->pstr++) = (char) (0x80 | (utf16 & 0x3f)); - s->str_start = s->cursor; - PHP_JSON_CONDITION_GOTO_STR_P2(); - } -yy161: - yych = *++YYCURSOR; - if (yych != '\\') goto yy141; - yych = *++YYCURSOR; - if (yych != 'u') goto yy141; - yych = *++YYCURSOR; - if (yych == 'D') goto yy164; - if (yych != 'd') goto yy141; -yy164: - yych = *++YYCURSOR; - if (yych <= 'B') goto yy141; - if (yych <= 'F') goto yy165; - if (yych <= 'b') goto yy141; - if (yych >= 'g') goto yy141; -yy165: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy141; - if (yych >= ':') goto yy141; - } else { - if (yych <= 'F') goto yy166; - if (yych <= '`') goto yy141; - if (yych >= 'g') goto yy141; - } -yy166: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy141; - if (yych >= ':') goto yy141; - } else { - if (yych <= 'F') goto yy167; - if (yych <= '`') goto yy141; - if (yych >= 'g') goto yy141; - } -yy167: - ++YYCURSOR; - { - int utf32, utf16_hi, utf16_lo; - utf16_hi = php_json_ucs2_to_int(s, 4); - utf16_lo = php_json_ucs2_to_int_ex(s, 4, 7); - utf32 = ((utf16_lo & 0x3FF) << 10) + (utf16_hi & 0x3FF) + 0x10000; - PHP_JSON_SCANNER_COPY_UTF_SP(); - *(s->pstr++) = (char) (0xf0 | (utf32 >> 18)); - *(s->pstr++) = (char) (0x80 | ((utf32 >> 12) & 0x3f)); - *(s->pstr++) = (char) (0x80 | ((utf32 >> 6) & 0x3f)); - *(s->pstr++) = (char) (0x80 | (utf32 & 0x3f)); - s->str_start = s->cursor; - PHP_JSON_CONDITION_GOTO_STR_P2(); - } -/* *********************************** */ -yyc_STR_P2_UTF: - yych = *YYCURSOR; - if (yych == '"') goto yy173; - if (yych == '\\') goto yy175; - ++YYCURSOR; - { PHP_JSON_CONDITION_GOTO(STR_P2_UTF); } -yy173: - ++YYCURSOR; - YYSETCONDITION(yycJS); - { - PHP_JSON_SCANNER_COPY_ESC(); - return PHP_JSON_T_STRING; - } -yy175: - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'u') goto yy177; -yy176: - { - char esc; - PHP_JSON_SCANNER_COPY_ESC(); - switch (*s->cursor) { - case 'b': - esc = '\b'; - break; - case 'f': - esc = '\f'; break; - case 'n': - esc = '\n'; - break; - case 'r': - esc = '\r'; - break; - case 't': - esc = '\t'; - break; - case '\\': - case '/': - case '"': - esc = *s->cursor; - break; - default: - s->errcode = PHP_JSON_ERROR_SYNTAX; - return PHP_JSON_T_ERROR; - } - *(s->pstr++) = esc; - ++YYCURSOR; - s->str_start = s->cursor; - PHP_JSON_CONDITION_GOTO_STR_P2(); - } -yy177: - yych = *++YYCURSOR; - if (yych <= 'D') { - if (yych <= '9') { - if (yych <= '/') goto yy178; - if (yych <= '0') goto yy179; - goto yy180; - } else { - if (yych <= '@') goto yy178; - if (yych <= 'C') goto yy180; - goto yy181; - } - } else { - if (yych <= 'c') { - if (yych <= 'F') goto yy180; - if (yych >= 'a') goto yy180; - } else { - if (yych <= 'd') goto yy181; - if (yych <= 'f') goto yy180; - } - } -yy178: - YYCURSOR = YYMARKER; - goto yy176; -yy179: - yych = *++YYCURSOR; - if (yych <= '9') { - if (yych <= '/') goto yy178; - if (yych <= '0') goto yy182; - if (yych <= '7') goto yy183; - goto yy184; - } else { - if (yych <= 'F') { - if (yych <= '@') goto yy178; - goto yy184; - } else { - if (yych <= '`') goto yy178; - if (yych <= 'f') goto yy184; - goto yy178; - } - } -yy180: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy178; - if (yych <= '9') goto yy184; - goto yy178; - } else { - if (yych <= 'F') goto yy184; - if (yych <= '`') goto yy178; - if (yych <= 'f') goto yy184; - goto yy178; - } -yy181: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy178; - if (yych <= '7') goto yy184; - if (yych <= '9') goto yy185; - goto yy178; - } else { - if (yych <= 'B') goto yy185; - if (yych <= '`') goto yy178; - if (yych <= 'b') goto yy185; - goto yy178; - } -yy182: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy178; - if (yych <= '7') goto yy186; - if (yych <= '9') goto yy187; - goto yy178; - } else { - if (yych <= 'F') goto yy187; - if (yych <= '`') goto yy178; - if (yych <= 'f') goto yy187; - goto yy178; - } -yy183: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy178; - if (yych <= '9') goto yy187; - goto yy178; - } else { - if (yych <= 'F') goto yy187; - if (yych <= '`') goto yy178; - if (yych <= 'f') goto yy187; - goto yy178; - } -yy184: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy178; - if (yych <= '9') goto yy188; - goto yy178; - } else { - if (yych <= 'F') goto yy188; - if (yych <= '`') goto yy178; - if (yych <= 'f') goto yy188; - goto yy178; - } -yy185: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy178; - if (yych <= '9') goto yy189; - goto yy178; - } else { - if (yych <= 'F') goto yy189; - if (yych <= '`') goto yy178; - if (yych <= 'f') goto yy189; - goto yy178; - } -yy186: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy178; - if (yych <= '9') goto yy190; - goto yy178; - } else { - if (yych <= 'F') goto yy190; - if (yych <= '`') goto yy178; - if (yych <= 'f') goto yy190; - goto yy178; - } -yy187: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy178; - if (yych <= '9') goto yy192; - goto yy178; - } else { - if (yych <= 'F') goto yy192; - if (yych <= '`') goto yy178; - if (yych <= 'f') goto yy192; - goto yy178; - } -yy188: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy178; - if (yych <= '9') goto yy194; - goto yy178; - } else { - if (yych <= 'F') goto yy194; - if (yych <= '`') goto yy178; - if (yych <= 'f') goto yy194; - goto yy178; - } -yy189: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy178; - if (yych <= '9') goto yy196; - goto yy178; - } else { - if (yych <= 'F') goto yy196; - if (yych <= '`') goto yy178; - if (yych <= 'f') goto yy196; - goto yy178; - } -yy190: - ++YYCURSOR; - { - int utf16 = php_json_ucs2_to_int(s, 2); - PHP_JSON_SCANNER_COPY_UTF(); - *(s->pstr++) = (char) utf16; - s->str_start = s->cursor; - PHP_JSON_CONDITION_GOTO_STR_P2(); - } -yy192: - ++YYCURSOR; - { - int utf16 = php_json_ucs2_to_int(s, 3); - PHP_JSON_SCANNER_COPY_UTF(); - *(s->pstr++) = (char) (0xc0 | (utf16 >> 6)); - *(s->pstr++) = (char) (0x80 | (utf16 & 0x3f)); - s->str_start = s->cursor; - PHP_JSON_CONDITION_GOTO_STR_P2(); - } -yy194: - ++YYCURSOR; - { - int utf16 = php_json_ucs2_to_int(s, 4); - PHP_JSON_SCANNER_COPY_UTF(); - *(s->pstr++) = (char) (0xe0 | (utf16 >> 12)); - *(s->pstr++) = (char) (0x80 | ((utf16 >> 6) & 0x3f)); - *(s->pstr++) = (char) (0x80 | (utf16 & 0x3f)); - s->str_start = s->cursor; - PHP_JSON_CONDITION_GOTO_STR_P2(); - } -yy196: - yych = *++YYCURSOR; - if (yych != '\\') goto yy178; - yych = *++YYCURSOR; - if (yych != 'u') goto yy178; - yych = *++YYCURSOR; - if (yych == 'D') goto yy199; - if (yych != 'd') goto yy178; -yy199: - yych = *++YYCURSOR; - if (yych <= 'B') goto yy178; - if (yych <= 'F') goto yy200; - if (yych <= 'b') goto yy178; - if (yych >= 'g') goto yy178; -yy200: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy178; - if (yych >= ':') goto yy178; - } else { - if (yych <= 'F') goto yy201; - if (yych <= '`') goto yy178; - if (yych >= 'g') goto yy178; - } -yy201: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych <= '/') goto yy178; - if (yych >= ':') goto yy178; - } else { - if (yych <= 'F') goto yy202; - if (yych <= '`') goto yy178; - if (yych >= 'g') goto yy178; - } -yy202: - ++YYCURSOR; - { - int utf32, utf16_hi, utf16_lo; - utf16_hi = php_json_ucs2_to_int(s, 4); - utf16_lo = php_json_ucs2_to_int_ex(s, 4, 7); - utf32 = ((utf16_lo & 0x3FF) << 10) + (utf16_hi & 0x3FF) + 0x10000; - PHP_JSON_SCANNER_COPY_UTF_SP(); - *(s->pstr++) = (char) (0xf0 | (utf32 >> 18)); - *(s->pstr++) = (char) (0x80 | ((utf32 >> 12) & 0x3f)); - *(s->pstr++) = (char) (0x80 | ((utf32 >> 6) & 0x3f)); - *(s->pstr++) = (char) (0x80 | (utf32 & 0x3f)); - s->str_start = s->cursor; - PHP_JSON_CONDITION_GOTO_STR_P2(); - } - } - - -} - diff --git a/ext/json/php_json_scanner_defs.h b/ext/json/php_json_scanner_defs.h deleted file mode 100644 index 97ad7626ad..0000000000 --- a/ext/json/php_json_scanner_defs.h +++ /dev/null @@ -1,8 +0,0 @@ -/* Generated by re2c 1.0.3 */ - -enum YYCONDTYPE { - yycJS, - yycSTR_P1, - yycSTR_P2_BIN, - yycSTR_P2_UTF, -}; diff --git a/ext/pdo/pdo_sql_parser.c b/ext/pdo/pdo_sql_parser.c deleted file mode 100644 index 779a70280a..0000000000 --- a/ext/pdo/pdo_sql_parser.c +++ /dev/null @@ -1,739 +0,0 @@ -/* Generated by re2c 1.0.3 */ -#line 1 "ext/pdo/pdo_sql_parser.re" -/* - +----------------------------------------------------------------------+ - | PHP Version 7 | - +----------------------------------------------------------------------+ - | Copyright (c) 1997-2018 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: | - | http://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: George Schlossnagle <george@omniti.com> | - +----------------------------------------------------------------------+ -*/ - -#include "php.h" -#include "php_pdo_driver.h" -#include "php_pdo_int.h" - -#define PDO_PARSER_TEXT 1 -#define PDO_PARSER_BIND 2 -#define PDO_PARSER_BIND_POS 3 -#define PDO_PARSER_EOI 4 - -#define RET(i) {s->cur = cursor; return i; } -#define SKIP_ONE(i) {s->cur = s->tok + 1; return i; } - -#define YYCTYPE unsigned char -#define YYCURSOR cursor -#define YYLIMIT s->end -#define YYMARKER s->ptr -#define YYFILL(n) { RET(PDO_PARSER_EOI); } - -typedef struct Scanner { - char *ptr, *cur, *tok, *end; -} Scanner; - -static int scan(Scanner *s) -{ - char *cursor = s->cur; - - s->tok = cursor; - #line 53 "ext/pdo/pdo_sql_parser.re" - - - -#line 53 "ext/pdo/pdo_sql_parser.c" -{ - YYCTYPE yych; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - switch (yych) { - case 0x00: goto yy2; - case '"': goto yy6; - case '\'': goto yy8; - case '(': - case ')': - case '*': - case '+': - case ',': - case '.': goto yy9; - case '-': goto yy10; - case '/': goto yy11; - case ':': goto yy12; - case '?': goto yy13; - default: goto yy3; - } -yy2: - YYCURSOR = YYMARKER; - goto yy7; -yy3: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - switch (yych) { - case 0x00: - case '"': - case '\'': - case '(': - case ')': - case '*': - case '+': - case ',': - case '-': - case '.': - case '/': - case ':': - case '?': goto yy5; - default: goto yy3; - } -yy5: -#line 63 "ext/pdo/pdo_sql_parser.re" - { RET(PDO_PARSER_TEXT); } -#line 100 "ext/pdo/pdo_sql_parser.c" -yy6: - yych = *(YYMARKER = ++YYCURSOR); - if (yych >= 0x01) goto yy16; -yy7: -#line 61 "ext/pdo/pdo_sql_parser.re" - { SKIP_ONE(PDO_PARSER_TEXT); } -#line 107 "ext/pdo/pdo_sql_parser.c" -yy8: - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x00) goto yy7; - goto yy21; -yy9: - ++YYCURSOR; - goto yy7; -yy10: - yych = *++YYCURSOR; - switch (yych) { - case '-': goto yy25; - default: goto yy7; - } -yy11: - yych = *++YYCURSOR; - switch (yych) { - case '*': goto yy28; - default: goto yy7; - } -yy12: - yych = *++YYCURSOR; - switch (yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': goto yy30; - case ':': goto yy33; - default: goto yy7; - } -yy13: - yych = *++YYCURSOR; - switch (yych) { - case '?': goto yy36; - default: goto yy14; - } -yy14: -#line 60 "ext/pdo/pdo_sql_parser.re" - { RET(PDO_PARSER_BIND_POS); } -#line 205 "ext/pdo/pdo_sql_parser.c" -yy15: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; -yy16: - switch (yych) { - case 0x00: goto yy2; - case '"': goto yy17; - case '\\': goto yy19; - default: goto yy15; - } -yy17: - ++YYCURSOR; -#line 56 "ext/pdo/pdo_sql_parser.re" - { RET(PDO_PARSER_TEXT); } -#line 221 "ext/pdo/pdo_sql_parser.c" -yy19: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= 0x00) goto yy2; - goto yy15; -yy20: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; -yy21: - switch (yych) { - case 0x00: goto yy2; - case '\'': goto yy22; - case '\\': goto yy24; - default: goto yy20; - } -yy22: - ++YYCURSOR; -#line 57 "ext/pdo/pdo_sql_parser.re" - { RET(PDO_PARSER_TEXT); } -#line 243 "ext/pdo/pdo_sql_parser.c" -yy24: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= 0x00) goto yy2; - goto yy20; -yy25: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - switch (yych) { - case '\n': - case '\r': goto yy27; - default: goto yy25; - } -yy27: -#line 62 "ext/pdo/pdo_sql_parser.re" - { RET(PDO_PARSER_TEXT); } -#line 262 "ext/pdo/pdo_sql_parser.c" -yy28: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - switch (yych) { - case '*': goto yy38; - default: goto yy28; - } -yy30: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - switch (yych) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': goto yy30; - default: goto yy32; - } -yy32: -#line 59 "ext/pdo/pdo_sql_parser.re" - { RET(PDO_PARSER_BIND); } -#line 344 "ext/pdo/pdo_sql_parser.c" -yy33: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - switch (yych) { - case ':': goto yy33; - default: goto yy35; - } -yy35: -#line 58 "ext/pdo/pdo_sql_parser.re" - { RET(PDO_PARSER_TEXT); } -#line 356 "ext/pdo/pdo_sql_parser.c" -yy36: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - switch (yych) { - case '?': goto yy36; - default: goto yy35; - } -yy38: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - switch (yych) { - case '*': goto yy38; - case '/': goto yy40; - default: goto yy28; - } -yy40: - ++YYCURSOR; - goto yy27; -} -#line 64 "ext/pdo/pdo_sql_parser.re" - -} - -struct placeholder { - char *pos; - size_t len; - size_t qlen; /* quoted length of value */ - char *quoted; /* quoted value */ - int freeq; - int bindno; - struct placeholder *next; -}; - -static void free_param_name(zval *el) { - efree(Z_PTR_P(el)); -} - -PDO_API int pdo_parse_params(pdo_stmt_t *stmt, char *inquery, size_t inquery_len, - char **outquery, size_t *outquery_len) -{ - Scanner s; - char *ptr, *newbuffer; - ptrdiff_t t; - uint32_t bindno = 0; - int ret = 0; - size_t newbuffer_len; - HashTable *params; - struct pdo_bound_param_data *param; - int query_type = PDO_PLACEHOLDER_NONE; - struct placeholder *placeholders = NULL, *placetail = NULL, *plc = NULL; - - ptr = *outquery; - s.cur = inquery; - s.end = inquery + inquery_len + 1; - - /* phase 1: look for args */ - while((t = scan(&s)) != PDO_PARSER_EOI) { - if (t == PDO_PARSER_BIND || t == PDO_PARSER_BIND_POS) { - if (t == PDO_PARSER_BIND) { - ptrdiff_t len = s.cur - s.tok; - if ((inquery < (s.cur - len)) && isalnum(*(s.cur - len - 1))) { - continue; - } - query_type |= PDO_PLACEHOLDER_NAMED; - } else { - query_type |= PDO_PLACEHOLDER_POSITIONAL; - } - - plc = emalloc(sizeof(*plc)); - memset(plc, 0, sizeof(*plc)); - plc->next = NULL; - plc->pos = s.tok; - plc->len = s.cur - s.tok; - plc->bindno = bindno++; - - if (placetail) { - placetail->next = plc; - } else { - placeholders = plc; - } - placetail = plc; - } - } - - if (bindno == 0) { - /* nothing to do; good! */ - return 0; - } - - /* did the query make sense to me? */ - if (query_type == (PDO_PLACEHOLDER_NAMED|PDO_PLACEHOLDER_POSITIONAL)) { - /* they mixed both types; punt */ - pdo_raise_impl_error(stmt->dbh, stmt, "HY093", "mixed named and positional parameters"); - ret = -1; - goto clean_up; - } - - if (stmt->supports_placeholders == query_type && !stmt->named_rewrite_template) { - /* query matches native syntax */ - ret = 0; - goto clean_up; - } - - if (stmt->named_rewrite_template) { - /* magic/hack. - * We we pretend that the query was positional even if - * it was named so that we fall into the - * named rewrite case below. Not too pretty, - * but it works. */ - query_type = PDO_PLACEHOLDER_POSITIONAL; - } - - params = stmt->bound_params; - - /* Do we have placeholders but no bound params */ - if (bindno && !params && stmt->supports_placeholders == PDO_PLACEHOLDER_NONE) { - pdo_raise_impl_error(stmt->dbh, stmt, "HY093", "no parameters were bound"); - ret = -1; - goto clean_up; - } - - if (params && bindno != zend_hash_num_elements(params) && stmt->supports_placeholders == PDO_PLACEHOLDER_NONE) { - /* extra bit of validation for instances when same params are bound more than once */ - if (query_type != PDO_PLACEHOLDER_POSITIONAL && bindno > zend_hash_num_elements(params)) { - int ok = 1; - for (plc = placeholders; plc; plc = plc->next) { - if ((param = zend_hash_str_find_ptr(params, plc->pos, plc->len)) == NULL) { - ok = 0; - break; - } - } - if (ok) { - goto safe; - } - } - pdo_raise_impl_error(stmt->dbh, stmt, "HY093", "number of bound variables does not match number of tokens"); - ret = -1; - goto clean_up; - } -safe: - /* what are we going to do ? */ - if (stmt->supports_placeholders == PDO_PLACEHOLDER_NONE) { - /* query generation */ - - newbuffer_len = inquery_len; - - /* let's quote all the values */ - for (plc = placeholders; plc; plc = plc->next) { - if (query_type == PDO_PLACEHOLDER_POSITIONAL) { - param = zend_hash_index_find_ptr(params, plc->bindno); - } else { - param = zend_hash_str_find_ptr(params, plc->pos, plc->len); - } - if (param == NULL) { - /* parameter was not defined */ - ret = -1; - pdo_raise_impl_error(stmt->dbh, stmt, "HY093", "parameter was not defined"); - goto clean_up; - } - if (stmt->dbh->methods->quoter) { - zval *parameter; - if (Z_ISREF(param->parameter)) { - parameter = Z_REFVAL(param->parameter); - } else { - parameter = ¶m->parameter; - } - if (param->param_type == PDO_PARAM_LOB && Z_TYPE_P(parameter) == IS_RESOURCE) { - php_stream *stm; - - php_stream_from_zval_no_verify(stm, parameter); - if (stm) { - zend_string *buf; - - buf = php_stream_copy_to_mem(stm, PHP_STREAM_COPY_ALL, 0); - if (!buf) { - buf = ZSTR_EMPTY_ALLOC(); - } - if (!stmt->dbh->methods->quoter(stmt->dbh, ZSTR_VAL(buf), ZSTR_LEN(buf), &plc->quoted, &plc->qlen, - param->param_type)) { - /* bork */ - ret = -1; - strncpy(stmt->error_code, stmt->dbh->error_code, 6); - if (buf) { - zend_string_release_ex(buf, 0); - } - goto clean_up; - } - if (buf) { - zend_string_release_ex(buf, 0); - } - } else { - pdo_raise_impl_error(stmt->dbh, stmt, "HY105", "Expected a stream resource"); - ret = -1; - goto clean_up; - } - plc->freeq = 1; - } else { - enum pdo_param_type param_type = param->param_type; - zend_string *buf = NULL; - - /* assume all types are nullable */ - if (Z_TYPE_P(parameter) == IS_NULL) { - param_type = PDO_PARAM_NULL; - } - - switch (param_type) { - case PDO_PARAM_BOOL: - plc->quoted = zend_is_true(parameter) ? "1" : "0"; - plc->qlen = sizeof("1")-1; - plc->freeq = 0; - break; - - case PDO_PARAM_INT: - buf = zend_long_to_str(zval_get_long(parameter)); - - plc->qlen = ZSTR_LEN(buf); - plc->quoted = estrdup(ZSTR_VAL(buf)); - plc->freeq = 1; - break; - - case PDO_PARAM_NULL: - plc->quoted = "NULL"; - plc->qlen = sizeof("NULL")-1; - plc->freeq = 0; - break; - - default: - buf = zval_get_string(parameter); - if (!stmt->dbh->methods->quoter(stmt->dbh, ZSTR_VAL(buf), - ZSTR_LEN(buf), &plc->quoted, &plc->qlen, - param_type)) { - /* bork */ - ret = -1; - strncpy(stmt->error_code, stmt->dbh->error_code, 6); - if (buf) { - zend_string_release_ex(buf, 0); - } - goto clean_up; - } - plc->freeq = 1; - } - - if (buf) { - zend_string_release_ex(buf, 0); - } - } - } else { - zval *parameter; - if (Z_ISREF(param->parameter)) { - parameter = Z_REFVAL(param->parameter); - } else { - parameter = ¶m->parameter; - } - plc->quoted = Z_STRVAL_P(parameter); - plc->qlen = Z_STRLEN_P(parameter); - } - newbuffer_len += plc->qlen; - } - -rewrite: - /* allocate output buffer */ - newbuffer = emalloc(newbuffer_len + 1); - *outquery = newbuffer; - - /* and build the query */ - plc = placeholders; - ptr = inquery; - - do { - t = plc->pos - ptr; - if (t) { - memcpy(newbuffer, ptr, t); - newbuffer += t; - } - memcpy(newbuffer, plc->quoted, plc->qlen); - newbuffer += plc->qlen; - ptr = plc->pos + plc->len; - - plc = plc->next; - } while (plc); - - t = (inquery + inquery_len) - ptr; - if (t) { - memcpy(newbuffer, ptr, t); - newbuffer += t; - } - *newbuffer = '\0'; - *outquery_len = newbuffer - *outquery; - - ret = 1; - goto clean_up; - - } else if (query_type == PDO_PLACEHOLDER_POSITIONAL) { - /* rewrite ? to :pdoX */ - char *name, *idxbuf; - const char *tmpl = stmt->named_rewrite_template ? stmt->named_rewrite_template : ":pdo%d"; - int bind_no = 1; - - newbuffer_len = inquery_len; - - if (stmt->bound_param_map == NULL) { - ALLOC_HASHTABLE(stmt->bound_param_map); - zend_hash_init(stmt->bound_param_map, 13, NULL, free_param_name, 0); - } - - for (plc = placeholders; plc; plc = plc->next) { - int skip_map = 0; - char *p; - name = estrndup(plc->pos, plc->len); - - /* check if bound parameter is already available */ - if (!strcmp(name, "?") || (p = zend_hash_str_find_ptr(stmt->bound_param_map, name, plc->len)) == NULL) { - spprintf(&idxbuf, 0, tmpl, bind_no++); - } else { - idxbuf = estrdup(p); - skip_map = 1; - } - - plc->quoted = idxbuf; - plc->qlen = strlen(plc->quoted); - plc->freeq = 1; - newbuffer_len += plc->qlen; - - if (!skip_map && stmt->named_rewrite_template) { - /* create a mapping */ - zend_hash_str_update_mem(stmt->bound_param_map, name, plc->len, idxbuf, plc->qlen + 1); - } - - /* map number to name */ - zend_hash_index_update_mem(stmt->bound_param_map, plc->bindno, idxbuf, plc->qlen + 1); - - efree(name); - } - - goto rewrite; - - } else { - /* rewrite :name to ? */ - - newbuffer_len = inquery_len; - - if (stmt->bound_param_map == NULL) { - ALLOC_HASHTABLE(stmt->bound_param_map); - zend_hash_init(stmt->bound_param_map, 13, NULL, free_param_name, 0); - } - - for (plc = placeholders; plc; plc = plc->next) { - char *name; - name = estrndup(plc->pos, plc->len); - zend_hash_index_update_mem(stmt->bound_param_map, plc->bindno, name, plc->len + 1); - efree(name); - plc->quoted = "?"; - plc->qlen = 1; - } - - goto rewrite; - } - -clean_up: - - while (placeholders) { - plc = placeholders; - placeholders = plc->next; - - if (plc->freeq) { - efree(plc->quoted); - } - - efree(plc); - } - - return ret; -} - -/* - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * End: - * vim600: noet sw=4 ts=4 fdm=marker ft=c - * vim<600: noet sw=4 ts=4 - */ diff --git a/ext/phar/phar_path_check.c b/ext/phar/phar_path_check.c deleted file mode 100644 index 3b9aa06444..0000000000 --- a/ext/phar/phar_path_check.c +++ /dev/null @@ -1,259 +0,0 @@ -/* Generated by re2c 1.0.3 */ -#line 1 "ext/phar/phar_path_check.re" -/* - +----------------------------------------------------------------------+ - | phar php single-file executable PHP extension | - +----------------------------------------------------------------------+ - | Copyright (c) 2007-2018 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: | - | http://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. | - +----------------------------------------------------------------------+ - | Authors: Marcus Boerger <helly@php.net> | - +----------------------------------------------------------------------+ -*/ - -#include "phar_internal.h" - -phar_path_check_result phar_path_check(char **s, size_t *len, const char **error) -{ - const unsigned char *p = (const unsigned char*)*s; - const unsigned char *m; - - if (*len == 1 && *p == '.') { - *error = "current directory reference"; - return pcr_err_curr_dir; - } else if (*len == 2 && p[0] == '.' && p[1] == '.') { - *error = "upper directory reference"; - return pcr_err_up_dir; - } - -#define YYCTYPE unsigned char -#define YYCURSOR p -#define YYLIMIT p+*len -#define YYMARKER m -#define YYFILL(n) - -loop: - -#line 47 "ext/phar/phar_path_check.c" -{ - YYCTYPE yych; - unsigned int yyaccept = 0; - if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); - yych = *YYCURSOR; - if (yych <= '[') { - if (yych <= ')') { - if (yych <= '\f') { - if (yych >= 0x01) goto yy4; - } else { - if (yych <= '\r') goto yy6; - if (yych <= 0x19) goto yy4; - goto yy7; - } - } else { - if (yych <= '/') { - if (yych <= '*') goto yy9; - if (yych <= '.') goto yy7; - goto yy11; - } else { - if (yych == '?') goto yy12; - goto yy7; - } - } - } else { - if (yych <= 0xEC) { - if (yych <= 0xC1) { - if (yych <= '\\') goto yy14; - if (yych <= 0x7F) goto yy7; - goto yy4; - } else { - if (yych <= 0xDF) goto yy16; - if (yych <= 0xE0) goto yy17; - goto yy18; - } - } else { - if (yych <= 0xF0) { - if (yych <= 0xED) goto yy19; - if (yych <= 0xEF) goto yy18; - goto yy20; - } else { - if (yych <= 0xF3) goto yy21; - if (yych <= 0xF4) goto yy22; - goto yy4; - } - } - } - ++YYCURSOR; -#line 93 "ext/phar/phar_path_check.re" - { - if (**s == '/') { - (*s)++; - (*len)--; - } - if ((p - (const unsigned char*)*s) - 1 != *len) - { - *error ="illegal character"; - return pcr_err_illegal_char; - } - *error = NULL; - return pcr_is_ok; - } -#line 110 "ext/phar/phar_path_check.c" -yy4: - ++YYCURSOR; -yy5: -#line 106 "ext/phar/phar_path_check.re" - { - *error ="illegal character"; - return pcr_err_illegal_char; - } -#line 119 "ext/phar/phar_path_check.c" -yy6: - yych = *++YYCURSOR; - if (yych == '\n') goto yy4; - goto yy5; -yy7: - ++YYCURSOR; -yy8: -#line 90 "ext/phar/phar_path_check.re" - { - goto loop; - } -#line 131 "ext/phar/phar_path_check.c" -yy9: - ++YYCURSOR; -#line 78 "ext/phar/phar_path_check.re" - { - *error = "star"; - return pcr_err_star; - } -#line 139 "ext/phar/phar_path_check.c" -yy11: - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '-') goto yy8; - if (yych <= '.') goto yy23; - if (yych <= '/') goto yy25; - goto yy8; -yy12: - ++YYCURSOR; -#line 82 "ext/phar/phar_path_check.re" - { - if (**s == '/') { - (*s)++; - } - *len = (p - (const unsigned char*)*s) -1; - *error = NULL; - return pcr_use_query; - } -#line 158 "ext/phar/phar_path_check.c" -yy14: - ++YYCURSOR; -#line 74 "ext/phar/phar_path_check.re" - { - *error = "back-slash"; - return pcr_err_back_slash; - } -#line 166 "ext/phar/phar_path_check.c" -yy16: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy5; - if (yych <= 0xBF) goto yy7; - goto yy5; -yy17: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x9F) goto yy5; - if (yych <= 0xBF) goto yy27; - goto yy5; -yy18: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy5; - if (yych <= 0xBF) goto yy27; - goto yy5; -yy19: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy5; - if (yych <= 0x9F) goto yy27; - goto yy5; -yy20: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x8F) goto yy5; - if (yych <= 0xBF) goto yy28; - goto yy5; -yy21: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy5; - if (yych <= 0xBF) goto yy28; - goto yy5; -yy22: - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x7F) goto yy5; - if (yych <= 0x8F) goto yy28; - goto yy5; -yy23: - yych = *++YYCURSOR; - if (yych <= 0x00) goto yy29; - if (yych <= '-') goto yy24; - if (yych <= '.') goto yy31; - if (yych <= '/') goto yy29; -yy24: - YYCURSOR = YYMARKER; - if (yyaccept == 0) { - goto yy8; - } else { - goto yy5; - } -yy25: - ++YYCURSOR; -#line 62 "ext/phar/phar_path_check.re" - { - *error = "double slash"; - return pcr_err_double_slash; - } -#line 228 "ext/phar/phar_path_check.c" -yy27: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy24; - if (yych <= 0xBF) goto yy7; - goto yy24; -yy28: - yych = *++YYCURSOR; - if (yych <= 0x7F) goto yy24; - if (yych <= 0xBF) goto yy27; - goto yy24; -yy29: - ++YYCURSOR; -#line 70 "ext/phar/phar_path_check.re" - { - *error = "current directory reference"; - return pcr_err_curr_dir; - } -#line 246 "ext/phar/phar_path_check.c" -yy31: - yych = *++YYCURSOR; - if (yych <= 0x00) goto yy32; - if (yych != '/') goto yy24; -yy32: - ++YYCURSOR; -#line 66 "ext/phar/phar_path_check.re" - { - *error = "upper directory reference"; - return pcr_err_up_dir; - } -#line 258 "ext/phar/phar_path_check.c" -} -#line 110 "ext/phar/phar_path_check.re" - -} diff --git a/ext/standard/url_scanner_ex.c b/ext/standard/url_scanner_ex.c deleted file mode 100644 index fb4a55d2fe..0000000000 --- a/ext/standard/url_scanner_ex.c +++ /dev/null @@ -1,1431 +0,0 @@ -/* Generated by re2c 1.0.3 */ -#line 1 "ext/standard/url_scanner_ex.re" -/* - +----------------------------------------------------------------------+ - | PHP Version 7 | - +----------------------------------------------------------------------+ - | Copyright (c) 1997-2018 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: | - | http://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: Sascha Schumann <sascha@schumann.cx> | - | Yasuo Ohgaki <yohgaki@ohgaki.net> | - +----------------------------------------------------------------------+ -*/ - -#include "php.h" - -#ifdef HAVE_UNISTD_H -#include <unistd.h> -#endif -#ifdef HAVE_LIMITS_H -#include <limits.h> -#endif - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "SAPI.h" -#include "php_ini.h" -#include "php_globals.h" -#include "php_string.h" -#define STATE_TAG SOME_OTHER_STATE_TAG -#include "basic_functions.h" -#include "url.h" -#include "html.h" -#undef STATE_TAG - -#define url_scanner url_scanner_ex - -#include "zend_smart_str.h" - -static void tag_dtor(zval *zv) -{ - free(Z_PTR_P(zv)); -} - -static int php_ini_on_update_tags(zend_ini_entry *entry, zend_string *new_value, void *mh_arg1, void *mh_arg2, void *mh_arg3, int stage, int type) -{ - url_adapt_state_ex_t *ctx; - char *key; - char *tmp; - char *lasts = NULL; - - if (type) { - ctx = &BG(url_adapt_session_ex); - } else { - ctx = &BG(url_adapt_output_ex); - } - - tmp = estrndup(ZSTR_VAL(new_value), ZSTR_LEN(new_value)); - - if (ctx->tags) - zend_hash_destroy(ctx->tags); - else { - ctx->tags = malloc(sizeof(HashTable)); - if (!ctx->tags) { - efree(tmp); - return FAILURE; - } - } - - zend_hash_init(ctx->tags, 0, NULL, tag_dtor, 1); - - for (key = php_strtok_r(tmp, ",", &lasts); - key; - key = php_strtok_r(NULL, ",", &lasts)) { - char *val; - - val = strchr(key, '='); - if (val) { - char *q; - size_t keylen; - zend_string *str; - - *val++ = '\0'; - for (q = key; *q; q++) { - *q = tolower(*q); - } - keylen = q - key; - str = zend_string_init(key, keylen, 1); - GC_MAKE_PERSISTENT_LOCAL(str); - zend_hash_add_mem(ctx->tags, str, val, strlen(val)+1); - zend_string_release_ex(str, 1); - } - } - - efree(tmp); - - return SUCCESS; -} - -static PHP_INI_MH(OnUpdateSessionTags) -{ - return php_ini_on_update_tags(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage, 1); -} - -static PHP_INI_MH(OnUpdateOutputTags) -{ - return php_ini_on_update_tags(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage, 0); -} - -static int php_ini_on_update_hosts(zend_ini_entry *entry, zend_string *new_value, void *mh_arg1, void *mh_arg2, void *mh_arg3, int stage, int type) -{ - HashTable *hosts; - char *key; - char *tmp; - char *lasts = NULL; - - if (type) { - hosts = &BG(url_adapt_session_hosts_ht); - } else { - hosts = &BG(url_adapt_output_hosts_ht); - } - zend_hash_clean(hosts); - - /* Use user supplied host whitelist */ - tmp = estrndup(ZSTR_VAL(new_value), ZSTR_LEN(new_value)); - for (key = php_strtok_r(tmp, ",", &lasts); - key; - key = php_strtok_r(NULL, ",", &lasts)) { - size_t keylen; - zend_string *tmp_key; - char *q; - - for (q = key; *q; q++) { - *q = tolower(*q); - } - keylen = q - key; - if (keylen > 0) { - tmp_key = zend_string_init(key, keylen, 0); - zend_hash_add_empty_element(hosts, tmp_key); - zend_string_release_ex(tmp_key, 0); - } - } - efree(tmp); - - return SUCCESS; -} - -static PHP_INI_MH(OnUpdateSessionHosts) -{ - return php_ini_on_update_hosts(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage, 1); -} - -static PHP_INI_MH(OnUpdateOutputHosts) -{ - return php_ini_on_update_hosts(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage, 0); -} - -/* FIXME: OnUpdate*Hosts cannot set default to $_SERVER['HTTP_HOST'] at startup */ -PHP_INI_BEGIN() - STD_PHP_INI_ENTRY("session.trans_sid_tags", "a=href,area=href,frame=src,form=", PHP_INI_ALL, OnUpdateSessionTags, url_adapt_session_ex, php_basic_globals, basic_globals) - STD_PHP_INI_ENTRY("session.trans_sid_hosts", "", PHP_INI_ALL, OnUpdateSessionHosts, url_adapt_session_hosts_ht, php_basic_globals, basic_globals) - STD_PHP_INI_ENTRY("url_rewriter.tags", "form=", PHP_INI_ALL, OnUpdateOutputTags, url_adapt_session_ex, php_basic_globals, basic_globals) - STD_PHP_INI_ENTRY("url_rewriter.hosts", "", PHP_INI_ALL, OnUpdateOutputHosts, url_adapt_session_hosts_ht, php_basic_globals, basic_globals) -PHP_INI_END() - -#line 179 "ext/standard/url_scanner_ex.re" - - -#define YYFILL(n) goto done -#define YYCTYPE unsigned char -#define YYCURSOR p -#define YYLIMIT q -#define YYMARKER r - -static inline void append_modified_url(smart_str *url, smart_str *dest, smart_str *url_app, const char *separator) -{ - php_url *url_parts; - - smart_str_0(url); /* FIXME: Bug #70480 php_url_parse_ex() crashes by processing chars exceed len */ - url_parts = php_url_parse_ex(ZSTR_VAL(url->s), ZSTR_LEN(url->s)); - - /* Ignore malformed URLs */ - if (!url_parts) { - smart_str_append_smart_str(dest, url); - return; - } - - /* Don't modify URLs of the format "#mark" */ - if (url_parts->fragment && '#' == ZSTR_VAL(url->s)[0]) { - smart_str_append_smart_str(dest, url); - php_url_free(url_parts); - return; - } - - /* Check protocol. Only http/https is allowed. */ - if (url_parts->scheme - && !zend_string_equals_literal_ci(url_parts->scheme, "http") - && !zend_string_equals_literal_ci(url_parts->scheme, "https")) { - smart_str_append_smart_str(dest, url); - php_url_free(url_parts); - return; - } - - /* Check host whitelist. If it's not listed, do nothing. */ - if (url_parts->host) { - zend_string *tmp = zend_string_tolower(url_parts->host); - if (!zend_hash_exists(&BG(url_adapt_session_hosts_ht), tmp)) { - zend_string_release_ex(tmp, 0); - smart_str_append_smart_str(dest, url); - php_url_free(url_parts); - return; - } - zend_string_release_ex(tmp, 0); - } - - /* - * When URL does not have path and query string add "/?". - * i.e. If URL is only "?foo=bar", should not add "/?". - */ - if (!url_parts->path && !url_parts->query && !url_parts->fragment) { - /* URL is http://php.net or like */ - smart_str_append_smart_str(dest, url); - smart_str_appendc(dest, '/'); - smart_str_appendc(dest, '?'); - smart_str_append_smart_str(dest, url_app); - php_url_free(url_parts); - return; - } - - if (url_parts->scheme) { - smart_str_appends(dest, ZSTR_VAL(url_parts->scheme)); - smart_str_appends(dest, "://"); - } else if (*(ZSTR_VAL(url->s)) == '/' && *(ZSTR_VAL(url->s)+1) == '/') { - smart_str_appends(dest, "//"); - } - if (url_parts->user) { - smart_str_appends(dest, ZSTR_VAL(url_parts->user)); - if (url_parts->pass) { - smart_str_appends(dest, ZSTR_VAL(url_parts->pass)); - smart_str_appendc(dest, ':'); - } - smart_str_appendc(dest, '@'); - } - if (url_parts->host) { - smart_str_appends(dest, ZSTR_VAL(url_parts->host)); - } - if (url_parts->port) { - smart_str_appendc(dest, ':'); - smart_str_append_unsigned(dest, (long)url_parts->port); - } - if (url_parts->path) { - smart_str_appends(dest, ZSTR_VAL(url_parts->path)); - } - smart_str_appendc(dest, '?'); - if (url_parts->query) { - smart_str_appends(dest, ZSTR_VAL(url_parts->query)); - smart_str_appends(dest, separator); - smart_str_append_smart_str(dest, url_app); - } else { - smart_str_append_smart_str(dest, url_app); - } - if (url_parts->fragment) { - smart_str_appendc(dest, '#'); - smart_str_appends(dest, ZSTR_VAL(url_parts->fragment)); - } - php_url_free(url_parts); -} - -enum { - TAG_NORMAL = 0, - TAG_FORM -}; - -enum { - ATTR_NORMAL = 0, - ATTR_ACTION -}; - -#undef YYFILL -#undef YYCTYPE -#undef YYCURSOR -#undef YYLIMIT -#undef YYMARKER - -static inline void tag_arg(url_adapt_state_ex_t *ctx, char quotes, char type) -{ - char f = 0; - - /* arg.s is string WITHOUT NUL. - To avoid partial match, NUL is added here */ - ZSTR_VAL(ctx->arg.s)[ZSTR_LEN(ctx->arg.s)] = '\0'; - if (!strcasecmp(ZSTR_VAL(ctx->arg.s), ctx->lookup_data)) { - f = 1; - } - - if (quotes) { - smart_str_appendc(&ctx->result, type); - } - if (f) { - append_modified_url(&ctx->val, &ctx->result, &ctx->url_app, PG(arg_separator).output); - } else { - smart_str_append_smart_str(&ctx->result, &ctx->val); - } - if (quotes) { - smart_str_appendc(&ctx->result, type); - } -} - -enum { - STATE_PLAIN = 0, - STATE_TAG, - STATE_NEXT_ARG, - STATE_ARG, - STATE_BEFORE_VAL, - STATE_VAL -}; - -#define YYFILL(n) goto stop -#define YYCTYPE unsigned char -#define YYCURSOR xp -#define YYLIMIT end -#define YYMARKER q -#define STATE ctx->state - -#define STD_PARA url_adapt_state_ex_t *ctx, char *start, char *YYCURSOR -#define STD_ARGS ctx, start, xp - -#if SCANNER_DEBUG -#define scdebug(x) printf x -#else -#define scdebug(x) -#endif - -static inline void passthru(STD_PARA) -{ - scdebug(("appending %d chars, starting with %c\n", YYCURSOR-start, *start)); - smart_str_appendl(&ctx->result, start, YYCURSOR - start); -} - - -static int check_http_host(char *target) -{ - zval *host, *tmp; - zend_string *host_tmp; - char *colon; - - if ((tmp = zend_hash_str_find(&EG(symbol_table), ZEND_STRL("_SERVER"))) && - Z_TYPE_P(tmp) == IS_ARRAY && - (host = zend_hash_str_find(Z_ARRVAL_P(tmp), ZEND_STRL("HTTP_HOST"))) && - Z_TYPE_P(host) == IS_STRING) { - host_tmp = zend_string_init(Z_STRVAL_P(host), Z_STRLEN_P(host), 0); - /* HTTP_HOST could be 'localhost:8888' etc. */ - colon = strchr(ZSTR_VAL(host_tmp), ':'); - if (colon) { - ZSTR_LEN(host_tmp) = colon - ZSTR_VAL(host_tmp); - ZSTR_VAL(host_tmp)[ZSTR_LEN(host_tmp)] = '\0'; - } - if (!strcasecmp(ZSTR_VAL(host_tmp), target)) { - zend_string_release_ex(host_tmp, 0); - return SUCCESS; - } - zend_string_release_ex(host_tmp, 0); - } - return FAILURE; -} - -static int check_host_whitelist(url_adapt_state_ex_t *ctx) -{ - php_url *url_parts = NULL; - HashTable *allowed_hosts = ctx->type ? &BG(url_adapt_session_hosts_ht) : &BG(url_adapt_output_hosts_ht); - - ZEND_ASSERT(ctx->tag_type == TAG_FORM); - - if (ctx->attr_val.s && ZSTR_LEN(ctx->attr_val.s)) { - url_parts = php_url_parse_ex(ZSTR_VAL(ctx->attr_val.s), ZSTR_LEN(ctx->attr_val.s)); - } else { - return SUCCESS; /* empty URL is valid */ - } - - if (!url_parts) { - return FAILURE; - } - if (url_parts->scheme) { - /* Only http/https should be handled. - A bit hacky check this here, but saves a URL parse. */ - if (!zend_string_equals_literal_ci(url_parts->scheme, "http") && - !zend_string_equals_literal_ci(url_parts->scheme, "https")) { - php_url_free(url_parts); - return FAILURE; - } - } - if (!url_parts->host) { - php_url_free(url_parts); - return SUCCESS; - } - if (!zend_hash_num_elements(allowed_hosts) && - check_http_host(ZSTR_VAL(url_parts->host)) == SUCCESS) { - php_url_free(url_parts); - return SUCCESS; - } - if (!zend_hash_find(allowed_hosts, url_parts->host)) { - php_url_free(url_parts); - return FAILURE; - } - php_url_free(url_parts); - return SUCCESS; -} - -/* - * This function appends a hidden input field after a <form>. - */ -static void handle_form(STD_PARA) -{ - int doit = 0; - - if (ZSTR_LEN(ctx->form_app.s) > 0) { - switch (ZSTR_LEN(ctx->tag.s)) { - case sizeof("form") - 1: - if (!strncasecmp(ZSTR_VAL(ctx->tag.s), "form", ZSTR_LEN(ctx->tag.s)) - && check_host_whitelist(ctx) == SUCCESS) { - doit = 1; - } - break; - } - } - - if (doit) { - smart_str_append_smart_str(&ctx->result, &ctx->form_app); - } -} - -/* - * HANDLE_TAG copies the HTML Tag and checks whether we - * have that tag in our table. If we might modify it, - * we continue to scan the tag, otherwise we simply copy the complete - * HTML stuff to the result buffer. - */ - -static inline void handle_tag(STD_PARA) -{ - int ok = 0; - unsigned int i; - - if (ctx->tag.s) { - ZSTR_LEN(ctx->tag.s) = 0; - } - smart_str_appendl(&ctx->tag, start, YYCURSOR - start); - for (i = 0; i < ZSTR_LEN(ctx->tag.s); i++) - ZSTR_VAL(ctx->tag.s)[i] = tolower((int)(unsigned char)ZSTR_VAL(ctx->tag.s)[i]); - /* intentionally using str_find here, in case the hash value is set, but the string val is changed later */ - if ((ctx->lookup_data = zend_hash_str_find_ptr(ctx->tags, ZSTR_VAL(ctx->tag.s), ZSTR_LEN(ctx->tag.s))) != NULL) { - ok = 1; - if (ZSTR_LEN(ctx->tag.s) == sizeof("form")-1 - && !strncasecmp(ZSTR_VAL(ctx->tag.s), "form", ZSTR_LEN(ctx->tag.s))) { - ctx->tag_type = TAG_FORM; - } else { - ctx->tag_type = TAG_NORMAL; - } - } - STATE = ok ? STATE_NEXT_ARG : STATE_PLAIN; -} - -static inline void handle_arg(STD_PARA) -{ - if (ctx->arg.s) { - ZSTR_LEN(ctx->arg.s) = 0; - } - smart_str_appendl(&ctx->arg, start, YYCURSOR - start); - if (ctx->tag_type == TAG_FORM && - strncasecmp(ZSTR_VAL(ctx->arg.s), "action", ZSTR_LEN(ctx->arg.s)) == 0) { - ctx->attr_type = ATTR_ACTION; - } else { - ctx->attr_type = ATTR_NORMAL; - } -} - -static inline void handle_val(STD_PARA, char quotes, char type) -{ - smart_str_setl(&ctx->val, start + quotes, YYCURSOR - start - quotes * 2); - if (ctx->tag_type == TAG_FORM && ctx->attr_type == ATTR_ACTION) { - smart_str_setl(&ctx->attr_val, start + quotes, YYCURSOR - start - quotes * 2); - } - tag_arg(ctx, quotes, type); -} - -static inline void xx_mainloop(url_adapt_state_ex_t *ctx, const char *newdata, size_t newlen) -{ - char *end, *q; - char *xp; - char *start; - size_t rest; - - smart_str_appendl(&ctx->buf, newdata, newlen); - - YYCURSOR = ZSTR_VAL(ctx->buf.s); - YYLIMIT = ZSTR_VAL(ctx->buf.s) + ZSTR_LEN(ctx->buf.s); - - switch (STATE) { - case STATE_PLAIN: goto state_plain; - case STATE_TAG: goto state_tag; - case STATE_NEXT_ARG: goto state_next_arg; - case STATE_ARG: goto state_arg; - case STATE_BEFORE_VAL: goto state_before_val; - case STATE_VAL: goto state_val; - } - - -state_plain_begin: - STATE = STATE_PLAIN; - -state_plain: - start = YYCURSOR; - -#line 524 "ext/standard/url_scanner_ex.c" -{ - YYCTYPE yych; - static const unsigned char yybm[] = { - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 0, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy2; - } - goto yy5; -yy2: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy2; - } -#line 527 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); goto state_plain; } -#line 576 "ext/standard/url_scanner_ex.c" -yy5: - ++YYCURSOR; -#line 526 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); STATE = STATE_TAG; goto state_tag; } -#line 581 "ext/standard/url_scanner_ex.c" -} -#line 528 "ext/standard/url_scanner_ex.re" - - -state_tag: - start = YYCURSOR; - -#line 589 "ext/standard/url_scanner_ex.c" -{ - YYCTYPE yych; - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 128, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy11; - } - ++YYCURSOR; -#line 534 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); goto state_plain_begin; } -#line 634 "ext/standard/url_scanner_ex.c" -yy11: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy11; - } -#line 533 "ext/standard/url_scanner_ex.re" - { handle_tag(STD_ARGS); /* Sets STATE */; passthru(STD_ARGS); if (STATE == STATE_PLAIN) goto state_plain; else goto state_next_arg; } -#line 644 "ext/standard/url_scanner_ex.c" -} -#line 535 "ext/standard/url_scanner_ex.re" - - -state_next_arg_begin: - STATE = STATE_NEXT_ARG; - -state_next_arg: - start = YYCURSOR; - -#line 655 "ext/standard/url_scanner_ex.c" -{ - YYCTYPE yych; - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 0, 128, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy18; - } - if (yych <= '>') { - if (yych == '/') goto yy21; - if (yych >= '>') goto yy22; - } else { - if (yych <= 'Z') { - if (yych >= 'A') goto yy24; - } else { - if (yych <= '`') goto yy16; - if (yych <= 'z') goto yy24; - } - } -yy16: - ++YYCURSOR; -yy17: -#line 546 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); goto state_plain_begin; } -#line 713 "ext/standard/url_scanner_ex.c" -yy18: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy18; - } -#line 544 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); goto state_next_arg; } -#line 723 "ext/standard/url_scanner_ex.c" -yy21: - yych = *++YYCURSOR; - if (yych != '>') goto yy17; -yy22: - ++YYCURSOR; -#line 543 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); handle_form(STD_ARGS); goto state_plain_begin; } -#line 731 "ext/standard/url_scanner_ex.c" -yy24: - ++YYCURSOR; -#line 545 "ext/standard/url_scanner_ex.re" - { --YYCURSOR; STATE = STATE_ARG; goto state_arg; } -#line 736 "ext/standard/url_scanner_ex.c" -} -#line 547 "ext/standard/url_scanner_ex.re" - - -state_arg: - start = YYCURSOR; - -#line 744 "ext/standard/url_scanner_ex.c" -{ - YYCTYPE yych; - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 128, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= '@') goto yy28; - if (yych <= 'Z') goto yy30; - if (yych <= '`') goto yy28; - if (yych <= 'z') goto yy30; -yy28: - ++YYCURSOR; -#line 553 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); STATE = STATE_NEXT_ARG; goto state_next_arg; } -#line 791 "ext/standard/url_scanner_ex.c" -yy30: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy30; - } -#line 552 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); handle_arg(STD_ARGS); STATE = STATE_BEFORE_VAL; goto state_before_val; } -#line 801 "ext/standard/url_scanner_ex.c" -} -#line 554 "ext/standard/url_scanner_ex.re" - - -state_before_val: - start = YYCURSOR; - -#line 809 "ext/standard/url_scanner_ex.c" -{ - YYCTYPE yych; - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - if (yych == ' ') goto yy37; - if (yych == '=') goto yy38; - ++YYCURSOR; -yy36: -#line 560 "ext/standard/url_scanner_ex.re" - { --YYCURSOR; goto state_next_arg_begin; } -#line 854 "ext/standard/url_scanner_ex.c" -yy37: - yych = *(YYMARKER = ++YYCURSOR); - if (yych == ' ') goto yy41; - if (yych != '=') goto yy36; -yy38: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy38; - } -#line 559 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); STATE = STATE_VAL; goto state_val; } -#line 868 "ext/standard/url_scanner_ex.c" -yy41: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych == ' ') goto yy41; - if (yych == '=') goto yy38; - YYCURSOR = YYMARKER; - goto yy36; -} -#line 561 "ext/standard/url_scanner_ex.re" - - - -state_val: - start = YYCURSOR; - -#line 885 "ext/standard/url_scanner_ex.c" -{ - YYCTYPE yych; - static const unsigned char yybm[] = { - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 192, 192, 224, 224, 192, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 192, 224, 128, 224, 224, 224, 224, 64, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 0, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - }; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - if (yybm[0+yych] & 32) { - goto yy46; - } - if (yych <= ' ') goto yy49; - if (yych <= '"') goto yy51; - if (yych <= '\'') goto yy52; - goto yy49; -yy46: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yybm[0+yych] & 32) { - goto yy46; - } -#line 569 "ext/standard/url_scanner_ex.re" - { handle_val(STD_ARGS, 0, ' '); goto state_next_arg_begin; } -#line 940 "ext/standard/url_scanner_ex.c" -yy49: - ++YYCURSOR; -yy50: -#line 570 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); goto state_next_arg_begin; } -#line 946 "ext/standard/url_scanner_ex.c" -yy51: - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '>') goto yy50; - goto yy54; -yy52: - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '>') goto yy50; - goto yy59; -yy53: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; -yy54: - if (yybm[0+yych] & 64) { - goto yy53; - } - if (yych <= '"') goto yy56; -yy55: - YYCURSOR = YYMARKER; - goto yy50; -yy56: - ++YYCURSOR; -#line 567 "ext/standard/url_scanner_ex.re" - { handle_val(STD_ARGS, 1, '"'); goto state_next_arg_begin; } -#line 971 "ext/standard/url_scanner_ex.c" -yy58: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; -yy59: - if (yybm[0+yych] & 128) { - goto yy58; - } - if (yych >= '(') goto yy55; - ++YYCURSOR; -#line 568 "ext/standard/url_scanner_ex.re" - { handle_val(STD_ARGS, 1, '\''); goto state_next_arg_begin; } -#line 984 "ext/standard/url_scanner_ex.c" -} -#line 571 "ext/standard/url_scanner_ex.re" - - -stop: - if (YYLIMIT < start) { - /* XXX: Crash avoidance. Need to work with reporter to figure out what goes wrong */ - rest = 0; - } else { - rest = YYLIMIT - start; - scdebug(("stopped in state %d at pos %d (%d:%c) %d\n", STATE, YYCURSOR - ctx->buf.c, *YYCURSOR, *YYCURSOR, rest)); - } - - if (rest) memmove(ZSTR_VAL(ctx->buf.s), start, rest); - ZSTR_LEN(ctx->buf.s) = rest; -} - - -PHPAPI char *php_url_scanner_adapt_single_url(const char *url, size_t urllen, const char *name, const char *value, size_t *newlen, int encode) -{ - char *result; - smart_str surl = {0}; - smart_str buf = {0}; - smart_str url_app = {0}; - zend_string *encoded; - - smart_str_appendl(&surl, url, urllen); - - if (encode) { - encoded = php_raw_url_encode(name, strlen(name)); - smart_str_appendl(&url_app, ZSTR_VAL(encoded), ZSTR_LEN(encoded)); - zend_string_free(encoded); - } else { - smart_str_appends(&url_app, name); - } - smart_str_appendc(&url_app, '='); - if (encode) { - encoded = php_raw_url_encode(value, strlen(value)); - smart_str_appendl(&url_app, ZSTR_VAL(encoded), ZSTR_LEN(encoded)); - zend_string_free(encoded); - } else { - smart_str_appends(&url_app, value); - } - - append_modified_url(&surl, &buf, &url_app, PG(arg_separator).output); - - smart_str_0(&buf); - if (newlen) *newlen = ZSTR_LEN(buf.s); - result = estrndup(ZSTR_VAL(buf.s), ZSTR_LEN(buf.s)); - - smart_str_free(&url_app); - smart_str_free(&buf); - - return result; -} - - -static char *url_adapt_ext(const char *src, size_t srclen, size_t *newlen, zend_bool do_flush, url_adapt_state_ex_t *ctx) -{ - char *retval; - - xx_mainloop(ctx, src, srclen); - - if (!ctx->result.s) { - smart_str_appendl(&ctx->result, "", 0); - *newlen = 0; - } else { - *newlen = ZSTR_LEN(ctx->result.s); - } - smart_str_0(&ctx->result); - if (do_flush) { - smart_str_append(&ctx->result, ctx->buf.s); - *newlen += ZSTR_LEN(ctx->buf.s); - smart_str_free(&ctx->buf); - smart_str_free(&ctx->val); - smart_str_free(&ctx->attr_val); - } - retval = estrndup(ZSTR_VAL(ctx->result.s), ZSTR_LEN(ctx->result.s)); - smart_str_free(&ctx->result); - return retval; -} - -static int php_url_scanner_ex_activate(int type) -{ - url_adapt_state_ex_t *ctx; - - if (type) { - ctx = &BG(url_adapt_session_ex); - } else { - ctx = &BG(url_adapt_output_ex); - } - - memset(ctx, 0, ((size_t) &((url_adapt_state_ex_t *)0)->tags)); - - return SUCCESS; -} - -static int php_url_scanner_ex_deactivate(int type) -{ - url_adapt_state_ex_t *ctx; - - if (type) { - ctx = &BG(url_adapt_session_ex); - } else { - ctx = &BG(url_adapt_output_ex); - } - - smart_str_free(&ctx->result); - smart_str_free(&ctx->buf); - smart_str_free(&ctx->tag); - smart_str_free(&ctx->arg); - smart_str_free(&ctx->attr_val); - - return SUCCESS; -} - -static inline void php_url_scanner_session_handler_impl(char *output, size_t output_len, char **handled_output, size_t *handled_output_len, int mode, int type) -{ - size_t len; - url_adapt_state_ex_t *url_state; - - if (type) { - url_state = &BG(url_adapt_session_ex); - } else { - url_state = &BG(url_adapt_output_ex); - } - - if (ZSTR_LEN(url_state->url_app.s) != 0) { - *handled_output = url_adapt_ext(output, output_len, &len, (zend_bool) (mode & (PHP_OUTPUT_HANDLER_END | PHP_OUTPUT_HANDLER_CONT | PHP_OUTPUT_HANDLER_FLUSH | PHP_OUTPUT_HANDLER_FINAL) ? 1 : 0), url_state); - if (sizeof(uint) < sizeof(size_t)) { - if (len > UINT_MAX) - len = UINT_MAX; - } - *handled_output_len = len; - } else if (ZSTR_LEN(url_state->url_app.s) == 0) { - url_adapt_state_ex_t *ctx = url_state; - if (ctx->buf.s && ZSTR_LEN(ctx->buf.s)) { - smart_str_append(&ctx->result, ctx->buf.s); - smart_str_appendl(&ctx->result, output, output_len); - - *handled_output = estrndup(ZSTR_VAL(ctx->result.s), ZSTR_LEN(ctx->result.s)); - *handled_output_len = ZSTR_LEN(ctx->buf.s) + output_len; - - smart_str_free(&ctx->buf); - smart_str_free(&ctx->result); - } else { - *handled_output = estrndup(output, *handled_output_len = output_len); - } - } else { - *handled_output = NULL; - } -} - -static void php_url_scanner_session_handler(char *output, size_t output_len, char **handled_output, size_t *handled_output_len, int mode) -{ - php_url_scanner_session_handler_impl(output, output_len, handled_output, handled_output_len, mode, 1); -} - -static void php_url_scanner_output_handler(char *output, size_t output_len, char **handled_output, size_t *handled_output_len, int mode) -{ - php_url_scanner_session_handler_impl(output, output_len, handled_output, handled_output_len, mode, 0); -} - -static inline int php_url_scanner_add_var_impl(char *name, size_t name_len, char *value, size_t value_len, int encode, int type) -{ - smart_str sname = {0}; - smart_str svalue = {0}; - smart_str hname = {0}; - smart_str hvalue = {0}; - zend_string *encoded; - url_adapt_state_ex_t *url_state; - php_output_handler_func_t handler; - - if (type) { - url_state = &BG(url_adapt_session_ex); - handler = php_url_scanner_session_handler; - } else { - url_state = &BG(url_adapt_output_ex); - handler = php_url_scanner_output_handler; - } - - if (!url_state->active) { - php_url_scanner_ex_activate(type); - php_output_start_internal(ZEND_STRL("URL-Rewriter"), handler, 0, PHP_OUTPUT_HANDLER_STDFLAGS); - url_state->active = 1; - } - - if (url_state->url_app.s && ZSTR_LEN(url_state->url_app.s) != 0) { - smart_str_appends(&url_state->url_app, PG(arg_separator).output); - } - - if (encode) { - encoded = php_raw_url_encode(name, name_len); - smart_str_appendl(&sname, ZSTR_VAL(encoded), ZSTR_LEN(encoded)); zend_string_free(encoded); - encoded = php_raw_url_encode(value, value_len); - smart_str_appendl(&svalue, ZSTR_VAL(encoded), ZSTR_LEN(encoded)); zend_string_free(encoded); - encoded = php_escape_html_entities_ex((unsigned char*)name, name_len, 0, ENT_QUOTES|ENT_SUBSTITUTE, SG(default_charset), 0); - smart_str_appendl(&hname, ZSTR_VAL(encoded), ZSTR_LEN(encoded)); zend_string_free(encoded); - encoded = php_escape_html_entities_ex((unsigned char*)value, value_len, 0, ENT_QUOTES|ENT_SUBSTITUTE, SG(default_charset), 0); - smart_str_appendl(&hvalue, ZSTR_VAL(encoded), ZSTR_LEN(encoded)); zend_string_free(encoded); - } else { - smart_str_appendl(&sname, name, name_len); - smart_str_appendl(&svalue, value, value_len); - smart_str_appendl(&hname, name, name_len); - smart_str_appendl(&hvalue, value, value_len); - } - - smart_str_append_smart_str(&url_state->url_app, &sname); - smart_str_appendc(&url_state->url_app, '='); - smart_str_append_smart_str(&url_state->url_app, &svalue); - - smart_str_appends(&url_state->form_app, "<input type=\"hidden\" name=\""); - smart_str_append_smart_str(&url_state->form_app, &hname); - smart_str_appends(&url_state->form_app, "\" value=\""); - smart_str_append_smart_str(&url_state->form_app, &hvalue); - smart_str_appends(&url_state->form_app, "\" />"); - - smart_str_free(&sname); - smart_str_free(&svalue); - smart_str_free(&hname); - smart_str_free(&hvalue); - - return SUCCESS; -} - - -PHPAPI int php_url_scanner_add_session_var(char *name, size_t name_len, char *value, size_t value_len, int encode) -{ - return php_url_scanner_add_var_impl(name, name_len, value, value_len, encode, 1); -} - - -PHPAPI int php_url_scanner_add_var(char *name, size_t name_len, char *value, size_t value_len, int encode) -{ - return php_url_scanner_add_var_impl(name, name_len, value, value_len, encode, 0); -} - - -static inline void php_url_scanner_reset_vars_impl(int type) { - url_adapt_state_ex_t *url_state; - - if (type) { - url_state = &BG(url_adapt_session_ex); - } else { - url_state = &BG(url_adapt_output_ex); - } - - if (url_state->form_app.s) { - ZSTR_LEN(url_state->form_app.s) = 0; - } - if (url_state->url_app.s) { - ZSTR_LEN(url_state->url_app.s) = 0; - } -} - - -PHPAPI int php_url_scanner_reset_session_vars(void) -{ - php_url_scanner_reset_vars_impl(1); - return SUCCESS; -} - - -PHPAPI int php_url_scanner_reset_vars(void) -{ - php_url_scanner_reset_vars_impl(0); - return SUCCESS; -} - - -static inline int php_url_scanner_reset_var_impl(zend_string *name, int encode, int type) -{ - char *start, *end, *limit; - size_t separator_len; - smart_str sname = {0}; - smart_str hname = {0}; - smart_str url_app = {0}; - smart_str form_app = {0}; - zend_string *encoded; - int ret = SUCCESS; - zend_bool sep_removed = 0; - url_adapt_state_ex_t *url_state; - - if (type) { - url_state = &BG(url_adapt_session_ex); - } else { - url_state = &BG(url_adapt_output_ex); - } - - /* Short circuit check. Only check url_app. */ - if (!url_state->url_app.s || !ZSTR_LEN(url_state->url_app.s)) { - return SUCCESS; - } - - if (encode) { - encoded = php_raw_url_encode(ZSTR_VAL(name), ZSTR_LEN(name)); - smart_str_appendl(&sname, ZSTR_VAL(encoded), ZSTR_LEN(encoded)); - zend_string_free(encoded); - encoded = php_escape_html_entities_ex((unsigned char *)ZSTR_VAL(name), ZSTR_LEN(name), 0, ENT_QUOTES|ENT_SUBSTITUTE, SG(default_charset), 0); - smart_str_appendl(&hname, ZSTR_VAL(encoded), ZSTR_LEN(encoded)); - zend_string_free(encoded); - } else { - smart_str_appendl(&sname, ZSTR_VAL(name), ZSTR_LEN(name)); - smart_str_appendl(&hname, ZSTR_VAL(name), ZSTR_LEN(name)); - } - smart_str_0(&sname); - smart_str_0(&hname); - - smart_str_append_smart_str(&url_app, &sname); - smart_str_appendc(&url_app, '='); - smart_str_0(&url_app); - - smart_str_appends(&form_app, "<input type=\"hidden\" name=\""); - smart_str_append_smart_str(&form_app, &hname); - smart_str_appends(&form_app, "\" value=\""); - smart_str_0(&form_app); - - /* Short circuit check. Only check url_app. */ - start = (char *) php_memnstr(ZSTR_VAL(url_state->url_app.s), - ZSTR_VAL(url_app.s), ZSTR_LEN(url_app.s), - ZSTR_VAL(url_state->url_app.s) + ZSTR_LEN(url_state->url_app.s)); - if (!start) { - ret = FAILURE; - goto finish; - } - - /* Get end of url var */ - limit = ZSTR_VAL(url_state->url_app.s) + ZSTR_LEN(url_state->url_app.s); - end = start + ZSTR_LEN(url_app.s); - separator_len = strlen(PG(arg_separator).output); - while (end < limit) { - if (!memcmp(end, PG(arg_separator).output, separator_len)) { - end += separator_len; - sep_removed = 1; - break; - } - end++; - } - /* Remove all when this is the only rewrite var */ - if (ZSTR_LEN(url_state->url_app.s) == end - start) { - php_url_scanner_reset_vars_impl(type); - goto finish; - } - /* Check preceding separator */ - if (!sep_removed - && (size_t)(start - PG(arg_separator).output) >= separator_len - && !memcmp(start - separator_len, PG(arg_separator).output, separator_len)) { - start -= separator_len; - } - /* Remove partially */ - memmove(start, end, - ZSTR_LEN(url_state->url_app.s) - (end - ZSTR_VAL(url_state->url_app.s))); - ZSTR_LEN(url_state->url_app.s) -= end - start; - ZSTR_VAL(url_state->url_app.s)[ZSTR_LEN(url_state->url_app.s)] = '\0'; - - /* Remove form var */ - start = (char *) php_memnstr(ZSTR_VAL(url_state->form_app.s), - ZSTR_VAL(form_app.s), ZSTR_LEN(form_app.s), - ZSTR_VAL(url_state->form_app.s) + ZSTR_LEN(url_state->form_app.s)); - if (!start) { - /* Should not happen */ - ret = FAILURE; - php_url_scanner_reset_vars_impl(type); - goto finish; - } - /* Get end of form var */ - limit = ZSTR_VAL(url_state->form_app.s) + ZSTR_LEN(url_state->form_app.s); - end = start + ZSTR_LEN(form_app.s); - while (end < limit) { - if (*end == '>') { - end += 1; - break; - } - end++; - } - /* Remove partially */ - memmove(start, end, - ZSTR_LEN(url_state->form_app.s) - (end - ZSTR_VAL(url_state->form_app.s))); - ZSTR_LEN(url_state->form_app.s) -= end - start; - ZSTR_VAL(url_state->form_app.s)[ZSTR_LEN(url_state->form_app.s)] = '\0'; - -finish: - smart_str_free(&url_app); - smart_str_free(&form_app); - smart_str_free(&sname); - smart_str_free(&hname); - return ret; -} - - -PHPAPI int php_url_scanner_reset_session_var(zend_string *name, int encode) -{ - return php_url_scanner_reset_var_impl(name, encode, 1); -} - - -PHPAPI int php_url_scanner_reset_var(zend_string *name, int encode) -{ - return php_url_scanner_reset_var_impl(name, encode, 0); -} - - -PHP_MINIT_FUNCTION(url_scanner) -{ - REGISTER_INI_ENTRIES(); - return SUCCESS; -} - -PHP_MSHUTDOWN_FUNCTION(url_scanner) -{ - UNREGISTER_INI_ENTRIES(); - - return SUCCESS; -} - -PHP_RINIT_FUNCTION(url_scanner) -{ - BG(url_adapt_session_ex).active = 0; - BG(url_adapt_session_ex).tag_type = 0; - BG(url_adapt_session_ex).attr_type = 0; - BG(url_adapt_output_ex).active = 0; - BG(url_adapt_output_ex).tag_type = 0; - BG(url_adapt_output_ex).attr_type = 0; - return SUCCESS; -} - -PHP_RSHUTDOWN_FUNCTION(url_scanner) -{ - if (BG(url_adapt_session_ex).active) { - php_url_scanner_ex_deactivate(1); - BG(url_adapt_session_ex).active = 0; - BG(url_adapt_session_ex).tag_type = 0; - BG(url_adapt_session_ex).attr_type = 0; - } - smart_str_free(&BG(url_adapt_session_ex).form_app); - smart_str_free(&BG(url_adapt_session_ex).url_app); - - if (BG(url_adapt_output_ex).active) { - php_url_scanner_ex_deactivate(0); - BG(url_adapt_output_ex).active = 0; - BG(url_adapt_output_ex).tag_type = 0; - BG(url_adapt_output_ex).attr_type = 0; - } - smart_str_free(&BG(url_adapt_output_ex).form_app); - smart_str_free(&BG(url_adapt_output_ex).url_app); - - return SUCCESS; -} diff --git a/ext/standard/var_unserializer.c b/ext/standard/var_unserializer.c deleted file mode 100644 index 3c1c18a700..0000000000 --- a/ext/standard/var_unserializer.c +++ /dev/null @@ -1,1500 +0,0 @@ -/* Generated by re2c 1.0.3 */ -#line 1 "ext/standard/var_unserializer.re" -/* - +----------------------------------------------------------------------+ - | PHP Version 7 | - +----------------------------------------------------------------------+ - | Copyright (c) 1997-2018 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: | - | http://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: Sascha Schumann <sascha@schumann.cx> | - +----------------------------------------------------------------------+ -*/ - -#include "php.h" -#include "ext/standard/php_var.h" -#include "php_incomplete_class.h" -#include "zend_portability.h" - -struct php_unserialize_data { - void *first; - void *last; - void *first_dtor; - void *last_dtor; - HashTable *allowed_classes; -}; - -PHPAPI php_unserialize_data_t php_var_unserialize_init() { - php_unserialize_data_t d; - /* fprintf(stderr, "UNSERIALIZE_INIT == lock: %u, level: %u\n", BG(serialize_lock), BG(unserialize).level); */ - if (BG(serialize_lock) || !BG(unserialize).level) { - d = ecalloc(1, sizeof(struct php_unserialize_data)); - if (!BG(serialize_lock)) { - BG(unserialize).data = d; - BG(unserialize).level = 1; - } - } else { - d = BG(unserialize).data; - ++BG(unserialize).level; - } - return d; -} - -PHPAPI void php_var_unserialize_destroy(php_unserialize_data_t d) { - /* fprintf(stderr, "UNSERIALIZE_DESTROY == lock: %u, level: %u\n", BG(serialize_lock), BG(unserialize).level); */ - if (BG(serialize_lock) || BG(unserialize).level == 1) { - var_destroy(&d); - efree(d); - } - if (!BG(serialize_lock) && !--BG(unserialize).level) { - BG(unserialize).data = NULL; - } -} - -PHPAPI HashTable *php_var_unserialize_get_allowed_classes(php_unserialize_data_t d) { - return d->allowed_classes; -} -PHPAPI void php_var_unserialize_set_allowed_classes(php_unserialize_data_t d, HashTable *classes) { - d->allowed_classes = classes; -} - - -/* {{{ reference-handling for unserializer: var_* */ -#define VAR_ENTRIES_MAX 1024 -#define VAR_ENTRIES_DBG 0 - -/* VAR_FLAG used in var_dtor entries to signify an entry on which __wakeup should be called */ -#define VAR_WAKEUP_FLAG 1 - -typedef struct { - zval *data[VAR_ENTRIES_MAX]; - zend_long used_slots; - void *next; -} var_entries; - -typedef struct { - zval data[VAR_ENTRIES_MAX]; - zend_long used_slots; - void *next; -} var_dtor_entries; - -static inline void var_push(php_unserialize_data_t *var_hashx, zval *rval) -{ - var_entries *var_hash = (*var_hashx)->last; -#if VAR_ENTRIES_DBG - fprintf(stderr, "var_push(%ld): %d\n", var_hash?var_hash->used_slots:-1L, Z_TYPE_P(rval)); -#endif - - if (!var_hash || var_hash->used_slots == VAR_ENTRIES_MAX) { - var_hash = emalloc(sizeof(var_entries)); - var_hash->used_slots = 0; - var_hash->next = 0; - - if (!(*var_hashx)->first) { - (*var_hashx)->first = var_hash; - } else { - ((var_entries *) (*var_hashx)->last)->next = var_hash; - } - - (*var_hashx)->last = var_hash; - } - - var_hash->data[var_hash->used_slots++] = rval; -} - -PHPAPI void var_push_dtor(php_unserialize_data_t *var_hashx, zval *rval) -{ - zval *tmp_var = var_tmp_var(var_hashx); - if (!tmp_var) { - return; - } - ZVAL_COPY(tmp_var, rval); -} - -PHPAPI zval *var_tmp_var(php_unserialize_data_t *var_hashx) -{ - var_dtor_entries *var_hash; - - if (!var_hashx || !*var_hashx) { - return NULL; - } - - var_hash = (*var_hashx)->last_dtor; - if (!var_hash || var_hash->used_slots == VAR_ENTRIES_MAX) { - var_hash = emalloc(sizeof(var_dtor_entries)); - var_hash->used_slots = 0; - var_hash->next = 0; - - if (!(*var_hashx)->first_dtor) { - (*var_hashx)->first_dtor = var_hash; - } else { - ((var_dtor_entries *) (*var_hashx)->last_dtor)->next = var_hash; - } - - (*var_hashx)->last_dtor = var_hash; - } - ZVAL_UNDEF(&var_hash->data[var_hash->used_slots]); - Z_EXTRA(var_hash->data[var_hash->used_slots]) = 0; - return &var_hash->data[var_hash->used_slots++]; -} - -PHPAPI void var_replace(php_unserialize_data_t *var_hashx, zval *ozval, zval *nzval) -{ - zend_long i; - var_entries *var_hash = (*var_hashx)->first; -#if VAR_ENTRIES_DBG - fprintf(stderr, "var_replace(%ld): %d\n", var_hash?var_hash->used_slots:-1L, Z_TYPE_P(nzval)); -#endif - - while (var_hash) { - for (i = 0; i < var_hash->used_slots; i++) { - if (var_hash->data[i] == ozval) { - var_hash->data[i] = nzval; - /* do not break here */ - } - } - var_hash = var_hash->next; - } -} - -static zval *var_access(php_unserialize_data_t *var_hashx, zend_long id) -{ - var_entries *var_hash = (*var_hashx)->first; -#if VAR_ENTRIES_DBG - fprintf(stderr, "var_access(%ld): %ld\n", var_hash?var_hash->used_slots:-1L, id); -#endif - - while (id >= VAR_ENTRIES_MAX && var_hash && var_hash->used_slots == VAR_ENTRIES_MAX) { - var_hash = var_hash->next; - id -= VAR_ENTRIES_MAX; - } - - if (!var_hash) return NULL; - - if (id < 0 || id >= var_hash->used_slots) return NULL; - - return var_hash->data[id]; -} - -PHPAPI void var_destroy(php_unserialize_data_t *var_hashx) -{ - void *next; - zend_long i; - var_entries *var_hash = (*var_hashx)->first; - var_dtor_entries *var_dtor_hash = (*var_hashx)->first_dtor; - zend_bool wakeup_failed = 0; - zval wakeup_name; - ZVAL_UNDEF(&wakeup_name); - -#if VAR_ENTRIES_DBG - fprintf(stderr, "var_destroy(%ld)\n", var_hash?var_hash->used_slots:-1L); -#endif - - while (var_hash) { - next = var_hash->next; - efree_size(var_hash, sizeof(var_entries)); - var_hash = next; - } - - while (var_dtor_hash) { - for (i = 0; i < var_dtor_hash->used_slots; i++) { - zval *zv = &var_dtor_hash->data[i]; -#if VAR_ENTRIES_DBG - fprintf(stderr, "var_destroy dtor(%p, %ld)\n", var_dtor_hash->data[i], Z_REFCOUNT_P(var_dtor_hash->data[i])); -#endif - - /* Perform delayed __wakeup calls */ - if (Z_EXTRA_P(zv) == VAR_WAKEUP_FLAG) { - if (!wakeup_failed) { - zval retval; - if (Z_ISUNDEF(wakeup_name)) { - ZVAL_STRINGL(&wakeup_name, "__wakeup", sizeof("__wakeup") - 1); - } - - BG(serialize_lock)++; - if (call_user_function(CG(function_table), zv, &wakeup_name, &retval, 0, 0) == FAILURE || Z_ISUNDEF(retval)) { - wakeup_failed = 1; - GC_ADD_FLAGS(Z_OBJ_P(zv), IS_OBJ_DESTRUCTOR_CALLED); - } - BG(serialize_lock)--; - - zval_ptr_dtor(&retval); - } else { - GC_ADD_FLAGS(Z_OBJ_P(zv), IS_OBJ_DESTRUCTOR_CALLED); - } - } - - i_zval_ptr_dtor(zv); - } - next = var_dtor_hash->next; - efree_size(var_dtor_hash, sizeof(var_dtor_entries)); - var_dtor_hash = next; - } - - zval_ptr_dtor_nogc(&wakeup_name); -} - -/* }}} */ - -static zend_string *unserialize_str(const unsigned char **p, size_t len, size_t maxlen) -{ - size_t i, j; - zend_string *str = zend_string_safe_alloc(1, len, 0, 0); - unsigned char *end = *(unsigned char **)p+maxlen; - - if (end < *p) { - zend_string_efree(str); - return NULL; - } - - for (i = 0; i < len; i++) { - if (*p >= end) { - zend_string_efree(str); - return NULL; - } - if (**p != '\\') { - ZSTR_VAL(str)[i] = (char)**p; - } else { - unsigned char ch = 0; - - for (j = 0; j < 2; j++) { - (*p)++; - if (**p >= '0' && **p <= '9') { - ch = (ch << 4) + (**p -'0'); - } else if (**p >= 'a' && **p <= 'f') { - ch = (ch << 4) + (**p -'a'+10); - } else if (**p >= 'A' && **p <= 'F') { - ch = (ch << 4) + (**p -'A'+10); - } else { - zend_string_efree(str); - return NULL; - } - } - ZSTR_VAL(str)[i] = (char)ch; - } - (*p)++; - } - ZSTR_VAL(str)[i] = 0; - ZSTR_LEN(str) = i; - return str; -} - -static inline int unserialize_allowed_class( - zend_string *class_name, php_unserialize_data_t *var_hashx) -{ - HashTable *classes = (*var_hashx)->allowed_classes; - zend_string *lcname; - int res; - ALLOCA_FLAG(use_heap) - - if(classes == NULL) { - return 1; - } - if(!zend_hash_num_elements(classes)) { - return 0; - } - - ZSTR_ALLOCA_ALLOC(lcname, ZSTR_LEN(class_name), use_heap); - zend_str_tolower_copy(ZSTR_VAL(lcname), ZSTR_VAL(class_name), ZSTR_LEN(class_name)); - res = zend_hash_exists(classes, lcname); - ZSTR_ALLOCA_FREE(lcname, use_heap); - return res; -} - -#define YYFILL(n) do { } while (0) -#define YYCTYPE unsigned char -#define YYCURSOR cursor -#define YYLIMIT limit -#define YYMARKER marker - - -#line 323 "ext/standard/var_unserializer.re" - - - - -static inline zend_long parse_iv2(const unsigned char *p, const unsigned char **q) -{ - zend_ulong result = 0; - zend_ulong neg = 0; - const unsigned char *start; - - if (*p == '-') { - neg = 1; - p++; - } else if (UNEXPECTED(*p == '+')) { - p++; - } - - while (UNEXPECTED(*p == '0')) { - p++; - } - - start = p; - - while (*p >= '0' && *p <= '9') { - result = result * 10 + ((zend_ulong)(*p) - '0'); - p++; - } - - if (q) { - *q = p; - } - - /* number too long or overflow */ - if (UNEXPECTED(p - start > MAX_LENGTH_OF_LONG - 1) - || (SIZEOF_ZEND_LONG == 4 - && UNEXPECTED(p - start == MAX_LENGTH_OF_LONG - 1) - && UNEXPECTED(*start > '2')) - || UNEXPECTED(result - neg > ZEND_LONG_MAX)) { - php_error_docref(NULL, E_WARNING, "Numerical result out of range"); - return (!neg) ? ZEND_LONG_MAX : ZEND_LONG_MIN; - } - - return (!neg) ? (zend_long)result : -(zend_long)result; -} - -static inline zend_long parse_iv(const unsigned char *p) -{ - return parse_iv2(p, NULL); -} - -/* no need to check for length - re2c already did */ -static inline size_t parse_uiv(const unsigned char *p) -{ - unsigned char cursor; - size_t result = 0; - - while (1) { - cursor = *p; - if (cursor >= '0' && cursor <= '9') { - result = result * 10 + (size_t)(cursor - (unsigned char)'0'); - } else { - break; - } - p++; - } - return result; -} - -#define UNSERIALIZE_PARAMETER zval *rval, const unsigned char **p, const unsigned char *max, php_unserialize_data_t *var_hash -#define UNSERIALIZE_PASSTHRU rval, p, max, var_hash - -static int php_var_unserialize_internal(UNSERIALIZE_PARAMETER, int as_key); - -static zend_always_inline int process_nested_data(UNSERIALIZE_PARAMETER, HashTable *ht, zend_long elements, int objprops) -{ - while (elements-- > 0) { - zval key, *data, d, *old_data; - zend_ulong idx; - - ZVAL_UNDEF(&key); - - if (!php_var_unserialize_internal(&key, p, max, NULL, 1)) { - zval_ptr_dtor(&key); - return 0; - } - - data = NULL; - ZVAL_UNDEF(&d); - - if (!objprops) { - if (Z_TYPE(key) == IS_LONG) { - idx = Z_LVAL(key); -numeric_key: - if (UNEXPECTED((old_data = zend_hash_index_find(ht, idx)) != NULL)) { - //??? update hash - var_push_dtor(var_hash, old_data); - data = zend_hash_index_update(ht, idx, &d); - } else { - data = zend_hash_index_add_new(ht, idx, &d); - } - } else if (Z_TYPE(key) == IS_STRING) { - if (UNEXPECTED(ZEND_HANDLE_NUMERIC(Z_STR(key), idx))) { - goto numeric_key; - } - if (UNEXPECTED((old_data = zend_hash_find(ht, Z_STR(key))) != NULL)) { - //??? update hash - var_push_dtor(var_hash, old_data); - data = zend_hash_update(ht, Z_STR(key), &d); - } else { - data = zend_hash_add_new(ht, Z_STR(key), &d); - } - } else { - zval_ptr_dtor(&key); - return 0; - } - } else { - if (EXPECTED(Z_TYPE(key) == IS_STRING)) { -string_key: - if (Z_TYPE_P(rval) == IS_OBJECT - && zend_hash_num_elements(&Z_OBJCE_P(rval)->properties_info) > 0) { - zend_property_info *existing_propinfo; - zend_string *new_key; - const char *unmangled_class = NULL; - const char *unmangled_prop; - size_t unmangled_prop_len; - zend_string *unmangled; - - if (UNEXPECTED(zend_unmangle_property_name_ex(Z_STR(key), &unmangled_class, &unmangled_prop, &unmangled_prop_len) == FAILURE)) { - zval_ptr_dtor(&key); - return 0; - } - - unmangled = zend_string_init(unmangled_prop, unmangled_prop_len, 0); - - existing_propinfo = zend_hash_find_ptr(&Z_OBJCE_P(rval)->properties_info, unmangled); - if ((unmangled_class == NULL || !strcmp(unmangled_class, "*") || !strcasecmp(unmangled_class, ZSTR_VAL(Z_OBJCE_P(rval)->name))) - && (existing_propinfo != NULL) - && (existing_propinfo->flags & ZEND_ACC_PPP_MASK)) { - if (existing_propinfo->flags & ZEND_ACC_PROTECTED) { - new_key = zend_mangle_property_name( - "*", 1, ZSTR_VAL(unmangled), ZSTR_LEN(unmangled), 0); - zend_string_release_ex(unmangled, 0); - } else if (existing_propinfo->flags & ZEND_ACC_PRIVATE) { - if (unmangled_class != NULL && strcmp(unmangled_class, "*") != 0) { - new_key = zend_mangle_property_name( - unmangled_class, strlen(unmangled_class), - ZSTR_VAL(unmangled), ZSTR_LEN(unmangled), - 0); - } else { - new_key = zend_mangle_property_name( - ZSTR_VAL(existing_propinfo->ce->name), ZSTR_LEN(existing_propinfo->ce->name), - ZSTR_VAL(unmangled), ZSTR_LEN(unmangled), - 0); - } - zend_string_release_ex(unmangled, 0); - } else { - ZEND_ASSERT(existing_propinfo->flags & ZEND_ACC_PUBLIC); - new_key = unmangled; - } - zval_ptr_dtor_str(&key); - ZVAL_STR(&key, new_key); - } else { - zend_string_release_ex(unmangled, 0); - } - } - - if ((old_data = zend_hash_find(ht, Z_STR(key))) != NULL) { - if (Z_TYPE_P(old_data) == IS_INDIRECT) { - old_data = Z_INDIRECT_P(old_data); - } - var_push_dtor(var_hash, old_data); - data = zend_hash_update_ind(ht, Z_STR(key), &d); - } else { - data = zend_hash_add_new(ht, Z_STR(key), &d); - } - } else if (Z_TYPE(key) == IS_LONG) { - /* object properties should include no integers */ - convert_to_string(&key); - goto string_key; - } else { - zval_ptr_dtor(&key); - return 0; - } - } - - if (!php_var_unserialize_internal(data, p, max, var_hash, 0)) { - zval_ptr_dtor(&key); - return 0; - } - - var_push_dtor(var_hash, data); - zval_ptr_dtor_str(&key); - - if (elements && *(*p-1) != ';' && *(*p-1) != '}') { - (*p)--; - return 0; - } - } - - return 1; -} - -static inline int finish_nested_data(UNSERIALIZE_PARAMETER) -{ - if (*p >= max || **p != '}') { - return 0; - } - - (*p)++; - return 1; -} - -static inline int object_custom(UNSERIALIZE_PARAMETER, zend_class_entry *ce) -{ - zend_long datalen; - - datalen = parse_iv2((*p) + 2, p); - - (*p) += 2; - - if (datalen < 0 || (max - (*p)) <= datalen) { - zend_error(E_WARNING, "Insufficient data for unserializing - " ZEND_LONG_FMT " required, " ZEND_LONG_FMT " present", datalen, (zend_long)(max - (*p))); - return 0; - } - - /* Check that '}' is present before calling ce->unserialize() to mitigate issues - * with unserialize reading past the end of the passed buffer if the string is not - * appropriately terminated (usually NUL terminated, but '}' is also sufficient.) */ - if ((*p)[datalen] != '}') { - return 0; - } - - if (ce->unserialize == NULL) { - zend_error(E_WARNING, "Class %s has no unserializer", ZSTR_VAL(ce->name)); - object_init_ex(rval, ce); - } else if (ce->unserialize(rval, ce, (const unsigned char*)*p, datalen, (zend_unserialize_data *)var_hash) != SUCCESS) { - return 0; - } - - (*p) += datalen + 1; /* +1 for '}' */ - return 1; -} - -static inline zend_long object_common1(UNSERIALIZE_PARAMETER, zend_class_entry *ce) -{ - zend_long elements; - - if( *p >= max - 2) { - zend_error(E_WARNING, "Bad unserialize data"); - return -1; - } - - elements = parse_iv2((*p) + 2, p); - - (*p) += 2; - - if (ce->serialize == NULL) { - object_init_ex(rval, ce); - } else { - /* If this class implements Serializable, it should not land here but in object_custom(). The passed string - obviously doesn't descend from the regular serializer. */ - zend_error(E_WARNING, "Erroneous data format for unserializing '%s'", ZSTR_VAL(ce->name)); - return -1; - } - - return elements; -} - -#ifdef PHP_WIN32 -# pragma optimize("", off) -#endif -static inline int object_common2(UNSERIALIZE_PARAMETER, zend_long elements) -{ - HashTable *ht; - zend_bool has_wakeup; - - if (Z_TYPE_P(rval) != IS_OBJECT) { - return 0; - } - - has_wakeup = Z_OBJCE_P(rval) != PHP_IC_ENTRY - && zend_hash_str_exists(&Z_OBJCE_P(rval)->function_table, "__wakeup", sizeof("__wakeup")-1); - - ht = Z_OBJPROP_P(rval); - if (elements >= (zend_long)(HT_MAX_SIZE - zend_hash_num_elements(ht))) { - return 0; - } - - zend_hash_extend(ht, zend_hash_num_elements(ht) + elements, HT_FLAGS(ht) & HASH_FLAG_PACKED); - if (!process_nested_data(UNSERIALIZE_PASSTHRU, ht, elements, 1)) { - if (has_wakeup) { - ZVAL_DEREF(rval); - GC_ADD_FLAGS(Z_OBJ_P(rval), IS_OBJ_DESTRUCTOR_CALLED); - } - return 0; - } - - ZVAL_DEREF(rval); - if (has_wakeup) { - /* Delay __wakeup call until end of serialization */ - zval *wakeup_var = var_tmp_var(var_hash); - ZVAL_COPY(wakeup_var, rval); - Z_EXTRA_P(wakeup_var) = VAR_WAKEUP_FLAG; - } - - return finish_nested_data(UNSERIALIZE_PASSTHRU); -} -#ifdef PHP_WIN32 -# pragma optimize("", on) -#endif - -PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER) -{ - var_entries *orig_var_entries = (*var_hash)->last; - zend_long orig_used_slots = orig_var_entries ? orig_var_entries->used_slots : 0; - int result; - - result = php_var_unserialize_internal(UNSERIALIZE_PASSTHRU, 0); - - if (!result) { - /* If the unserialization failed, mark all elements that have been added to var_hash - * as NULL. This will forbid their use by other unserialize() calls in the same - * unserialization context. */ - var_entries *e = orig_var_entries; - zend_long s = orig_used_slots; - while (e) { - for (; s < e->used_slots; s++) { - e->data[s] = NULL; - } - - e = e->next; - s = 0; - } - } - - return result; -} - -static int php_var_unserialize_internal(UNSERIALIZE_PARAMETER, int as_key) -{ - const unsigned char *cursor, *limit, *marker, *start; - zval *rval_ref; - - limit = max; - cursor = *p; - - if (YYCURSOR >= YYLIMIT) { - return 0; - } - - if (var_hash && (*p)[0] != 'R') { - var_push(var_hash, rval); - } - - start = cursor; - - -#line 677 "ext/standard/var_unserializer.c" -{ - YYCTYPE yych; - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7); - yych = *YYCURSOR; - switch (yych) { - case 'C': - case 'O': goto yy4; - case 'N': goto yy5; - case 'R': goto yy6; - case 'S': goto yy7; - case 'a': goto yy8; - case 'b': goto yy9; - case 'd': goto yy10; - case 'i': goto yy11; - case 'o': goto yy12; - case 'r': goto yy13; - case 's': goto yy14; - case '}': goto yy15; - default: goto yy2; - } -yy2: - ++YYCURSOR; -yy3: -#line 1076 "ext/standard/var_unserializer.re" - { return 0; } -#line 737 "ext/standard/var_unserializer.c" -yy4: - yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy17; - goto yy3; -yy5: - yych = *++YYCURSOR; - if (yych == ';') goto yy19; - goto yy3; -yy6: - yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy21; - goto yy3; -yy7: - yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy22; - goto yy3; -yy8: - yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy23; - goto yy3; -yy9: - yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy24; - goto yy3; -yy10: - yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy25; - goto yy3; -yy11: - yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy26; - goto yy3; -yy12: - yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy27; - goto yy3; -yy13: - yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy28; - goto yy3; -yy14: - yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy29; - goto yy3; -yy15: - ++YYCURSOR; -#line 1070 "ext/standard/var_unserializer.re" - { - /* this is the case where we have less data than planned */ - php_error_docref(NULL, E_NOTICE, "Unexpected end of serialized data"); - return 0; /* not sure if it should be 0 or 1 here? */ -} -#line 790 "ext/standard/var_unserializer.c" -yy17: - yych = *++YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy30; - } -yy18: - YYCURSOR = YYMARKER; - goto yy3; -yy19: - ++YYCURSOR; -#line 731 "ext/standard/var_unserializer.re" - { - *p = YYCURSOR; - ZVAL_NULL(rval); - return 1; -} -#line 807 "ext/standard/var_unserializer.c" -yy21: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy32; - goto yy18; -yy22: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy34; - goto yy18; -yy23: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy36; - goto yy18; -yy24: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '0') goto yy38; - if (yych <= '1') goto yy39; - goto yy18; -yy25: - yych = *++YYCURSOR; - if (yych <= '/') { - if (yych <= ',') { - if (yych == '+') goto yy40; - goto yy18; - } else { - if (yych <= '-') goto yy41; - if (yych <= '.') goto yy42; - goto yy18; - } - } else { - if (yych <= 'I') { - if (yych <= '9') goto yy43; - if (yych <= 'H') goto yy18; - goto yy45; - } else { - if (yych == 'N') goto yy46; - goto yy18; - } - } -yy26: - yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '+') goto yy47; - goto yy18; - } else { - if (yych <= '-') goto yy47; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy48; - goto yy18; - } -yy27: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy50; - goto yy18; -yy28: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy52; - goto yy18; -yy29: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy54; - goto yy18; -yy30: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy30; - } - if (yych <= '/') goto yy18; - if (yych <= ':') goto yy56; - goto yy18; -yy32: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy32; - if (yych == ';') goto yy57; - goto yy18; -yy34: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy34; - if (yych <= ':') goto yy59; - goto yy18; -yy36: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy36; - if (yych <= ':') goto yy60; - goto yy18; -yy38: - yych = *++YYCURSOR; - if (yych == ';') goto yy61; - goto yy18; -yy39: - yych = *++YYCURSOR; - if (yych == ';') goto yy63; - goto yy18; -yy40: - yych = *++YYCURSOR; - if (yych == '.') goto yy42; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy43; - goto yy18; -yy41: - yych = *++YYCURSOR; - if (yych <= '/') { - if (yych != '.') goto yy18; - } else { - if (yych <= '9') goto yy43; - if (yych == 'I') goto yy45; - goto yy18; - } -yy42: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy65; - goto yy18; -yy43: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); - yych = *YYCURSOR; - if (yych <= ':') { - if (yych <= '.') { - if (yych <= '-') goto yy18; - goto yy65; - } else { - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy43; - goto yy18; - } - } else { - if (yych <= 'E') { - if (yych <= ';') goto yy67; - if (yych <= 'D') goto yy18; - goto yy69; - } else { - if (yych == 'e') goto yy69; - goto yy18; - } - } -yy45: - yych = *++YYCURSOR; - if (yych == 'N') goto yy70; - goto yy18; -yy46: - yych = *++YYCURSOR; - if (yych == 'A') goto yy71; - goto yy18; -yy47: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; -yy48: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy48; - if (yych == ';') goto yy72; - goto yy18; -yy50: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy50; - if (yych <= ':') goto yy74; - goto yy18; -yy52: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy52; - if (yych == ';') goto yy75; - goto yy18; -yy54: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy54; - if (yych <= ':') goto yy77; - goto yy18; -yy56: - yych = *++YYCURSOR; - if (yych == '"') goto yy78; - goto yy18; -yy57: - ++YYCURSOR; -#line 681 "ext/standard/var_unserializer.re" - { - zend_long id; - - *p = YYCURSOR; - if (!var_hash) return 0; - - id = parse_uiv(start + 2) - 1; - if (id == -1 || (rval_ref = var_access(var_hash, id)) == NULL) { - return 0; - } - - if (Z_ISUNDEF_P(rval_ref) || (Z_ISREF_P(rval_ref) && Z_ISUNDEF_P(Z_REFVAL_P(rval_ref)))) { - return 0; - } - - if (Z_ISREF_P(rval_ref)) { - ZVAL_COPY(rval, rval_ref); - } else { - ZVAL_NEW_REF(rval_ref, rval_ref); - ZVAL_COPY(rval, rval_ref); - } - - return 1; -} -#line 1036 "ext/standard/var_unserializer.c" -yy59: - yych = *++YYCURSOR; - if (yych == '"') goto yy80; - goto yy18; -yy60: - yych = *++YYCURSOR; - if (yych == '{') goto yy82; - goto yy18; -yy61: - ++YYCURSOR; -#line 737 "ext/standard/var_unserializer.re" - { - *p = YYCURSOR; - ZVAL_FALSE(rval); - return 1; -} -#line 1053 "ext/standard/var_unserializer.c" -yy63: - ++YYCURSOR; -#line 743 "ext/standard/var_unserializer.re" - { - *p = YYCURSOR; - ZVAL_TRUE(rval); - return 1; -} -#line 1062 "ext/standard/var_unserializer.c" -yy65: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); - yych = *YYCURSOR; - if (yych <= ';') { - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy65; - if (yych <= ':') goto yy18; - } else { - if (yych <= 'E') { - if (yych <= 'D') goto yy18; - goto yy69; - } else { - if (yych == 'e') goto yy69; - goto yy18; - } - } -yy67: - ++YYCURSOR; -#line 791 "ext/standard/var_unserializer.re" - { -#if SIZEOF_ZEND_LONG == 4 -use_double: -#endif - *p = YYCURSOR; - ZVAL_DOUBLE(rval, zend_strtod((const char *)start + 2, NULL)); - return 1; -} -#line 1091 "ext/standard/var_unserializer.c" -yy69: - yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '+') goto yy84; - goto yy18; - } else { - if (yych <= '-') goto yy84; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy85; - goto yy18; - } -yy70: - yych = *++YYCURSOR; - if (yych == 'F') goto yy87; - goto yy18; -yy71: - yych = *++YYCURSOR; - if (yych == 'N') goto yy87; - goto yy18; -yy72: - ++YYCURSOR; -#line 749 "ext/standard/var_unserializer.re" - { -#if SIZEOF_ZEND_LONG == 4 - int digits = YYCURSOR - start - 3; - - if (start[2] == '-' || start[2] == '+') { - digits--; - } - - /* Use double for large zend_long values that were serialized on a 64-bit system */ - if (digits >= MAX_LENGTH_OF_LONG - 1) { - if (digits == MAX_LENGTH_OF_LONG - 1) { - int cmp = strncmp((char*)YYCURSOR - MAX_LENGTH_OF_LONG, long_min_digits, MAX_LENGTH_OF_LONG - 1); - - if (!(cmp < 0 || (cmp == 0 && start[2] == '-'))) { - goto use_double; - } - } else { - goto use_double; - } - } -#endif - *p = YYCURSOR; - ZVAL_LONG(rval, parse_iv(start + 2)); - return 1; -} -#line 1139 "ext/standard/var_unserializer.c" -yy74: - yych = *++YYCURSOR; - if (yych == '"') goto yy88; - goto yy18; -yy75: - ++YYCURSOR; -#line 706 "ext/standard/var_unserializer.re" - { - zend_long id; - - *p = YYCURSOR; - if (!var_hash) return 0; - - id = parse_uiv(start + 2) - 1; - if (id == -1 || (rval_ref = var_access(var_hash, id)) == NULL) { - return 0; - } - - if (rval_ref == rval) { - return 0; - } - - ZVAL_DEREF(rval_ref); - if (Z_TYPE_P(rval_ref) != IS_OBJECT) { - return 0; - } - - ZVAL_COPY(rval, rval_ref); - - return 1; -} -#line 1171 "ext/standard/var_unserializer.c" -yy77: - yych = *++YYCURSOR; - if (yych == '"') goto yy90; - goto yy18; -yy78: - ++YYCURSOR; -#line 918 "ext/standard/var_unserializer.re" - { - size_t len, len2, len3, maxlen; - zend_long elements; - char *str; - zend_string *class_name; - zend_class_entry *ce; - int incomplete_class = 0; - - int custom_object = 0; - - zval user_func; - zval retval; - zval args[1]; - - if (!var_hash) return 0; - if (*start == 'C') { - custom_object = 1; - } - - len2 = len = parse_uiv(start + 2); - maxlen = max - YYCURSOR; - if (maxlen < len || len == 0) { - *p = start + 2; - return 0; - } - - str = (char*)YYCURSOR; - - YYCURSOR += len; - - if (*(YYCURSOR) != '"') { - *p = YYCURSOR; - return 0; - } - if (*(YYCURSOR+1) != ':') { - *p = YYCURSOR+1; - return 0; - } - - len3 = strspn(str, "0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377\\"); - if (len3 != len) - { - *p = YYCURSOR + len3 - len; - return 0; - } - - class_name = zend_string_init(str, len, 0); - - do { - if(!unserialize_allowed_class(class_name, var_hash)) { - incomplete_class = 1; - ce = PHP_IC_ENTRY; - break; - } - - /* Try to find class directly */ - BG(serialize_lock)++; - ce = zend_lookup_class(class_name); - if (ce) { - BG(serialize_lock)--; - if (EG(exception)) { - zend_string_release_ex(class_name, 0); - return 0; - } - break; - } - BG(serialize_lock)--; - - if (EG(exception)) { - zend_string_release_ex(class_name, 0); - return 0; - } - - /* Check for unserialize callback */ - if ((PG(unserialize_callback_func) == NULL) || (PG(unserialize_callback_func)[0] == '\0')) { - incomplete_class = 1; - ce = PHP_IC_ENTRY; - break; - } - - /* Call unserialize callback */ - ZVAL_STRING(&user_func, PG(unserialize_callback_func)); - - ZVAL_STR_COPY(&args[0], class_name); - BG(serialize_lock)++; - if (call_user_function_ex(CG(function_table), NULL, &user_func, &retval, 1, args, 0, NULL) != SUCCESS) { - BG(serialize_lock)--; - if (EG(exception)) { - zend_string_release_ex(class_name, 0); - zval_ptr_dtor(&user_func); - zval_ptr_dtor(&args[0]); - return 0; - } - php_error_docref(NULL, E_WARNING, "defined (%s) but not found", Z_STRVAL(user_func)); - incomplete_class = 1; - ce = PHP_IC_ENTRY; - zval_ptr_dtor(&user_func); - zval_ptr_dtor(&args[0]); - break; - } - BG(serialize_lock)--; - zval_ptr_dtor(&retval); - if (EG(exception)) { - zend_string_release_ex(class_name, 0); - zval_ptr_dtor(&user_func); - zval_ptr_dtor(&args[0]); - return 0; - } - - /* The callback function may have defined the class */ - BG(serialize_lock)++; - if ((ce = zend_lookup_class(class_name)) == NULL) { - php_error_docref(NULL, E_WARNING, "Function %s() hasn't defined the class it was called for", Z_STRVAL(user_func)); - incomplete_class = 1; - ce = PHP_IC_ENTRY; - } - BG(serialize_lock)--; - - zval_ptr_dtor(&user_func); - zval_ptr_dtor(&args[0]); - break; - } while (1); - - *p = YYCURSOR; - - if (custom_object) { - int ret; - - ret = object_custom(UNSERIALIZE_PASSTHRU, ce); - - if (ret && incomplete_class) { - php_store_class_name(rval, ZSTR_VAL(class_name), len2); - } - zend_string_release_ex(class_name, 0); - return ret; - } - - elements = object_common1(UNSERIALIZE_PASSTHRU, ce); - - if (elements < 0) { - zend_string_release_ex(class_name, 0); - return 0; - } - - if (incomplete_class) { - php_store_class_name(rval, ZSTR_VAL(class_name), len2); - } - zend_string_release_ex(class_name, 0); - - return object_common2(UNSERIALIZE_PASSTHRU, elements); -} -#line 1330 "ext/standard/var_unserializer.c" -yy80: - ++YYCURSOR; -#line 840 "ext/standard/var_unserializer.re" - { - size_t len, maxlen; - zend_string *str; - - len = parse_uiv(start + 2); - maxlen = max - YYCURSOR; - if (maxlen < len) { - *p = start + 2; - return 0; - } - - if ((str = unserialize_str(&YYCURSOR, len, maxlen)) == NULL) { - return 0; - } - - if (*(YYCURSOR) != '"') { - zend_string_efree(str); - *p = YYCURSOR; - return 0; - } - - if (*(YYCURSOR + 1) != ';') { - efree(str); - *p = YYCURSOR + 1; - return 0; - } - - YYCURSOR += 2; - *p = YYCURSOR; - - ZVAL_STR(rval, str); - return 1; -} -#line 1367 "ext/standard/var_unserializer.c" -yy82: - ++YYCURSOR; -#line 874 "ext/standard/var_unserializer.re" - { - zend_long elements = parse_iv(start + 2); - /* use iv() not uiv() in order to check data range */ - *p = YYCURSOR; - if (!var_hash) return 0; - - if (elements < 0 || elements >= HT_MAX_SIZE) { - return 0; - } - - if (elements) { - array_init_size(rval, elements); - /* we can't convert from packed to hash during unserialization, because - reference to some zvals might be keept in var_hash (to support references) */ - zend_hash_real_init_mixed(Z_ARRVAL_P(rval)); - } else { - ZVAL_EMPTY_ARRAY(rval); - return finish_nested_data(UNSERIALIZE_PASSTHRU); - } - - /* The array may contain references to itself, in which case we'll be modifying an - * rc>1 array. This is okay, since the array is, ostensibly, only visible to - * unserialize (in practice unserialization handlers also see it). Ideally we should - * prohibit "r:" references to non-objects, as we only generate them for objects. */ - HT_ALLOW_COW_VIOLATION(Z_ARRVAL_P(rval)); - - if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_ARRVAL_P(rval), elements, 0)) { - return 0; - } - - return finish_nested_data(UNSERIALIZE_PASSTHRU); -} -#line 1403 "ext/standard/var_unserializer.c" -yy84: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; -yy85: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy85; - if (yych == ';') goto yy67; - goto yy18; -yy87: - yych = *++YYCURSOR; - if (yych == ';') goto yy92; - goto yy18; -yy88: - ++YYCURSOR; -#line 907 "ext/standard/var_unserializer.re" - { - zend_long elements; - if (!var_hash) return 0; - - elements = object_common1(UNSERIALIZE_PASSTHRU, ZEND_STANDARD_CLASS_DEF_PTR); - if (elements < 0 || elements >= HT_MAX_SIZE) { - return 0; - } - return object_common2(UNSERIALIZE_PASSTHRU, elements); -} -#line 1433 "ext/standard/var_unserializer.c" -yy90: - ++YYCURSOR; -#line 800 "ext/standard/var_unserializer.re" - { - size_t len, maxlen; - char *str; - - len = parse_uiv(start + 2); - maxlen = max - YYCURSOR; - if (maxlen < len) { - *p = start + 2; - return 0; - } - - str = (char*)YYCURSOR; - - YYCURSOR += len; - - if (*(YYCURSOR) != '"') { - *p = YYCURSOR; - return 0; - } - - if (*(YYCURSOR + 1) != ';') { - *p = YYCURSOR + 1; - return 0; - } - - YYCURSOR += 2; - *p = YYCURSOR; - - if (len == 0) { - ZVAL_EMPTY_STRING(rval); - } else if (len == 1) { - ZVAL_INTERNED_STR(rval, ZSTR_CHAR((zend_uchar)*str)); - } else if (as_key) { - ZVAL_STR(rval, zend_string_init_interned(str, len, 0)); - } else { - ZVAL_STRINGL(rval, str, len); - } - return 1; -} -#line 1476 "ext/standard/var_unserializer.c" -yy92: - ++YYCURSOR; -#line 775 "ext/standard/var_unserializer.re" - { - *p = YYCURSOR; - - if (!strncmp((char*)start + 2, "NAN", 3)) { - ZVAL_DOUBLE(rval, ZEND_NAN); - } else if (!strncmp((char*)start + 2, "INF", 3)) { - ZVAL_DOUBLE(rval, ZEND_INFINITY); - } else if (!strncmp((char*)start + 2, "-INF", 4)) { - ZVAL_DOUBLE(rval, -ZEND_INFINITY); - } else { - ZVAL_NULL(rval); - } - - return 1; -} -#line 1495 "ext/standard/var_unserializer.c" -} -#line 1078 "ext/standard/var_unserializer.re" - - - return 0; -} @@ -1,36 +1,101 @@ -#! /bin/sh +#!/bin/sh +# +# +----------------------------------------------------------------------+ +# | PHP Version 7 | +# +----------------------------------------------------------------------+ +# | Copyright (c) 1997-2018 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://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. | +# +----------------------------------------------------------------------+ +# | Authors: Sascha Schumann <sascha@schumann.cx> | +# +----------------------------------------------------------------------+ +# +# This script generates PHP lexer and parser files required to build PHP. The +# generated files are ignored in the Git repository and packaged during the PHP +# release process into the release installation archive download. This way the +# bison and re2c dependencies are not required to build PHP when downloading +# release archive. +# +# Usage: genfiles +# +# Environment: +# The following environment variables can override default generators paths. +# +# YACC Parser generator program, default bison +# RE2C Lexer generator program, default re2c +# +# For example: +# YACC=/path/to/bison ./genfiles -if [ -z $YACC ]; then - YACC="bison" -fi +# Parser generator +YACC=${YACC:-bison} YACC="$YACC -y -l" -if [ -z $RE2C ]; then - RE2C="re2c" -fi +# Lexer generator +RE2C=${RE2C:-re2c} +RE2C_FLAGS="-i" -# Generate Zend parser and lexer files -STD="make -f Zend/Makefile.frag RE2C='$RE2C' RE2C_FLAGS='-i' YACC='$YACC' srcdir=Zend builddir=Zend top_srcdir=." -(eval "$STD Zend/zend_language_parser.c Zend/zend_language_scanner.c Zend/zend_ini_parser.c Zend/zend_ini_scanner.c") +# Current path to return to it later. This enables running script from any path. +original_path=`pwd` -# Generate phpdbg parser and lexer files -STD="make -f sapi/phpdbg/Makefile.frag RE2C='$RE2C' RE2C_FLAGS='-i' YACC='$YACC' srcdir=sapi/phpdbg builddir=sapi/phpdbg top_srcdir=." -(eval "$STD sapi/phpdbg/phpdbg_parser.c sapi/phpdbg/phpdbg_lexer.c") +# Project root directory +project_root=`CDPATH= cd -- "$(dirname -- "$0")" && pwd -P` +cd $project_root -# Generate json parser and lexer files -STD="make -f ext/json/Makefile.frag RE2C='$RE2C' RE2C_FLAGS='-i' YACC='$YACC' srcdir=ext/json builddir=ext/json top_srcdir=." -(eval "$STD ext/json/json_parser.tab.c ext/json/json_scanner.c") +echo "Generating Zend parser and lexer files" +make RE2C="$RE2C" RE2C_FLAGS="$RE2C_FLAGS" YACC="$YACC" srcdir=Zend builddir=Zend top_srcdir=. \ + -f Zend/Makefile.frag \ + Zend/zend_language_parser.c \ + Zend/zend_language_scanner.c \ + Zend/zend_ini_parser.c \ + Zend/zend_ini_scanner.c -set -x +echo "Generating phpdbg parser and lexer files" +make RE2C="$RE2C" RE2C_FLAGS="$RE2C_FLAGS" YACC="$YACC" srcdir=sapi/phpdbg builddir=sapi/phpdbg top_srcdir=. \ + -f sapi/phpdbg/Makefile.frag \ + sapi/phpdbg/phpdbg_parser.c \ + sapi/phpdbg/phpdbg_lexer.c -CLEANUP_FILES=" \ - ext/pdo/pdo_sql_parser.c \ - ext/date/lib/parse_date.c \ - ext/standard/url_scanner_ex.c \ +echo "Generating json extension parser and lexer files" +make RE2C="$RE2C" RE2C_FLAGS="$RE2C_FLAGS" YACC="$YACC" srcdir=ext/json builddir=ext/json top_srcdir=. \ + -f ext/json/Makefile.frag \ + ext/json/json_parser.tab.c \ + ext/json/json_scanner.c + +echo "Generating PDO lexer file" +make RE2C="$RE2C" RE2C_FLAGS="$RE2C_FLAGS" srcdir=ext/pdo builddir=ext/pdo top_srcdir=. \ + -f ext/pdo/Makefile.frag \ + ext/pdo/pdo_sql_parser.c + +echo "Generating standard extension lexer files" +make RE2C="$RE2C" RE2C_FLAGS="$RE2C_FLAGS" srcdir=ext/standard builddir=ext/standard top_srcdir=. \ + -f ext/standard/Makefile.frag \ ext/standard/var_unserializer.c \ + ext/standard/url_scanner_ex.c + +echo "Generating phar extension lexer file" +make RE2C="$RE2C" RE2C_FLAGS="$RE2C_FLAGS" srcdir=ext/phar builddir=ext/phar top_srcdir=. \ + -f ext/phar/Makefile.frag \ + ext/phar/phar_path_check.c + +# Clean debug #line XY info from the bundled lexer files. +cleanup_files=" \ + ext/date/lib/parse_date.c \ + ext/date/lib/parse_iso_intervals.c \ " -for f in $CLEANUP_FILES; do +for f in $cleanup_files; do + echo "Cleaning file $f" cp $f $f.orig - grep -v '#line ' $f.orig > $f + grep -v '^#line ' $f.orig > $f + rm -f $f.orig done + +# Return to the original directory. +cd $original_path diff --git a/sapi/phpdbg/phpdbg_lexer.c b/sapi/phpdbg/phpdbg_lexer.c deleted file mode 100644 index 2ab0b5ac67..0000000000 --- a/sapi/phpdbg/phpdbg_lexer.c +++ /dev/null @@ -1,2085 +0,0 @@ -/* Generated by re2c 1.0.3 */ -#line 1 "sapi/phpdbg/phpdbg_lexer.l" -/* - * phpdbg_lexer.l - */ - -#include "phpdbg.h" -#include "phpdbg_cmd.h" - -#include "phpdbg_parser.h" - -#define LEX(v) (PHPDBG_G(lexer).v) - -#define YYCTYPE unsigned char -#define YYSETCONDITION(x) LEX(state) = x; -#define YYGETCONDITION() LEX(state) -#define YYCURSOR LEX(cursor) -#define YYMARKER LEX(marker) -#define YYCTXMARKER LEX(ctxmarker) -#define yyleng LEX(len) -#define yytext ((char*) LEX(text)) -#undef YYDEBUG -#define YYDEBUG(a, b) -#define YYFILL(n) - -#define NORMAL 0 -#define PRE_RAW 1 -#define RAW 2 -#define INITIAL 3 - -ZEND_EXTERN_MODULE_GLOBALS(phpdbg) - -void phpdbg_init_lexer (phpdbg_param_t *stack, char *input) { - PHPDBG_G(parser_stack) = stack; - - YYSETCONDITION(INITIAL); - - LEX(text) = YYCURSOR = (unsigned char *) input; - LEX(len) = strlen(input); -} - -static int unescape_string(char *s) { - switch (*s) { - case '\'': - case '\"': { - char start = *s; - size_t off = 1; - do { - if (s[off] == '\\') { - off++; - } - *s = s[off]; - } while ((++s)[off] != start); - return off + 1; - } - } - - return 0; -} - -int phpdbg_lex (phpdbg_param_t* yylval) { - -restart: - LEX(text) = YYCURSOR; - - -#line 68 "sapi/phpdbg/phpdbg_lexer.c" -{ - YYCTYPE yych; - unsigned int yyaccept = 0; - if (YYGETCONDITION() < 2) { - if (YYGETCONDITION() < 1) { - goto yyc_NORMAL; - } else { - goto yyc_PRE_RAW; - } - } else { - if (YYGETCONDITION() < 3) { - goto yyc_RAW; - } else { - goto yyc_INITIAL; - } - } -/* *********************************** */ -yyc_NORMAL: - { - static const unsigned char yybm[] = { - /* table 1 .. 8: 0 */ - 0, 62, 62, 62, 62, 62, 62, 62, - 62, 40, 0, 62, 62, 40, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, - 40, 62, 50, 40, 62, 62, 62, 14, - 62, 62, 62, 62, 62, 62, 63, 62, - 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 40, 62, 62, 62, 62, 62, - 62, 254, 254, 254, 254, 254, 254, 190, - 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 62, 2, 62, 62, 62, - 62, 254, 254, 254, 254, 254, 254, 190, - 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, - /* table 9 .. 10: 256 */ - 0, 64, 64, 64, 64, 64, 64, 64, - 64, 128, 0, 64, 64, 128, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 128, 64, 0, 0, 64, 64, 64, 0, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 0, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, - }; - YYDEBUG(1, *YYCURSOR); - YYFILL(11); - yych = *YYCURSOR; - if (yybm[256+yych] & 128) { - goto yy8; - } - switch (yych) { - case 0x00: - case '\t': - case '\n': goto yy3; - case '"': goto yy11; - case '#': goto yy13; - case '\'': goto yy15; - case '-': goto yy16; - case '.': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': goto yy17; - case '0': goto yy20; - case ':': goto yy21; - case 'D': - case 'd': goto yy22; - case 'E': - case 'e': goto yy23; - case 'F': - case 'f': goto yy24; - case 'I': - case 'i': goto yy25; - case 'N': - case 'n': goto yy26; - case 'O': - case 'o': goto yy27; - case 'T': - case 't': goto yy28; - case 'Y': - case 'y': goto yy29; - case 'Z': goto yy30; - case 'z': goto yy31; - default: goto yy5; - } -yy3: - YYDEBUG(3, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(4, *YYCURSOR); - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 89 "sapi/phpdbg/phpdbg_lexer.l" - { - return 0; -} -#line 211 "sapi/phpdbg/phpdbg_lexer.c" -yy5: - YYDEBUG(5, *YYCURSOR); - yyaccept = 0; - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; -yy6: - YYDEBUG(6, *YYCURSOR); - if (yybm[256+yych] & 64) { - goto yy5; - } - if (yych <= ' ') goto yy7; - if (yych == '#') goto yy7; - if (yych <= '\'') goto yy32; - goto yy34; -yy7: - YYDEBUG(7, *YYCURSOR); - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 161 "sapi/phpdbg/phpdbg_lexer.l" - { - phpdbg_init_param(yylval, STR_PARAM); - yylval->str = estrndup(yytext, yyleng - unescape_string(yytext)); - yylval->len = yyleng; - return T_ID; -} -#line 237 "sapi/phpdbg/phpdbg_lexer.c" -yy8: - YYDEBUG(8, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(9, *YYCURSOR); - if (yybm[256+yych] & 128) { - goto yy8; - } - YYDEBUG(10, *YYCURSOR); - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 175 "sapi/phpdbg/phpdbg_lexer.l" - { - /* ignore whitespace */ - - goto restart; -} -#line 255 "sapi/phpdbg/phpdbg_lexer.c" -yy11: - YYDEBUG(11, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '"') goto yy32; - goto yy36; -yy12: - YYDEBUG(12, *YYCURSOR); - YYCURSOR = YYMARKER; - if (yyaccept <= 3) { - if (yyaccept <= 1) { - if (yyaccept == 0) { - goto yy7; - } else { - goto yy14; - } - } else { - if (yyaccept == 2) { - goto yy19; - } else { - goto yy83; - } - } - } else { - if (yyaccept <= 5) { - if (yyaccept == 4) { - goto yy86; - } else { - goto yy102; - } - } else { - goto yy119; - } - } -yy13: - YYDEBUG(13, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ',') goto yy14; - if (yych <= '-') { - YYCTXMARKER = YYCURSOR; - goto yy41; - } - YYCTXMARKER = YYCURSOR; - goto yy42; - } else { - if (yych <= '/') goto yy14; - if (yych <= '9') { - YYCTXMARKER = YYCURSOR; - goto yy42; - } - } -yy14: - YYDEBUG(14, *YYCURSOR); - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 110 "sapi/phpdbg/phpdbg_lexer.l" - { - YYSETCONDITION(INITIAL); - return T_SEPARATOR; -} -#line 316 "sapi/phpdbg/phpdbg_lexer.c" -yy15: - YYDEBUG(15, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\'') goto yy32; - goto yy46; -yy16: - YYDEBUG(16, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 1) { - goto yy17; - } - if (yych == 'r') goto yy51; - goto yy6; -yy17: - YYDEBUG(17, *YYCURSOR); - yyaccept = 2; - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; - YYDEBUG(18, *YYCURSOR); - if (yybm[0+yych] & 1) { - goto yy17; - } - if (yych <= ' ') { - if (yych <= '\n') { - if (yych <= 0x00) goto yy19; - if (yych <= 0x08) goto yy5; - } else { - if (yych == '\r') goto yy19; - if (yych <= 0x1F) goto yy5; - } - } else { - if (yych <= '&') { - if (yych <= '!') goto yy5; - if (yych <= '"') goto yy32; - if (yych >= '$') goto yy5; - } else { - if (yych <= '\'') goto yy32; - if (yych <= '/') goto yy5; - if (yych <= ':') goto yy34; - goto yy5; - } - } -yy19: - YYDEBUG(19, *YYCURSOR); - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 142 "sapi/phpdbg/phpdbg_lexer.l" - { - phpdbg_init_param(yylval, NUMERIC_PARAM); - yylval->num = atoi(yytext); - return T_DIGITS; -} -#line 370 "sapi/phpdbg/phpdbg_lexer.c" -yy20: - YYDEBUG(20, *YYCURSOR); - yyaccept = 2; - yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 1) { - goto yy17; - } - if (yych <= 0x1F) { - if (yych <= '\n') { - if (yych <= 0x00) goto yy19; - if (yych <= 0x08) goto yy6; - goto yy19; - } else { - if (yych == '\r') goto yy19; - goto yy6; - } - } else { - if (yych <= '#') { - if (yych <= ' ') goto yy19; - if (yych <= '"') goto yy6; - goto yy19; - } else { - if (yych == 'x') goto yy52; - goto yy6; - } - } -yy21: - YYDEBUG(21, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == ':') goto yy55; - if (yych == '\\') goto yy57; - goto yy53; -yy22: - YYDEBUG(22, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'I') goto yy59; - if (yych == 'i') goto yy59; - goto yy6; -yy23: - YYDEBUG(23, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'N') goto yy60; - if (yych == 'n') goto yy60; - goto yy6; -yy24: - YYDEBUG(24, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'A') goto yy61; - if (yych == 'a') goto yy61; - goto yy6; -yy25: - YYDEBUG(25, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'F') goto yy62; - if (yych == 'f') goto yy62; - goto yy6; -yy26: - YYDEBUG(26, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'O') goto yy63; - if (yych == 'o') goto yy63; - goto yy6; -yy27: - YYDEBUG(27, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'N') { - if (yych == 'F') goto yy64; - if (yych <= 'M') goto yy6; - goto yy65; - } else { - if (yych <= 'f') { - if (yych <= 'e') goto yy6; - goto yy64; - } else { - if (yych == 'n') goto yy65; - goto yy6; - } - } -yy28: - YYDEBUG(28, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'R') goto yy66; - if (yych == 'r') goto yy66; - goto yy6; -yy29: - YYDEBUG(29, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'E') goto yy67; - if (yych == 'e') goto yy67; - goto yy6; -yy30: - YYDEBUG(30, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'E') goto yy68; - goto yy6; -yy31: - YYDEBUG(31, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'e') goto yy69; - goto yy6; -yy32: - YYDEBUG(32, *YYCURSOR); - ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; -yy33: - YYDEBUG(33, *YYCURSOR); - if (yybm[0+yych] & 2) { - goto yy32; - } - if (yych <= '#') goto yy12; - goto yy70; -yy34: - YYDEBUG(34, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '/') goto yy71; - if (yych == '\\') goto yy57; - goto yy12; -yy35: - YYDEBUG(35, *YYCURSOR); - ++YYCURSOR; - YYFILL(4); - yych = *YYCURSOR; -yy36: - YYDEBUG(36, *YYCURSOR); - if (yybm[0+yych] & 4) { - goto yy35; - } - if (yych <= ' ') { - if (yych <= 0x00) goto yy12; - if (yych == '\n') goto yy12; - } else { - if (yych <= '"') goto yy72; - if (yych <= '#') goto yy37; - if (yych <= ':') goto yy39; - goto yy40; - } -yy37: - YYDEBUG(37, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy38: - YYDEBUG(38, *YYCURSOR); - if (yybm[0+yych] & 8) { - goto yy37; - } - if (yych <= '\n') goto yy12; - if (yych <= '"') goto yy73; - goto yy74; -yy39: - YYDEBUG(39, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '/') goto yy75; - goto yy38; -yy40: - YYDEBUG(40, *YYCURSOR); - ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; - if (yych <= ' ') { - if (yych <= '\n') { - if (yych <= 0x00) goto yy12; - if (yych <= 0x08) goto yy32; - goto yy12; - } else { - if (yych == '\r') goto yy12; - if (yych <= 0x1F) goto yy32; - goto yy12; - } - } else { - if (yych <= '9') { - if (yych <= '!') goto yy32; - if (yych <= '"') goto yy35; - if (yych <= '#') goto yy12; - goto yy32; - } else { - if (yych <= ':') goto yy70; - if (yych == '\\') goto yy35; - goto yy32; - } - } -yy41: - YYDEBUG(41, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '.') goto yy42; - if (yych <= '/') goto yy12; - if (yych >= ':') goto yy12; -yy42: - YYDEBUG(42, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(43, *YYCURSOR); - if (yych == '.') goto yy42; - if (yych <= '/') goto yy44; - if (yych <= '9') goto yy42; -yy44: - YYDEBUG(44, *YYCURSOR); - YYCURSOR = YYCTXMARKER; - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 106 "sapi/phpdbg/phpdbg_lexer.l" - { - return T_POUND; -} -#line 586 "sapi/phpdbg/phpdbg_lexer.c" -yy45: - YYDEBUG(45, *YYCURSOR); - ++YYCURSOR; - YYFILL(4); - yych = *YYCURSOR; -yy46: - YYDEBUG(46, *YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy45; - } - if (yych <= '\n') { - if (yych <= 0x00) goto yy12; - if (yych >= '\n') goto yy12; - } else { - if (yych <= '#') goto yy47; - if (yych <= '\'') goto yy72; - if (yych <= ':') goto yy49; - goto yy50; - } -yy47: - YYDEBUG(47, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; -yy48: - YYDEBUG(48, *YYCURSOR); - if (yybm[0+yych] & 32) { - goto yy47; - } - if (yych <= '\n') goto yy12; - if (yych <= '\'') goto yy73; - goto yy76; -yy49: - YYDEBUG(49, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '/') goto yy77; - goto yy48; -yy50: - YYDEBUG(50, *YYCURSOR); - ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; - if (yych <= '"') { - if (yych <= '\f') { - if (yych <= 0x00) goto yy12; - if (yych <= 0x08) goto yy32; - if (yych <= '\n') goto yy12; - goto yy32; - } else { - if (yych <= '\r') goto yy12; - if (yych == ' ') goto yy12; - goto yy32; - } - } else { - if (yych <= '9') { - if (yych <= '#') goto yy12; - if (yych == '\'') goto yy45; - goto yy32; - } else { - if (yych <= ':') goto yy70; - if (yych == '\\') goto yy45; - goto yy32; - } - } -yy51: - YYDEBUG(51, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ' ') { - if (yych <= '\f') { - if (yych == '\t') goto yy78; - goto yy6; - } else { - if (yych <= '\r') goto yy78; - if (yych <= 0x1F) goto yy6; - goto yy78; - } - } else { - if (yych <= '.') { - if (yych <= ',') goto yy6; - if (yych <= '-') goto yy80; - goto yy81; - } else { - if (yych <= '/') goto yy6; - if (yych <= '9') goto yy81; - goto yy6; - } - } -yy52: - YYDEBUG(52, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy84; - } - goto yy6; -yy53: - YYDEBUG(53, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(54, *YYCURSOR); - YYCURSOR -= 1; - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 119 "sapi/phpdbg/phpdbg_lexer.l" - { - return T_COLON; -} -#line 693 "sapi/phpdbg/phpdbg_lexer.c" -yy55: - YYDEBUG(55, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(56, *YYCURSOR); - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 115 "sapi/phpdbg/phpdbg_lexer.l" - { - return T_DCOLON; -} -#line 703 "sapi/phpdbg/phpdbg_lexer.c" -yy57: - YYDEBUG(57, *YYCURSOR); - yyaccept = 0; - YYMARKER = ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(58, *YYCURSOR); - if (yych <= ' ') { - if (yych <= '\n') { - if (yych <= 0x00) goto yy7; - if (yych <= 0x08) goto yy57; - goto yy7; - } else { - if (yych == '\r') goto yy7; - if (yych <= 0x1F) goto yy57; - goto yy7; - } - } else { - if (yych <= '&') { - if (yych <= '!') goto yy57; - if (yych <= '#') goto yy7; - goto yy57; - } else { - if (yych <= '\'') goto yy7; - if (yych == ':') goto yy87; - goto yy57; - } - } -yy59: - YYDEBUG(59, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'S') goto yy88; - if (yych == 's') goto yy88; - goto yy6; -yy60: - YYDEBUG(60, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'A') goto yy89; - if (yych == 'a') goto yy89; - goto yy6; -yy61: - YYDEBUG(61, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'L') goto yy90; - if (yych == 'l') goto yy90; - goto yy6; -yy62: - YYDEBUG(62, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '\f') { - if (yych == '\t') goto yy91; - goto yy6; - } else { - if (yych <= '\r') goto yy91; - if (yych == ' ') goto yy91; - goto yy6; - } -yy63: - YYDEBUG(63, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '\f') { - if (yych <= 0x00) goto yy94; - if (yych <= 0x08) goto yy6; - if (yych <= '\n') goto yy94; - goto yy6; - } else { - if (yych <= '\r') goto yy94; - if (yych == ' ') goto yy94; - goto yy6; - } -yy64: - YYDEBUG(64, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'F') goto yy63; - if (yych == 'f') goto yy63; - goto yy6; -yy65: - YYDEBUG(65, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '\f') { - if (yych <= 0x00) goto yy96; - if (yych <= 0x08) goto yy6; - if (yych <= '\n') goto yy96; - goto yy6; - } else { - if (yych <= '\r') goto yy96; - if (yych == ' ') goto yy96; - goto yy6; - } -yy66: - YYDEBUG(66, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'U') goto yy98; - if (yych == 'u') goto yy98; - goto yy6; -yy67: - YYDEBUG(67, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'S') goto yy65; - if (yych == 's') goto yy65; - goto yy6; -yy68: - YYDEBUG(68, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'N') goto yy99; - goto yy6; -yy69: - YYDEBUG(69, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'n') goto yy100; - goto yy6; -yy70: - YYDEBUG(70, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '/') goto yy12; -yy71: - YYDEBUG(71, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '/') goto yy101; - goto yy12; -yy72: - YYDEBUG(72, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '\r') { - if (yych <= 0x08) { - if (yych <= 0x00) goto yy7; - goto yy33; - } else { - if (yych <= '\n') goto yy7; - if (yych <= '\f') goto yy33; - goto yy7; - } - } else { - if (yych <= ' ') { - if (yych <= 0x1F) goto yy33; - goto yy7; - } else { - if (yych == '#') goto yy7; - goto yy33; - } - } -yy73: - YYDEBUG(73, *YYCURSOR); - ++YYCURSOR; - goto yy7; -yy74: - YYDEBUG(74, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - if (yych == '"') goto yy37; - if (yych == '\\') goto yy37; - goto yy12; -yy75: - YYDEBUG(75, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '/') goto yy103; - goto yy38; -yy76: - YYDEBUG(76, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - if (yych == '\'') goto yy47; - if (yych == '\\') goto yy47; - goto yy12; -yy77: - YYDEBUG(77, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '/') goto yy104; - goto yy48; -yy78: - YYDEBUG(78, *YYCURSOR); - ++YYCURSOR; - YYFILL(2); - yych = *YYCURSOR; - YYDEBUG(79, *YYCURSOR); - if (yych <= ' ') { - if (yych <= '\f') { - if (yych == '\t') goto yy78; - goto yy12; - } else { - if (yych <= '\r') goto yy78; - if (yych <= 0x1F) goto yy12; - goto yy78; - } - } else { - if (yych <= '.') { - if (yych <= ',') goto yy12; - if (yych <= '-') goto yy105; - goto yy106; - } else { - if (yych <= '/') goto yy12; - if (yych <= '9') goto yy106; - goto yy12; - } - } -yy80: - YYDEBUG(80, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy81; - if (yych <= '/') goto yy6; - if (yych >= ':') goto yy6; -yy81: - YYDEBUG(81, *YYCURSOR); - yyaccept = 3; - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; - YYDEBUG(82, *YYCURSOR); - if (yych <= '"') { - if (yych <= '\f') { - if (yych <= 0x00) goto yy83; - if (yych <= 0x08) goto yy5; - if (yych >= '\v') goto yy5; - } else { - if (yych <= 0x1F) { - if (yych >= 0x0E) goto yy5; - } else { - if (yych <= ' ') goto yy83; - if (yych <= '!') goto yy5; - goto yy32; - } - } - } else { - if (yych <= '-') { - if (yych <= '#') goto yy83; - if (yych == '\'') goto yy32; - goto yy5; - } else { - if (yych <= '/') { - if (yych <= '.') goto yy81; - goto yy5; - } else { - if (yych <= '9') goto yy81; - if (yych <= ':') goto yy34; - goto yy5; - } - } - } -yy83: - YYDEBUG(83, *YYCURSOR); - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 93 "sapi/phpdbg/phpdbg_lexer.l" - { - char *text = yytext + 2; - while (*++text < '0'); - yylval->num = atoi(text); - return T_REQ_ID; -} -#line 967 "sapi/phpdbg/phpdbg_lexer.c" -yy84: - YYDEBUG(84, *YYCURSOR); - yyaccept = 4; - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; - YYDEBUG(85, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy84; - } - if (yych <= ' ') { - if (yych <= '\n') { - if (yych <= 0x00) goto yy86; - if (yych <= 0x08) goto yy5; - } else { - if (yych == '\r') goto yy86; - if (yych <= 0x1F) goto yy5; - } - } else { - if (yych <= '&') { - if (yych <= '!') goto yy5; - if (yych <= '"') goto yy32; - if (yych >= '$') goto yy5; - } else { - if (yych <= '\'') goto yy32; - if (yych <= '/') goto yy5; - if (yych <= ':') goto yy34; - goto yy5; - } - } -yy86: - YYDEBUG(86, *YYCURSOR); - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 148 "sapi/phpdbg/phpdbg_lexer.l" - { - phpdbg_init_param(yylval, ADDR_PARAM); - yylval->addr = strtoul(yytext, 0, 16); - return T_ADDR; -} -#line 1007 "sapi/phpdbg/phpdbg_lexer.c" -yy87: - YYDEBUG(87, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - if (yych == '\\') goto yy57; - goto yy12; -yy88: - YYDEBUG(88, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'A') goto yy108; - if (yych == 'a') goto yy108; - goto yy6; -yy89: - YYDEBUG(89, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'B') goto yy109; - if (yych == 'b') goto yy109; - goto yy6; -yy90: - YYDEBUG(90, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'S') goto yy110; - if (yych == 's') goto yy110; - goto yy6; -yy91: - YYDEBUG(91, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(92, *YYCURSOR); - if (yych <= '\f') { - if (yych == '\t') goto yy91; - } else { - if (yych <= '\r') goto yy91; - if (yych == ' ') goto yy91; - } - YYDEBUG(93, *YYCURSOR); - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 100 "sapi/phpdbg/phpdbg_lexer.l" - { - YYSETCONDITION(RAW); - phpdbg_init_param(yylval, EMPTY_PARAM); - return T_IF; -} -#line 1056 "sapi/phpdbg/phpdbg_lexer.c" -yy94: - YYDEBUG(94, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(95, *YYCURSOR); - YYCURSOR -= 1; - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 136 "sapi/phpdbg/phpdbg_lexer.l" - { - phpdbg_init_param(yylval, NUMERIC_PARAM); - yylval->num = 0; - return T_FALSY; -} -#line 1069 "sapi/phpdbg/phpdbg_lexer.c" -yy96: - YYDEBUG(96, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(97, *YYCURSOR); - YYCURSOR -= 1; - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 130 "sapi/phpdbg/phpdbg_lexer.l" - { - phpdbg_init_param(yylval, NUMERIC_PARAM); - yylval->num = 1; - return T_TRUTHY; -} -#line 1082 "sapi/phpdbg/phpdbg_lexer.c" -yy98: - YYDEBUG(98, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'E') goto yy65; - if (yych == 'e') goto yy65; - goto yy6; -yy99: - YYDEBUG(99, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'D') goto yy111; - goto yy6; -yy100: - YYDEBUG(100, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'd') goto yy111; - goto yy6; -yy101: - YYDEBUG(101, *YYCURSOR); - ++YYCURSOR; -yy102: - YYDEBUG(102, *YYCURSOR); - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 123 "sapi/phpdbg/phpdbg_lexer.l" - { - phpdbg_init_param(yylval, STR_PARAM); - yylval->str = estrndup(yytext, yyleng); - yylval->len = yyleng; - return T_PROTO; -} -#line 1115 "sapi/phpdbg/phpdbg_lexer.c" -yy103: - YYDEBUG(103, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x00) goto yy102; - if (yych == '\n') goto yy102; - goto yy38; -yy104: - YYDEBUG(104, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x00) goto yy102; - if (yych == '\n') goto yy102; - goto yy48; -yy105: - YYDEBUG(105, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '.') goto yy106; - if (yych <= '/') goto yy12; - if (yych >= ':') goto yy12; -yy106: - YYDEBUG(106, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(107, *YYCURSOR); - if (yych == '.') goto yy106; - if (yych <= '/') goto yy83; - if (yych <= '9') goto yy106; - goto yy83; -yy108: - YYDEBUG(108, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'B') goto yy112; - if (yych == 'b') goto yy112; - goto yy6; -yy109: - YYDEBUG(109, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'L') goto yy113; - if (yych == 'l') goto yy113; - goto yy6; -yy110: - YYDEBUG(110, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'E') goto yy63; - if (yych == 'e') goto yy63; - goto yy6; -yy111: - YYDEBUG(111, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '_') goto yy114; - goto yy6; -yy112: - YYDEBUG(112, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'L') goto yy115; - if (yych == 'l') goto yy115; - goto yy6; -yy113: - YYDEBUG(113, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'E') goto yy116; - if (yych == 'e') goto yy116; - goto yy6; -yy114: - YYDEBUG(114, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy117; - } - goto yy6; -yy115: - YYDEBUG(115, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'E') goto yy120; - if (yych == 'e') goto yy120; - goto yy6; -yy116: - YYDEBUG(116, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'D') goto yy65; - if (yych == 'd') goto yy65; - goto yy6; -yy117: - YYDEBUG(117, *YYCURSOR); - yyaccept = 6; - YYMARKER = ++YYCURSOR; - YYFILL(3); - yych = *YYCURSOR; - YYDEBUG(118, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy117; - } - if (yych <= ' ') { - if (yych <= '\n') { - if (yych <= 0x00) goto yy119; - if (yych <= 0x08) goto yy5; - } else { - if (yych == '\r') goto yy119; - if (yych <= 0x1F) goto yy5; - } - } else { - if (yych <= '&') { - if (yych <= '!') goto yy5; - if (yych <= '"') goto yy32; - if (yych >= '$') goto yy5; - } else { - if (yych <= '\'') goto yy32; - if (yych == ':') goto yy34; - goto yy5; - } - } -yy119: - YYDEBUG(119, *YYCURSOR); - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 154 "sapi/phpdbg/phpdbg_lexer.l" - { - phpdbg_init_param(yylval, OP_PARAM); - yylval->str = estrndup(yytext, yyleng); - yylval->len = yyleng; - return T_OPCODE; -} -#line 1248 "sapi/phpdbg/phpdbg_lexer.c" -yy120: - YYDEBUG(120, *YYCURSOR); - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'D') goto yy63; - if (yych == 'd') goto yy63; - goto yy6; - } -/* *********************************** */ -yyc_PRE_RAW: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 64, 0, 0, 0, 64, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 64, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 128, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - YYDEBUG(121, *YYCURSOR); - YYFILL(2); - yych = *YYCURSOR; - if (yych <= '\r') { - if (yych == '\t') goto yy125; - if (yych >= '\r') goto yy125; - } else { - if (yych <= ' ') { - if (yych >= ' ') goto yy126; - } else { - if (yych == '-') goto yy129; - } - } - YYDEBUG(123, *YYCURSOR); - ++YYCURSOR; -yy124: - YYDEBUG(124, *YYCURSOR); - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 199 "sapi/phpdbg/phpdbg_lexer.l" - { - YYSETCONDITION(RAW); - - YYCURSOR = LEX(text); - goto restart; -} -#line 1319 "sapi/phpdbg/phpdbg_lexer.c" -yy125: - YYDEBUG(125, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 64) { - goto yy126; - } - goto yy124; -yy126: - YYDEBUG(126, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(127, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy126; - } - YYDEBUG(128, *YYCURSOR); - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 175 "sapi/phpdbg/phpdbg_lexer.l" - { - /* ignore whitespace */ - - goto restart; -} -#line 1344 "sapi/phpdbg/phpdbg_lexer.c" -yy129: - YYDEBUG(129, *YYCURSOR); - yych = *(YYMARKER = ++YYCURSOR); - if (yych != 'r') goto yy124; -yy130: - YYDEBUG(130, *YYCURSOR); - ++YYCURSOR; - YYFILL(2); - yych = *YYCURSOR; - YYDEBUG(131, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy134; - } - if (yych <= '\r') { - if (yych == '\t') goto yy130; - if (yych >= '\r') goto yy130; - } else { - if (yych <= ' ') { - if (yych >= ' ') goto yy130; - } else { - if (yych == '-') goto yy133; - } - } -yy132: - YYDEBUG(132, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy124; -yy133: - YYDEBUG(133, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy134; - } - goto yy132; -yy134: - YYDEBUG(134, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(135, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy134; - } - YYDEBUG(136, *YYCURSOR); - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 93 "sapi/phpdbg/phpdbg_lexer.l" - { - char *text = yytext + 2; - while (*++text < '0'); - yylval->num = atoi(text); - return T_REQ_ID; -} -#line 1397 "sapi/phpdbg/phpdbg_lexer.c" - } -/* *********************************** */ -yyc_RAW: - { - static const unsigned char yybm[] = { - 0, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 0, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 64, 224, 232, 232, 232, 32, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 16, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - }; - YYDEBUG(137, *YYCURSOR); - YYFILL(1); - yych = *YYCURSOR; - if (yybm[0+yych] & 8) { - goto yy141; - } - if (yych <= '\n') goto yy139; - if (yych <= '"') goto yy144; - if (yych <= '#') goto yy146; - if (yych <= '\'') goto yy148; - goto yy149; -yy139: - YYDEBUG(139, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(140, *YYCURSOR); - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 89 "sapi/phpdbg/phpdbg_lexer.l" - { - return 0; -} -#line 1456 "sapi/phpdbg/phpdbg_lexer.c" -yy141: - YYDEBUG(141, *YYCURSOR); - YYMARKER = ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(142, *YYCURSOR); - if (yybm[0+yych] & 8) { - goto yy141; - } - if (yych <= '\n') goto yy143; - if (yych <= '"') goto yy144; - if (yych <= '#') goto yy143; - if (yych <= '\'') goto yy148; - goto yy149; -yy143: - YYDEBUG(143, *YYCURSOR); - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 168 "sapi/phpdbg/phpdbg_lexer.l" - { - phpdbg_init_param(yylval, STR_PARAM); - yylval->str = estrdup(yytext); - yylval->len = yyleng; - return T_INPUT; -} -#line 1481 "sapi/phpdbg/phpdbg_lexer.c" -yy144: - YYDEBUG(144, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - if (yybm[0+yych] & 32) { - goto yy151; - } - if (yych >= '#') goto yy153; -yy145: - YYDEBUG(145, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy143; -yy146: - YYDEBUG(146, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(147, *YYCURSOR); - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 110 "sapi/phpdbg/phpdbg_lexer.l" - { - YYSETCONDITION(INITIAL); - return T_SEPARATOR; -} -#line 1505 "sapi/phpdbg/phpdbg_lexer.c" -yy148: - YYDEBUG(148, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - if (yybm[0+yych] & 64) { - goto yy155; - } - if (yych <= '\'') goto yy145; - goto yy157; -yy149: - YYDEBUG(149, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(150, *YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy149; - } - if (yych <= '!') { - if (yych <= 0x00) goto yy143; - if (yych == '\n') goto yy143; - goto yy141; - } else { - if (yych <= '"') goto yy159; - if (yych == '\'') goto yy160; - goto yy141; - } -yy151: - YYDEBUG(151, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(152, *YYCURSOR); - if (yybm[0+yych] & 32) { - goto yy151; - } - if (yych <= '\n') goto yy145; - if (yych <= '"') goto yy141; -yy153: - YYDEBUG(153, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(154, *YYCURSOR); - if (yybm[0+yych] & 32) { - goto yy151; - } - if (yych <= '\n') goto yy145; - if (yych <= '"') goto yy161; - goto yy153; -yy155: - YYDEBUG(155, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(156, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy155; - } - if (yych <= '\n') goto yy145; - if (yych <= '\'') goto yy141; -yy157: - YYDEBUG(157, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(158, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy155; - } - if (yych <= '\n') goto yy145; - if (yych <= '\'') goto yy163; - goto yy157; -yy159: - YYDEBUG(159, *YYCURSOR); - YYMARKER = ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - if (yych <= '"') { - if (yych <= '\t') { - if (yych <= 0x00) goto yy143; - goto yy161; - } else { - if (yych <= '\n') goto yy143; - if (yych <= '!') goto yy161; - goto yy144; - } - } else { - if (yych <= '\'') { - if (yych <= '#') goto yy151; - if (yych <= '&') goto yy161; - goto yy165; - } else { - if (yych == '\\') goto yy166; - goto yy161; - } - } -yy160: - YYDEBUG(160, *YYCURSOR); - YYMARKER = ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - if (yych <= '"') { - if (yych <= '\t') { - if (yych <= 0x00) goto yy143; - goto yy163; - } else { - if (yych <= '\n') goto yy143; - if (yych <= '!') goto yy163; - goto yy168; - } - } else { - if (yych <= '\'') { - if (yych <= '#') goto yy155; - if (yych <= '&') goto yy163; - goto yy148; - } else { - if (yych == '\\') goto yy169; - goto yy163; - } - } -yy161: - YYDEBUG(161, *YYCURSOR); - YYMARKER = ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(162, *YYCURSOR); - if (yych <= '"') { - if (yych <= '\t') { - if (yych <= 0x00) goto yy143; - goto yy161; - } else { - if (yych <= '\n') goto yy143; - if (yych <= '!') goto yy161; - goto yy159; - } - } else { - if (yych <= '\'') { - if (yych <= '#') goto yy151; - if (yych <= '&') goto yy161; - goto yy165; - } else { - if (yych == '\\') goto yy166; - goto yy161; - } - } -yy163: - YYDEBUG(163, *YYCURSOR); - YYMARKER = ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(164, *YYCURSOR); - if (yych <= '"') { - if (yych <= '\t') { - if (yych <= 0x00) goto yy143; - goto yy163; - } else { - if (yych <= '\n') goto yy143; - if (yych <= '!') goto yy163; - goto yy168; - } - } else { - if (yych <= '\'') { - if (yych <= '#') goto yy155; - if (yych <= '&') goto yy163; - goto yy160; - } else { - if (yych == '\\') goto yy169; - goto yy163; - } - } -yy165: - YYDEBUG(165, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy171; - } - if (yych <= '\n') goto yy145; - if (yych <= '"') goto yy163; - if (yych <= '\'') goto yy151; - goto yy173; -yy166: - YYDEBUG(166, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(167, *YYCURSOR); - if (yych <= '&') { - if (yych <= 0x00) goto yy143; - if (yych == '\n') goto yy143; - goto yy161; - } else { - if (yych <= '\'') goto yy175; - if (yych == '\\') goto yy166; - goto yy161; - } -yy168: - YYDEBUG(168, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy171; - } - if (yych <= '\n') goto yy145; - if (yych <= '"') goto yy155; - if (yych <= '\'') goto yy161; - goto yy173; -yy169: - YYDEBUG(169, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(170, *YYCURSOR); - if (yych <= '!') { - if (yych <= 0x00) goto yy143; - if (yych == '\n') goto yy143; - goto yy163; - } else { - if (yych <= '"') goto yy176; - if (yych == '\\') goto yy169; - goto yy163; - } -yy171: - YYDEBUG(171, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(172, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy171; - } - if (yych <= '\n') goto yy145; - if (yych <= '"') goto yy163; - if (yych <= '\'') goto yy161; -yy173: - YYDEBUG(173, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(174, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy171; - } - if (yych <= '\n') goto yy145; - if (yych <= '\'') goto yy177; - goto yy173; -yy175: - YYDEBUG(175, *YYCURSOR); - YYMARKER = ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - if (yych <= '"') { - if (yych <= '\t') { - if (yych <= 0x00) goto yy143; - goto yy177; - } else { - if (yych <= '\n') goto yy143; - if (yych <= '!') goto yy177; - } - } else { - if (yych <= '\'') { - if (yych <= '#') goto yy171; - if (yych <= '&') goto yy177; - goto yy165; - } else { - if (yych == '\\') goto yy179; - goto yy177; - } - } -yy176: - YYDEBUG(176, *YYCURSOR); - YYMARKER = ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - if (yych <= '"') { - if (yych <= '\t') { - if (yych <= 0x00) goto yy143; - } else { - if (yych <= '\n') goto yy143; - if (yych >= '"') goto yy168; - } - } else { - if (yych <= '\'') { - if (yych <= '#') goto yy171; - if (yych >= '\'') goto yy175; - } else { - if (yych == '\\') goto yy179; - } - } -yy177: - YYDEBUG(177, *YYCURSOR); - YYMARKER = ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(178, *YYCURSOR); - if (yych <= '"') { - if (yych <= '\t') { - if (yych <= 0x00) goto yy143; - goto yy177; - } else { - if (yych <= '\n') goto yy143; - if (yych <= '!') goto yy177; - goto yy176; - } - } else { - if (yych <= '\'') { - if (yych <= '#') goto yy171; - if (yych <= '&') goto yy177; - goto yy175; - } else { - if (yych != '\\') goto yy177; - } - } -yy179: - YYDEBUG(179, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(180, *YYCURSOR); - if (yych <= '\n') { - if (yych <= 0x00) goto yy143; - if (yych <= '\t') goto yy177; - goto yy143; - } else { - if (yych == '\\') goto yy179; - goto yy177; - } - } -/* *********************************** */ -yyc_INITIAL: - { - static const unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 128, 0, 0, 0, 128, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - YYDEBUG(181, *YYCURSOR); - YYFILL(4); - yych = *YYCURSOR; - if (yych <= 'E') { - if (yych <= '\r') { - if (yych == '\t') goto yy185; - if (yych >= '\r') goto yy185; - } else { - if (yych == ' ') goto yy186; - if (yych >= 'E') goto yy189; - } - } else { - if (yych <= 'd') { - if (yych <= 'Q') goto yy183; - if (yych <= 'R') goto yy190; - if (yych <= 'S') goto yy191; - } else { - if (yych <= 'q') { - if (yych <= 'e') goto yy189; - } else { - if (yych <= 'r') goto yy192; - if (yych <= 's') goto yy191; - } - } - } -yy183: - YYDEBUG(183, *YYCURSOR); - ++YYCURSOR; -yy184: - YYDEBUG(184, *YYCURSOR); - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 206 "sapi/phpdbg/phpdbg_lexer.l" - { - YYSETCONDITION(NORMAL); - - YYCURSOR = LEX(text); - goto restart; -} -#line 1913 "sapi/phpdbg/phpdbg_lexer.c" -yy185: - YYDEBUG(185, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy186; - } - goto yy184; -yy186: - YYDEBUG(186, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(187, *YYCURSOR); - if (yybm[0+yych] & 128) { - goto yy186; - } - YYDEBUG(188, *YYCURSOR); - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 175 "sapi/phpdbg/phpdbg_lexer.l" - { - /* ignore whitespace */ - - goto restart; -} -#line 1938 "sapi/phpdbg/phpdbg_lexer.c" -yy189: - YYDEBUG(189, *YYCURSOR); - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'V') goto yy193; - if (yych == 'v') goto yy193; - goto yy184; -yy190: - YYDEBUG(190, *YYCURSOR); - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'U') goto yy195; - if (yych == 'u') goto yy195; - goto yy184; -yy191: - YYDEBUG(191, *YYCURSOR); - yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'H') goto yy196; - if (yych == 'h') goto yy196; - goto yy184; -yy192: - YYDEBUG(192, *YYCURSOR); - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 0x1F) { - if (yych <= '\t') { - if (yych <= 0x08) goto yy184; - goto yy197; - } else { - if (yych == '\r') goto yy197; - goto yy184; - } - } else { - if (yych <= 'U') { - if (yych <= ' ') goto yy197; - if (yych <= 'T') goto yy184; - goto yy195; - } else { - if (yych == 'u') goto yy195; - goto yy184; - } - } -yy193: - YYDEBUG(193, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '\f') { - if (yych == '\t') goto yy200; - } else { - if (yych <= '\r') goto yy200; - if (yych == ' ') goto yy200; - } -yy194: - YYDEBUG(194, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy184; -yy195: - YYDEBUG(195, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy203; - if (yych == 'n') goto yy203; - goto yy194; -yy196: - YYDEBUG(196, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '\f') { - if (yych == '\t') goto yy204; - goto yy194; - } else { - if (yych <= '\r') goto yy204; - if (yych == ' ') goto yy204; - goto yy194; - } -yy197: - YYDEBUG(197, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(198, *YYCURSOR); - if (yych <= '\f') { - if (yych == '\t') goto yy197; - } else { - if (yych <= '\r') goto yy197; - if (yych == ' ') goto yy197; - } - YYDEBUG(199, *YYCURSOR); - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 193 "sapi/phpdbg/phpdbg_lexer.l" - { - YYSETCONDITION(PRE_RAW); - phpdbg_init_param(yylval, EMPTY_PARAM); - return T_RUN; -} -#line 2028 "sapi/phpdbg/phpdbg_lexer.c" -yy200: - YYDEBUG(200, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(201, *YYCURSOR); - if (yych <= '\f') { - if (yych == '\t') goto yy200; - } else { - if (yych <= '\r') goto yy200; - if (yych == ' ') goto yy200; - } - YYDEBUG(202, *YYCURSOR); - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 181 "sapi/phpdbg/phpdbg_lexer.l" - { - YYSETCONDITION(PRE_RAW); - phpdbg_init_param(yylval, EMPTY_PARAM); - return T_EVAL; -} -#line 2049 "sapi/phpdbg/phpdbg_lexer.c" -yy203: - YYDEBUG(203, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '\f') { - if (yych == '\t') goto yy197; - goto yy194; - } else { - if (yych <= '\r') goto yy197; - if (yych == ' ') goto yy197; - goto yy194; - } -yy204: - YYDEBUG(204, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; - YYDEBUG(205, *YYCURSOR); - if (yych <= '\f') { - if (yych == '\t') goto yy204; - } else { - if (yych <= '\r') goto yy204; - if (yych == ' ') goto yy204; - } - YYDEBUG(206, *YYCURSOR); - yyleng = (size_t) YYCURSOR - (size_t) yytext; -#line 187 "sapi/phpdbg/phpdbg_lexer.l" - { - YYSETCONDITION(PRE_RAW); - phpdbg_init_param(yylval, EMPTY_PARAM); - return T_SHELL; -} -#line 2081 "sapi/phpdbg/phpdbg_lexer.c" - } -} -#line 213 "sapi/phpdbg/phpdbg_lexer.l" - -} |