]> granicus.if.org Git - php/commitdiff
Use zend_string* instead of char* for opened_patch handling. Avoid reallocations...
authorDmitry Stogov <dmitry@zend.com>
Tue, 3 Mar 2015 23:05:28 +0000 (02:05 +0300)
committerDmitry Stogov <dmitry@zend.com>
Tue, 3 Mar 2015 23:05:28 +0000 (02:05 +0300)
50 files changed:
Zend/zend.c
Zend/zend.h
Zend/zend_language_scanner.c
Zend/zend_language_scanner.l
Zend/zend_language_scanner_defs.h
Zend/zend_stream.c
Zend/zend_stream.h
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
ext/bz2/bz2.c
ext/bz2/php_bz2.h
ext/dba/dba.c
ext/gd/gd.c
ext/opcache/ZendAccelerator.c
ext/opcache/zend_accelerator_module.c
ext/phar/dirstream.c
ext/phar/dirstream.h
ext/phar/func_interceptors.c
ext/phar/phar.c
ext/phar/phar_internal.h
ext/phar/phar_object.c
ext/phar/stream.c
ext/phar/stream.h
ext/phar/util.c
ext/spl/php_spl.c
ext/standard/file.c
ext/standard/ftp_fopen_wrapper.c
ext/standard/http_fopen_wrapper.c
ext/standard/php_fopen_wrapper.c
ext/standard/php_fopen_wrappers.h
ext/standard/streamsfuncs.c
ext/zip/php_zip.h
ext/zip/zip_stream.c
ext/zlib/php_zlib.h
ext/zlib/zlib_fopen_wrapper.c
main/fopen_wrappers.c
main/fopen_wrappers.h
main/main.c
main/php_ini.c
main/php_open_temporary_file.c
main/php_open_temporary_file.h
main/php_streams.h
main/rfc1867.c
main/streams/cast.c
main/streams/glob_wrapper.c
main/streams/memory.c
main/streams/php_stream_plain_wrapper.h
main/streams/plain_wrapper.c
main/streams/streams.c
main/streams/userspace.c

index 397fe879baecef5da1dba0e017a23676925691e9..50857bc688ce8967c720b3882dcea6ae169b2228 100644 (file)
@@ -48,7 +48,7 @@
 ZEND_API zend_class_entry *zend_standard_class_def = NULL;
 ZEND_API size_t (*zend_printf)(const char *format, ...);
 ZEND_API zend_write_func_t zend_write;
-ZEND_API FILE *(*zend_fopen)(const char *filename, char **opened_path);
+ZEND_API FILE *(*zend_fopen)(const char *filename, zend_string **opened_path);
 ZEND_API int (*zend_stream_open_function)(const char *filename, zend_file_handle *handle);
 ZEND_API void (*zend_block_interruptions)(void);
 ZEND_API void (*zend_unblock_interruptions)(void);
@@ -57,7 +57,7 @@ ZEND_API void (*zend_error_cb)(int type, const char *error_filename, const uint
 size_t (*zend_vspprintf)(char **pbuf, size_t max_len, const char *format, va_list ap);
 zend_string *(*zend_vstrpprintf)(size_t max_len, const char *format, va_list ap);
 ZEND_API char *(*zend_getenv)(char *name, size_t name_len);
-ZEND_API char *(*zend_resolve_path)(const char *filename, int filename_len);
+ZEND_API zend_string *(*zend_resolve_path)(const char *filename, int filename_len);
 
 void (*zend_on_timeout)(int seconds);
 
@@ -374,10 +374,10 @@ ZEND_API void zend_print_zval_r_ex(zend_write_func_t write_func, zval *expr, int
 }
 /* }}} */
 
-static FILE *zend_fopen_wrapper(const char *filename, char **opened_path) /* {{{ */
+static FILE *zend_fopen_wrapper(const char *filename, zend_string **opened_path) /* {{{ */
 {
        if (opened_path) {
-               *opened_path = estrdup(filename);
+               *opened_path = zend_string_init(filename, strlen(filename), 0);
        }
        return fopen(filename, "rb");
 }
@@ -1303,7 +1303,7 @@ ZEND_API int zend_execute_scripts(int type, zval *retval, int file_count, ...) /
 
                op_array = zend_compile_file(file_handle, type);
                if (file_handle->opened_path) {
-                       zend_hash_str_add_empty_element(&EG(included_files), file_handle->opened_path, strlen(file_handle->opened_path));
+                       zend_hash_add_empty_element(&EG(included_files), file_handle->opened_path);
                }
                zend_destroy_file_handle(file_handle);
                if (op_array) {
index d7b5275c0ab827edeab257ede9bafec24d805d09..4cf73225b74e925e2a345d6e8265d6408f25244b 100644 (file)
@@ -193,7 +193,7 @@ typedef struct _zend_utility_functions {
        void (*error_function)(int type, const char *error_filename, const uint error_lineno, const char *format, va_list args) ZEND_ATTRIBUTE_PTR_FORMAT(printf, 4, 0);
        size_t (*printf_function)(const char *format, ...) ZEND_ATTRIBUTE_PTR_FORMAT(printf, 1, 2);
        size_t (*write_function)(const char *str, size_t str_length);
-       FILE *(*fopen_function)(const char *filename, char **opened_path);
+       FILE *(*fopen_function)(const char *filename, zend_string **opened_path);
        void (*message_handler)(zend_long message, const void *data);
        void (*block_interruptions)(void);
        void (*unblock_interruptions)(void);
@@ -204,7 +204,7 @@ typedef struct _zend_utility_functions {
        size_t (*vspprintf_function)(char **pbuf, size_t max_len, const char *format, va_list ap);
        zend_string *(*vstrpprintf_function)(size_t max_len, const char *format, va_list ap);
        char *(*getenv_function)(char *name, size_t name_len);
-       char *(*resolve_path_function)(const char *filename, int filename_len);
+       zend_string *(*resolve_path_function)(const char *filename, int filename_len);
 } zend_utility_functions;
 
 typedef struct _zend_utility_values {
@@ -272,7 +272,7 @@ END_EXTERN_C()
 BEGIN_EXTERN_C()
 extern ZEND_API size_t (*zend_printf)(const char *format, ...) ZEND_ATTRIBUTE_PTR_FORMAT(printf, 1, 2);
 extern ZEND_API zend_write_func_t zend_write;
-extern ZEND_API FILE *(*zend_fopen)(const char *filename, char **opened_path);
+extern ZEND_API FILE *(*zend_fopen)(const char *filename, zend_string **opened_path);
 extern ZEND_API void (*zend_block_interruptions)(void);
 extern ZEND_API void (*zend_unblock_interruptions)(void);
 extern ZEND_API void (*zend_ticks_function)(int ticks);
@@ -282,7 +282,7 @@ extern ZEND_API int (*zend_stream_open_function)(const char *filename, zend_file
 extern size_t (*zend_vspprintf)(char **pbuf, size_t max_len, const char *format, va_list ap);
 extern zend_string *(*zend_vstrpprintf)(size_t max_len, const char *format, va_list ap);
 extern ZEND_API char *(*zend_getenv)(char *name, size_t name_len);
-extern ZEND_API char *(*zend_resolve_path)(const char *filename, int filename_len);
+extern ZEND_API zend_string *(*zend_resolve_path)(const char *filename, int filename_len);
 
 ZEND_API void zend_error(int type, const char *format, ...) ZEND_ATTRIBUTE_FORMAT(printf, 2, 3);
 
index 02cbf584ba01dbba1c83adb5eba3978b77d67e7f..f3638c6b7b906b1719a8e9bd2557219ba881ec7e 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.7.5 */
+/* Generated by re2c 0.13.5 */
 #line 1 "Zend/zend_language_scanner.l"
 /*
    +----------------------------------------------------------------------+
@@ -484,7 +484,6 @@ ZEND_API int zend_multibyte_set_filter(const zend_encoding *onetime_encoding)
 
 ZEND_API int open_file_for_scanning(zend_file_handle *file_handle)
 {
-       const char *file_path = NULL;
        char *buf;
        size_t size, offset = 0;
        zend_string *compiled_filename;
@@ -538,12 +537,11 @@ ZEND_API int open_file_for_scanning(zend_file_handle *file_handle)
        BEGIN(INITIAL);
 
        if (file_handle->opened_path) {
-               file_path = file_handle->opened_path;
+               compiled_filename = zend_string_copy(file_handle->opened_path);
        } else {
-               file_path = file_handle->filename;
+               compiled_filename = zend_string_init(file_handle->filename, strlen(file_handle->filename), 0);
        }
 
-       compiled_filename = zend_string_init(file_path, strlen(file_path), 0);
        zend_set_compiled_filename(compiled_filename);
        zend_string_release(compiled_filename);
 
@@ -625,7 +623,7 @@ zend_op_array *compile_filename(int type, zval *filename)
        zend_file_handle file_handle;
        zval tmp;
        zend_op_array *retval;
-       char *opened_path = NULL;
+       zend_string *opened_path = NULL;
 
        if (Z_TYPE_P(filename) != IS_STRING) {
                tmp = *filename;
@@ -642,13 +640,13 @@ zend_op_array *compile_filename(int type, zval *filename)
        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 = estrndup(Z_STRVAL_P(filename), Z_STRLEN_P(filename));
+                       file_handle.opened_path = opened_path = zend_string_copy(Z_STR_P(filename));
                }
 
-               zend_hash_str_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path));
+               zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path);
 
                if (opened_path) {
-                       efree(opened_path);
+                       zend_string_release(opened_path);
                }
        }
        zend_destroy_file_handle(&file_handle);
@@ -1085,7 +1083,7 @@ restart:
        SCNG(yy_text) = YYCURSOR;
 
 
-#line 1089 "Zend/zend_language_scanner.c"
+#line 1087 "Zend/zend_language_scanner.c"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
@@ -1128,17 +1126,18 @@ restart:
        }
 /* *********************************** */
 yyc_INITIAL:
-       YYDEBUG(1, *YYCURSOR);
+
+       YYDEBUG(0, *YYCURSOR);
        YYFILL(7);
        yych = *YYCURSOR;
-       if (yych != '<') goto yy5;
-       YYDEBUG(3, *YYCURSOR);
+       if (yych != '<') goto yy4;
+       YYDEBUG(2, *YYCURSOR);
        ++YYCURSOR;
-       if ((yych = *YYCURSOR) == '?') goto yy6;
-yy4:
-       YYDEBUG(4, *YYCURSOR);
+       if ((yych = *YYCURSOR) == '?') goto yy5;
+yy3:
+       YYDEBUG(3, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 1770 "Zend/zend_language_scanner.l"
+#line 1768 "Zend/zend_language_scanner.l"
        {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -1183,25 +1182,25 @@ inline_char_handler:
        HANDLE_NEWLINES(yytext, yyleng);
        return T_INLINE_HTML;
 }
-#line 1187 "Zend/zend_language_scanner.c"
+#line 1186 "Zend/zend_language_scanner.c"
+yy4:
+       YYDEBUG(4, *YYCURSOR);
+       yych = *++YYCURSOR;
+       goto yy3;
 yy5:
        YYDEBUG(5, *YYCURSOR);
-       yych = *++YYCURSOR;
-       goto yy4;
-yy6:
-       YYDEBUG(6, *YYCURSOR);
        yyaccept = 0;
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'O') {
-               if (yych == '=') goto yy8;
+               if (yych == '=') goto yy7;
        } else {
-               if (yych <= 'P') goto yy10;
-               if (yych == 'p') goto yy10;
+               if (yych <= 'P') goto yy9;
+               if (yych == 'p') goto yy9;
        }
-yy7:
-       YYDEBUG(7, *YYCURSOR);
+yy6:
+       YYDEBUG(6, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 1761 "Zend/zend_language_scanner.l"
+#line 1759 "Zend/zend_language_scanner.l"
        {
        if (CG(short_tags)) {
                BEGIN(ST_IN_SCRIPTING);
@@ -1210,60 +1209,60 @@ yy7:
                goto inline_char_handler;
        }
 }
-#line 1214 "Zend/zend_language_scanner.c"
-yy8:
-       YYDEBUG(8, *YYCURSOR);
+#line 1213 "Zend/zend_language_scanner.c"
+yy7:
+       YYDEBUG(7, *YYCURSOR);
        ++YYCURSOR;
-       YYDEBUG(9, *YYCURSOR);
+       YYDEBUG(8, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 1748 "Zend/zend_language_scanner.l"
+#line 1746 "Zend/zend_language_scanner.l"
        {
        BEGIN(ST_IN_SCRIPTING);
        return T_OPEN_TAG_WITH_ECHO;
 }
-#line 1225 "Zend/zend_language_scanner.c"
+#line 1224 "Zend/zend_language_scanner.c"
+yy9:
+       YYDEBUG(9, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if (yych == 'H') goto yy11;
+       if (yych == 'h') goto yy11;
 yy10:
        YYDEBUG(10, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if (yych == 'H') goto yy12;
-       if (yych == 'h') goto yy12;
+       YYCURSOR = YYMARKER;
+       goto yy6;
 yy11:
        YYDEBUG(11, *YYCURSOR);
-       YYCURSOR = YYMARKER;
-       goto yy7;
+       yych = *++YYCURSOR;
+       if (yych == 'P') goto yy12;
+       if (yych != 'p') goto yy10;
 yy12:
        YYDEBUG(12, *YYCURSOR);
        yych = *++YYCURSOR;
-       if (yych == 'P') goto yy13;
-       if (yych != 'p') goto yy11;
-yy13:
-       YYDEBUG(13, *YYCURSOR);
-       yych = *++YYCURSOR;
        if (yych <= '\f') {
-               if (yych <= 0x08) goto yy11;
-               if (yych >= '\v') goto yy11;
+               if (yych <= 0x08) goto yy10;
+               if (yych >= '\v') goto yy10;
        } else {
-               if (yych <= '\r') goto yy16;
-               if (yych != ' ') goto yy11;
+               if (yych <= '\r') goto yy15;
+               if (yych != ' ') goto yy10;
        }
+yy13:
+       YYDEBUG(13, *YYCURSOR);
+       ++YYCURSOR;
 yy14:
        YYDEBUG(14, *YYCURSOR);
-       ++YYCURSOR;
-yy15:
-       YYDEBUG(15, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 1754 "Zend/zend_language_scanner.l"
+#line 1752 "Zend/zend_language_scanner.l"
        {
        HANDLE_NEWLINE(yytext[yyleng-1]);
        BEGIN(ST_IN_SCRIPTING);
        return T_OPEN_TAG;
 }
-#line 1262 "Zend/zend_language_scanner.c"
-yy16:
-       YYDEBUG(16, *YYCURSOR);
+#line 1261 "Zend/zend_language_scanner.c"
+yy15:
+       YYDEBUG(15, *YYCURSOR);
        ++YYCURSOR;
-       if ((yych = *YYCURSOR) == '\n') goto yy14;
-       goto yy15;
+       if ((yych = *YYCURSOR) == '\n') goto yy13;
+       goto yy14;
 /* *********************************** */
 yyc_ST_BACKQUOTE:
        {
@@ -1301,34 +1300,34 @@ yyc_ST_BACKQUOTE:
                        128, 128, 128, 128, 128, 128, 128, 128, 
                        128, 128, 128, 128, 128, 128, 128, 128, 
                };
-               YYDEBUG(17, *YYCURSOR);
+               YYDEBUG(16, *YYCURSOR);
                YYFILL(2);
                yych = *YYCURSOR;
                if (yych <= '_') {
-                       if (yych != '$') goto yy24;
+                       if (yych != '$') goto yy23;
                } else {
-                       if (yych <= '`') goto yy22;
-                       if (yych == '{') goto yy21;
-                       goto yy24;
+                       if (yych <= '`') goto yy21;
+                       if (yych == '{') goto yy20;
+                       goto yy23;
                }
-               YYDEBUG(19, *YYCURSOR);
+               YYDEBUG(18, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '_') {
-                       if (yych <= '@') goto yy20;
-                       if (yych <= 'Z') goto yy27;
-                       if (yych >= '_') goto yy27;
+                       if (yych <= '@') goto yy19;
+                       if (yych <= 'Z') goto yy26;
+                       if (yych >= '_') goto yy26;
                } else {
                        if (yych <= 'z') {
-                               if (yych >= 'a') goto yy27;
+                               if (yych >= 'a') goto yy26;
                        } else {
-                               if (yych <= '{') goto yy30;
-                               if (yych >= 0x7F) goto yy27;
+                               if (yych <= '{') goto yy29;
+                               if (yych >= 0x7F) goto yy26;
                        }
                }
-yy20:
-               YYDEBUG(20, *YYCURSOR);
+yy19:
+               YYDEBUG(19, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2180 "Zend/zend_language_scanner.l"
+#line 2178 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -1369,119 +1368,118 @@ yy20:
        zend_scan_escape_string(zendlval, yytext, yyleng, '`');
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 1373 "Zend/zend_language_scanner.c"
+#line 1372 "Zend/zend_language_scanner.c"
+yy20:
+               YYDEBUG(20, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '$') goto yy24;
+               goto yy19;
 yy21:
                YYDEBUG(21, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '$') goto yy25;
-               goto yy20;
-yy22:
-               YYDEBUG(22, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(23, *YYCURSOR);
+               YYDEBUG(22, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2124 "Zend/zend_language_scanner.l"
+#line 2122 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        return '`';
 }
-#line 1389 "Zend/zend_language_scanner.c"
+#line 1388 "Zend/zend_language_scanner.c"
+yy23:
+               YYDEBUG(23, *YYCURSOR);
+               yych = *++YYCURSOR;
+               goto yy19;
 yy24:
                YYDEBUG(24, *YYCURSOR);
-               yych = *++YYCURSOR;
-               goto yy20;
-yy25:
-               YYDEBUG(25, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(26, *YYCURSOR);
+               YYDEBUG(25, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2111 "Zend/zend_language_scanner.l"
+#line 2109 "Zend/zend_language_scanner.l"
                {
        Z_LVAL_P(zendlval) = (zend_long) '{';
        yy_push_state(ST_IN_SCRIPTING);
        yyless(1);
        return T_CURLY_OPEN;
 }
-#line 1406 "Zend/zend_language_scanner.c"
-yy27:
-               YYDEBUG(27, *YYCURSOR);
+#line 1405 "Zend/zend_language_scanner.c"
+yy26:
+               YYDEBUG(26, *YYCURSOR);
                yyaccept = 0;
                YYMARKER = ++YYCURSOR;
                YYFILL(3);
                yych = *YYCURSOR;
-               YYDEBUG(28, *YYCURSOR);
+               YYDEBUG(27, *YYCURSOR);
                if (yybm[0+yych] & 128) {
-                       goto yy27;
+                       goto yy26;
                }
-               if (yych == '-') goto yy32;
-               if (yych <= '@') goto yy29;
-               if (yych <= '[') goto yy34;
-yy29:
-               YYDEBUG(29, *YYCURSOR);
+               if (yych == '-') goto yy31;
+               if (yych == '[') goto yy33;
+yy28:
+               YYDEBUG(28, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1835 "Zend/zend_language_scanner.l"
+#line 1833 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1428 "Zend/zend_language_scanner.c"
-yy30:
-               YYDEBUG(30, *YYCURSOR);
+#line 1426 "Zend/zend_language_scanner.c"
+yy29:
+               YYDEBUG(29, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(31, *YYCURSOR);
+               YYDEBUG(30, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1559 "Zend/zend_language_scanner.l"
+#line 1557 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_VARNAME);
        return T_DOLLAR_OPEN_CURLY_BRACES;
 }
-#line 1439 "Zend/zend_language_scanner.c"
+#line 1437 "Zend/zend_language_scanner.c"
+yy31:
+               YYDEBUG(31, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '>') goto yy35;
 yy32:
                YYDEBUG(32, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '>') goto yy36;
+               YYCURSOR = YYMARKER;
+               goto yy28;
 yy33:
                YYDEBUG(33, *YYCURSOR);
-               YYCURSOR = YYMARKER;
-               goto yy29;
-yy34:
-               YYDEBUG(34, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(35, *YYCURSOR);
+               YYDEBUG(34, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1828 "Zend/zend_language_scanner.l"
+#line 1826 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1460 "Zend/zend_language_scanner.c"
-yy36:
-               YYDEBUG(36, *YYCURSOR);
+#line 1458 "Zend/zend_language_scanner.c"
+yy35:
+               YYDEBUG(35, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= '_') {
-                       if (yych <= '@') goto yy33;
-                       if (yych <= 'Z') goto yy37;
-                       if (yych <= '^') goto yy33;
+                       if (yych <= '@') goto yy32;
+                       if (yych <= 'Z') goto yy36;
+                       if (yych <= '^') goto yy32;
                } else {
-                       if (yych <= '`') goto yy33;
-                       if (yych <= 'z') goto yy37;
-                       if (yych <= '~') goto yy33;
+                       if (yych <= '`') goto yy32;
+                       if (yych <= 'z') goto yy36;
+                       if (yych <= '~') goto yy32;
                }
-yy37:
-               YYDEBUG(37, *YYCURSOR);
+yy36:
+               YYDEBUG(36, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(38, *YYCURSOR);
+               YYDEBUG(37, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1819 "Zend/zend_language_scanner.l"
+#line 1817 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1485 "Zend/zend_language_scanner.c"
+#line 1483 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_DOUBLE_QUOTES:
@@ -1520,36 +1518,36 @@ yyc_ST_DOUBLE_QUOTES:
                        128, 128, 128, 128, 128, 128, 128, 128, 
                        128, 128, 128, 128, 128, 128, 128, 128, 
                };
-               YYDEBUG(39, *YYCURSOR);
+               YYDEBUG(38, *YYCURSOR);
                YYFILL(2);
                yych = *YYCURSOR;
                if (yych <= '#') {
-                       if (yych == '"') goto yy44;
-                       goto yy46;
+                       if (yych == '"') goto yy43;
+                       goto yy45;
                } else {
-                       if (yych <= '$') goto yy41;
-                       if (yych == '{') goto yy43;
-                       goto yy46;
+                       if (yych <= '$') goto yy40;
+                       if (yych == '{') goto yy42;
+                       goto yy45;
                }
-yy41:
-               YYDEBUG(41, *YYCURSOR);
+yy40:
+               YYDEBUG(40, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '_') {
-                       if (yych <= '@') goto yy42;
-                       if (yych <= 'Z') goto yy49;
-                       if (yych >= '_') goto yy49;
+                       if (yych <= '@') goto yy41;
+                       if (yych <= 'Z') goto yy48;
+                       if (yych >= '_') goto yy48;
                } else {
                        if (yych <= 'z') {
-                               if (yych >= 'a') goto yy49;
+                               if (yych >= 'a') goto yy48;
                        } else {
-                               if (yych <= '{') goto yy52;
-                               if (yych >= 0x7F) goto yy49;
+                               if (yych <= '{') goto yy51;
+                               if (yych >= 0x7F) goto yy48;
                        }
                }
-yy42:
-               YYDEBUG(42, *YYCURSOR);
+yy41:
+               YYDEBUG(41, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2130 "Zend/zend_language_scanner.l"
+#line 2128 "Zend/zend_language_scanner.l"
                {
        if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) {
                YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1;
@@ -1598,130 +1596,129 @@ double_quotes_scan_done:
        zend_scan_escape_string(zendlval, yytext, yyleng, '"');
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 1602 "Zend/zend_language_scanner.c"
+#line 1600 "Zend/zend_language_scanner.c"
+yy42:
+               YYDEBUG(42, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '$') goto yy46;
+               goto yy41;
 yy43:
                YYDEBUG(43, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '$') goto yy47;
-               goto yy42;
-yy44:
-               YYDEBUG(44, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(45, *YYCURSOR);
+               YYDEBUG(44, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2119 "Zend/zend_language_scanner.l"
+#line 2117 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        return '"';
 }
-#line 1618 "Zend/zend_language_scanner.c"
+#line 1616 "Zend/zend_language_scanner.c"
+yy45:
+               YYDEBUG(45, *YYCURSOR);
+               yych = *++YYCURSOR;
+               goto yy41;
 yy46:
                YYDEBUG(46, *YYCURSOR);
-               yych = *++YYCURSOR;
-               goto yy42;
-yy47:
-               YYDEBUG(47, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(48, *YYCURSOR);
+               YYDEBUG(47, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2111 "Zend/zend_language_scanner.l"
+#line 2109 "Zend/zend_language_scanner.l"
                {
        Z_LVAL_P(zendlval) = (zend_long) '{';
        yy_push_state(ST_IN_SCRIPTING);
        yyless(1);
        return T_CURLY_OPEN;
 }
-#line 1635 "Zend/zend_language_scanner.c"
-yy49:
-               YYDEBUG(49, *YYCURSOR);
+#line 1633 "Zend/zend_language_scanner.c"
+yy48:
+               YYDEBUG(48, *YYCURSOR);
                yyaccept = 0;
                YYMARKER = ++YYCURSOR;
                YYFILL(3);
                yych = *YYCURSOR;
-               YYDEBUG(50, *YYCURSOR);
+               YYDEBUG(49, *YYCURSOR);
                if (yybm[0+yych] & 128) {
-                       goto yy49;
+                       goto yy48;
                }
-               if (yych == '-') goto yy54;
-               if (yych <= '@') goto yy51;
-               if (yych <= '[') goto yy56;
-yy51:
-               YYDEBUG(51, *YYCURSOR);
+               if (yych == '-') goto yy53;
+               if (yych == '[') goto yy55;
+yy50:
+               YYDEBUG(50, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1835 "Zend/zend_language_scanner.l"
+#line 1833 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1657 "Zend/zend_language_scanner.c"
-yy52:
-               YYDEBUG(52, *YYCURSOR);
+#line 1654 "Zend/zend_language_scanner.c"
+yy51:
+               YYDEBUG(51, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(53, *YYCURSOR);
+               YYDEBUG(52, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1559 "Zend/zend_language_scanner.l"
+#line 1557 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_VARNAME);
        return T_DOLLAR_OPEN_CURLY_BRACES;
 }
-#line 1668 "Zend/zend_language_scanner.c"
+#line 1665 "Zend/zend_language_scanner.c"
+yy53:
+               YYDEBUG(53, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '>') goto yy57;
 yy54:
                YYDEBUG(54, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '>') goto yy58;
+               YYCURSOR = YYMARKER;
+               goto yy50;
 yy55:
                YYDEBUG(55, *YYCURSOR);
-               YYCURSOR = YYMARKER;
-               goto yy51;
-yy56:
-               YYDEBUG(56, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(57, *YYCURSOR);
+               YYDEBUG(56, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1828 "Zend/zend_language_scanner.l"
+#line 1826 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1689 "Zend/zend_language_scanner.c"
-yy58:
-               YYDEBUG(58, *YYCURSOR);
+#line 1686 "Zend/zend_language_scanner.c"
+yy57:
+               YYDEBUG(57, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= '_') {
-                       if (yych <= '@') goto yy55;
-                       if (yych <= 'Z') goto yy59;
-                       if (yych <= '^') goto yy55;
+                       if (yych <= '@') goto yy54;
+                       if (yych <= 'Z') goto yy58;
+                       if (yych <= '^') goto yy54;
                } else {
-                       if (yych <= '`') goto yy55;
-                       if (yych <= 'z') goto yy59;
-                       if (yych <= '~') goto yy55;
+                       if (yych <= '`') goto yy54;
+                       if (yych <= 'z') goto yy58;
+                       if (yych <= '~') goto yy54;
                }
-yy59:
-               YYDEBUG(59, *YYCURSOR);
+yy58:
+               YYDEBUG(58, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(60, *YYCURSOR);
+               YYDEBUG(59, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1819 "Zend/zend_language_scanner.l"
+#line 1817 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1714 "Zend/zend_language_scanner.c"
+#line 1711 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_END_HEREDOC:
-       YYDEBUG(61, *YYCURSOR);
+       YYDEBUG(60, *YYCURSOR);
        YYFILL(1);
        yych = *YYCURSOR;
-       YYDEBUG(63, *YYCURSOR);
+       YYDEBUG(62, *YYCURSOR);
        ++YYCURSOR;
-       YYDEBUG(64, *YYCURSOR);
+       YYDEBUG(63, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 2097 "Zend/zend_language_scanner.l"
+#line 2095 "Zend/zend_language_scanner.l"
        {
        zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack));
 
@@ -1734,7 +1731,7 @@ yyc_ST_END_HEREDOC:
        BEGIN(ST_IN_SCRIPTING);
        return T_END_HEREDOC;
 }
-#line 1738 "Zend/zend_language_scanner.c"
+#line 1735 "Zend/zend_language_scanner.c"
 /* *********************************** */
 yyc_ST_HEREDOC:
        {
@@ -1772,31 +1769,31 @@ yyc_ST_HEREDOC:
                        128, 128, 128, 128, 128, 128, 128, 128, 
                        128, 128, 128, 128, 128, 128, 128, 128, 
                };
-               YYDEBUG(65, *YYCURSOR);
+               YYDEBUG(64, *YYCURSOR);
                YYFILL(2);
                yych = *YYCURSOR;
-               if (yych == '$') goto yy67;
-               if (yych == '{') goto yy69;
-               goto yy70;
-yy67:
-               YYDEBUG(67, *YYCURSOR);
+               if (yych == '$') goto yy66;
+               if (yych == '{') goto yy68;
+               goto yy69;
+yy66:
+               YYDEBUG(66, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '_') {
-                       if (yych <= '@') goto yy68;
-                       if (yych <= 'Z') goto yy73;
-                       if (yych >= '_') goto yy73;
+                       if (yych <= '@') goto yy67;
+                       if (yych <= 'Z') goto yy72;
+                       if (yych >= '_') goto yy72;
                } else {
                        if (yych <= 'z') {
-                               if (yych >= 'a') goto yy73;
+                               if (yych >= 'a') goto yy72;
                        } else {
-                               if (yych <= '{') goto yy76;
-                               if (yych >= 0x7F) goto yy73;
+                               if (yych <= '{') goto yy75;
+                               if (yych >= 0x7F) goto yy72;
                        }
                }
-yy68:
-               YYDEBUG(68, *YYCURSOR);
+yy67:
+               YYDEBUG(67, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2222 "Zend/zend_language_scanner.l"
+#line 2220 "Zend/zend_language_scanner.l"
                {
        int newline = 0;
 
@@ -1869,108 +1866,107 @@ heredoc_scan_done:
        zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0);
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 1873 "Zend/zend_language_scanner.c"
+#line 1870 "Zend/zend_language_scanner.c"
+yy68:
+               YYDEBUG(68, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '$') goto yy70;
+               goto yy67;
 yy69:
                YYDEBUG(69, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == '$') goto yy71;
-               goto yy68;
+               goto yy67;
 yy70:
                YYDEBUG(70, *YYCURSOR);
-               yych = *++YYCURSOR;
-               goto yy68;
-yy71:
-               YYDEBUG(71, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(72, *YYCURSOR);
+               YYDEBUG(71, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2111 "Zend/zend_language_scanner.l"
+#line 2109 "Zend/zend_language_scanner.l"
                {
        Z_LVAL_P(zendlval) = (zend_long) '{';
        yy_push_state(ST_IN_SCRIPTING);
        yyless(1);
        return T_CURLY_OPEN;
 }
-#line 1895 "Zend/zend_language_scanner.c"
-yy73:
-               YYDEBUG(73, *YYCURSOR);
+#line 1892 "Zend/zend_language_scanner.c"
+yy72:
+               YYDEBUG(72, *YYCURSOR);
                yyaccept = 0;
                YYMARKER = ++YYCURSOR;
                YYFILL(3);
                yych = *YYCURSOR;
-               YYDEBUG(74, *YYCURSOR);
+               YYDEBUG(73, *YYCURSOR);
                if (yybm[0+yych] & 128) {
-                       goto yy73;
+                       goto yy72;
                }
-               if (yych == '-') goto yy78;
-               if (yych <= '@') goto yy75;
-               if (yych <= '[') goto yy80;
-yy75:
-               YYDEBUG(75, *YYCURSOR);
+               if (yych == '-') goto yy77;
+               if (yych == '[') goto yy79;
+yy74:
+               YYDEBUG(74, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1835 "Zend/zend_language_scanner.l"
+#line 1833 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1917 "Zend/zend_language_scanner.c"
-yy76:
-               YYDEBUG(76, *YYCURSOR);
+#line 1913 "Zend/zend_language_scanner.c"
+yy75:
+               YYDEBUG(75, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(77, *YYCURSOR);
+               YYDEBUG(76, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1559 "Zend/zend_language_scanner.l"
+#line 1557 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_VARNAME);
        return T_DOLLAR_OPEN_CURLY_BRACES;
 }
-#line 1928 "Zend/zend_language_scanner.c"
+#line 1924 "Zend/zend_language_scanner.c"
+yy77:
+               YYDEBUG(77, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '>') goto yy81;
 yy78:
                YYDEBUG(78, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '>') goto yy82;
+               YYCURSOR = YYMARKER;
+               goto yy74;
 yy79:
                YYDEBUG(79, *YYCURSOR);
-               YYCURSOR = YYMARKER;
-               goto yy75;
-yy80:
-               YYDEBUG(80, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(81, *YYCURSOR);
+               YYDEBUG(80, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1828 "Zend/zend_language_scanner.l"
+#line 1826 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1949 "Zend/zend_language_scanner.c"
-yy82:
-               YYDEBUG(82, *YYCURSOR);
+#line 1945 "Zend/zend_language_scanner.c"
+yy81:
+               YYDEBUG(81, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= '_') {
-                       if (yych <= '@') goto yy79;
-                       if (yych <= 'Z') goto yy83;
-                       if (yych <= '^') goto yy79;
+                       if (yych <= '@') goto yy78;
+                       if (yych <= 'Z') goto yy82;
+                       if (yych <= '^') goto yy78;
                } else {
-                       if (yych <= '`') goto yy79;
-                       if (yych <= 'z') goto yy83;
-                       if (yych <= '~') goto yy79;
+                       if (yych <= '`') goto yy78;
+                       if (yych <= 'z') goto yy82;
+                       if (yych <= '~') goto yy78;
                }
-yy83:
-               YYDEBUG(83, *YYCURSOR);
+yy82:
+               YYDEBUG(82, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(84, *YYCURSOR);
+               YYDEBUG(83, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1819 "Zend/zend_language_scanner.l"
+#line 1817 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1974 "Zend/zend_language_scanner.c"
+#line 1970 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_IN_SCRIPTING:
@@ -2009,7 +2005,7 @@ yyc_ST_IN_SCRIPTING:
                          4,   4,   4,   4,   4,   4,   4,   4, 
                          4,   4,   4,   4,   4,   4,   4,   4, 
                };
-               YYDEBUG(85, *YYCURSOR);
+               YYDEBUG(84, *YYCURSOR);
                YYFILL(16);
                yych = *YYCURSOR;
                YYDEBUG(-1, yych);
@@ -2042,32 +2038,32 @@ yyc_ST_IN_SCRIPTING:
                case 0x1C:
                case 0x1D:
                case 0x1E:
-               case 0x1F:      goto yy148;
+               case 0x1F:      goto yy147;
                case '\t':
                case '\n':
                case '\r':
-               case ' ':       goto yy104;
-               case '!':       goto yy119;
-               case '"':       goto yy144;
-               case '#':       goto yy140;
-               case '$':       goto yy130;
-               case '%':       goto yy124;
-               case '&':       goto yy125;
-               case '\'':      goto yy142;
-               case '(':       goto yy113;
+               case ' ':       goto yy103;
+               case '!':       goto yy118;
+               case '"':       goto yy143;
+               case '#':       goto yy139;
+               case '$':       goto yy129;
+               case '%':       goto yy123;
+               case '&':       goto yy124;
+               case '\'':      goto yy141;
+               case '(':       goto yy112;
                case ')':
                case ',':
                case ';':
                case '@':
                case '[':
                case ']':
-               case '~':       goto yy131;
-               case '*':       goto yy122;
-               case '+':       goto yy118;
-               case '-':       goto yy102;
-               case '.':       goto yy109;
-               case '/':       goto yy123;
-               case '0':       goto yy136;
+               case '~':       goto yy130;
+               case '*':       goto yy121;
+               case '+':       goto yy117;
+               case '-':       goto yy101;
+               case '.':       goto yy108;
+               case '/':       goto yy122;
+               case '0':       goto yy135;
                case '1':
                case '2':
                case '3':
@@ -2076,594 +2072,594 @@ yyc_ST_IN_SCRIPTING:
                case '6':
                case '7':
                case '8':
-               case '9':       goto yy138;
-               case ':':       goto yy106;
-               case '<':       goto yy120;
-               case '=':       goto yy116;
-               case '>':       goto yy121;
-               case '?':       goto yy110;
+               case '9':       goto yy137;
+               case ':':       goto yy105;
+               case '<':       goto yy119;
+               case '=':       goto yy115;
+               case '>':       goto yy120;
+               case '?':       goto yy109;
                case 'A':
-               case 'a':       goto yy97;
+               case 'a':       goto yy96;
                case 'B':
-               case 'b':       goto yy99;
+               case 'b':       goto yy98;
                case 'C':
-               case 'c':       goto yy91;
+               case 'c':       goto yy90;
                case 'D':
-               case 'd':       goto yy89;
+               case 'd':       goto yy88;
                case 'E':
-               case 'e':       goto yy87;
+               case 'e':       goto yy86;
                case 'F':
-               case 'f':       goto yy90;
+               case 'f':       goto yy89;
                case 'G':
-               case 'g':       goto yy100;
+               case 'g':       goto yy99;
                case 'I':
-               case 'i':       goto yy95;
+               case 'i':       goto yy94;
                case 'L':
-               case 'l':       goto yy117;
+               case 'l':       goto yy116;
                case 'N':
-               case 'n':       goto yy111;
+               case 'n':       goto yy110;
                case 'O':
-               case 'o':       goto yy128;
+               case 'o':       goto yy127;
                case 'P':
-               case 'p':       goto yy101;
+               case 'p':       goto yy100;
                case 'R':
-               case 'r':       goto yy92;
+               case 'r':       goto yy91;
                case 'S':
-               case 's':       goto yy98;
+               case 's':       goto yy97;
                case 'T':
-               case 't':       goto yy94;
+               case 't':       goto yy93;
                case 'U':
-               case 'u':       goto yy114;
+               case 'u':       goto yy113;
                case 'V':
-               case 'v':       goto yy112;
+               case 'v':       goto yy111;
                case 'W':
-               case 'w':       goto yy96;
+               case 'w':       goto yy95;
                case 'X':
-               case 'x':       goto yy129;
+               case 'x':       goto yy128;
                case 'Y':
-               case 'y':       goto yy93;
-               case '\\':      goto yy107;
-               case '^':       goto yy127;
-               case '_':       goto yy115;
-               case '`':       goto yy146;
-               case '{':       goto yy132;
-               case '|':       goto yy126;
-               case '}':       goto yy134;
-               default:        goto yy139;
-               }
-yy87:
-               YYDEBUG(87, *YYCURSOR);
+               case 'y':       goto yy92;
+               case '\\':      goto yy106;
+               case '^':       goto yy126;
+               case '_':       goto yy114;
+               case '`':       goto yy145;
+               case '{':       goto yy131;
+               case '|':       goto yy125;
+               case '}':       goto yy133;
+               default:        goto yy138;
+               }
+yy86:
+               YYDEBUG(86, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(-1, yych);
                switch ((yych = *YYCURSOR)) {
                case 'C':
-               case 'c':       goto yy698;
+               case 'c':       goto yy697;
                case 'L':
-               case 'l':       goto yy699;
+               case 'l':       goto yy698;
                case 'M':
-               case 'm':       goto yy700;
+               case 'm':       goto yy699;
                case 'N':
-               case 'n':       goto yy701;
+               case 'n':       goto yy700;
                case 'V':
-               case 'v':       goto yy702;
+               case 'v':       goto yy701;
                case 'X':
-               case 'x':       goto yy703;
-               default:        goto yy151;
+               case 'x':       goto yy702;
+               default:        goto yy150;
                }
-yy88:
-               YYDEBUG(88, *YYCURSOR);
+yy87:
+               YYDEBUG(87, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1858 "Zend/zend_language_scanner.l"
+#line 1856 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        return T_STRING;
 }
-#line 2162 "Zend/zend_language_scanner.c"
-yy89:
-               YYDEBUG(89, *YYCURSOR);
+#line 2158 "Zend/zend_language_scanner.c"
+yy88:
+               YYDEBUG(88, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'O') {
                        if (yych <= 'H') {
-                               if (yych == 'E') goto yy680;
-                               goto yy151;
+                               if (yych == 'E') goto yy679;
+                               goto yy150;
                        } else {
-                               if (yych <= 'I') goto yy681;
-                               if (yych <= 'N') goto yy151;
-                               goto yy682;
+                               if (yych <= 'I') goto yy680;
+                               if (yych <= 'N') goto yy150;
+                               goto yy681;
                        }
                } else {
                        if (yych <= 'h') {
-                               if (yych == 'e') goto yy680;
-                               goto yy151;
+                               if (yych == 'e') goto yy679;
+                               goto yy150;
                        } else {
-                               if (yych <= 'i') goto yy681;
-                               if (yych == 'o') goto yy682;
-                               goto yy151;
+                               if (yych <= 'i') goto yy680;
+                               if (yych == 'o') goto yy681;
+                               goto yy150;
                        }
                }
-yy90:
-               YYDEBUG(90, *YYCURSOR);
+yy89:
+               YYDEBUG(89, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'U') {
                        if (yych <= 'N') {
-                               if (yych == 'I') goto yy656;
-                               goto yy151;
+                               if (yych == 'I') goto yy655;
+                               goto yy150;
                        } else {
-                               if (yych <= 'O') goto yy657;
-                               if (yych <= 'T') goto yy151;
-                               goto yy658;
+                               if (yych <= 'O') goto yy656;
+                               if (yych <= 'T') goto yy150;
+                               goto yy657;
                        }
                } else {
                        if (yych <= 'n') {
-                               if (yych == 'i') goto yy656;
-                               goto yy151;
+                               if (yych == 'i') goto yy655;
+                               goto yy150;
                        } else {
-                               if (yych <= 'o') goto yy657;
-                               if (yych == 'u') goto yy658;
-                               goto yy151;
+                               if (yych <= 'o') goto yy656;
+                               if (yych == 'u') goto yy657;
+                               goto yy150;
                        }
                }
-yy91:
-               YYDEBUG(91, *YYCURSOR);
+yy90:
+               YYDEBUG(90, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'O') {
                        if (yych <= 'K') {
-                               if (yych == 'A') goto yy621;
-                               goto yy151;
+                               if (yych == 'A') goto yy620;
+                               goto yy150;
                        } else {
-                               if (yych <= 'L') goto yy622;
-                               if (yych <= 'N') goto yy151;
-                               goto yy623;
+                               if (yych <= 'L') goto yy621;
+                               if (yych <= 'N') goto yy150;
+                               goto yy622;
                        }
                } else {
                        if (yych <= 'k') {
-                               if (yych == 'a') goto yy621;
-                               goto yy151;
+                               if (yych == 'a') goto yy620;
+                               goto yy150;
                        } else {
-                               if (yych <= 'l') goto yy622;
-                               if (yych == 'o') goto yy623;
-                               goto yy151;
+                               if (yych <= 'l') goto yy621;
+                               if (yych == 'o') goto yy622;
+                               goto yy150;
                        }
                }
+yy91:
+               YYDEBUG(91, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy602;
+               if (yych == 'e') goto yy602;
+               goto yy150;
 yy92:
                YYDEBUG(92, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy603;
-               if (yych == 'e') goto yy603;
-               goto yy151;
+               if (yych == 'I') goto yy597;
+               if (yych == 'i') goto yy597;
+               goto yy150;
 yy93:
                YYDEBUG(93, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy598;
-               if (yych == 'i') goto yy598;
-               goto yy151;
-yy94:
-               YYDEBUG(94, *YYCURSOR);
-               yych = *++YYCURSOR;
                if (yych <= 'R') {
-                       if (yych == 'H') goto yy586;
-                       if (yych <= 'Q') goto yy151;
-                       goto yy587;
+                       if (yych == 'H') goto yy585;
+                       if (yych <= 'Q') goto yy150;
+                       goto yy586;
                } else {
                        if (yych <= 'h') {
-                               if (yych <= 'g') goto yy151;
-                               goto yy586;
+                               if (yych <= 'g') goto yy150;
+                               goto yy585;
                        } else {
-                               if (yych == 'r') goto yy587;
-                               goto yy151;
+                               if (yych == 'r') goto yy586;
+                               goto yy150;
                        }
                }
-yy95:
-               YYDEBUG(95, *YYCURSOR);
+yy94:
+               YYDEBUG(94, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'S') {
                        if (yych <= 'L') {
-                               if (yych == 'F') goto yy533;
-                               goto yy151;
+                               if (yych == 'F') goto yy532;
+                               goto yy150;
                        } else {
-                               if (yych <= 'M') goto yy535;
-                               if (yych <= 'N') goto yy536;
-                               if (yych <= 'R') goto yy151;
-                               goto yy537;
+                               if (yych <= 'M') goto yy534;
+                               if (yych <= 'N') goto yy535;
+                               if (yych <= 'R') goto yy150;
+                               goto yy536;
                        }
                } else {
                        if (yych <= 'm') {
-                               if (yych == 'f') goto yy533;
-                               if (yych <= 'l') goto yy151;
-                               goto yy535;
+                               if (yych == 'f') goto yy532;
+                               if (yych <= 'l') goto yy150;
+                               goto yy534;
                        } else {
-                               if (yych <= 'n') goto yy536;
-                               if (yych == 's') goto yy537;
-                               goto yy151;
+                               if (yych <= 'n') goto yy535;
+                               if (yych == 's') goto yy536;
+                               goto yy150;
                        }
                }
+yy95:
+               YYDEBUG(95, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'H') goto yy527;
+               if (yych == 'h') goto yy527;
+               goto yy150;
 yy96:
                YYDEBUG(96, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'H') goto yy528;
-               if (yych == 'h') goto yy528;
-               goto yy151;
-yy97:
-               YYDEBUG(97, *YYCURSOR);
-               yych = *++YYCURSOR;
                if (yych <= 'S') {
                        if (yych <= 'M') {
-                               if (yych == 'B') goto yy510;
-                               goto yy151;
+                               if (yych == 'B') goto yy509;
+                               goto yy150;
                        } else {
-                               if (yych <= 'N') goto yy511;
-                               if (yych <= 'Q') goto yy151;
-                               if (yych <= 'R') goto yy512;
-                               goto yy513;
+                               if (yych <= 'N') goto yy510;
+                               if (yych <= 'Q') goto yy150;
+                               if (yych <= 'R') goto yy511;
+                               goto yy512;
                        }
                } else {
                        if (yych <= 'n') {
-                               if (yych == 'b') goto yy510;
-                               if (yych <= 'm') goto yy151;
-                               goto yy511;
+                               if (yych == 'b') goto yy509;
+                               if (yych <= 'm') goto yy150;
+                               goto yy510;
                        } else {
-                               if (yych <= 'q') goto yy151;
-                               if (yych <= 'r') goto yy512;
-                               if (yych <= 's') goto yy513;
-                               goto yy151;
+                               if (yych <= 'q') goto yy150;
+                               if (yych <= 'r') goto yy511;
+                               if (yych <= 's') goto yy512;
+                               goto yy150;
                        }
                }
-yy98:
-               YYDEBUG(98, *YYCURSOR);
+yy97:
+               YYDEBUG(97, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'W') {
-                       if (yych == 'T') goto yy498;
-                       if (yych <= 'V') goto yy151;
-                       goto yy499;
+                       if (yych == 'T') goto yy497;
+                       if (yych <= 'V') goto yy150;
+                       goto yy498;
                } else {
                        if (yych <= 't') {
-                               if (yych <= 's') goto yy151;
-                               goto yy498;
+                               if (yych <= 's') goto yy150;
+                               goto yy497;
                        } else {
-                               if (yych == 'w') goto yy499;
-                               goto yy151;
+                               if (yych == 'w') goto yy498;
+                               goto yy150;
                        }
                }
-yy99:
-               YYDEBUG(99, *YYCURSOR);
+yy98:
+               YYDEBUG(98, *YYCURSOR);
                yyaccept = 0;
                yych = *(YYMARKER = ++YYCURSOR);
                if (yych <= ';') {
                        if (yych <= '"') {
-                               if (yych <= '!') goto yy151;
-                               goto yy490;
+                               if (yych <= '!') goto yy150;
+                               goto yy489;
                        } else {
-                               if (yych == '\'') goto yy491;
-                               goto yy151;
+                               if (yych == '\'') goto yy490;
+                               goto yy150;
                        }
                } else {
                        if (yych <= 'R') {
-                               if (yych <= '<') goto yy489;
-                               if (yych <= 'Q') goto yy151;
-                               goto yy492;
+                               if (yych <= '<') goto yy488;
+                               if (yych <= 'Q') goto yy150;
+                               goto yy491;
                        } else {
-                               if (yych == 'r') goto yy492;
-                               goto yy151;
+                               if (yych == 'r') goto yy491;
+                               goto yy150;
                        }
                }
-yy100:
-               YYDEBUG(100, *YYCURSOR);
+yy99:
+               YYDEBUG(99, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'O') {
-                       if (yych == 'L') goto yy479;
-                       if (yych <= 'N') goto yy151;
-                       goto yy480;
+                       if (yych == 'L') goto yy478;
+                       if (yych <= 'N') goto yy150;
+                       goto yy479;
                } else {
                        if (yych <= 'l') {
-                               if (yych <= 'k') goto yy151;
-                               goto yy479;
+                               if (yych <= 'k') goto yy150;
+                               goto yy478;
                        } else {
-                               if (yych == 'o') goto yy480;
-                               goto yy151;
+                               if (yych == 'o') goto yy479;
+                               goto yy150;
                        }
                }
-yy101:
-               YYDEBUG(101, *YYCURSOR);
+yy100:
+               YYDEBUG(100, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'U') {
-                       if (yych == 'R') goto yy455;
-                       if (yych <= 'T') goto yy151;
-                       goto yy456;
+                       if (yych == 'R') goto yy454;
+                       if (yych <= 'T') goto yy150;
+                       goto yy455;
                } else {
                        if (yych <= 'r') {
-                               if (yych <= 'q') goto yy151;
-                               goto yy455;
+                               if (yych <= 'q') goto yy150;
+                               goto yy454;
                        } else {
-                               if (yych == 'u') goto yy456;
-                               goto yy151;
+                               if (yych == 'u') goto yy455;
+                               goto yy150;
                        }
                }
-yy102:
-               YYDEBUG(102, *YYCURSOR);
+yy101:
+               YYDEBUG(101, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '<') {
-                       if (yych == '-') goto yy451;
+                       if (yych == '-') goto yy450;
                } else {
-                       if (yych <= '=') goto yy449;
-                       if (yych <= '>') goto yy453;
+                       if (yych <= '=') goto yy448;
+                       if (yych <= '>') goto yy452;
                }
-yy103:
-               YYDEBUG(103, *YYCURSOR);
+yy102:
+               YYDEBUG(102, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1548 "Zend/zend_language_scanner.l"
+#line 1546 "Zend/zend_language_scanner.l"
                {
        return yytext[0];
 }
-#line 2398 "Zend/zend_language_scanner.c"
-yy104:
-               YYDEBUG(104, *YYCURSOR);
+#line 2394 "Zend/zend_language_scanner.c"
+yy103:
+               YYDEBUG(103, *YYCURSOR);
                ++YYCURSOR;
                yych = *YYCURSOR;
-               goto yy448;
-yy105:
-               YYDEBUG(105, *YYCURSOR);
+               goto yy447;
+yy104:
+               YYDEBUG(104, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1263 "Zend/zend_language_scanner.l"
+#line 1261 "Zend/zend_language_scanner.l"
                {
        HANDLE_NEWLINES(yytext, yyleng);
        return T_WHITESPACE;
 }
-#line 2412 "Zend/zend_language_scanner.c"
+#line 2408 "Zend/zend_language_scanner.c"
+yy105:
+               YYDEBUG(105, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == ':') goto yy444;
+               goto yy102;
 yy106:
                YYDEBUG(106, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == ':') goto yy445;
-               goto yy103;
-yy107:
-               YYDEBUG(107, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(108, *YYCURSOR);
+               YYDEBUG(107, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1288 "Zend/zend_language_scanner.l"
+#line 1286 "Zend/zend_language_scanner.l"
                {
        return T_NS_SEPARATOR;
 }
-#line 2427 "Zend/zend_language_scanner.c"
-yy109:
-               YYDEBUG(109, *YYCURSOR);
+#line 2423 "Zend/zend_language_scanner.c"
+yy108:
+               YYDEBUG(108, *YYCURSOR);
                yyaccept = 1;
                yych = *(YYMARKER = ++YYCURSOR);
                if (yych <= '/') {
-                       if (yych == '.') goto yy442;
-                       goto yy103;
+                       if (yych == '.') goto yy441;
+                       goto yy102;
                } else {
-                       if (yych <= '9') goto yy438;
-                       if (yych == '=') goto yy440;
-                       goto yy103;
+                       if (yych <= '9') goto yy437;
+                       if (yych == '=') goto yy439;
+                       goto yy102;
                }
+yy109:
+               YYDEBUG(109, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych <= '=') goto yy102;
+               if (yych <= '>') goto yy431;
+               if (yych <= '?') goto yy433;
+               goto yy102;
 yy110:
                YYDEBUG(110, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych <= '=') goto yy103;
-               if (yych <= '>') goto yy432;
-               if (yych <= '?') goto yy434;
-               goto yy103;
-yy111:
-               YYDEBUG(111, *YYCURSOR);
-               yych = *++YYCURSOR;
                if (yych <= 'E') {
-                       if (yych == 'A') goto yy420;
-                       if (yych <= 'D') goto yy151;
-                       goto yy421;
+                       if (yych == 'A') goto yy419;
+                       if (yych <= 'D') goto yy150;
+                       goto yy420;
                } else {
                        if (yych <= 'a') {
-                               if (yych <= '`') goto yy151;
-                               goto yy420;
+                               if (yych <= '`') goto yy150;
+                               goto yy419;
                        } else {
-                               if (yych == 'e') goto yy421;
-                               goto yy151;
+                               if (yych == 'e') goto yy420;
+                               goto yy150;
                        }
                }
+yy111:
+               YYDEBUG(111, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'A') goto yy416;
+               if (yych == 'a') goto yy416;
+               goto yy150;
 yy112:
                YYDEBUG(112, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy417;
-               if (yych == 'a') goto yy417;
-               goto yy151;
-yy113:
-               YYDEBUG(113, *YYCURSOR);
                yyaccept = 1;
                yych = *(YYMARKER = ++YYCURSOR);
                if (yych <= 'S') {
                        if (yych <= 'D') {
                                if (yych <= ' ') {
-                                       if (yych == '\t') goto yy342;
-                                       if (yych <= 0x1F) goto yy103;
-                                       goto yy342;
+                                       if (yych == '\t') goto yy341;
+                                       if (yych <= 0x1F) goto yy102;
+                                       goto yy341;
                                } else {
-                                       if (yych <= '@') goto yy103;
-                                       if (yych == 'C') goto yy103;
-                                       goto yy342;
+                                       if (yych <= '@') goto yy102;
+                                       if (yych == 'C') goto yy102;
+                                       goto yy341;
                                }
                        } else {
                                if (yych <= 'I') {
-                                       if (yych == 'F') goto yy342;
-                                       if (yych <= 'H') goto yy103;
-                                       goto yy342;
+                                       if (yych == 'F') goto yy341;
+                                       if (yych <= 'H') goto yy102;
+                                       goto yy341;
                                } else {
-                                       if (yych == 'O') goto yy342;
-                                       if (yych <= 'Q') goto yy103;
-                                       goto yy342;
+                                       if (yych == 'O') goto yy341;
+                                       if (yych <= 'Q') goto yy102;
+                                       goto yy341;
                                }
                        }
                } else {
                        if (yych <= 'f') {
                                if (yych <= 'b') {
-                                       if (yych == 'U') goto yy342;
-                                       if (yych <= '`') goto yy103;
-                                       goto yy342;
+                                       if (yych == 'U') goto yy341;
+                                       if (yych <= '`') goto yy102;
+                                       goto yy341;
                                } else {
-                                       if (yych == 'd') goto yy342;
-                                       if (yych <= 'e') goto yy103;
-                                       goto yy342;
+                                       if (yych == 'd') goto yy341;
+                                       if (yych <= 'e') goto yy102;
+                                       goto yy341;
                                }
                        } else {
                                if (yych <= 'o') {
-                                       if (yych == 'i') goto yy342;
-                                       if (yych <= 'n') goto yy103;
-                                       goto yy342;
+                                       if (yych == 'i') goto yy341;
+                                       if (yych <= 'n') goto yy102;
+                                       goto yy341;
                                } else {
                                        if (yych <= 's') {
-                                               if (yych <= 'q') goto yy103;
-                                               goto yy342;
+                                               if (yych <= 'q') goto yy102;
+                                               goto yy341;
                                        } else {
-                                               if (yych == 'u') goto yy342;
-                                               goto yy103;
+                                               if (yych == 'u') goto yy341;
+                                               goto yy102;
                                        }
                                }
                        }
                }
-yy114:
-               YYDEBUG(114, *YYCURSOR);
+yy113:
+               YYDEBUG(113, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'S') {
-                       if (yych == 'N') goto yy333;
-                       if (yych <= 'R') goto yy151;
-                       goto yy334;
+                       if (yych == 'N') goto yy332;
+                       if (yych <= 'R') goto yy150;
+                       goto yy333;
                } else {
                        if (yych <= 'n') {
-                               if (yych <= 'm') goto yy151;
-                               goto yy333;
+                               if (yych <= 'm') goto yy150;
+                               goto yy332;
                        } else {
-                               if (yych == 's') goto yy334;
-                               goto yy151;
+                               if (yych == 's') goto yy333;
+                               goto yy150;
                        }
                }
+yy114:
+               YYDEBUG(114, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '_') goto yy250;
+               goto yy150;
 yy115:
                YYDEBUG(115, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == '_') goto yy251;
-               goto yy151;
+               if (yych <= '<') goto yy102;
+               if (yych <= '=') goto yy244;
+               if (yych <= '>') goto yy246;
+               goto yy102;
 yy116:
                YYDEBUG(116, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych <= '<') goto yy103;
-               if (yych <= '=') goto yy245;
-               if (yych <= '>') goto yy247;
-               goto yy103;
+               if (yych == 'I') goto yy240;
+               if (yych == 'i') goto yy240;
+               goto yy150;
 yy117:
                YYDEBUG(117, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy241;
-               if (yych == 'i') goto yy241;
-               goto yy151;
+               if (yych == '+') goto yy238;
+               if (yych == '=') goto yy236;
+               goto yy102;
 yy118:
                YYDEBUG(118, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == '+') goto yy239;
-               if (yych == '=') goto yy237;
-               goto yy103;
+               if (yych == '=') goto yy233;
+               goto yy102;
 yy119:
                YYDEBUG(119, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == '=') goto yy234;
-               goto yy103;
+               if (yych <= ';') goto yy102;
+               if (yych <= '<') goto yy209;
+               if (yych <= '=') goto yy211;
+               if (yych <= '>') goto yy213;
+               goto yy102;
 yy120:
                YYDEBUG(120, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych <= ';') goto yy103;
-               if (yych <= '<') goto yy210;
-               if (yych <= '=') goto yy212;
-               if (yych <= '>') goto yy214;
-               goto yy103;
+               if (yych <= '<') goto yy102;
+               if (yych <= '=') goto yy205;
+               if (yych <= '>') goto yy203;
+               goto yy102;
 yy121:
                YYDEBUG(121, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych <= '<') goto yy103;
-               if (yych <= '=') goto yy206;
-               if (yych <= '>') goto yy204;
-               goto yy103;
+               if (yych == '*') goto yy197;
+               if (yych == '=') goto yy199;
+               goto yy102;
 yy122:
                YYDEBUG(122, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == '*') goto yy198;
-               if (yych == '=') goto yy200;
-               goto yy103;
-yy123:
-               YYDEBUG(123, *YYCURSOR);
-               yych = *++YYCURSOR;
                if (yych <= '.') {
-                       if (yych == '*') goto yy190;
-                       goto yy103;
+                       if (yych == '*') goto yy189;
+                       goto yy102;
                } else {
-                       if (yych <= '/') goto yy192;
-                       if (yych == '=') goto yy193;
-                       goto yy103;
+                       if (yych <= '/') goto yy191;
+                       if (yych == '=') goto yy192;
+                       goto yy102;
                }
+yy123:
+               YYDEBUG(123, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '=') goto yy187;
+               goto yy102;
 yy124:
                YYDEBUG(124, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == '=') goto yy188;
-               goto yy103;
+               if (yych == '&') goto yy183;
+               if (yych == '=') goto yy185;
+               goto yy102;
 yy125:
                YYDEBUG(125, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == '&') goto yy184;
-               if (yych == '=') goto yy186;
-               goto yy103;
+               if (yych == '=') goto yy181;
+               if (yych == '|') goto yy179;
+               goto yy102;
 yy126:
                YYDEBUG(126, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == '=') goto yy182;
-               if (yych == '|') goto yy180;
-               goto yy103;
+               if (yych == '=') goto yy177;
+               goto yy102;
 yy127:
                YYDEBUG(127, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == '=') goto yy178;
-               goto yy103;
+               if (yych == 'R') goto yy175;
+               if (yych == 'r') goto yy175;
+               goto yy150;
 yy128:
                YYDEBUG(128, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy176;
-               if (yych == 'r') goto yy176;
-               goto yy151;
+               if (yych == 'O') goto yy172;
+               if (yych == 'o') goto yy172;
+               goto yy150;
 yy129:
                YYDEBUG(129, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy173;
-               if (yych == 'o') goto yy173;
-               goto yy151;
-yy130:
-               YYDEBUG(130, *YYCURSOR);
-               yych = *++YYCURSOR;
                if (yych <= '_') {
-                       if (yych <= '@') goto yy103;
-                       if (yych <= 'Z') goto yy170;
-                       if (yych <= '^') goto yy103;
-                       goto yy170;
+                       if (yych <= '@') goto yy102;
+                       if (yych <= 'Z') goto yy169;
+                       if (yych <= '^') goto yy102;
+                       goto yy169;
                } else {
-                       if (yych <= '`') goto yy103;
-                       if (yych <= 'z') goto yy170;
-                       if (yych <= '~') goto yy103;
-                       goto yy170;
+                       if (yych <= '`') goto yy102;
+                       if (yych <= 'z') goto yy169;
+                       if (yych <= '~') goto yy102;
+                       goto yy169;
                }
+yy130:
+               YYDEBUG(130, *YYCURSOR);
+               yych = *++YYCURSOR;
+               goto yy102;
 yy131:
                YYDEBUG(131, *YYCURSOR);
-               yych = *++YYCURSOR;
-               goto yy103;
-yy132:
-               YYDEBUG(132, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(133, *YYCURSOR);
+               YYDEBUG(132, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1553 "Zend/zend_language_scanner.l"
+#line 1551 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_IN_SCRIPTING);
        return '{';
 }
-#line 2661 "Zend/zend_language_scanner.c"
-yy134:
-               YYDEBUG(134, *YYCURSOR);
+#line 2657 "Zend/zend_language_scanner.c"
+yy133:
+               YYDEBUG(133, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(135, *YYCURSOR);
+               YYDEBUG(134, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1565 "Zend/zend_language_scanner.l"
+#line 1563 "Zend/zend_language_scanner.l"
                {
        RESET_DOC_COMMENT();
        if (!zend_stack_is_empty(&SCNG(state_stack))) {
@@ -2671,35 +2667,35 @@ yy134:
        }
        return '}';
 }
-#line 2675 "Zend/zend_language_scanner.c"
-yy136:
-               YYDEBUG(136, *YYCURSOR);
+#line 2671 "Zend/zend_language_scanner.c"
+yy135:
+               YYDEBUG(135, *YYCURSOR);
                yyaccept = 2;
                yych = *(YYMARKER = ++YYCURSOR);
                if (yych <= 'E') {
                        if (yych <= '9') {
-                               if (yych == '.') goto yy152;
-                               if (yych >= '0') goto yy155;
+                               if (yych == '.') goto yy151;
+                               if (yych >= '0') goto yy154;
                        } else {
-                               if (yych == 'B') goto yy163;
-                               if (yych >= 'E') goto yy157;
+                               if (yych == 'B') goto yy162;
+                               if (yych >= 'E') goto yy156;
                        }
                } else {
                        if (yych <= 'b') {
-                               if (yych == 'X') goto yy162;
-                               if (yych >= 'b') goto yy163;
+                               if (yych == 'X') goto yy161;
+                               if (yych >= 'b') goto yy162;
                        } else {
                                if (yych <= 'e') {
-                                       if (yych >= 'e') goto yy157;
+                                       if (yych >= 'e') goto yy156;
                                } else {
-                                       if (yych == 'x') goto yy162;
+                                       if (yych == 'x') goto yy161;
                                }
                        }
                }
-yy137:
-               YYDEBUG(137, *YYCURSOR);
+yy136:
+               YYDEBUG(136, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1618 "Zend/zend_language_scanner.l"
+#line 1616 "Zend/zend_language_scanner.l"
                {
        char *end;
        if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */
@@ -2738,35 +2734,35 @@ yy137:
        }
        return T_LNUMBER;
 }
-#line 2742 "Zend/zend_language_scanner.c"
-yy138:
-               YYDEBUG(138, *YYCURSOR);
+#line 2738 "Zend/zend_language_scanner.c"
+yy137:
+               YYDEBUG(137, *YYCURSOR);
                yyaccept = 2;
                yych = *(YYMARKER = ++YYCURSOR);
                if (yych <= '9') {
-                       if (yych == '.') goto yy152;
-                       if (yych <= '/') goto yy137;
-                       goto yy155;
+                       if (yych == '.') goto yy151;
+                       if (yych <= '/') goto yy136;
+                       goto yy154;
                } else {
                        if (yych <= 'E') {
-                               if (yych <= 'D') goto yy137;
-                               goto yy157;
+                               if (yych <= 'D') goto yy136;
+                               goto yy156;
                        } else {
-                               if (yych == 'e') goto yy157;
-                               goto yy137;
+                               if (yych == 'e') goto yy156;
+                               goto yy136;
                        }
                }
+yy138:
+               YYDEBUG(138, *YYCURSOR);
+               yych = *++YYCURSOR;
+               goto yy150;
 yy139:
                YYDEBUG(139, *YYCURSOR);
-               yych = *++YYCURSOR;
-               goto yy151;
+               ++YYCURSOR;
 yy140:
                YYDEBUG(140, *YYCURSOR);
-               ++YYCURSOR;
-yy141:
-               YYDEBUG(141, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1864 "Zend/zend_language_scanner.l"
+#line 1862 "Zend/zend_language_scanner.l"
                {
        while (YYCURSOR < YYLIMIT) {
                switch (*YYCURSOR++) {
@@ -2795,14 +2791,14 @@ yy141:
 
        return T_COMMENT;
 }
-#line 2799 "Zend/zend_language_scanner.c"
+#line 2795 "Zend/zend_language_scanner.c"
+yy141:
+               YYDEBUG(141, *YYCURSOR);
+               ++YYCURSOR;
 yy142:
                YYDEBUG(142, *YYCURSOR);
-               ++YYCURSOR;
-yy143:
-               YYDEBUG(143, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1932 "Zend/zend_language_scanner.l"
+#line 1930 "Zend/zend_language_scanner.l"
                {
        register char *s, *t;
        char *end;
@@ -2870,14 +2866,14 @@ yy143:
        }
        return T_CONSTANT_ENCAPSED_STRING;
 }
-#line 2874 "Zend/zend_language_scanner.c"
+#line 2870 "Zend/zend_language_scanner.c"
+yy143:
+               YYDEBUG(143, *YYCURSOR);
+               ++YYCURSOR;
 yy144:
                YYDEBUG(144, *YYCURSOR);
-               ++YYCURSOR;
-yy145:
-               YYDEBUG(145, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2001 "Zend/zend_language_scanner.l"
+#line 1999 "Zend/zend_language_scanner.l"
                {
        int bprefix = (yytext[0] != '"') ? 1 : 0;
 
@@ -2918,24 +2914,24 @@ yy145:
        BEGIN(ST_DOUBLE_QUOTES);
        return '"';
 }
-#line 2922 "Zend/zend_language_scanner.c"
-yy146:
-               YYDEBUG(146, *YYCURSOR);
+#line 2918 "Zend/zend_language_scanner.c"
+yy145:
+               YYDEBUG(145, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(147, *YYCURSOR);
+               YYDEBUG(146, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2091 "Zend/zend_language_scanner.l"
+#line 2089 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_BACKQUOTE);
        return '`';
 }
-#line 2933 "Zend/zend_language_scanner.c"
-yy148:
-               YYDEBUG(148, *YYCURSOR);
+#line 2929 "Zend/zend_language_scanner.c"
+yy147:
+               YYDEBUG(147, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(149, *YYCURSOR);
+               YYDEBUG(148, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2353 "Zend/zend_language_scanner.l"
+#line 2351 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -2944,34 +2940,34 @@ yy148:
        zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
        goto restart;
 }
-#line 2948 "Zend/zend_language_scanner.c"
-yy150:
-               YYDEBUG(150, *YYCURSOR);
+#line 2944 "Zend/zend_language_scanner.c"
+yy149:
+               YYDEBUG(149, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-yy151:
-               YYDEBUG(151, *YYCURSOR);
+yy150:
+               YYDEBUG(150, *YYCURSOR);
                if (yybm[0+yych] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               goto yy88;
-yy152:
-               YYDEBUG(152, *YYCURSOR);
+               goto yy87;
+yy151:
+               YYDEBUG(151, *YYCURSOR);
                yyaccept = 3;
                YYMARKER = ++YYCURSOR;
                YYFILL(3);
                yych = *YYCURSOR;
-               YYDEBUG(153, *YYCURSOR);
+               YYDEBUG(152, *YYCURSOR);
                if (yybm[0+yych] & 8) {
-                       goto yy152;
+                       goto yy151;
                }
-               if (yych == 'E') goto yy157;
-               if (yych == 'e') goto yy157;
-yy154:
-               YYDEBUG(154, *YYCURSOR);
+               if (yych == 'E') goto yy156;
+               if (yych == 'e') goto yy156;
+yy153:
+               YYDEBUG(153, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1706 "Zend/zend_language_scanner.l"
+#line 1704 "Zend/zend_language_scanner.l"
                {
        const char *end;
 
@@ -2980,99 +2976,99 @@ yy154:
        ZEND_ASSERT(end == yytext + yyleng);
        return T_DNUMBER;
 }
-#line 2984 "Zend/zend_language_scanner.c"
-yy155:
-               YYDEBUG(155, *YYCURSOR);
+#line 2980 "Zend/zend_language_scanner.c"
+yy154:
+               YYDEBUG(154, *YYCURSOR);
                yyaccept = 2;
                YYMARKER = ++YYCURSOR;
                YYFILL(3);
                yych = *YYCURSOR;
-               YYDEBUG(156, *YYCURSOR);
+               YYDEBUG(155, *YYCURSOR);
                if (yych <= '9') {
-                       if (yych == '.') goto yy152;
-                       if (yych <= '/') goto yy137;
-                       goto yy155;
+                       if (yych == '.') goto yy151;
+                       if (yych <= '/') goto yy136;
+                       goto yy154;
                } else {
                        if (yych <= 'E') {
-                               if (yych <= 'D') goto yy137;
+                               if (yych <= 'D') goto yy136;
                        } else {
-                               if (yych != 'e') goto yy137;
+                               if (yych != 'e') goto yy136;
                        }
                }
-yy157:
-               YYDEBUG(157, *YYCURSOR);
+yy156:
+               YYDEBUG(156, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= ',') {
-                       if (yych == '+') goto yy159;
+                       if (yych == '+') goto yy158;
                } else {
-                       if (yych <= '-') goto yy159;
-                       if (yych <= '/') goto yy158;
-                       if (yych <= '9') goto yy160;
+                       if (yych <= '-') goto yy158;
+                       if (yych <= '/') goto yy157;
+                       if (yych <= '9') goto yy159;
                }
-yy158:
-               YYDEBUG(158, *YYCURSOR);
+yy157:
+               YYDEBUG(157, *YYCURSOR);
                YYCURSOR = YYMARKER;
                if (yyaccept <= 2) {
                        if (yyaccept <= 1) {
-                               if (yyaccept == 0) {
-                                       goto yy88;
+                               if (yyaccept <= 0) {
+                                       goto yy87;
                                } else {
-                                       goto yy103;
+                                       goto yy102;
                                }
                        } else {
-                               goto yy137;
+                               goto yy136;
                        }
                } else {
                        if (yyaccept <= 4) {
-                               if (yyaccept == 3) {
-                                       goto yy154;
+                               if (yyaccept <= 3) {
+                                       goto yy153;
                                } else {
-                                       goto yy191;
+                                       goto yy190;
                                }
                        } else {
-                               goto yy211;
+                               goto yy210;
                        }
                }
+yy158:
+               YYDEBUG(158, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych <= '/') goto yy157;
+               if (yych >= ':') goto yy157;
 yy159:
                YYDEBUG(159, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych <= '/') goto yy158;
-               if (yych >= ':') goto yy158;
-yy160:
-               YYDEBUG(160, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
+               YYDEBUG(160, *YYCURSOR);
+               if (yych <= '/') goto yy153;
+               if (yych <= '9') goto yy159;
+               goto yy153;
+yy161:
                YYDEBUG(161, *YYCURSOR);
-               if (yych <= '/') goto yy154;
-               if (yych <= '9') goto yy160;
-               goto yy154;
-yy162:
-               YYDEBUG(162, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yybm[0+yych] & 32) {
-                       goto yy167;
+                       goto yy166;
                }
-               goto yy158;
-yy163:
-               YYDEBUG(163, *YYCURSOR);
+               goto yy157;
+yy162:
+               YYDEBUG(162, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yybm[0+yych] & 16) {
-                       goto yy164;
+                       goto yy163;
                }
-               goto yy158;
-yy164:
-               YYDEBUG(164, *YYCURSOR);
+               goto yy157;
+yy163:
+               YYDEBUG(163, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(165, *YYCURSOR);
+               YYDEBUG(164, *YYCURSOR);
                if (yybm[0+yych] & 16) {
-                       goto yy164;
+                       goto yy163;
                }
-               YYDEBUG(166, *YYCURSOR);
+               YYDEBUG(165, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1590 "Zend/zend_language_scanner.l"
+#line 1588 "Zend/zend_language_scanner.l"
                {
        char *bin = yytext + 2; /* Skip "0b" */
        int len = yyleng - 2;
@@ -3100,19 +3096,19 @@ yy164:
                return T_DNUMBER;
        }
 }
-#line 3104 "Zend/zend_language_scanner.c"
-yy167:
-               YYDEBUG(167, *YYCURSOR);
+#line 3100 "Zend/zend_language_scanner.c"
+yy166:
+               YYDEBUG(166, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(168, *YYCURSOR);
+               YYDEBUG(167, *YYCURSOR);
                if (yybm[0+yych] & 32) {
-                       goto yy167;
+                       goto yy166;
                }
-               YYDEBUG(169, *YYCURSOR);
+               YYDEBUG(168, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1657 "Zend/zend_language_scanner.l"
+#line 1655 "Zend/zend_language_scanner.l"
                {
        char *hex = yytext + 2; /* Skip "0x" */
        int len = yyleng - 2;
@@ -3140,137 +3136,137 @@ yy167:
                return T_DNUMBER;
        }
 }
-#line 3144 "Zend/zend_language_scanner.c"
-yy170:
-               YYDEBUG(170, *YYCURSOR);
+#line 3140 "Zend/zend_language_scanner.c"
+yy169:
+               YYDEBUG(169, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(171, *YYCURSOR);
+               YYDEBUG(170, *YYCURSOR);
                if (yych <= '^') {
                        if (yych <= '9') {
-                               if (yych >= '0') goto yy170;
+                               if (yych >= '0') goto yy169;
                        } else {
-                               if (yych <= '@') goto yy172;
-                               if (yych <= 'Z') goto yy170;
+                               if (yych <= '@') goto yy171;
+                               if (yych <= 'Z') goto yy169;
                        }
                } else {
                        if (yych <= '`') {
-                               if (yych <= '_') goto yy170;
+                               if (yych <= '_') goto yy169;
                        } else {
-                               if (yych <= 'z') goto yy170;
-                               if (yych >= 0x7F) goto yy170;
+                               if (yych <= 'z') goto yy169;
+                               if (yych >= 0x7F) goto yy169;
                        }
                }
-yy172:
-               YYDEBUG(172, *YYCURSOR);
+yy171:
+               YYDEBUG(171, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1835 "Zend/zend_language_scanner.l"
+#line 1833 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 3174 "Zend/zend_language_scanner.c"
+#line 3170 "Zend/zend_language_scanner.c"
+yy172:
+               YYDEBUG(172, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'R') goto yy173;
+               if (yych != 'r') goto yy150;
 yy173:
                YYDEBUG(173, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'R') goto yy174;
-               if (yych != 'r') goto yy151;
-yy174:
-               YYDEBUG(174, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(175, *YYCURSOR);
+               YYDEBUG(174, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1536 "Zend/zend_language_scanner.l"
+#line 1534 "Zend/zend_language_scanner.l"
                {
        return T_LOGICAL_XOR;
 }
-#line 3192 "Zend/zend_language_scanner.c"
-yy176:
-               YYDEBUG(176, *YYCURSOR);
+#line 3188 "Zend/zend_language_scanner.c"
+yy175:
+               YYDEBUG(175, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(177, *YYCURSOR);
+               YYDEBUG(176, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1528 "Zend/zend_language_scanner.l"
+#line 1526 "Zend/zend_language_scanner.l"
                {
        return T_LOGICAL_OR;
 }
-#line 3205 "Zend/zend_language_scanner.c"
-yy178:
-               YYDEBUG(178, *YYCURSOR);
+#line 3201 "Zend/zend_language_scanner.c"
+yy177:
+               YYDEBUG(177, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(179, *YYCURSOR);
+               YYDEBUG(178, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1516 "Zend/zend_language_scanner.l"
+#line 1514 "Zend/zend_language_scanner.l"
                {
        return T_XOR_EQUAL;
 }
-#line 3215 "Zend/zend_language_scanner.c"
-yy180:
-               YYDEBUG(180, *YYCURSOR);
+#line 3211 "Zend/zend_language_scanner.c"
+yy179:
+               YYDEBUG(179, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(181, *YYCURSOR);
+               YYDEBUG(180, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1520 "Zend/zend_language_scanner.l"
+#line 1518 "Zend/zend_language_scanner.l"
                {
        return T_BOOLEAN_OR;
 }
-#line 3225 "Zend/zend_language_scanner.c"
-yy182:
-               YYDEBUG(182, *YYCURSOR);
+#line 3221 "Zend/zend_language_scanner.c"
+yy181:
+               YYDEBUG(181, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(183, *YYCURSOR);
+               YYDEBUG(182, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1512 "Zend/zend_language_scanner.l"
+#line 1510 "Zend/zend_language_scanner.l"
                {
        return T_OR_EQUAL;
 }
-#line 3235 "Zend/zend_language_scanner.c"
-yy184:
-               YYDEBUG(184, *YYCURSOR);
+#line 3231 "Zend/zend_language_scanner.c"
+yy183:
+               YYDEBUG(183, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(185, *YYCURSOR);
+               YYDEBUG(184, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1524 "Zend/zend_language_scanner.l"
+#line 1522 "Zend/zend_language_scanner.l"
                {
        return T_BOOLEAN_AND;
 }
-#line 3245 "Zend/zend_language_scanner.c"
-yy186:
-               YYDEBUG(186, *YYCURSOR);
+#line 3241 "Zend/zend_language_scanner.c"
+yy185:
+               YYDEBUG(185, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(187, *YYCURSOR);
+               YYDEBUG(186, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1508 "Zend/zend_language_scanner.l"
+#line 1506 "Zend/zend_language_scanner.l"
                {
        return T_AND_EQUAL;
 }
-#line 3255 "Zend/zend_language_scanner.c"
-yy188:
-               YYDEBUG(188, *YYCURSOR);
+#line 3251 "Zend/zend_language_scanner.c"
+yy187:
+               YYDEBUG(187, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(189, *YYCURSOR);
+               YYDEBUG(188, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1496 "Zend/zend_language_scanner.l"
+#line 1494 "Zend/zend_language_scanner.l"
                {
        return T_MOD_EQUAL;
 }
-#line 3265 "Zend/zend_language_scanner.c"
-yy190:
-               YYDEBUG(190, *YYCURSOR);
+#line 3261 "Zend/zend_language_scanner.c"
+yy189:
+               YYDEBUG(189, *YYCURSOR);
                yyaccept = 4;
                yych = *(YYMARKER = ++YYCURSOR);
-               if (yych == '*') goto yy195;
-yy191:
-               YYDEBUG(191, *YYCURSOR);
+               if (yych == '*') goto yy194;
+yy190:
+               YYDEBUG(190, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1893 "Zend/zend_language_scanner.l"
+#line 1891 "Zend/zend_language_scanner.l"
                {
        int doc_com;
 
@@ -3303,262 +3299,262 @@ yy191:
 
        return T_COMMENT;
 }
-#line 3307 "Zend/zend_language_scanner.c"
+#line 3303 "Zend/zend_language_scanner.c"
+yy191:
+               YYDEBUG(191, *YYCURSOR);
+               yych = *++YYCURSOR;
+               goto yy140;
 yy192:
                YYDEBUG(192, *YYCURSOR);
-               yych = *++YYCURSOR;
-               goto yy141;
-yy193:
-               YYDEBUG(193, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(194, *YYCURSOR);
+               YYDEBUG(193, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1488 "Zend/zend_language_scanner.l"
+#line 1486 "Zend/zend_language_scanner.l"
                {
        return T_DIV_EQUAL;
 }
-#line 3321 "Zend/zend_language_scanner.c"
-yy195:
-               YYDEBUG(195, *YYCURSOR);
+#line 3317 "Zend/zend_language_scanner.c"
+yy194:
+               YYDEBUG(194, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yybm[0+yych] & 64) {
-                       goto yy196;
+                       goto yy195;
                }
-               goto yy158;
-yy196:
-               YYDEBUG(196, *YYCURSOR);
+               goto yy157;
+yy195:
+               YYDEBUG(195, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(197, *YYCURSOR);
+               YYDEBUG(196, *YYCURSOR);
                if (yybm[0+yych] & 64) {
-                       goto yy196;
+                       goto yy195;
                }
-               goto yy191;
-yy198:
-               YYDEBUG(198, *YYCURSOR);
+               goto yy190;
+yy197:
+               YYDEBUG(197, *YYCURSOR);
                ++YYCURSOR;
-               if ((yych = *YYCURSOR) == '=') goto yy202;
-               YYDEBUG(199, *YYCURSOR);
+               if ((yych = *YYCURSOR) == '=') goto yy201;
+               YYDEBUG(198, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1480 "Zend/zend_language_scanner.l"
+#line 1478 "Zend/zend_language_scanner.l"
                {
        return T_POW;
 }
-#line 3349 "Zend/zend_language_scanner.c"
-yy200:
-               YYDEBUG(200, *YYCURSOR);
+#line 3345 "Zend/zend_language_scanner.c"
+yy199:
+               YYDEBUG(199, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(201, *YYCURSOR);
+               YYDEBUG(200, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1476 "Zend/zend_language_scanner.l"
+#line 1474 "Zend/zend_language_scanner.l"
                {
        return T_MUL_EQUAL;
 }
-#line 3359 "Zend/zend_language_scanner.c"
-yy202:
-               YYDEBUG(202, *YYCURSOR);
+#line 3355 "Zend/zend_language_scanner.c"
+yy201:
+               YYDEBUG(201, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(203, *YYCURSOR);
+               YYDEBUG(202, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1484 "Zend/zend_language_scanner.l"
+#line 1482 "Zend/zend_language_scanner.l"
                {
        return T_POW_EQUAL;
 }
-#line 3369 "Zend/zend_language_scanner.c"
-yy204:
-               YYDEBUG(204, *YYCURSOR);
+#line 3365 "Zend/zend_language_scanner.c"
+yy203:
+               YYDEBUG(203, *YYCURSOR);
                ++YYCURSOR;
-               if ((yych = *YYCURSOR) == '=') goto yy208;
-               YYDEBUG(205, *YYCURSOR);
+               if ((yych = *YYCURSOR) == '=') goto yy207;
+               YYDEBUG(204, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1544 "Zend/zend_language_scanner.l"
+#line 1542 "Zend/zend_language_scanner.l"
                {
        return T_SR;
 }
-#line 3380 "Zend/zend_language_scanner.c"
-yy206:
-               YYDEBUG(206, *YYCURSOR);
+#line 3376 "Zend/zend_language_scanner.c"
+yy205:
+               YYDEBUG(205, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(207, *YYCURSOR);
+               YYDEBUG(206, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1464 "Zend/zend_language_scanner.l"
+#line 1462 "Zend/zend_language_scanner.l"
                {
        return T_IS_GREATER_OR_EQUAL;
 }
-#line 3390 "Zend/zend_language_scanner.c"
-yy208:
-               YYDEBUG(208, *YYCURSOR);
+#line 3386 "Zend/zend_language_scanner.c"
+yy207:
+               YYDEBUG(207, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(209, *YYCURSOR);
+               YYDEBUG(208, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1504 "Zend/zend_language_scanner.l"
+#line 1502 "Zend/zend_language_scanner.l"
                {
        return T_SR_EQUAL;
 }
-#line 3400 "Zend/zend_language_scanner.c"
-yy210:
-               YYDEBUG(210, *YYCURSOR);
+#line 3396 "Zend/zend_language_scanner.c"
+yy209:
+               YYDEBUG(209, *YYCURSOR);
                yyaccept = 5;
                yych = *(YYMARKER = ++YYCURSOR);
-               if (yych <= ';') goto yy211;
-               if (yych <= '<') goto yy220;
-               if (yych <= '=') goto yy218;
-yy211:
-               YYDEBUG(211, *YYCURSOR);
+               if (yych <= ';') goto yy210;
+               if (yych <= '<') goto yy219;
+               if (yych <= '=') goto yy217;
+yy210:
+               YYDEBUG(210, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1540 "Zend/zend_language_scanner.l"
+#line 1538 "Zend/zend_language_scanner.l"
                {
        return T_SL;
 }
-#line 3415 "Zend/zend_language_scanner.c"
-yy212:
-               YYDEBUG(212, *YYCURSOR);
+#line 3411 "Zend/zend_language_scanner.c"
+yy211:
+               YYDEBUG(211, *YYCURSOR);
                ++YYCURSOR;
-               if ((yych = *YYCURSOR) == '>') goto yy216;
-               YYDEBUG(213, *YYCURSOR);
+               if ((yych = *YYCURSOR) == '>') goto yy215;
+               YYDEBUG(212, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1460 "Zend/zend_language_scanner.l"
+#line 1458 "Zend/zend_language_scanner.l"
                {
        return T_IS_SMALLER_OR_EQUAL;
 }
-#line 3426 "Zend/zend_language_scanner.c"
+#line 3422 "Zend/zend_language_scanner.c"
+yy213:
+               YYDEBUG(213, *YYCURSOR);
+               ++YYCURSOR;
 yy214:
                YYDEBUG(214, *YYCURSOR);
-               ++YYCURSOR;
-yy215:
-               YYDEBUG(215, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1452 "Zend/zend_language_scanner.l"
+#line 1450 "Zend/zend_language_scanner.l"
                {
        return T_IS_NOT_EQUAL;
 }
-#line 3437 "Zend/zend_language_scanner.c"
-yy216:
-               YYDEBUG(216, *YYCURSOR);
+#line 3433 "Zend/zend_language_scanner.c"
+yy215:
+               YYDEBUG(215, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(217, *YYCURSOR);
+               YYDEBUG(216, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1456 "Zend/zend_language_scanner.l"
+#line 1454 "Zend/zend_language_scanner.l"
                {
        return T_SPACESHIP;
 }
-#line 3447 "Zend/zend_language_scanner.c"
-yy218:
-               YYDEBUG(218, *YYCURSOR);
+#line 3443 "Zend/zend_language_scanner.c"
+yy217:
+               YYDEBUG(217, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(219, *YYCURSOR);
+               YYDEBUG(218, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1500 "Zend/zend_language_scanner.l"
+#line 1498 "Zend/zend_language_scanner.l"
                {
        return T_SL_EQUAL;
 }
-#line 3457 "Zend/zend_language_scanner.c"
-yy220:
-               YYDEBUG(220, *YYCURSOR);
+#line 3453 "Zend/zend_language_scanner.c"
+yy219:
+               YYDEBUG(219, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(2);
                yych = *YYCURSOR;
-               YYDEBUG(221, *YYCURSOR);
+               YYDEBUG(220, *YYCURSOR);
                if (yybm[0+yych] & 128) {
-                       goto yy220;
+                       goto yy219;
                }
                if (yych <= 'Z') {
                        if (yych <= '&') {
-                               if (yych == '"') goto yy225;
-                               goto yy158;
+                               if (yych == '"') goto yy224;
+                               goto yy157;
                        } else {
-                               if (yych <= '\'') goto yy224;
-                               if (yych <= '@') goto yy158;
+                               if (yych <= '\'') goto yy223;
+                               if (yych <= '@') goto yy157;
                        }
                } else {
                        if (yych <= '`') {
-                               if (yych != '_') goto yy158;
+                               if (yych != '_') goto yy157;
                        } else {
-                               if (yych <= 'z') goto yy222;
-                               if (yych <= '~') goto yy158;
+                               if (yych <= 'z') goto yy221;
+                               if (yych <= '~') goto yy157;
                        }
                }
-yy222:
-               YYDEBUG(222, *YYCURSOR);
+yy221:
+               YYDEBUG(221, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(2);
                yych = *YYCURSOR;
-               YYDEBUG(223, *YYCURSOR);
+               YYDEBUG(222, *YYCURSOR);
                if (yych <= '@') {
                        if (yych <= '\f') {
-                               if (yych == '\n') goto yy229;
-                               goto yy158;
+                               if (yych == '\n') goto yy228;
+                               goto yy157;
                        } else {
-                               if (yych <= '\r') goto yy231;
-                               if (yych <= '/') goto yy158;
-                               if (yych <= '9') goto yy222;
-                               goto yy158;
+                               if (yych <= '\r') goto yy230;
+                               if (yych <= '/') goto yy157;
+                               if (yych <= '9') goto yy221;
+                               goto yy157;
                        }
                } else {
                        if (yych <= '_') {
-                               if (yych <= 'Z') goto yy222;
-                               if (yych <= '^') goto yy158;
-                               goto yy222;
+                               if (yych <= 'Z') goto yy221;
+                               if (yych <= '^') goto yy157;
+                               goto yy221;
                        } else {
-                               if (yych <= '`') goto yy158;
-                               if (yych <= 'z') goto yy222;
-                               if (yych <= '~') goto yy158;
-                               goto yy222;
+                               if (yych <= '`') goto yy157;
+                               if (yych <= 'z') goto yy221;
+                               if (yych <= '~') goto yy157;
+                               goto yy221;
                        }
                }
+yy223:
+               YYDEBUG(223, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '\'') goto yy157;
+               if (yych <= '/') goto yy232;
+               if (yych <= '9') goto yy157;
+               goto yy232;
 yy224:
                YYDEBUG(224, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == '\'') goto yy158;
-               if (yych <= '/') goto yy233;
-               if (yych <= '9') goto yy158;
-               goto yy233;
+               if (yych == '"') goto yy157;
+               if (yych <= '/') goto yy226;
+               if (yych <= '9') goto yy157;
+               goto yy226;
 yy225:
                YYDEBUG(225, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '"') goto yy158;
-               if (yych <= '/') goto yy227;
-               if (yych <= '9') goto yy158;
-               goto yy227;
-yy226:
-               YYDEBUG(226, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(3);
                yych = *YYCURSOR;
-yy227:
-               YYDEBUG(227, *YYCURSOR);
+yy226:
+               YYDEBUG(226, *YYCURSOR);
                if (yych <= 'Z') {
                        if (yych <= '/') {
-                               if (yych != '"') goto yy158;
+                               if (yych != '"') goto yy157;
                        } else {
-                               if (yych <= '9') goto yy226;
-                               if (yych <= '@') goto yy158;
-                               goto yy226;
+                               if (yych <= '9') goto yy225;
+                               if (yych <= '@') goto yy157;
+                               goto yy225;
                        }
                } else {
                        if (yych <= '`') {
-                               if (yych == '_') goto yy226;
-                               goto yy158;
+                               if (yych == '_') goto yy225;
+                               goto yy157;
                        } else {
-                               if (yych <= 'z') goto yy226;
-                               if (yych <= '~') goto yy158;
-                               goto yy226;
+                               if (yych <= 'z') goto yy225;
+                               if (yych <= '~') goto yy157;
+                               goto yy225;
                        }
                }
+yy227:
+               YYDEBUG(227, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '\n') goto yy228;
+               if (yych == '\r') goto yy230;
+               goto yy157;
 yy228:
                YYDEBUG(228, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '\n') goto yy229;
-               if (yych == '\r') goto yy231;
-               goto yy158;
+               ++YYCURSOR;
 yy229:
                YYDEBUG(229, *YYCURSOR);
-               ++YYCURSOR;
-yy230:
-               YYDEBUG(230, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2043 "Zend/zend_language_scanner.l"
+#line 2041 "Zend/zend_language_scanner.l"
                {
        char *s;
        int bprefix = (yytext[0] != '<') ? 1 : 0;
@@ -3605,3272 +3601,3272 @@ yy230:
 
        return T_START_HEREDOC;
 }
-#line 3609 "Zend/zend_language_scanner.c"
+#line 3605 "Zend/zend_language_scanner.c"
+yy230:
+               YYDEBUG(230, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '\n') goto yy228;
+               goto yy229;
 yy231:
                YYDEBUG(231, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '\n') goto yy229;
-               goto yy230;
-yy232:
-               YYDEBUG(232, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(3);
                yych = *YYCURSOR;
-yy233:
-               YYDEBUG(233, *YYCURSOR);
+yy232:
+               YYDEBUG(232, *YYCURSOR);
                if (yych <= 'Z') {
                        if (yych <= '/') {
-                               if (yych == '\'') goto yy228;
-                               goto yy158;
+                               if (yych == '\'') goto yy227;
+                               goto yy157;
                        } else {
-                               if (yych <= '9') goto yy232;
-                               if (yych <= '@') goto yy158;
-                               goto yy232;
+                               if (yych <= '9') goto yy231;
+                               if (yych <= '@') goto yy157;
+                               goto yy231;
                        }
                } else {
                        if (yych <= '`') {
-                               if (yych == '_') goto yy232;
-                               goto yy158;
+                               if (yych == '_') goto yy231;
+                               goto yy157;
                        } else {
-                               if (yych <= 'z') goto yy232;
-                               if (yych <= '~') goto yy158;
-                               goto yy232;
+                               if (yych <= 'z') goto yy231;
+                               if (yych <= '~') goto yy157;
+                               goto yy231;
                        }
                }
-yy234:
-               YYDEBUG(234, *YYCURSOR);
+yy233:
+               YYDEBUG(233, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych != '=') goto yy215;
-               YYDEBUG(235, *YYCURSOR);
+               if (yych != '=') goto yy214;
+               YYDEBUG(234, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(236, *YYCURSOR);
+               YYDEBUG(235, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1444 "Zend/zend_language_scanner.l"
+#line 1442 "Zend/zend_language_scanner.l"
                {
        return T_IS_NOT_IDENTICAL;
 }
-#line 3653 "Zend/zend_language_scanner.c"
-yy237:
-               YYDEBUG(237, *YYCURSOR);
+#line 3649 "Zend/zend_language_scanner.c"
+yy236:
+               YYDEBUG(236, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(238, *YYCURSOR);
+               YYDEBUG(237, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1468 "Zend/zend_language_scanner.l"
+#line 1466 "Zend/zend_language_scanner.l"
                {
        return T_PLUS_EQUAL;
 }
-#line 3663 "Zend/zend_language_scanner.c"
-yy239:
-               YYDEBUG(239, *YYCURSOR);
+#line 3659 "Zend/zend_language_scanner.c"
+yy238:
+               YYDEBUG(238, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(240, *YYCURSOR);
+               YYDEBUG(239, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1432 "Zend/zend_language_scanner.l"
+#line 1430 "Zend/zend_language_scanner.l"
                {
        return T_INC;
 }
-#line 3673 "Zend/zend_language_scanner.c"
+#line 3669 "Zend/zend_language_scanner.c"
+yy240:
+               YYDEBUG(240, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'S') goto yy241;
+               if (yych != 's') goto yy150;
 yy241:
                YYDEBUG(241, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'S') goto yy242;
-               if (yych != 's') goto yy151;
+               if (yych == 'T') goto yy242;
+               if (yych != 't') goto yy150;
 yy242:
                YYDEBUG(242, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy243;
-               if (yych != 't') goto yy151;
-yy243:
-               YYDEBUG(243, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(244, *YYCURSOR);
+               YYDEBUG(243, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1420 "Zend/zend_language_scanner.l"
+#line 1418 "Zend/zend_language_scanner.l"
                {
        return T_LIST;
 }
-#line 3696 "Zend/zend_language_scanner.c"
-yy245:
-               YYDEBUG(245, *YYCURSOR);
+#line 3692 "Zend/zend_language_scanner.c"
+yy244:
+               YYDEBUG(244, *YYCURSOR);
                ++YYCURSOR;
-               if ((yych = *YYCURSOR) == '=') goto yy249;
-               YYDEBUG(246, *YYCURSOR);
+               if ((yych = *YYCURSOR) == '=') goto yy248;
+               YYDEBUG(245, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1448 "Zend/zend_language_scanner.l"
+#line 1446 "Zend/zend_language_scanner.l"
                {
        return T_IS_EQUAL;
 }
-#line 3707 "Zend/zend_language_scanner.c"
-yy247:
-               YYDEBUG(247, *YYCURSOR);
+#line 3703 "Zend/zend_language_scanner.c"
+yy246:
+               YYDEBUG(246, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(248, *YYCURSOR);
+               YYDEBUG(247, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1416 "Zend/zend_language_scanner.l"
+#line 1414 "Zend/zend_language_scanner.l"
                {
        return T_DOUBLE_ARROW;
 }
-#line 3717 "Zend/zend_language_scanner.c"
-yy249:
-               YYDEBUG(249, *YYCURSOR);
+#line 3713 "Zend/zend_language_scanner.c"
+yy248:
+               YYDEBUG(248, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(250, *YYCURSOR);
+               YYDEBUG(249, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1440 "Zend/zend_language_scanner.l"
+#line 1438 "Zend/zend_language_scanner.l"
                {
        return T_IS_IDENTICAL;
 }
-#line 3727 "Zend/zend_language_scanner.c"
-yy251:
-               YYDEBUG(251, *YYCURSOR);
+#line 3723 "Zend/zend_language_scanner.c"
+yy250:
+               YYDEBUG(250, *YYCURSOR);
                yych = *++YYCURSOR;
                YYDEBUG(-1, yych);
                switch (yych) {
                case 'C':
-               case 'c':       goto yy253;
+               case 'c':       goto yy252;
                case 'D':
-               case 'd':       goto yy258;
+               case 'd':       goto yy257;
                case 'F':
-               case 'f':       goto yy255;
+               case 'f':       goto yy254;
                case 'H':
-               case 'h':       goto yy252;
+               case 'h':       goto yy251;
                case 'L':
-               case 'l':       goto yy257;
+               case 'l':       goto yy256;
                case 'M':
-               case 'm':       goto yy256;
+               case 'm':       goto yy255;
                case 'N':
-               case 'n':       goto yy259;
+               case 'n':       goto yy258;
                case 'T':
-               case 't':       goto yy254;
-               default:        goto yy151;
+               case 't':       goto yy253;
+               default:        goto yy150;
                }
+yy251:
+               YYDEBUG(251, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'A') goto yy319;
+               if (yych == 'a') goto yy319;
+               goto yy150;
 yy252:
                YYDEBUG(252, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy320;
-               if (yych == 'a') goto yy320;
-               goto yy151;
+               if (yych == 'L') goto yy312;
+               if (yych == 'l') goto yy312;
+               goto yy150;
 yy253:
                YYDEBUG(253, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy313;
-               if (yych == 'l') goto yy313;
-               goto yy151;
+               if (yych == 'R') goto yy305;
+               if (yych == 'r') goto yy305;
+               goto yy150;
 yy254:
                YYDEBUG(254, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy306;
-               if (yych == 'r') goto yy306;
-               goto yy151;
-yy255:
-               YYDEBUG(255, *YYCURSOR);
-               yych = *++YYCURSOR;
                if (yych <= 'U') {
-                       if (yych == 'I') goto yy290;
-                       if (yych <= 'T') goto yy151;
-                       goto yy291;
+                       if (yych == 'I') goto yy289;
+                       if (yych <= 'T') goto yy150;
+                       goto yy290;
                } else {
                        if (yych <= 'i') {
-                               if (yych <= 'h') goto yy151;
-                               goto yy290;
+                               if (yych <= 'h') goto yy150;
+                               goto yy289;
                        } else {
-                               if (yych == 'u') goto yy291;
-                               goto yy151;
+                               if (yych == 'u') goto yy290;
+                               goto yy150;
                        }
                }
+yy255:
+               YYDEBUG(255, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy281;
+               if (yych == 'e') goto yy281;
+               goto yy150;
 yy256:
                YYDEBUG(256, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy282;
-               if (yych == 'e') goto yy282;
-               goto yy151;
+               if (yych == 'I') goto yy275;
+               if (yych == 'i') goto yy275;
+               goto yy150;
 yy257:
                YYDEBUG(257, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy276;
-               if (yych == 'i') goto yy276;
-               goto yy151;
+               if (yych == 'I') goto yy270;
+               if (yych == 'i') goto yy270;
+               goto yy150;
 yy258:
                YYDEBUG(258, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy271;
-               if (yych == 'i') goto yy271;
-               goto yy151;
+               if (yych == 'A') goto yy259;
+               if (yych != 'a') goto yy150;
 yy259:
                YYDEBUG(259, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy260;
-               if (yych != 'a') goto yy151;
+               if (yych == 'M') goto yy260;
+               if (yych != 'm') goto yy150;
 yy260:
                YYDEBUG(260, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'M') goto yy261;
-               if (yych != 'm') goto yy151;
+               if (yych == 'E') goto yy261;
+               if (yych != 'e') goto yy150;
 yy261:
                YYDEBUG(261, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy262;
-               if (yych != 'e') goto yy151;
+               if (yych == 'S') goto yy262;
+               if (yych != 's') goto yy150;
 yy262:
                YYDEBUG(262, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'S') goto yy263;
-               if (yych != 's') goto yy151;
+               if (yych == 'P') goto yy263;
+               if (yych != 'p') goto yy150;
 yy263:
                YYDEBUG(263, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'P') goto yy264;
-               if (yych != 'p') goto yy151;
+               if (yych == 'A') goto yy264;
+               if (yych != 'a') goto yy150;
 yy264:
                YYDEBUG(264, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy265;
-               if (yych != 'a') goto yy151;
+               if (yych == 'C') goto yy265;
+               if (yych != 'c') goto yy150;
 yy265:
                YYDEBUG(265, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy266;
-               if (yych != 'c') goto yy151;
+               if (yych == 'E') goto yy266;
+               if (yych != 'e') goto yy150;
 yy266:
                YYDEBUG(266, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy267;
-               if (yych != 'e') goto yy151;
-yy267:
+               if (yych != '_') goto yy150;
                YYDEBUG(267, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych != '_') goto yy151;
+               if (yych != '_') goto yy150;
                YYDEBUG(268, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych != '_') goto yy151;
-               YYDEBUG(269, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(270, *YYCURSOR);
+               YYDEBUG(269, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1743 "Zend/zend_language_scanner.l"
+#line 1741 "Zend/zend_language_scanner.l"
                {
        return T_NS_C;
 }
-#line 3861 "Zend/zend_language_scanner.c"
+#line 3857 "Zend/zend_language_scanner.c"
+yy270:
+               YYDEBUG(270, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'R') goto yy271;
+               if (yych != 'r') goto yy150;
 yy271:
                YYDEBUG(271, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy272;
-               if (yych != 'r') goto yy151;
-yy272:
+               if (yych != '_') goto yy150;
                YYDEBUG(272, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych != '_') goto yy151;
+               if (yych != '_') goto yy150;
                YYDEBUG(273, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych != '_') goto yy151;
-               YYDEBUG(274, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(275, *YYCURSOR);
+               YYDEBUG(274, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1739 "Zend/zend_language_scanner.l"
+#line 1737 "Zend/zend_language_scanner.l"
                {
        return T_DIR;
 }
-#line 3885 "Zend/zend_language_scanner.c"
+#line 3881 "Zend/zend_language_scanner.c"
+yy275:
+               YYDEBUG(275, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'N') goto yy276;
+               if (yych != 'n') goto yy150;
 yy276:
                YYDEBUG(276, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy277;
-               if (yych != 'n') goto yy151;
+               if (yych == 'E') goto yy277;
+               if (yych != 'e') goto yy150;
 yy277:
                YYDEBUG(277, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy278;
-               if (yych != 'e') goto yy151;
-yy278:
+               if (yych != '_') goto yy150;
                YYDEBUG(278, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych != '_') goto yy151;
+               if (yych != '_') goto yy150;
                YYDEBUG(279, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych != '_') goto yy151;
-               YYDEBUG(280, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(281, *YYCURSOR);
+               YYDEBUG(280, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1731 "Zend/zend_language_scanner.l"
+#line 1729 "Zend/zend_language_scanner.l"
                {
        return T_LINE;
 }
-#line 3914 "Zend/zend_language_scanner.c"
+#line 3910 "Zend/zend_language_scanner.c"
+yy281:
+               YYDEBUG(281, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy282;
+               if (yych != 't') goto yy150;
 yy282:
                YYDEBUG(282, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy283;
-               if (yych != 't') goto yy151;
+               if (yych == 'H') goto yy283;
+               if (yych != 'h') goto yy150;
 yy283:
                YYDEBUG(283, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'H') goto yy284;
-               if (yych != 'h') goto yy151;
+               if (yych == 'O') goto yy284;
+               if (yych != 'o') goto yy150;
 yy284:
                YYDEBUG(284, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy285;
-               if (yych != 'o') goto yy151;
+               if (yych == 'D') goto yy285;
+               if (yych != 'd') goto yy150;
 yy285:
                YYDEBUG(285, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'D') goto yy286;
-               if (yych != 'd') goto yy151;
-yy286:
+               if (yych != '_') goto yy150;
                YYDEBUG(286, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych != '_') goto yy151;
+               if (yych != '_') goto yy150;
                YYDEBUG(287, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych != '_') goto yy151;
-               YYDEBUG(288, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(289, *YYCURSOR);
+               YYDEBUG(288, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1727 "Zend/zend_language_scanner.l"
+#line 1725 "Zend/zend_language_scanner.l"
                {
        return T_METHOD_C;
 }
-#line 3953 "Zend/zend_language_scanner.c"
+#line 3949 "Zend/zend_language_scanner.c"
+yy289:
+               YYDEBUG(289, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'L') goto yy300;
+               if (yych == 'l') goto yy300;
+               goto yy150;
 yy290:
                YYDEBUG(290, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy301;
-               if (yych == 'l') goto yy301;
-               goto yy151;
+               if (yych == 'N') goto yy291;
+               if (yych != 'n') goto yy150;
 yy291:
                YYDEBUG(291, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy292;
-               if (yych != 'n') goto yy151;
+               if (yych == 'C') goto yy292;
+               if (yych != 'c') goto yy150;
 yy292:
                YYDEBUG(292, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy293;
-               if (yych != 'c') goto yy151;
+               if (yych == 'T') goto yy293;
+               if (yych != 't') goto yy150;
 yy293:
                YYDEBUG(293, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy294;
-               if (yych != 't') goto yy151;
+               if (yych == 'I') goto yy294;
+               if (yych != 'i') goto yy150;
 yy294:
                YYDEBUG(294, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy295;
-               if (yych != 'i') goto yy151;
+               if (yych == 'O') goto yy295;
+               if (yych != 'o') goto yy150;
 yy295:
                YYDEBUG(295, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy296;
-               if (yych != 'o') goto yy151;
+               if (yych == 'N') goto yy296;
+               if (yych != 'n') goto yy150;
 yy296:
                YYDEBUG(296, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy297;
-               if (yych != 'n') goto yy151;
-yy297:
+               if (yych != '_') goto yy150;
                YYDEBUG(297, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych != '_') goto yy151;
+               if (yych != '_') goto yy150;
                YYDEBUG(298, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych != '_') goto yy151;
-               YYDEBUG(299, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(300, *YYCURSOR);
+               YYDEBUG(299, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1723 "Zend/zend_language_scanner.l"
+#line 1721 "Zend/zend_language_scanner.l"
                {
        return T_FUNC_C;
 }
-#line 4008 "Zend/zend_language_scanner.c"
+#line 4004 "Zend/zend_language_scanner.c"
+yy300:
+               YYDEBUG(300, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy301;
+               if (yych != 'e') goto yy150;
 yy301:
                YYDEBUG(301, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy302;
-               if (yych != 'e') goto yy151;
-yy302:
+               if (yych != '_') goto yy150;
                YYDEBUG(302, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych != '_') goto yy151;
+               if (yych != '_') goto yy150;
                YYDEBUG(303, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych != '_') goto yy151;
-               YYDEBUG(304, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(305, *YYCURSOR);
+               YYDEBUG(304, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1735 "Zend/zend_language_scanner.l"
+#line 1733 "Zend/zend_language_scanner.l"
                {
        return T_FILE;
 }
-#line 4032 "Zend/zend_language_scanner.c"
+#line 4028 "Zend/zend_language_scanner.c"
+yy305:
+               YYDEBUG(305, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'A') goto yy306;
+               if (yych != 'a') goto yy150;
 yy306:
                YYDEBUG(306, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy307;
-               if (yych != 'a') goto yy151;
+               if (yych == 'I') goto yy307;
+               if (yych != 'i') goto yy150;
 yy307:
                YYDEBUG(307, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy308;
-               if (yych != 'i') goto yy151;
+               if (yych == 'T') goto yy308;
+               if (yych != 't') goto yy150;
 yy308:
                YYDEBUG(308, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy309;
-               if (yych != 't') goto yy151;
-yy309:
+               if (yych != '_') goto yy150;
                YYDEBUG(309, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych != '_') goto yy151;
+               if (yych != '_') goto yy150;
                YYDEBUG(310, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych != '_') goto yy151;
-               YYDEBUG(311, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(312, *YYCURSOR);
+               YYDEBUG(311, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1719 "Zend/zend_language_scanner.l"
+#line 1717 "Zend/zend_language_scanner.l"
                {
        return T_TRAIT_C;
 }
-#line 4066 "Zend/zend_language_scanner.c"
+#line 4062 "Zend/zend_language_scanner.c"
+yy312:
+               YYDEBUG(312, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'A') goto yy313;
+               if (yych != 'a') goto yy150;
 yy313:
                YYDEBUG(313, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy314;
-               if (yych != 'a') goto yy151;
+               if (yych == 'S') goto yy314;
+               if (yych != 's') goto yy150;
 yy314:
                YYDEBUG(314, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych == 'S') goto yy315;
-               if (yych != 's') goto yy151;
+               if (yych != 's') goto yy150;
 yy315:
                YYDEBUG(315, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'S') goto yy316;
-               if (yych != 's') goto yy151;
-yy316:
+               if (yych != '_') goto yy150;
                YYDEBUG(316, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych != '_') goto yy151;
+               if (yych != '_') goto yy150;
                YYDEBUG(317, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych != '_') goto yy151;
-               YYDEBUG(318, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(319, *YYCURSOR);
+               YYDEBUG(318, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1715 "Zend/zend_language_scanner.l"
+#line 1713 "Zend/zend_language_scanner.l"
                {
        return T_CLASS_C;
 }
-#line 4100 "Zend/zend_language_scanner.c"
+#line 4096 "Zend/zend_language_scanner.c"
+yy319:
+               YYDEBUG(319, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'L') goto yy320;
+               if (yych != 'l') goto yy150;
 yy320:
                YYDEBUG(320, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy321;
-               if (yych != 'l') goto yy151;
+               if (yych == 'T') goto yy321;
+               if (yych != 't') goto yy150;
 yy321:
                YYDEBUG(321, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy322;
-               if (yych != 't') goto yy151;
-yy322:
+               if (yych != '_') goto yy150;
                YYDEBUG(322, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych != '_') goto yy151;
+               if (yych == 'C') goto yy323;
+               if (yych != 'c') goto yy150;
+yy323:
                YYDEBUG(323, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy324;
-               if (yych != 'c') goto yy151;
+               if (yych == 'O') goto yy324;
+               if (yych != 'o') goto yy150;
 yy324:
                YYDEBUG(324, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy325;
-               if (yych != 'o') goto yy151;
+               if (yych == 'M') goto yy325;
+               if (yych != 'm') goto yy150;
 yy325:
                YYDEBUG(325, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'M') goto yy326;
-               if (yych != 'm') goto yy151;
+               if (yych == 'P') goto yy326;
+               if (yych != 'p') goto yy150;
 yy326:
                YYDEBUG(326, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'P') goto yy327;
-               if (yych != 'p') goto yy151;
+               if (yych == 'I') goto yy327;
+               if (yych != 'i') goto yy150;
 yy327:
                YYDEBUG(327, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy328;
-               if (yych != 'i') goto yy151;
+               if (yych == 'L') goto yy328;
+               if (yych != 'l') goto yy150;
 yy328:
                YYDEBUG(328, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy329;
-               if (yych != 'l') goto yy151;
+               if (yych == 'E') goto yy329;
+               if (yych != 'e') goto yy150;
 yy329:
                YYDEBUG(329, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy330;
-               if (yych != 'e') goto yy151;
+               if (yych == 'R') goto yy330;
+               if (yych != 'r') goto yy150;
 yy330:
                YYDEBUG(330, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'R') goto yy331;
-               if (yych != 'r') goto yy151;
-yy331:
-               YYDEBUG(331, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(332, *YYCURSOR);
+               YYDEBUG(331, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1384 "Zend/zend_language_scanner.l"
+#line 1382 "Zend/zend_language_scanner.l"
                {
        return T_HALT_COMPILER;
 }
-#line 4166 "Zend/zend_language_scanner.c"
+#line 4162 "Zend/zend_language_scanner.c"
+yy332:
+               YYDEBUG(332, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'S') goto yy336;
+               if (yych == 's') goto yy336;
+               goto yy150;
 yy333:
                YYDEBUG(333, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'S') goto yy337;
-               if (yych == 's') goto yy337;
-               goto yy151;
+               if (yych == 'E') goto yy334;
+               if (yych != 'e') goto yy150;
 yy334:
                YYDEBUG(334, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy335;
-               if (yych != 'e') goto yy151;
-yy335:
-               YYDEBUG(335, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(336, *YYCURSOR);
+               YYDEBUG(335, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1364 "Zend/zend_language_scanner.l"
+#line 1362 "Zend/zend_language_scanner.l"
                {
        return T_USE;
 }
-#line 4190 "Zend/zend_language_scanner.c"
+#line 4186 "Zend/zend_language_scanner.c"
+yy336:
+               YYDEBUG(336, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy337;
+               if (yych != 'e') goto yy150;
 yy337:
                YYDEBUG(337, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy338;
-               if (yych != 'e') goto yy151;
+               if (yych == 'T') goto yy338;
+               if (yych != 't') goto yy150;
 yy338:
                YYDEBUG(338, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy339;
-               if (yych != 't') goto yy151;
-yy339:
-               YYDEBUG(339, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(340, *YYCURSOR);
+               YYDEBUG(339, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1412 "Zend/zend_language_scanner.l"
+#line 1410 "Zend/zend_language_scanner.l"
                {
        return T_UNSET;
 }
-#line 4213 "Zend/zend_language_scanner.c"
-yy341:
-               YYDEBUG(341, *YYCURSOR);
+#line 4209 "Zend/zend_language_scanner.c"
+yy340:
+               YYDEBUG(340, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(7);
                yych = *YYCURSOR;
-yy342:
-               YYDEBUG(342, *YYCURSOR);
+yy341:
+               YYDEBUG(341, *YYCURSOR);
                if (yych <= 'S') {
                        if (yych <= 'D') {
                                if (yych <= ' ') {
-                                       if (yych == '\t') goto yy341;
-                                       if (yych <= 0x1F) goto yy158;
-                                       goto yy341;
+                                       if (yych == '\t') goto yy340;
+                                       if (yych <= 0x1F) goto yy157;
+                                       goto yy340;
                                } else {
                                        if (yych <= 'A') {
-                                               if (yych <= '@') goto yy158;
-                                               goto yy346;
+                                               if (yych <= '@') goto yy157;
+                                               goto yy345;
                                        } else {
-                                               if (yych <= 'B') goto yy344;
-                                               if (yych <= 'C') goto yy158;
-                                               goto yy349;
+                                               if (yych <= 'B') goto yy343;
+                                               if (yych <= 'C') goto yy157;
+                                               goto yy348;
                                        }
                                }
                        } else {
                                if (yych <= 'I') {
-                                       if (yych == 'F') goto yy350;
-                                       if (yych <= 'H') goto yy158;
-                                       goto yy351;
+                                       if (yych == 'F') goto yy349;
+                                       if (yych <= 'H') goto yy157;
+                                       goto yy350;
                                } else {
                                        if (yych <= 'O') {
-                                               if (yych <= 'N') goto yy158;
-                                               goto yy345;
+                                               if (yych <= 'N') goto yy157;
+                                               goto yy344;
                                        } else {
-                                               if (yych <= 'Q') goto yy158;
-                                               if (yych <= 'R') goto yy348;
-                                               goto yy347;
+                                               if (yych <= 'Q') goto yy157;
+                                               if (yych <= 'R') goto yy347;
+                                               goto yy346;
                                        }
                                }
                        }
                } else {
                        if (yych <= 'f') {
                                if (yych <= 'a') {
-                                       if (yych == 'U') goto yy343;
-                                       if (yych <= '`') goto yy158;
-                                       goto yy346;
+                                       if (yych == 'U') goto yy342;
+                                       if (yych <= '`') goto yy157;
+                                       goto yy345;
                                } else {
                                        if (yych <= 'c') {
-                                               if (yych <= 'b') goto yy344;
-                                               goto yy158;
+                                               if (yych <= 'b') goto yy343;
+                                               goto yy157;
                                        } else {
-                                               if (yych <= 'd') goto yy349;
-                                               if (yych <= 'e') goto yy158;
-                                               goto yy350;
+                                               if (yych <= 'd') goto yy348;
+                                               if (yych <= 'e') goto yy157;
+                                               goto yy349;
                                        }
                                }
                        } else {
                                if (yych <= 'q') {
                                        if (yych <= 'i') {
-                                               if (yych <= 'h') goto yy158;
-                                               goto yy351;
+                                               if (yych <= 'h') goto yy157;
+                                               goto yy350;
                                        } else {
-                                               if (yych == 'o') goto yy345;
-                                               goto yy158;
+                                               if (yych == 'o') goto yy344;
+                                               goto yy157;
                                        }
                                } else {
                                        if (yych <= 's') {
-                                               if (yych <= 'r') goto yy348;
-                                               goto yy347;
+                                               if (yych <= 'r') goto yy347;
+                                               goto yy346;
                                        } else {
-                                               if (yych != 'u') goto yy158;
+                                               if (yych != 'u') goto yy157;
                                        }
                                }
                        }
                }
+yy342:
+               YYDEBUG(342, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'N') goto yy409;
+               if (yych == 'n') goto yy409;
+               goto yy157;
 yy343:
                YYDEBUG(343, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy410;
-               if (yych == 'n') goto yy410;
-               goto yy158;
-yy344:
-               YYDEBUG(344, *YYCURSOR);
-               yych = *++YYCURSOR;
                if (yych <= 'O') {
-                       if (yych == 'I') goto yy397;
-                       if (yych <= 'N') goto yy158;
-                       goto yy398;
+                       if (yych == 'I') goto yy396;
+                       if (yych <= 'N') goto yy157;
+                       goto yy397;
                } else {
                        if (yych <= 'i') {
-                               if (yych <= 'h') goto yy158;
-                               goto yy397;
+                               if (yych <= 'h') goto yy157;
+                               goto yy396;
                        } else {
-                               if (yych == 'o') goto yy398;
-                               goto yy158;
+                               if (yych == 'o') goto yy397;
+                               goto yy157;
                        }
                }
+yy344:
+               YYDEBUG(344, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'B') goto yy388;
+               if (yych == 'b') goto yy388;
+               goto yy157;
 yy345:
                YYDEBUG(345, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'B') goto yy389;
-               if (yych == 'b') goto yy389;
-               goto yy158;
+               if (yych == 'R') goto yy381;
+               if (yych == 'r') goto yy381;
+               goto yy157;
 yy346:
                YYDEBUG(346, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy382;
-               if (yych == 'r') goto yy382;
-               goto yy158;
+               if (yych == 'T') goto yy373;
+               if (yych == 't') goto yy373;
+               goto yy157;
 yy347:
                YYDEBUG(347, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy374;
-               if (yych == 't') goto yy374;
-               goto yy158;
+               if (yych == 'E') goto yy371;
+               if (yych == 'e') goto yy371;
+               goto yy157;
 yy348:
                YYDEBUG(348, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy372;
-               if (yych == 'e') goto yy372;
-               goto yy158;
+               if (yych == 'O') goto yy367;
+               if (yych == 'o') goto yy367;
+               goto yy157;
 yy349:
                YYDEBUG(349, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy368;
-               if (yych == 'o') goto yy368;
-               goto yy158;
+               if (yych == 'L') goto yy360;
+               if (yych == 'l') goto yy360;
+               goto yy157;
 yy350:
                YYDEBUG(350, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy361;
-               if (yych == 'l') goto yy361;
-               goto yy158;
+               if (yych == 'N') goto yy351;
+               if (yych != 'n') goto yy157;
 yy351:
                YYDEBUG(351, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy352;
-               if (yych != 'n') goto yy158;
+               if (yych == 'T') goto yy352;
+               if (yych != 't') goto yy157;
 yy352:
                YYDEBUG(352, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy353;
-               if (yych != 't') goto yy158;
+               if (yych == 'E') goto yy353;
+               if (yych != 'e') goto yy355;
 yy353:
                YYDEBUG(353, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy354;
-               if (yych != 'e') goto yy356;
+               if (yych == 'G') goto yy358;
+               if (yych == 'g') goto yy358;
+               goto yy157;
 yy354:
                YYDEBUG(354, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'G') goto yy359;
-               if (yych == 'g') goto yy359;
-               goto yy158;
-yy355:
-               YYDEBUG(355, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-yy356:
-               YYDEBUG(356, *YYCURSOR);
+yy355:
+               YYDEBUG(355, *YYCURSOR);
                if (yych <= 0x1F) {
-                       if (yych == '\t') goto yy355;
-                       goto yy158;
+                       if (yych == '\t') goto yy354;
+                       goto yy157;
                } else {
-                       if (yych <= ' ') goto yy355;
-                       if (yych != ')') goto yy158;
+                       if (yych <= ' ') goto yy354;
+                       if (yych != ')') goto yy157;
                }
-               YYDEBUG(357, *YYCURSOR);
+               YYDEBUG(356, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(358, *YYCURSOR);
+               YYDEBUG(357, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1312 "Zend/zend_language_scanner.l"
+#line 1310 "Zend/zend_language_scanner.l"
                {
        return T_INT_CAST;
 }
-#line 4389 "Zend/zend_language_scanner.c"
+#line 4385 "Zend/zend_language_scanner.c"
+yy358:
+               YYDEBUG(358, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy359;
+               if (yych != 'e') goto yy157;
 yy359:
                YYDEBUG(359, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy360;
-               if (yych != 'e') goto yy158;
+               if (yych == 'R') goto yy354;
+               if (yych == 'r') goto yy354;
+               goto yy157;
 yy360:
                YYDEBUG(360, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy355;
-               if (yych == 'r') goto yy355;
-               goto yy158;
+               if (yych == 'O') goto yy361;
+               if (yych != 'o') goto yy157;
 yy361:
                YYDEBUG(361, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy362;
-               if (yych != 'o') goto yy158;
+               if (yych == 'A') goto yy362;
+               if (yych != 'a') goto yy157;
 yy362:
                YYDEBUG(362, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy363;
-               if (yych != 'a') goto yy158;
+               if (yych == 'T') goto yy363;
+               if (yych != 't') goto yy157;
 yy363:
                YYDEBUG(363, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy364;
-               if (yych != 't') goto yy158;
-yy364:
-               YYDEBUG(364, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(365, *YYCURSOR);
+               YYDEBUG(364, *YYCURSOR);
                if (yych <= 0x1F) {
-                       if (yych == '\t') goto yy364;
-                       goto yy158;
+                       if (yych == '\t') goto yy363;
+                       goto yy157;
                } else {
-                       if (yych <= ' ') goto yy364;
-                       if (yych != ')') goto yy158;
+                       if (yych <= ' ') goto yy363;
+                       if (yych != ')') goto yy157;
                }
-               YYDEBUG(366, *YYCURSOR);
+               YYDEBUG(365, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(367, *YYCURSOR);
+               YYDEBUG(366, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1316 "Zend/zend_language_scanner.l"
+#line 1314 "Zend/zend_language_scanner.l"
                {
        return T_DOUBLE_CAST;
 }
-#line 4437 "Zend/zend_language_scanner.c"
+#line 4433 "Zend/zend_language_scanner.c"
+yy367:
+               YYDEBUG(367, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'U') goto yy368;
+               if (yych != 'u') goto yy157;
 yy368:
                YYDEBUG(368, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'U') goto yy369;
-               if (yych != 'u') goto yy158;
+               if (yych == 'B') goto yy369;
+               if (yych != 'b') goto yy157;
 yy369:
                YYDEBUG(369, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'B') goto yy370;
-               if (yych != 'b') goto yy158;
+               if (yych == 'L') goto yy370;
+               if (yych != 'l') goto yy157;
 yy370:
                YYDEBUG(370, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy371;
-               if (yych != 'l') goto yy158;
+               if (yych == 'E') goto yy363;
+               if (yych == 'e') goto yy363;
+               goto yy157;
 yy371:
                YYDEBUG(371, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy364;
-               if (yych == 'e') goto yy364;
-               goto yy158;
+               if (yych == 'A') goto yy372;
+               if (yych != 'a') goto yy157;
 yy372:
                YYDEBUG(372, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy373;
-               if (yych != 'a') goto yy158;
+               if (yych == 'L') goto yy363;
+               if (yych == 'l') goto yy363;
+               goto yy157;
 yy373:
                YYDEBUG(373, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy364;
-               if (yych == 'l') goto yy364;
-               goto yy158;
+               if (yych == 'R') goto yy374;
+               if (yych != 'r') goto yy157;
 yy374:
                YYDEBUG(374, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy375;
-               if (yych != 'r') goto yy158;
+               if (yych == 'I') goto yy375;
+               if (yych != 'i') goto yy157;
 yy375:
                YYDEBUG(375, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy376;
-               if (yych != 'i') goto yy158;
+               if (yych == 'N') goto yy376;
+               if (yych != 'n') goto yy157;
 yy376:
                YYDEBUG(376, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy377;
-               if (yych != 'n') goto yy158;
+               if (yych == 'G') goto yy377;
+               if (yych != 'g') goto yy157;
 yy377:
                YYDEBUG(377, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'G') goto yy378;
-               if (yych != 'g') goto yy158;
-yy378:
-               YYDEBUG(378, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(379, *YYCURSOR);
+               YYDEBUG(378, *YYCURSOR);
                if (yych <= 0x1F) {
-                       if (yych == '\t') goto yy378;
-                       goto yy158;
+                       if (yych == '\t') goto yy377;
+                       goto yy157;
                } else {
-                       if (yych <= ' ') goto yy378;
-                       if (yych != ')') goto yy158;
+                       if (yych <= ' ') goto yy377;
+                       if (yych != ')') goto yy157;
                }
-               YYDEBUG(380, *YYCURSOR);
+               YYDEBUG(379, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(381, *YYCURSOR);
+               YYDEBUG(380, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1320 "Zend/zend_language_scanner.l"
+#line 1318 "Zend/zend_language_scanner.l"
                {
        return T_STRING_CAST;
 }
-#line 4511 "Zend/zend_language_scanner.c"
+#line 4507 "Zend/zend_language_scanner.c"
+yy381:
+               YYDEBUG(381, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'R') goto yy382;
+               if (yych != 'r') goto yy157;
 yy382:
                YYDEBUG(382, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy383;
-               if (yych != 'r') goto yy158;
+               if (yych == 'A') goto yy383;
+               if (yych != 'a') goto yy157;
 yy383:
                YYDEBUG(383, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy384;
-               if (yych != 'a') goto yy158;
+               if (yych == 'Y') goto yy384;
+               if (yych != 'y') goto yy157;
 yy384:
                YYDEBUG(384, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'Y') goto yy385;
-               if (yych != 'y') goto yy158;
-yy385:
-               YYDEBUG(385, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(386, *YYCURSOR);
+               YYDEBUG(385, *YYCURSOR);
                if (yych <= 0x1F) {
-                       if (yych == '\t') goto yy385;
-                       goto yy158;
+                       if (yych == '\t') goto yy384;
+                       goto yy157;
                } else {
-                       if (yych <= ' ') goto yy385;
-                       if (yych != ')') goto yy158;
+                       if (yych <= ' ') goto yy384;
+                       if (yych != ')') goto yy157;
                }
-               YYDEBUG(387, *YYCURSOR);
+               YYDEBUG(386, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(388, *YYCURSOR);
+               YYDEBUG(387, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1324 "Zend/zend_language_scanner.l"
+#line 1322 "Zend/zend_language_scanner.l"
                {
        return T_ARRAY_CAST;
 }
-#line 4548 "Zend/zend_language_scanner.c"
+#line 4544 "Zend/zend_language_scanner.c"
+yy388:
+               YYDEBUG(388, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'J') goto yy389;
+               if (yych != 'j') goto yy157;
 yy389:
                YYDEBUG(389, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'J') goto yy390;
-               if (yych != 'j') goto yy158;
+               if (yych == 'E') goto yy390;
+               if (yych != 'e') goto yy157;
 yy390:
                YYDEBUG(390, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy391;
-               if (yych != 'e') goto yy158;
+               if (yych == 'C') goto yy391;
+               if (yych != 'c') goto yy157;
 yy391:
                YYDEBUG(391, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy392;
-               if (yych != 'c') goto yy158;
+               if (yych == 'T') goto yy392;
+               if (yych != 't') goto yy157;
 yy392:
                YYDEBUG(392, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy393;
-               if (yych != 't') goto yy158;
-yy393:
-               YYDEBUG(393, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(394, *YYCURSOR);
+               YYDEBUG(393, *YYCURSOR);
                if (yych <= 0x1F) {
-                       if (yych == '\t') goto yy393;
-                       goto yy158;
+                       if (yych == '\t') goto yy392;
+                       goto yy157;
                } else {
-                       if (yych <= ' ') goto yy393;
-                       if (yych != ')') goto yy158;
+                       if (yych <= ' ') goto yy392;
+                       if (yych != ')') goto yy157;
                }
-               YYDEBUG(395, *YYCURSOR);
+               YYDEBUG(394, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(396, *YYCURSOR);
+               YYDEBUG(395, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1328 "Zend/zend_language_scanner.l"
+#line 1326 "Zend/zend_language_scanner.l"
                {
        return T_OBJECT_CAST;
 }
-#line 4590 "Zend/zend_language_scanner.c"
+#line 4586 "Zend/zend_language_scanner.c"
+yy396:
+               YYDEBUG(396, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'N') goto yy406;
+               if (yych == 'n') goto yy406;
+               goto yy157;
 yy397:
                YYDEBUG(397, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy407;
-               if (yych == 'n') goto yy407;
-               goto yy158;
+               if (yych == 'O') goto yy398;
+               if (yych != 'o') goto yy157;
 yy398:
                YYDEBUG(398, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy399;
-               if (yych != 'o') goto yy158;
+               if (yych == 'L') goto yy399;
+               if (yych != 'l') goto yy157;
 yy399:
                YYDEBUG(399, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy400;
-               if (yych != 'l') goto yy158;
+               if (yych == 'E') goto yy404;
+               if (yych == 'e') goto yy404;
+               goto yy401;
 yy400:
                YYDEBUG(400, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy405;
-               if (yych == 'e') goto yy405;
-               goto yy402;
-yy401:
-               YYDEBUG(401, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-yy402:
-               YYDEBUG(402, *YYCURSOR);
+yy401:
+               YYDEBUG(401, *YYCURSOR);
                if (yych <= 0x1F) {
-                       if (yych == '\t') goto yy401;
-                       goto yy158;
+                       if (yych == '\t') goto yy400;
+                       goto yy157;
                } else {
-                       if (yych <= ' ') goto yy401;
-                       if (yych != ')') goto yy158;
+                       if (yych <= ' ') goto yy400;
+                       if (yych != ')') goto yy157;
                }
-               YYDEBUG(403, *YYCURSOR);
+               YYDEBUG(402, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(404, *YYCURSOR);
+               YYDEBUG(403, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1332 "Zend/zend_language_scanner.l"
+#line 1330 "Zend/zend_language_scanner.l"
                {
        return T_BOOL_CAST;
 }
-#line 4635 "Zend/zend_language_scanner.c"
+#line 4631 "Zend/zend_language_scanner.c"
+yy404:
+               YYDEBUG(404, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'A') goto yy405;
+               if (yych != 'a') goto yy157;
 yy405:
                YYDEBUG(405, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy406;
-               if (yych != 'a') goto yy158;
+               if (yych == 'N') goto yy400;
+               if (yych == 'n') goto yy400;
+               goto yy157;
 yy406:
                YYDEBUG(406, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy401;
-               if (yych == 'n') goto yy401;
-               goto yy158;
+               if (yych == 'A') goto yy407;
+               if (yych != 'a') goto yy157;
 yy407:
                YYDEBUG(407, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy408;
-               if (yych != 'a') goto yy158;
+               if (yych == 'R') goto yy408;
+               if (yych != 'r') goto yy157;
 yy408:
                YYDEBUG(408, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy409;
-               if (yych != 'r') goto yy158;
+               if (yych == 'Y') goto yy377;
+               if (yych == 'y') goto yy377;
+               goto yy157;
 yy409:
                YYDEBUG(409, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'Y') goto yy378;
-               if (yych == 'y') goto yy378;
-               goto yy158;
+               if (yych == 'S') goto yy410;
+               if (yych != 's') goto yy157;
 yy410:
                YYDEBUG(410, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'S') goto yy411;
-               if (yych != 's') goto yy158;
+               if (yych == 'E') goto yy411;
+               if (yych != 'e') goto yy157;
 yy411:
                YYDEBUG(411, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy412;
-               if (yych != 'e') goto yy158;
+               if (yych == 'T') goto yy412;
+               if (yych != 't') goto yy157;
 yy412:
                YYDEBUG(412, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy413;
-               if (yych != 't') goto yy158;
-yy413:
-               YYDEBUG(413, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(414, *YYCURSOR);
+               YYDEBUG(413, *YYCURSOR);
                if (yych <= 0x1F) {
-                       if (yych == '\t') goto yy413;
-                       goto yy158;
+                       if (yych == '\t') goto yy412;
+                       goto yy157;
                } else {
-                       if (yych <= ' ') goto yy413;
-                       if (yych != ')') goto yy158;
+                       if (yych <= ' ') goto yy412;
+                       if (yych != ')') goto yy157;
                }
-               YYDEBUG(415, *YYCURSOR);
+               YYDEBUG(414, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(416, *YYCURSOR);
+               YYDEBUG(415, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1336 "Zend/zend_language_scanner.l"
+#line 1334 "Zend/zend_language_scanner.l"
                {
        return T_UNSET_CAST;
 }
-#line 4699 "Zend/zend_language_scanner.c"
+#line 4695 "Zend/zend_language_scanner.c"
+yy416:
+               YYDEBUG(416, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'R') goto yy417;
+               if (yych != 'r') goto yy150;
 yy417:
                YYDEBUG(417, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'R') goto yy418;
-               if (yych != 'r') goto yy151;
-yy418:
-               YYDEBUG(418, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(419, *YYCURSOR);
+               YYDEBUG(418, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1308 "Zend/zend_language_scanner.l"
+#line 1306 "Zend/zend_language_scanner.l"
                {
        return T_VAR;
 }
-#line 4717 "Zend/zend_language_scanner.c"
+#line 4713 "Zend/zend_language_scanner.c"
+yy419:
+               YYDEBUG(419, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'M') goto yy423;
+               if (yych == 'm') goto yy423;
+               goto yy150;
 yy420:
                YYDEBUG(420, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'M') goto yy424;
-               if (yych == 'm') goto yy424;
-               goto yy151;
+               if (yych == 'W') goto yy421;
+               if (yych != 'w') goto yy150;
 yy421:
                YYDEBUG(421, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'W') goto yy422;
-               if (yych != 'w') goto yy151;
-yy422:
-               YYDEBUG(422, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(423, *YYCURSOR);
+               YYDEBUG(422, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1300 "Zend/zend_language_scanner.l"
+#line 1298 "Zend/zend_language_scanner.l"
                {
        return T_NEW;
 }
-#line 4741 "Zend/zend_language_scanner.c"
+#line 4737 "Zend/zend_language_scanner.c"
+yy423:
+               YYDEBUG(423, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy424;
+               if (yych != 'e') goto yy150;
 yy424:
                YYDEBUG(424, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy425;
-               if (yych != 'e') goto yy151;
+               if (yych == 'S') goto yy425;
+               if (yych != 's') goto yy150;
 yy425:
                YYDEBUG(425, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'S') goto yy426;
-               if (yych != 's') goto yy151;
+               if (yych == 'P') goto yy426;
+               if (yych != 'p') goto yy150;
 yy426:
                YYDEBUG(426, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'P') goto yy427;
-               if (yych != 'p') goto yy151;
+               if (yych == 'A') goto yy427;
+               if (yych != 'a') goto yy150;
 yy427:
                YYDEBUG(427, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy428;
-               if (yych != 'a') goto yy151;
+               if (yych == 'C') goto yy428;
+               if (yych != 'c') goto yy150;
 yy428:
                YYDEBUG(428, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy429;
-               if (yych != 'c') goto yy151;
+               if (yych == 'E') goto yy429;
+               if (yych != 'e') goto yy150;
 yy429:
                YYDEBUG(429, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy430;
-               if (yych != 'e') goto yy151;
-yy430:
-               YYDEBUG(430, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(431, *YYCURSOR);
+               YYDEBUG(430, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1360 "Zend/zend_language_scanner.l"
+#line 1358 "Zend/zend_language_scanner.l"
                {
        return T_NAMESPACE;
 }
-#line 4784 "Zend/zend_language_scanner.c"
+#line 4780 "Zend/zend_language_scanner.c"
+yy431:
+               YYDEBUG(431, *YYCURSOR);
+               ++YYCURSOR;
+               if ((yych = *YYCURSOR) == '\n') goto yy435;
+               if (yych == '\r') goto yy436;
 yy432:
                YYDEBUG(432, *YYCURSOR);
-               ++YYCURSOR;
-               if ((yych = *YYCURSOR) == '\n') goto yy436;
-               if (yych == '\r') goto yy437;
-yy433:
-               YYDEBUG(433, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1926 "Zend/zend_language_scanner.l"
+#line 1924 "Zend/zend_language_scanner.l"
                {
        BEGIN(INITIAL);
        return T_CLOSE_TAG;  /* implicit ';' at php-end tag */
 }
-#line 4798 "Zend/zend_language_scanner.c"
-yy434:
-               YYDEBUG(434, *YYCURSOR);
+#line 4794 "Zend/zend_language_scanner.c"
+yy433:
+               YYDEBUG(433, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(435, *YYCURSOR);
+               YYDEBUG(434, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1296 "Zend/zend_language_scanner.l"
+#line 1294 "Zend/zend_language_scanner.l"
                {
        return T_COALESCE;
 }
-#line 4808 "Zend/zend_language_scanner.c"
+#line 4804 "Zend/zend_language_scanner.c"
+yy435:
+               YYDEBUG(435, *YYCURSOR);
+               yych = *++YYCURSOR;
+               goto yy432;
 yy436:
                YYDEBUG(436, *YYCURSOR);
                yych = *++YYCURSOR;
-               goto yy433;
+               if (yych == '\n') goto yy435;
+               goto yy432;
 yy437:
                YYDEBUG(437, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '\n') goto yy436;
-               goto yy433;
-yy438:
-               YYDEBUG(438, *YYCURSOR);
                yyaccept = 3;
                YYMARKER = ++YYCURSOR;
                YYFILL(3);
                yych = *YYCURSOR;
-               YYDEBUG(439, *YYCURSOR);
+               YYDEBUG(438, *YYCURSOR);
                if (yych <= 'D') {
-                       if (yych <= '/') goto yy154;
-                       if (yych <= '9') goto yy438;
-                       goto yy154;
+                       if (yych <= '/') goto yy153;
+                       if (yych <= '9') goto yy437;
+                       goto yy153;
                } else {
-                       if (yych <= 'E') goto yy157;
-                       if (yych == 'e') goto yy157;
-                       goto yy154;
+                       if (yych <= 'E') goto yy156;
+                       if (yych == 'e') goto yy156;
+                       goto yy153;
                }
-yy440:
-               YYDEBUG(440, *YYCURSOR);
+yy439:
+               YYDEBUG(439, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(441, *YYCURSOR);
+               YYDEBUG(440, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1492 "Zend/zend_language_scanner.l"
+#line 1490 "Zend/zend_language_scanner.l"
                {
        return T_CONCAT_EQUAL;
 }
-#line 4843 "Zend/zend_language_scanner.c"
-yy442:
-               YYDEBUG(442, *YYCURSOR);
+#line 4839 "Zend/zend_language_scanner.c"
+yy441:
+               YYDEBUG(441, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych != '.') goto yy158;
-               YYDEBUG(443, *YYCURSOR);
+               if (yych != '.') goto yy157;
+               YYDEBUG(442, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(444, *YYCURSOR);
+               YYDEBUG(443, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1292 "Zend/zend_language_scanner.l"
+#line 1290 "Zend/zend_language_scanner.l"
                {
        return T_ELLIPSIS;
 }
-#line 4856 "Zend/zend_language_scanner.c"
-yy445:
-               YYDEBUG(445, *YYCURSOR);
+#line 4852 "Zend/zend_language_scanner.c"
+yy444:
+               YYDEBUG(444, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(446, *YYCURSOR);
+               YYDEBUG(445, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1284 "Zend/zend_language_scanner.l"
+#line 1282 "Zend/zend_language_scanner.l"
                {
        return T_PAAMAYIM_NEKUDOTAYIM;
 }
-#line 4866 "Zend/zend_language_scanner.c"
-yy447:
-               YYDEBUG(447, *YYCURSOR);
+#line 4862 "Zend/zend_language_scanner.c"
+yy446:
+               YYDEBUG(446, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-yy448:
-               YYDEBUG(448, *YYCURSOR);
+yy447:
+               YYDEBUG(447, *YYCURSOR);
                if (yych <= '\f') {
-                       if (yych <= 0x08) goto yy105;
-                       if (yych <= '\n') goto yy447;
-                       goto yy105;
+                       if (yych <= 0x08) goto yy104;
+                       if (yych <= '\n') goto yy446;
+                       goto yy104;
                } else {
-                       if (yych <= '\r') goto yy447;
-                       if (yych == ' ') goto yy447;
-                       goto yy105;
+                       if (yych <= '\r') goto yy446;
+                       if (yych == ' ') goto yy446;
+                       goto yy104;
                }
-yy449:
-               YYDEBUG(449, *YYCURSOR);
+yy448:
+               YYDEBUG(448, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(450, *YYCURSOR);
+               YYDEBUG(449, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1472 "Zend/zend_language_scanner.l"
+#line 1470 "Zend/zend_language_scanner.l"
                {
        return T_MINUS_EQUAL;
 }
-#line 4892 "Zend/zend_language_scanner.c"
-yy451:
-               YYDEBUG(451, *YYCURSOR);
+#line 4888 "Zend/zend_language_scanner.c"
+yy450:
+               YYDEBUG(450, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(452, *YYCURSOR);
+               YYDEBUG(451, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1436 "Zend/zend_language_scanner.l"
+#line 1434 "Zend/zend_language_scanner.l"
                {
        return T_DEC;
 }
-#line 4902 "Zend/zend_language_scanner.c"
-yy453:
-               YYDEBUG(453, *YYCURSOR);
+#line 4898 "Zend/zend_language_scanner.c"
+yy452:
+               YYDEBUG(452, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(454, *YYCURSOR);
+               YYDEBUG(453, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1258 "Zend/zend_language_scanner.l"
+#line 1256 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_PROPERTY);
        return T_OBJECT_OPERATOR;
 }
-#line 4913 "Zend/zend_language_scanner.c"
-yy455:
-               YYDEBUG(455, *YYCURSOR);
+#line 4909 "Zend/zend_language_scanner.c"
+yy454:
+               YYDEBUG(454, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'O') {
-                       if (yych == 'I') goto yy462;
-                       if (yych <= 'N') goto yy151;
-                       goto yy463;
+                       if (yych == 'I') goto yy461;
+                       if (yych <= 'N') goto yy150;
+                       goto yy462;
                } else {
                        if (yych <= 'i') {
-                               if (yych <= 'h') goto yy151;
-                               goto yy462;
+                               if (yych <= 'h') goto yy150;
+                               goto yy461;
                        } else {
-                               if (yych == 'o') goto yy463;
-                               goto yy151;
+                               if (yych == 'o') goto yy462;
+                               goto yy150;
                        }
                }
+yy455:
+               YYDEBUG(455, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'B') goto yy456;
+               if (yych != 'b') goto yy150;
 yy456:
                YYDEBUG(456, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'B') goto yy457;
-               if (yych != 'b') goto yy151;
+               if (yych == 'L') goto yy457;
+               if (yych != 'l') goto yy150;
 yy457:
                YYDEBUG(457, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy458;
-               if (yych != 'l') goto yy151;
+               if (yych == 'I') goto yy458;
+               if (yych != 'i') goto yy150;
 yy458:
                YYDEBUG(458, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy459;
-               if (yych != 'i') goto yy151;
+               if (yych == 'C') goto yy459;
+               if (yych != 'c') goto yy150;
 yy459:
                YYDEBUG(459, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'C') goto yy460;
-               if (yych != 'c') goto yy151;
-yy460:
-               YYDEBUG(460, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(461, *YYCURSOR);
+               YYDEBUG(460, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1408 "Zend/zend_language_scanner.l"
+#line 1406 "Zend/zend_language_scanner.l"
                {
        return T_PUBLIC;
 }
-#line 4962 "Zend/zend_language_scanner.c"
-yy462:
-               YYDEBUG(462, *YYCURSOR);
+#line 4958 "Zend/zend_language_scanner.c"
+yy461:
+               YYDEBUG(461, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'V') {
-                       if (yych == 'N') goto yy471;
-                       if (yych <= 'U') goto yy151;
-                       goto yy472;
+                       if (yych == 'N') goto yy470;
+                       if (yych <= 'U') goto yy150;
+                       goto yy471;
                } else {
                        if (yych <= 'n') {
-                               if (yych <= 'm') goto yy151;
-                               goto yy471;
+                               if (yych <= 'm') goto yy150;
+                               goto yy470;
                        } else {
-                               if (yych == 'v') goto yy472;
-                               goto yy151;
+                               if (yych == 'v') goto yy471;
+                               goto yy150;
                        }
                }
+yy462:
+               YYDEBUG(462, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy463;
+               if (yych != 't') goto yy150;
 yy463:
                YYDEBUG(463, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy464;
-               if (yych != 't') goto yy151;
+               if (yych == 'E') goto yy464;
+               if (yych != 'e') goto yy150;
 yy464:
                YYDEBUG(464, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy465;
-               if (yych != 'e') goto yy151;
+               if (yych == 'C') goto yy465;
+               if (yych != 'c') goto yy150;
 yy465:
                YYDEBUG(465, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy466;
-               if (yych != 'c') goto yy151;
+               if (yych == 'T') goto yy466;
+               if (yych != 't') goto yy150;
 yy466:
                YYDEBUG(466, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy467;
-               if (yych != 't') goto yy151;
+               if (yych == 'E') goto yy467;
+               if (yych != 'e') goto yy150;
 yy467:
                YYDEBUG(467, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy468;
-               if (yych != 'e') goto yy151;
+               if (yych == 'D') goto yy468;
+               if (yych != 'd') goto yy150;
 yy468:
                YYDEBUG(468, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'D') goto yy469;
-               if (yych != 'd') goto yy151;
-yy469:
-               YYDEBUG(469, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(470, *YYCURSOR);
+               YYDEBUG(469, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1404 "Zend/zend_language_scanner.l"
+#line 1402 "Zend/zend_language_scanner.l"
                {
        return T_PROTECTED;
 }
-#line 5021 "Zend/zend_language_scanner.c"
+#line 5017 "Zend/zend_language_scanner.c"
+yy470:
+               YYDEBUG(470, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy476;
+               if (yych == 't') goto yy476;
+               goto yy150;
 yy471:
                YYDEBUG(471, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy477;
-               if (yych == 't') goto yy477;
-               goto yy151;
+               if (yych == 'A') goto yy472;
+               if (yych != 'a') goto yy150;
 yy472:
                YYDEBUG(472, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy473;
-               if (yych != 'a') goto yy151;
+               if (yych == 'T') goto yy473;
+               if (yych != 't') goto yy150;
 yy473:
                YYDEBUG(473, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy474;
-               if (yych != 't') goto yy151;
+               if (yych == 'E') goto yy474;
+               if (yych != 'e') goto yy150;
 yy474:
                YYDEBUG(474, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy475;
-               if (yych != 'e') goto yy151;
-yy475:
-               YYDEBUG(475, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(476, *YYCURSOR);
+               YYDEBUG(475, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1400 "Zend/zend_language_scanner.l"
+#line 1398 "Zend/zend_language_scanner.l"
                {
        return T_PRIVATE;
 }
-#line 5055 "Zend/zend_language_scanner.c"
-yy477:
-               YYDEBUG(477, *YYCURSOR);
+#line 5051 "Zend/zend_language_scanner.c"
+yy476:
+               YYDEBUG(476, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(478, *YYCURSOR);
+               YYDEBUG(477, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1234 "Zend/zend_language_scanner.l"
+#line 1232 "Zend/zend_language_scanner.l"
                {
        return T_PRINT;
 }
-#line 5068 "Zend/zend_language_scanner.c"
+#line 5064 "Zend/zend_language_scanner.c"
+yy478:
+               YYDEBUG(478, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'O') goto yy483;
+               if (yych == 'o') goto yy483;
+               goto yy150;
 yy479:
                YYDEBUG(479, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy484;
-               if (yych == 'o') goto yy484;
-               goto yy151;
+               if (yych == 'T') goto yy480;
+               if (yych != 't') goto yy150;
 yy480:
                YYDEBUG(480, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy481;
-               if (yych != 't') goto yy151;
+               if (yych == 'O') goto yy481;
+               if (yych != 'o') goto yy150;
 yy481:
                YYDEBUG(481, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'O') goto yy482;
-               if (yych != 'o') goto yy151;
-yy482:
-               YYDEBUG(482, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(483, *YYCURSOR);
+               YYDEBUG(482, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1226 "Zend/zend_language_scanner.l"
+#line 1224 "Zend/zend_language_scanner.l"
                {
        return T_GOTO;
 }
-#line 5097 "Zend/zend_language_scanner.c"
+#line 5093 "Zend/zend_language_scanner.c"
+yy483:
+               YYDEBUG(483, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'B') goto yy484;
+               if (yych != 'b') goto yy150;
 yy484:
                YYDEBUG(484, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'B') goto yy485;
-               if (yych != 'b') goto yy151;
+               if (yych == 'A') goto yy485;
+               if (yych != 'a') goto yy150;
 yy485:
                YYDEBUG(485, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy486;
-               if (yych != 'a') goto yy151;
+               if (yych == 'L') goto yy486;
+               if (yych != 'l') goto yy150;
 yy486:
                YYDEBUG(486, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'L') goto yy487;
-               if (yych != 'l') goto yy151;
-yy487:
-               YYDEBUG(487, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(488, *YYCURSOR);
+               YYDEBUG(487, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1372 "Zend/zend_language_scanner.l"
+#line 1370 "Zend/zend_language_scanner.l"
                {
        return T_GLOBAL;
 }
-#line 5125 "Zend/zend_language_scanner.c"
+#line 5121 "Zend/zend_language_scanner.c"
+yy488:
+               YYDEBUG(488, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '<') goto yy496;
+               goto yy157;
 yy489:
                YYDEBUG(489, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == '<') goto yy497;
-               goto yy158;
+               goto yy144;
 yy490:
                YYDEBUG(490, *YYCURSOR);
                yych = *++YYCURSOR;
-               goto yy145;
+               goto yy142;
 yy491:
                YYDEBUG(491, *YYCURSOR);
                yych = *++YYCURSOR;
-               goto yy143;
+               if (yych == 'E') goto yy492;
+               if (yych != 'e') goto yy150;
 yy492:
                YYDEBUG(492, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy493;
-               if (yych != 'e') goto yy151;
+               if (yych == 'A') goto yy493;
+               if (yych != 'a') goto yy150;
 yy493:
                YYDEBUG(493, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy494;
-               if (yych != 'a') goto yy151;
+               if (yych == 'K') goto yy494;
+               if (yych != 'k') goto yy150;
 yy494:
                YYDEBUG(494, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'K') goto yy495;
-               if (yych != 'k') goto yy151;
-yy495:
-               YYDEBUG(495, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(496, *YYCURSOR);
+               YYDEBUG(495, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1218 "Zend/zend_language_scanner.l"
+#line 1216 "Zend/zend_language_scanner.l"
                {
        return T_BREAK;
 }
-#line 5166 "Zend/zend_language_scanner.c"
+#line 5162 "Zend/zend_language_scanner.c"
+yy496:
+               YYDEBUG(496, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '<') goto yy219;
+               goto yy157;
 yy497:
                YYDEBUG(497, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == '<') goto yy220;
-               goto yy158;
+               if (yych == 'A') goto yy504;
+               if (yych == 'a') goto yy504;
+               goto yy150;
 yy498:
                YYDEBUG(498, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy505;
-               if (yych == 'a') goto yy505;
-               goto yy151;
+               if (yych == 'I') goto yy499;
+               if (yych != 'i') goto yy150;
 yy499:
                YYDEBUG(499, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy500;
-               if (yych != 'i') goto yy151;
+               if (yych == 'T') goto yy500;
+               if (yych != 't') goto yy150;
 yy500:
                YYDEBUG(500, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy501;
-               if (yych != 't') goto yy151;
+               if (yych == 'C') goto yy501;
+               if (yych != 'c') goto yy150;
 yy501:
                YYDEBUG(501, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy502;
-               if (yych != 'c') goto yy151;
+               if (yych == 'H') goto yy502;
+               if (yych != 'h') goto yy150;
 yy502:
                YYDEBUG(502, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'H') goto yy503;
-               if (yych != 'h') goto yy151;
-yy503:
-               YYDEBUG(503, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(504, *YYCURSOR);
+               YYDEBUG(503, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1202 "Zend/zend_language_scanner.l"
+#line 1200 "Zend/zend_language_scanner.l"
                {
        return T_SWITCH;
 }
-#line 5210 "Zend/zend_language_scanner.c"
+#line 5206 "Zend/zend_language_scanner.c"
+yy504:
+               YYDEBUG(504, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy505;
+               if (yych != 't') goto yy150;
 yy505:
                YYDEBUG(505, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy506;
-               if (yych != 't') goto yy151;
+               if (yych == 'I') goto yy506;
+               if (yych != 'i') goto yy150;
 yy506:
                YYDEBUG(506, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy507;
-               if (yych != 'i') goto yy151;
+               if (yych == 'C') goto yy507;
+               if (yych != 'c') goto yy150;
 yy507:
                YYDEBUG(507, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'C') goto yy508;
-               if (yych != 'c') goto yy151;
-yy508:
-               YYDEBUG(508, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(509, *YYCURSOR);
+               YYDEBUG(508, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1388 "Zend/zend_language_scanner.l"
+#line 1386 "Zend/zend_language_scanner.l"
                {
        return T_STATIC;
 }
-#line 5238 "Zend/zend_language_scanner.c"
+#line 5234 "Zend/zend_language_scanner.c"
+yy509:
+               YYDEBUG(509, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'S') goto yy520;
+               if (yych == 's') goto yy520;
+               goto yy150;
 yy510:
                YYDEBUG(510, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'S') goto yy521;
-               if (yych == 's') goto yy521;
-               goto yy151;
+               if (yych == 'D') goto yy518;
+               if (yych == 'd') goto yy518;
+               goto yy150;
 yy511:
                YYDEBUG(511, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'D') goto yy519;
-               if (yych == 'd') goto yy519;
-               goto yy151;
+               if (yych == 'R') goto yy514;
+               if (yych == 'r') goto yy514;
+               goto yy150;
 yy512:
                YYDEBUG(512, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'R') goto yy515;
-               if (yych == 'r') goto yy515;
-               goto yy151;
-yy513:
-               YYDEBUG(513, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(514, *YYCURSOR);
+               YYDEBUG(513, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1198 "Zend/zend_language_scanner.l"
+#line 1196 "Zend/zend_language_scanner.l"
                {
        return T_AS;
 }
-#line 5269 "Zend/zend_language_scanner.c"
+#line 5265 "Zend/zend_language_scanner.c"
+yy514:
+               YYDEBUG(514, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'A') goto yy515;
+               if (yych != 'a') goto yy150;
 yy515:
                YYDEBUG(515, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy516;
-               if (yych != 'a') goto yy151;
+               if (yych == 'Y') goto yy516;
+               if (yych != 'y') goto yy150;
 yy516:
                YYDEBUG(516, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'Y') goto yy517;
-               if (yych != 'y') goto yy151;
-yy517:
-               YYDEBUG(517, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(518, *YYCURSOR);
+               YYDEBUG(517, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1424 "Zend/zend_language_scanner.l"
+#line 1422 "Zend/zend_language_scanner.l"
                {
        return T_ARRAY;
 }
-#line 5292 "Zend/zend_language_scanner.c"
-yy519:
-               YYDEBUG(519, *YYCURSOR);
+#line 5288 "Zend/zend_language_scanner.c"
+yy518:
+               YYDEBUG(518, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(520, *YYCURSOR);
+               YYDEBUG(519, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1532 "Zend/zend_language_scanner.l"
+#line 1530 "Zend/zend_language_scanner.l"
                {
        return T_LOGICAL_AND;
 }
-#line 5305 "Zend/zend_language_scanner.c"
+#line 5301 "Zend/zend_language_scanner.c"
+yy520:
+               YYDEBUG(520, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy521;
+               if (yych != 't') goto yy150;
 yy521:
                YYDEBUG(521, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy522;
-               if (yych != 't') goto yy151;
+               if (yych == 'R') goto yy522;
+               if (yych != 'r') goto yy150;
 yy522:
                YYDEBUG(522, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy523;
-               if (yych != 'r') goto yy151;
+               if (yych == 'A') goto yy523;
+               if (yych != 'a') goto yy150;
 yy523:
                YYDEBUG(523, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy524;
-               if (yych != 'a') goto yy151;
+               if (yych == 'C') goto yy524;
+               if (yych != 'c') goto yy150;
 yy524:
                YYDEBUG(524, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy525;
-               if (yych != 'c') goto yy151;
+               if (yych == 'T') goto yy525;
+               if (yych != 't') goto yy150;
 yy525:
                YYDEBUG(525, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy526;
-               if (yych != 't') goto yy151;
-yy526:
-               YYDEBUG(526, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(527, *YYCURSOR);
+               YYDEBUG(526, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1392 "Zend/zend_language_scanner.l"
+#line 1390 "Zend/zend_language_scanner.l"
                {
        return T_ABSTRACT;
 }
-#line 5343 "Zend/zend_language_scanner.c"
+#line 5339 "Zend/zend_language_scanner.c"
+yy527:
+               YYDEBUG(527, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'I') goto yy528;
+               if (yych != 'i') goto yy150;
 yy528:
                YYDEBUG(528, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy529;
-               if (yych != 'i') goto yy151;
+               if (yych == 'L') goto yy529;
+               if (yych != 'l') goto yy150;
 yy529:
                YYDEBUG(529, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy530;
-               if (yych != 'l') goto yy151;
+               if (yych == 'E') goto yy530;
+               if (yych != 'e') goto yy150;
 yy530:
                YYDEBUG(530, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy531;
-               if (yych != 'e') goto yy151;
-yy531:
-               YYDEBUG(531, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(532, *YYCURSOR);
+               YYDEBUG(531, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1158 "Zend/zend_language_scanner.l"
+#line 1156 "Zend/zend_language_scanner.l"
                {
        return T_WHILE;
 }
-#line 5371 "Zend/zend_language_scanner.c"
-yy533:
-               YYDEBUG(533, *YYCURSOR);
+#line 5367 "Zend/zend_language_scanner.c"
+yy532:
+               YYDEBUG(532, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(534, *YYCURSOR);
+               YYDEBUG(533, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1142 "Zend/zend_language_scanner.l"
+#line 1140 "Zend/zend_language_scanner.l"
                {
        return T_IF;
 }
-#line 5384 "Zend/zend_language_scanner.c"
+#line 5380 "Zend/zend_language_scanner.c"
+yy534:
+               YYDEBUG(534, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'P') goto yy576;
+               if (yych == 'p') goto yy576;
+               goto yy150;
 yy535:
                YYDEBUG(535, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'P') goto yy577;
-               if (yych == 'p') goto yy577;
-               goto yy151;
-yy536:
-               YYDEBUG(536, *YYCURSOR);
-               yych = *++YYCURSOR;
                if (yych <= 'T') {
                        if (yych <= 'C') {
-                               if (yych <= 'B') goto yy151;
-                               goto yy544;
-                       } else {
-                               if (yych <= 'R') goto yy151;
-                               if (yych <= 'S') goto yy542;
+                               if (yych <= 'B') goto yy150;
                                goto yy543;
+                       } else {
+                               if (yych <= 'R') goto yy150;
+                               if (yych <= 'S') goto yy541;
+                               goto yy542;
                        }
                } else {
                        if (yych <= 'r') {
-                               if (yych == 'c') goto yy544;
-                               goto yy151;
+                               if (yych == 'c') goto yy543;
+                               goto yy150;
                        } else {
-                               if (yych <= 's') goto yy542;
-                               if (yych <= 't') goto yy543;
-                               goto yy151;
+                               if (yych <= 's') goto yy541;
+                               if (yych <= 't') goto yy542;
+                               goto yy150;
                        }
                }
+yy536:
+               YYDEBUG(536, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'S') goto yy537;
+               if (yych != 's') goto yy150;
 yy537:
                YYDEBUG(537, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'S') goto yy538;
-               if (yych != 's') goto yy151;
+               if (yych == 'E') goto yy538;
+               if (yych != 'e') goto yy150;
 yy538:
                YYDEBUG(538, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy539;
-               if (yych != 'e') goto yy151;
+               if (yych == 'T') goto yy539;
+               if (yych != 't') goto yy150;
 yy539:
                YYDEBUG(539, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy540;
-               if (yych != 't') goto yy151;
-yy540:
-               YYDEBUG(540, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(541, *YYCURSOR);
+               YYDEBUG(540, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1376 "Zend/zend_language_scanner.l"
+#line 1374 "Zend/zend_language_scanner.l"
                {
        return T_ISSET;
 }
-#line 5440 "Zend/zend_language_scanner.c"
+#line 5436 "Zend/zend_language_scanner.c"
+yy541:
+               YYDEBUG(541, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy562;
+               if (yych == 't') goto yy562;
+               goto yy150;
 yy542:
                YYDEBUG(542, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy563;
-               if (yych == 't') goto yy563;
-               goto yy151;
+               if (yych == 'E') goto yy555;
+               if (yych == 'e') goto yy555;
+               goto yy150;
 yy543:
                YYDEBUG(543, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy556;
-               if (yych == 'e') goto yy556;
-               goto yy151;
+               if (yych == 'L') goto yy544;
+               if (yych != 'l') goto yy150;
 yy544:
                YYDEBUG(544, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy545;
-               if (yych != 'l') goto yy151;
+               if (yych == 'U') goto yy545;
+               if (yych != 'u') goto yy150;
 yy545:
                YYDEBUG(545, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'U') goto yy546;
-               if (yych != 'u') goto yy151;
+               if (yych == 'D') goto yy546;
+               if (yych != 'd') goto yy150;
 yy546:
                YYDEBUG(546, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'D') goto yy547;
-               if (yych != 'd') goto yy151;
+               if (yych == 'E') goto yy547;
+               if (yych != 'e') goto yy150;
 yy547:
                YYDEBUG(547, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy548;
-               if (yych != 'e') goto yy151;
-yy548:
-               YYDEBUG(548, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '^') {
                        if (yych <= '9') {
-                               if (yych >= '0') goto yy150;
+                               if (yych >= '0') goto yy149;
                        } else {
-                               if (yych <= '@') goto yy549;
-                               if (yych <= 'Z') goto yy150;
+                               if (yych <= '@') goto yy548;
+                               if (yych <= 'Z') goto yy149;
                        }
                } else {
                        if (yych <= '`') {
-                               if (yych <= '_') goto yy550;
+                               if (yych <= '_') goto yy549;
                        } else {
-                               if (yych <= 'z') goto yy150;
-                               if (yych >= 0x7F) goto yy150;
+                               if (yych <= 'z') goto yy149;
+                               if (yych >= 0x7F) goto yy149;
                        }
                }
-yy549:
-               YYDEBUG(549, *YYCURSOR);
+yy548:
+               YYDEBUG(548, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1344 "Zend/zend_language_scanner.l"
+#line 1342 "Zend/zend_language_scanner.l"
                {
        return T_INCLUDE;
 }
-#line 5498 "Zend/zend_language_scanner.c"
+#line 5494 "Zend/zend_language_scanner.c"
+yy549:
+               YYDEBUG(549, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'O') goto yy550;
+               if (yych != 'o') goto yy150;
 yy550:
                YYDEBUG(550, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy551;
-               if (yych != 'o') goto yy151;
+               if (yych == 'N') goto yy551;
+               if (yych != 'n') goto yy150;
 yy551:
                YYDEBUG(551, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy552;
-               if (yych != 'n') goto yy151;
+               if (yych == 'C') goto yy552;
+               if (yych != 'c') goto yy150;
 yy552:
                YYDEBUG(552, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy553;
-               if (yych != 'c') goto yy151;
+               if (yych == 'E') goto yy553;
+               if (yych != 'e') goto yy150;
 yy553:
                YYDEBUG(553, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy554;
-               if (yych != 'e') goto yy151;
-yy554:
-               YYDEBUG(554, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(555, *YYCURSOR);
+               YYDEBUG(554, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1348 "Zend/zend_language_scanner.l"
+#line 1346 "Zend/zend_language_scanner.l"
                {
        return T_INCLUDE_ONCE;
 }
-#line 5531 "Zend/zend_language_scanner.c"
+#line 5527 "Zend/zend_language_scanner.c"
+yy555:
+               YYDEBUG(555, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'R') goto yy556;
+               if (yych != 'r') goto yy150;
 yy556:
                YYDEBUG(556, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy557;
-               if (yych != 'r') goto yy151;
+               if (yych == 'F') goto yy557;
+               if (yych != 'f') goto yy150;
 yy557:
                YYDEBUG(557, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'F') goto yy558;
-               if (yych != 'f') goto yy151;
+               if (yych == 'A') goto yy558;
+               if (yych != 'a') goto yy150;
 yy558:
                YYDEBUG(558, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy559;
-               if (yych != 'a') goto yy151;
+               if (yych == 'C') goto yy559;
+               if (yych != 'c') goto yy150;
 yy559:
                YYDEBUG(559, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy560;
-               if (yych != 'c') goto yy151;
+               if (yych == 'E') goto yy560;
+               if (yych != 'e') goto yy150;
 yy560:
                YYDEBUG(560, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy561;
-               if (yych != 'e') goto yy151;
-yy561:
-               YYDEBUG(561, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(562, *YYCURSOR);
+               YYDEBUG(561, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1242 "Zend/zend_language_scanner.l"
+#line 1240 "Zend/zend_language_scanner.l"
                {
        return T_INTERFACE;
 }
-#line 5569 "Zend/zend_language_scanner.c"
-yy563:
-               YYDEBUG(563, *YYCURSOR);
+#line 5565 "Zend/zend_language_scanner.c"
+yy562:
+               YYDEBUG(562, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'E') {
-                       if (yych == 'A') goto yy564;
-                       if (yych <= 'D') goto yy151;
-                       goto yy565;
+                       if (yych == 'A') goto yy563;
+                       if (yych <= 'D') goto yy150;
+                       goto yy564;
                } else {
                        if (yych <= 'a') {
-                               if (yych <= '`') goto yy151;
+                               if (yych <= '`') goto yy150;
                        } else {
-                               if (yych == 'e') goto yy565;
-                               goto yy151;
+                               if (yych == 'e') goto yy564;
+                               goto yy150;
                        }
                }
+yy563:
+               YYDEBUG(563, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'N') goto yy570;
+               if (yych == 'n') goto yy570;
+               goto yy150;
 yy564:
                YYDEBUG(564, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy571;
-               if (yych == 'n') goto yy571;
-               goto yy151;
+               if (yych == 'A') goto yy565;
+               if (yych != 'a') goto yy150;
 yy565:
                YYDEBUG(565, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy566;
-               if (yych != 'a') goto yy151;
+               if (yych == 'D') goto yy566;
+               if (yych != 'd') goto yy150;
 yy566:
                YYDEBUG(566, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'D') goto yy567;
-               if (yych != 'd') goto yy151;
+               if (yych == 'O') goto yy567;
+               if (yych != 'o') goto yy150;
 yy567:
                YYDEBUG(567, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy568;
-               if (yych != 'o') goto yy151;
+               if (yych == 'F') goto yy568;
+               if (yych != 'f') goto yy150;
 yy568:
                YYDEBUG(568, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'F') goto yy569;
-               if (yych != 'f') goto yy151;
-yy569:
-               YYDEBUG(569, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(570, *YYCURSOR);
+               YYDEBUG(569, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1368 "Zend/zend_language_scanner.l"
+#line 1366 "Zend/zend_language_scanner.l"
                {
         return T_INSTEADOF;
 }
-#line 5623 "Zend/zend_language_scanner.c"
+#line 5619 "Zend/zend_language_scanner.c"
+yy570:
+               YYDEBUG(570, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'C') goto yy571;
+               if (yych != 'c') goto yy150;
 yy571:
                YYDEBUG(571, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy572;
-               if (yych != 'c') goto yy151;
+               if (yych == 'E') goto yy572;
+               if (yych != 'e') goto yy150;
 yy572:
                YYDEBUG(572, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy573;
-               if (yych != 'e') goto yy151;
+               if (yych == 'O') goto yy573;
+               if (yych != 'o') goto yy150;
 yy573:
                YYDEBUG(573, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy574;
-               if (yych != 'o') goto yy151;
+               if (yych == 'F') goto yy574;
+               if (yych != 'f') goto yy150;
 yy574:
                YYDEBUG(574, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'F') goto yy575;
-               if (yych != 'f') goto yy151;
-yy575:
-               YYDEBUG(575, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(576, *YYCURSOR);
+               YYDEBUG(575, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1194 "Zend/zend_language_scanner.l"
+#line 1192 "Zend/zend_language_scanner.l"
                {
        return T_INSTANCEOF;
 }
-#line 5656 "Zend/zend_language_scanner.c"
+#line 5652 "Zend/zend_language_scanner.c"
+yy576:
+               YYDEBUG(576, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'L') goto yy577;
+               if (yych != 'l') goto yy150;
 yy577:
                YYDEBUG(577, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy578;
-               if (yych != 'l') goto yy151;
+               if (yych == 'E') goto yy578;
+               if (yych != 'e') goto yy150;
 yy578:
                YYDEBUG(578, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy579;
-               if (yych != 'e') goto yy151;
+               if (yych == 'M') goto yy579;
+               if (yych != 'm') goto yy150;
 yy579:
                YYDEBUG(579, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'M') goto yy580;
-               if (yych != 'm') goto yy151;
+               if (yych == 'E') goto yy580;
+               if (yych != 'e') goto yy150;
 yy580:
                YYDEBUG(580, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy581;
-               if (yych != 'e') goto yy151;
+               if (yych == 'N') goto yy581;
+               if (yych != 'n') goto yy150;
 yy581:
                YYDEBUG(581, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy582;
-               if (yych != 'n') goto yy151;
+               if (yych == 'T') goto yy582;
+               if (yych != 't') goto yy150;
 yy582:
                YYDEBUG(582, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy583;
-               if (yych != 't') goto yy151;
+               if (yych == 'S') goto yy583;
+               if (yych != 's') goto yy150;
 yy583:
                YYDEBUG(583, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'S') goto yy584;
-               if (yych != 's') goto yy151;
-yy584:
-               YYDEBUG(584, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(585, *YYCURSOR);
+               YYDEBUG(584, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1254 "Zend/zend_language_scanner.l"
+#line 1252 "Zend/zend_language_scanner.l"
                {
        return T_IMPLEMENTS;
 }
-#line 5704 "Zend/zend_language_scanner.c"
+#line 5700 "Zend/zend_language_scanner.c"
+yy585:
+               YYDEBUG(585, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'R') goto yy593;
+               if (yych == 'r') goto yy593;
+               goto yy150;
 yy586:
                YYDEBUG(586, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy594;
-               if (yych == 'r') goto yy594;
-               goto yy151;
-yy587:
-               YYDEBUG(587, *YYCURSOR);
-               yych = *++YYCURSOR;
                if (yych <= 'Y') {
-                       if (yych == 'A') goto yy590;
-                       if (yych <= 'X') goto yy151;
+                       if (yych == 'A') goto yy589;
+                       if (yych <= 'X') goto yy150;
                } else {
                        if (yych <= 'a') {
-                               if (yych <= '`') goto yy151;
-                               goto yy590;
+                               if (yych <= '`') goto yy150;
+                               goto yy589;
                        } else {
-                               if (yych != 'y') goto yy151;
+                               if (yych != 'y') goto yy150;
                        }
                }
-               YYDEBUG(588, *YYCURSOR);
+               YYDEBUG(587, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(589, *YYCURSOR);
+               YYDEBUG(588, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1126 "Zend/zend_language_scanner.l"
+#line 1124 "Zend/zend_language_scanner.l"
                {
        return T_TRY;
 }
-#line 5736 "Zend/zend_language_scanner.c"
+#line 5732 "Zend/zend_language_scanner.c"
+yy589:
+               YYDEBUG(589, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'I') goto yy590;
+               if (yych != 'i') goto yy150;
 yy590:
                YYDEBUG(590, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy591;
-               if (yych != 'i') goto yy151;
+               if (yych == 'T') goto yy591;
+               if (yych != 't') goto yy150;
 yy591:
                YYDEBUG(591, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy592;
-               if (yych != 't') goto yy151;
-yy592:
-               YYDEBUG(592, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(593, *YYCURSOR);
+               YYDEBUG(592, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1246 "Zend/zend_language_scanner.l"
+#line 1244 "Zend/zend_language_scanner.l"
                {
        return T_TRAIT;
 }
-#line 5759 "Zend/zend_language_scanner.c"
+#line 5755 "Zend/zend_language_scanner.c"
+yy593:
+               YYDEBUG(593, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'O') goto yy594;
+               if (yych != 'o') goto yy150;
 yy594:
                YYDEBUG(594, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy595;
-               if (yych != 'o') goto yy151;
+               if (yych == 'W') goto yy595;
+               if (yych != 'w') goto yy150;
 yy595:
                YYDEBUG(595, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'W') goto yy596;
-               if (yych != 'w') goto yy151;
-yy596:
-               YYDEBUG(596, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(597, *YYCURSOR);
+               YYDEBUG(596, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1138 "Zend/zend_language_scanner.l"
+#line 1136 "Zend/zend_language_scanner.l"
                {
        return T_THROW;
 }
-#line 5782 "Zend/zend_language_scanner.c"
+#line 5778 "Zend/zend_language_scanner.c"
+yy597:
+               YYDEBUG(597, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy598;
+               if (yych != 'e') goto yy150;
 yy598:
                YYDEBUG(598, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy599;
-               if (yych != 'e') goto yy151;
+               if (yych == 'L') goto yy599;
+               if (yych != 'l') goto yy150;
 yy599:
                YYDEBUG(599, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy600;
-               if (yych != 'l') goto yy151;
+               if (yych == 'D') goto yy600;
+               if (yych != 'd') goto yy150;
 yy600:
                YYDEBUG(600, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'D') goto yy601;
-               if (yych != 'd') goto yy151;
-yy601:
-               YYDEBUG(601, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(602, *YYCURSOR);
+               YYDEBUG(601, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1122 "Zend/zend_language_scanner.l"
+#line 1120 "Zend/zend_language_scanner.l"
                {
        return T_YIELD;
 }
-#line 5810 "Zend/zend_language_scanner.c"
-yy603:
-               YYDEBUG(603, *YYCURSOR);
+#line 5806 "Zend/zend_language_scanner.c"
+yy602:
+               YYDEBUG(602, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'T') {
-                       if (yych == 'Q') goto yy605;
-                       if (yych <= 'S') goto yy151;
+                       if (yych == 'Q') goto yy604;
+                       if (yych <= 'S') goto yy150;
                } else {
                        if (yych <= 'q') {
-                               if (yych <= 'p') goto yy151;
-                               goto yy605;
+                               if (yych <= 'p') goto yy150;
+                               goto yy604;
                        } else {
-                               if (yych != 't') goto yy151;
+                               if (yych != 't') goto yy150;
                        }
                }
+               YYDEBUG(603, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'U') goto yy616;
+               if (yych == 'u') goto yy616;
+               goto yy150;
+yy604:
                YYDEBUG(604, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'U') goto yy617;
-               if (yych == 'u') goto yy617;
-               goto yy151;
+               if (yych == 'U') goto yy605;
+               if (yych != 'u') goto yy150;
 yy605:
                YYDEBUG(605, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'U') goto yy606;
-               if (yych != 'u') goto yy151;
+               if (yych == 'I') goto yy606;
+               if (yych != 'i') goto yy150;
 yy606:
                YYDEBUG(606, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy607;
-               if (yych != 'i') goto yy151;
+               if (yych == 'R') goto yy607;
+               if (yych != 'r') goto yy150;
 yy607:
                YYDEBUG(607, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy608;
-               if (yych != 'r') goto yy151;
+               if (yych == 'E') goto yy608;
+               if (yych != 'e') goto yy150;
 yy608:
                YYDEBUG(608, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy609;
-               if (yych != 'e') goto yy151;
-yy609:
-               YYDEBUG(609, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '^') {
                        if (yych <= '9') {
-                               if (yych >= '0') goto yy150;
+                               if (yych >= '0') goto yy149;
                        } else {
-                               if (yych <= '@') goto yy610;
-                               if (yych <= 'Z') goto yy150;
+                               if (yych <= '@') goto yy609;
+                               if (yych <= 'Z') goto yy149;
                        }
                } else {
                        if (yych <= '`') {
-                               if (yych <= '_') goto yy611;
+                               if (yych <= '_') goto yy610;
                        } else {
-                               if (yych <= 'z') goto yy150;
-                               if (yych >= 0x7F) goto yy150;
+                               if (yych <= 'z') goto yy149;
+                               if (yych >= 0x7F) goto yy149;
                        }
                }
-yy610:
-               YYDEBUG(610, *YYCURSOR);
+yy609:
+               YYDEBUG(609, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1352 "Zend/zend_language_scanner.l"
+#line 1350 "Zend/zend_language_scanner.l"
                {
        return T_REQUIRE;
 }
-#line 5875 "Zend/zend_language_scanner.c"
+#line 5871 "Zend/zend_language_scanner.c"
+yy610:
+               YYDEBUG(610, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'O') goto yy611;
+               if (yych != 'o') goto yy150;
 yy611:
                YYDEBUG(611, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy612;
-               if (yych != 'o') goto yy151;
+               if (yych == 'N') goto yy612;
+               if (yych != 'n') goto yy150;
 yy612:
                YYDEBUG(612, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy613;
-               if (yych != 'n') goto yy151;
+               if (yych == 'C') goto yy613;
+               if (yych != 'c') goto yy150;
 yy613:
                YYDEBUG(613, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy614;
-               if (yych != 'c') goto yy151;
+               if (yych == 'E') goto yy614;
+               if (yych != 'e') goto yy150;
 yy614:
                YYDEBUG(614, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy615;
-               if (yych != 'e') goto yy151;
-yy615:
-               YYDEBUG(615, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(616, *YYCURSOR);
+               YYDEBUG(615, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1356 "Zend/zend_language_scanner.l"
+#line 1354 "Zend/zend_language_scanner.l"
                {
        return T_REQUIRE_ONCE;
 }
-#line 5908 "Zend/zend_language_scanner.c"
+#line 5904 "Zend/zend_language_scanner.c"
+yy616:
+               YYDEBUG(616, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'R') goto yy617;
+               if (yych != 'r') goto yy150;
 yy617:
                YYDEBUG(617, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy618;
-               if (yych != 'r') goto yy151;
+               if (yych == 'N') goto yy618;
+               if (yych != 'n') goto yy150;
 yy618:
                YYDEBUG(618, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'N') goto yy619;
-               if (yych != 'n') goto yy151;
-yy619:
-               YYDEBUG(619, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(620, *YYCURSOR);
+               YYDEBUG(619, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1118 "Zend/zend_language_scanner.l"
+#line 1116 "Zend/zend_language_scanner.l"
                {
        return T_RETURN;
 }
-#line 5931 "Zend/zend_language_scanner.c"
-yy621:
-               YYDEBUG(621, *YYCURSOR);
+#line 5927 "Zend/zend_language_scanner.c"
+yy620:
+               YYDEBUG(620, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'T') {
                        if (yych <= 'L') {
-                               if (yych <= 'K') goto yy151;
-                               goto yy644;
+                               if (yych <= 'K') goto yy150;
+                               goto yy643;
                        } else {
-                               if (yych <= 'R') goto yy151;
-                               if (yych <= 'S') goto yy643;
-                               goto yy642;
+                               if (yych <= 'R') goto yy150;
+                               if (yych <= 'S') goto yy642;
+                               goto yy641;
                        }
                } else {
                        if (yych <= 'r') {
-                               if (yych == 'l') goto yy644;
-                               goto yy151;
+                               if (yych == 'l') goto yy643;
+                               goto yy150;
                        } else {
-                               if (yych <= 's') goto yy643;
-                               if (yych <= 't') goto yy642;
-                               goto yy151;
+                               if (yych <= 's') goto yy642;
+                               if (yych <= 't') goto yy641;
+                               goto yy150;
                        }
                }
-yy622:
-               YYDEBUG(622, *YYCURSOR);
+yy621:
+               YYDEBUG(621, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'O') {
-                       if (yych == 'A') goto yy634;
-                       if (yych <= 'N') goto yy151;
-                       goto yy635;
+                       if (yych == 'A') goto yy633;
+                       if (yych <= 'N') goto yy150;
+                       goto yy634;
                } else {
                        if (yych <= 'a') {
-                               if (yych <= '`') goto yy151;
-                               goto yy634;
+                               if (yych <= '`') goto yy150;
+                               goto yy633;
                        } else {
-                               if (yych == 'o') goto yy635;
-                               goto yy151;
+                               if (yych == 'o') goto yy634;
+                               goto yy150;
                        }
                }
+yy622:
+               YYDEBUG(622, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'N') goto yy623;
+               if (yych != 'n') goto yy150;
 yy623:
                YYDEBUG(623, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy624;
-               if (yych != 'n') goto yy151;
-yy624:
-               YYDEBUG(624, *YYCURSOR);
-               yych = *++YYCURSOR;
                if (yych <= 'T') {
-                       if (yych <= 'R') goto yy151;
-                       if (yych >= 'T') goto yy626;
+                       if (yych <= 'R') goto yy150;
+                       if (yych >= 'T') goto yy625;
                } else {
-                       if (yych <= 'r') goto yy151;
-                       if (yych <= 's') goto yy625;
-                       if (yych <= 't') goto yy626;
-                       goto yy151;
+                       if (yych <= 'r') goto yy150;
+                       if (yych <= 's') goto yy624;
+                       if (yych <= 't') goto yy625;
+                       goto yy150;
                }
+yy624:
+               YYDEBUG(624, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy631;
+               if (yych == 't') goto yy631;
+               goto yy150;
 yy625:
                YYDEBUG(625, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy632;
-               if (yych == 't') goto yy632;
-               goto yy151;
+               if (yych == 'I') goto yy626;
+               if (yych != 'i') goto yy150;
 yy626:
                YYDEBUG(626, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy627;
-               if (yych != 'i') goto yy151;
+               if (yych == 'N') goto yy627;
+               if (yych != 'n') goto yy150;
 yy627:
                YYDEBUG(627, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy628;
-               if (yych != 'n') goto yy151;
+               if (yych == 'U') goto yy628;
+               if (yych != 'u') goto yy150;
 yy628:
                YYDEBUG(628, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'U') goto yy629;
-               if (yych != 'u') goto yy151;
+               if (yych == 'E') goto yy629;
+               if (yych != 'e') goto yy150;
 yy629:
                YYDEBUG(629, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy630;
-               if (yych != 'e') goto yy151;
-yy630:
-               YYDEBUG(630, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(631, *YYCURSOR);
+               YYDEBUG(630, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1222 "Zend/zend_language_scanner.l"
+#line 1220 "Zend/zend_language_scanner.l"
                {
        return T_CONTINUE;
 }
-#line 6025 "Zend/zend_language_scanner.c"
-yy632:
-               YYDEBUG(632, *YYCURSOR);
+#line 6021 "Zend/zend_language_scanner.c"
+yy631:
+               YYDEBUG(631, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(633, *YYCURSOR);
+               YYDEBUG(632, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1114 "Zend/zend_language_scanner.l"
+#line 1112 "Zend/zend_language_scanner.l"
                {
        return T_CONST;
 }
-#line 6038 "Zend/zend_language_scanner.c"
+#line 6034 "Zend/zend_language_scanner.c"
+yy633:
+               YYDEBUG(633, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'S') goto yy638;
+               if (yych == 's') goto yy638;
+               goto yy150;
 yy634:
                YYDEBUG(634, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'S') goto yy639;
-               if (yych == 's') goto yy639;
-               goto yy151;
+               if (yych == 'N') goto yy635;
+               if (yych != 'n') goto yy150;
 yy635:
                YYDEBUG(635, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy636;
-               if (yych != 'n') goto yy151;
+               if (yych == 'E') goto yy636;
+               if (yych != 'e') goto yy150;
 yy636:
                YYDEBUG(636, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy637;
-               if (yych != 'e') goto yy151;
-yy637:
-               YYDEBUG(637, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(638, *YYCURSOR);
+               YYDEBUG(637, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1304 "Zend/zend_language_scanner.l"
+#line 1302 "Zend/zend_language_scanner.l"
                {
        return T_CLONE;
 }
-#line 6067 "Zend/zend_language_scanner.c"
+#line 6063 "Zend/zend_language_scanner.c"
+yy638:
+               YYDEBUG(638, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'S') goto yy639;
+               if (yych != 's') goto yy150;
 yy639:
                YYDEBUG(639, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'S') goto yy640;
-               if (yych != 's') goto yy151;
-yy640:
-               YYDEBUG(640, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(641, *YYCURSOR);
+               YYDEBUG(640, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1238 "Zend/zend_language_scanner.l"
+#line 1236 "Zend/zend_language_scanner.l"
                {
        return T_CLASS;
 }
-#line 6085 "Zend/zend_language_scanner.c"
+#line 6081 "Zend/zend_language_scanner.c"
+yy641:
+               YYDEBUG(641, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'C') goto yy652;
+               if (yych == 'c') goto yy652;
+               goto yy150;
 yy642:
                YYDEBUG(642, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy653;
-               if (yych == 'c') goto yy653;
-               goto yy151;
+               if (yych == 'E') goto yy650;
+               if (yych == 'e') goto yy650;
+               goto yy150;
 yy643:
                YYDEBUG(643, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy651;
-               if (yych == 'e') goto yy651;
-               goto yy151;
+               if (yych == 'L') goto yy644;
+               if (yych != 'l') goto yy150;
 yy644:
                YYDEBUG(644, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy645;
-               if (yych != 'l') goto yy151;
+               if (yych == 'A') goto yy645;
+               if (yych != 'a') goto yy150;
 yy645:
                YYDEBUG(645, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy646;
-               if (yych != 'a') goto yy151;
+               if (yych == 'B') goto yy646;
+               if (yych != 'b') goto yy150;
 yy646:
                YYDEBUG(646, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'B') goto yy647;
-               if (yych != 'b') goto yy151;
+               if (yych == 'L') goto yy647;
+               if (yych != 'l') goto yy150;
 yy647:
                YYDEBUG(647, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy648;
-               if (yych != 'l') goto yy151;
+               if (yych == 'E') goto yy648;
+               if (yych != 'e') goto yy150;
 yy648:
                YYDEBUG(648, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy649;
-               if (yych != 'e') goto yy151;
-yy649:
-               YYDEBUG(649, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(650, *YYCURSOR);
+               YYDEBUG(649, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1428 "Zend/zend_language_scanner.l"
+#line 1426 "Zend/zend_language_scanner.l"
                {
  return T_CALLABLE;
 }
-#line 6135 "Zend/zend_language_scanner.c"
-yy651:
-               YYDEBUG(651, *YYCURSOR);
+#line 6131 "Zend/zend_language_scanner.c"
+yy650:
+               YYDEBUG(650, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(652, *YYCURSOR);
+               YYDEBUG(651, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1210 "Zend/zend_language_scanner.l"
+#line 1208 "Zend/zend_language_scanner.l"
                {
        return T_CASE;
 }
-#line 6148 "Zend/zend_language_scanner.c"
+#line 6144 "Zend/zend_language_scanner.c"
+yy652:
+               YYDEBUG(652, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'H') goto yy653;
+               if (yych != 'h') goto yy150;
 yy653:
                YYDEBUG(653, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'H') goto yy654;
-               if (yych != 'h') goto yy151;
-yy654:
-               YYDEBUG(654, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(655, *YYCURSOR);
+               YYDEBUG(654, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1130 "Zend/zend_language_scanner.l"
+#line 1128 "Zend/zend_language_scanner.l"
                {
        return T_CATCH;
 }
-#line 6166 "Zend/zend_language_scanner.c"
+#line 6162 "Zend/zend_language_scanner.c"
+yy655:
+               YYDEBUG(655, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'N') goto yy672;
+               if (yych == 'n') goto yy672;
+               goto yy150;
 yy656:
                YYDEBUG(656, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy673;
-               if (yych == 'n') goto yy673;
-               goto yy151;
+               if (yych == 'R') goto yy665;
+               if (yych == 'r') goto yy665;
+               goto yy150;
 yy657:
                YYDEBUG(657, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy666;
-               if (yych == 'r') goto yy666;
-               goto yy151;
+               if (yych == 'N') goto yy658;
+               if (yych != 'n') goto yy150;
 yy658:
                YYDEBUG(658, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy659;
-               if (yych != 'n') goto yy151;
+               if (yych == 'C') goto yy659;
+               if (yych != 'c') goto yy150;
 yy659:
                YYDEBUG(659, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy660;
-               if (yych != 'c') goto yy151;
+               if (yych == 'T') goto yy660;
+               if (yych != 't') goto yy150;
 yy660:
                YYDEBUG(660, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy661;
-               if (yych != 't') goto yy151;
+               if (yych == 'I') goto yy661;
+               if (yych != 'i') goto yy150;
 yy661:
                YYDEBUG(661, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy662;
-               if (yych != 'i') goto yy151;
+               if (yych == 'O') goto yy662;
+               if (yych != 'o') goto yy150;
 yy662:
                YYDEBUG(662, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy663;
-               if (yych != 'o') goto yy151;
+               if (yych == 'N') goto yy663;
+               if (yych != 'n') goto yy150;
 yy663:
                YYDEBUG(663, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'N') goto yy664;
-               if (yych != 'n') goto yy151;
-yy664:
-               YYDEBUG(664, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(665, *YYCURSOR);
+               YYDEBUG(664, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1110 "Zend/zend_language_scanner.l"
+#line 1108 "Zend/zend_language_scanner.l"
                {
        return T_FUNCTION;
 }
-#line 6221 "Zend/zend_language_scanner.c"
-yy666:
-               YYDEBUG(666, *YYCURSOR);
+#line 6217 "Zend/zend_language_scanner.c"
+yy665:
+               YYDEBUG(665, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '^') {
                        if (yych <= '@') {
-                               if (yych <= '/') goto yy667;
-                               if (yych <= '9') goto yy150;
+                               if (yych <= '/') goto yy666;
+                               if (yych <= '9') goto yy149;
                        } else {
-                               if (yych == 'E') goto yy668;
-                               if (yych <= 'Z') goto yy150;
+                               if (yych == 'E') goto yy667;
+                               if (yych <= 'Z') goto yy149;
                        }
                } else {
                        if (yych <= 'd') {
-                               if (yych != '`') goto yy150;
+                               if (yych != '`') goto yy149;
                        } else {
-                               if (yych <= 'e') goto yy668;
-                               if (yych <= 'z') goto yy150;
-                               if (yych >= 0x7F) goto yy150;
+                               if (yych <= 'e') goto yy667;
+                               if (yych <= 'z') goto yy149;
+                               if (yych >= 0x7F) goto yy149;
                        }
                }
-yy667:
-               YYDEBUG(667, *YYCURSOR);
+yy666:
+               YYDEBUG(666, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1170 "Zend/zend_language_scanner.l"
+#line 1168 "Zend/zend_language_scanner.l"
                {
        return T_FOR;
 }
-#line 6249 "Zend/zend_language_scanner.c"
+#line 6245 "Zend/zend_language_scanner.c"
+yy667:
+               YYDEBUG(667, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'A') goto yy668;
+               if (yych != 'a') goto yy150;
 yy668:
                YYDEBUG(668, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy669;
-               if (yych != 'a') goto yy151;
+               if (yych == 'C') goto yy669;
+               if (yych != 'c') goto yy150;
 yy669:
                YYDEBUG(669, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy670;
-               if (yych != 'c') goto yy151;
+               if (yych == 'H') goto yy670;
+               if (yych != 'h') goto yy150;
 yy670:
                YYDEBUG(670, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'H') goto yy671;
-               if (yych != 'h') goto yy151;
-yy671:
-               YYDEBUG(671, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(672, *YYCURSOR);
+               YYDEBUG(671, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1178 "Zend/zend_language_scanner.l"
+#line 1176 "Zend/zend_language_scanner.l"
                {
        return T_FOREACH;
 }
-#line 6277 "Zend/zend_language_scanner.c"
+#line 6273 "Zend/zend_language_scanner.c"
+yy672:
+               YYDEBUG(672, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'A') goto yy673;
+               if (yych != 'a') goto yy150;
 yy673:
                YYDEBUG(673, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy674;
-               if (yych != 'a') goto yy151;
+               if (yych == 'L') goto yy674;
+               if (yych != 'l') goto yy150;
 yy674:
                YYDEBUG(674, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'L') goto yy675;
-               if (yych != 'l') goto yy151;
-yy675:
-               YYDEBUG(675, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '^') {
                        if (yych <= '@') {
-                               if (yych <= '/') goto yy676;
-                               if (yych <= '9') goto yy150;
+                               if (yych <= '/') goto yy675;
+                               if (yych <= '9') goto yy149;
                        } else {
-                               if (yych == 'L') goto yy677;
-                               if (yych <= 'Z') goto yy150;
+                               if (yych == 'L') goto yy676;
+                               if (yych <= 'Z') goto yy149;
                        }
                } else {
                        if (yych <= 'k') {
-                               if (yych != '`') goto yy150;
+                               if (yych != '`') goto yy149;
                        } else {
-                               if (yych <= 'l') goto yy677;
-                               if (yych <= 'z') goto yy150;
-                               if (yych >= 0x7F) goto yy150;
+                               if (yych <= 'l') goto yy676;
+                               if (yych <= 'z') goto yy149;
+                               if (yych >= 0x7F) goto yy149;
                        }
                }
-yy676:
-               YYDEBUG(676, *YYCURSOR);
+yy675:
+               YYDEBUG(675, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1396 "Zend/zend_language_scanner.l"
+#line 1394 "Zend/zend_language_scanner.l"
                {
        return T_FINAL;
 }
-#line 6315 "Zend/zend_language_scanner.c"
+#line 6311 "Zend/zend_language_scanner.c"
+yy676:
+               YYDEBUG(676, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'Y') goto yy677;
+               if (yych != 'y') goto yy150;
 yy677:
                YYDEBUG(677, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'Y') goto yy678;
-               if (yych != 'y') goto yy151;
-yy678:
-               YYDEBUG(678, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(679, *YYCURSOR);
+               YYDEBUG(678, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1134 "Zend/zend_language_scanner.l"
+#line 1132 "Zend/zend_language_scanner.l"
                {
        return T_FINALLY;
 }
-#line 6333 "Zend/zend_language_scanner.c"
-yy680:
-               YYDEBUG(680, *YYCURSOR);
+#line 6329 "Zend/zend_language_scanner.c"
+yy679:
+               YYDEBUG(679, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'F') {
-                       if (yych == 'C') goto yy686;
-                       if (yych <= 'E') goto yy151;
-                       goto yy687;
+                       if (yych == 'C') goto yy685;
+                       if (yych <= 'E') goto yy150;
+                       goto yy686;
                } else {
                        if (yych <= 'c') {
-                               if (yych <= 'b') goto yy151;
-                               goto yy686;
+                               if (yych <= 'b') goto yy150;
+                               goto yy685;
                        } else {
-                               if (yych == 'f') goto yy687;
-                               goto yy151;
+                               if (yych == 'f') goto yy686;
+                               goto yy150;
                        }
                }
+yy680:
+               YYDEBUG(680, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy683;
+               if (yych == 'e') goto yy683;
+               goto yy150;
 yy681:
                YYDEBUG(681, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy684;
-               if (yych == 'e') goto yy684;
-               goto yy151;
-yy682:
-               YYDEBUG(682, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(683, *YYCURSOR);
+               YYDEBUG(682, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1166 "Zend/zend_language_scanner.l"
+#line 1164 "Zend/zend_language_scanner.l"
                {
        return T_DO;
 }
-#line 6368 "Zend/zend_language_scanner.c"
-yy684:
-               YYDEBUG(684, *YYCURSOR);
+#line 6364 "Zend/zend_language_scanner.c"
+yy683:
+               YYDEBUG(683, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(685, *YYCURSOR);
+               YYDEBUG(684, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1106 "Zend/zend_language_scanner.l"
+#line 1104 "Zend/zend_language_scanner.l"
                {
        return T_EXIT;
 }
-#line 6381 "Zend/zend_language_scanner.c"
+#line 6377 "Zend/zend_language_scanner.c"
+yy685:
+               YYDEBUG(685, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'L') goto yy692;
+               if (yych == 'l') goto yy692;
+               goto yy150;
 yy686:
                YYDEBUG(686, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy693;
-               if (yych == 'l') goto yy693;
-               goto yy151;
+               if (yych == 'A') goto yy687;
+               if (yych != 'a') goto yy150;
 yy687:
                YYDEBUG(687, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy688;
-               if (yych != 'a') goto yy151;
+               if (yych == 'U') goto yy688;
+               if (yych != 'u') goto yy150;
 yy688:
                YYDEBUG(688, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'U') goto yy689;
-               if (yych != 'u') goto yy151;
+               if (yych == 'L') goto yy689;
+               if (yych != 'l') goto yy150;
 yy689:
                YYDEBUG(689, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy690;
-               if (yych != 'l') goto yy151;
+               if (yych == 'T') goto yy690;
+               if (yych != 't') goto yy150;
 yy690:
                YYDEBUG(690, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy691;
-               if (yych != 't') goto yy151;
-yy691:
-               YYDEBUG(691, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(692, *YYCURSOR);
+               YYDEBUG(691, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1214 "Zend/zend_language_scanner.l"
+#line 1212 "Zend/zend_language_scanner.l"
                {
        return T_DEFAULT;
 }
-#line 6420 "Zend/zend_language_scanner.c"
+#line 6416 "Zend/zend_language_scanner.c"
+yy692:
+               YYDEBUG(692, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'A') goto yy693;
+               if (yych != 'a') goto yy150;
 yy693:
                YYDEBUG(693, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy694;
-               if (yych != 'a') goto yy151;
+               if (yych == 'R') goto yy694;
+               if (yych != 'r') goto yy150;
 yy694:
                YYDEBUG(694, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy695;
-               if (yych != 'r') goto yy151;
+               if (yych == 'E') goto yy695;
+               if (yych != 'e') goto yy150;
 yy695:
                YYDEBUG(695, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy696;
-               if (yych != 'e') goto yy151;
-yy696:
-               YYDEBUG(696, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(697, *YYCURSOR);
+               YYDEBUG(696, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1186 "Zend/zend_language_scanner.l"
+#line 1184 "Zend/zend_language_scanner.l"
                {
        return T_DECLARE;
 }
-#line 6448 "Zend/zend_language_scanner.c"
+#line 6444 "Zend/zend_language_scanner.c"
+yy697:
+               YYDEBUG(697, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'H') goto yy759;
+               if (yych == 'h') goto yy759;
+               goto yy150;
 yy698:
                YYDEBUG(698, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'H') goto yy760;
-               if (yych == 'h') goto yy760;
-               goto yy151;
+               if (yych == 'S') goto yy753;
+               if (yych == 's') goto yy753;
+               goto yy150;
 yy699:
                YYDEBUG(699, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'S') goto yy754;
-               if (yych == 's') goto yy754;
-               goto yy151;
+               if (yych == 'P') goto yy749;
+               if (yych == 'p') goto yy749;
+               goto yy150;
 yy700:
                YYDEBUG(700, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'P') goto yy750;
-               if (yych == 'p') goto yy750;
-               goto yy151;
+               if (yych == 'D') goto yy715;
+               if (yych == 'd') goto yy715;
+               goto yy150;
 yy701:
                YYDEBUG(701, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'D') goto yy716;
-               if (yych == 'd') goto yy716;
-               goto yy151;
+               if (yych == 'A') goto yy712;
+               if (yych == 'a') goto yy712;
+               goto yy150;
 yy702:
                YYDEBUG(702, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy713;
-               if (yych == 'a') goto yy713;
-               goto yy151;
-yy703:
-               YYDEBUG(703, *YYCURSOR);
-               yych = *++YYCURSOR;
                if (yych <= 'T') {
-                       if (yych == 'I') goto yy704;
-                       if (yych <= 'S') goto yy151;
-                       goto yy705;
+                       if (yych == 'I') goto yy703;
+                       if (yych <= 'S') goto yy150;
+                       goto yy704;
                } else {
                        if (yych <= 'i') {
-                               if (yych <= 'h') goto yy151;
+                               if (yych <= 'h') goto yy150;
                        } else {
-                               if (yych == 't') goto yy705;
-                               goto yy151;
+                               if (yych == 't') goto yy704;
+                               goto yy150;
                        }
                }
+yy703:
+               YYDEBUG(703, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy710;
+               if (yych == 't') goto yy710;
+               goto yy150;
 yy704:
                YYDEBUG(704, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy711;
-               if (yych == 't') goto yy711;
-               goto yy151;
+               if (yych == 'E') goto yy705;
+               if (yych != 'e') goto yy150;
 yy705:
                YYDEBUG(705, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy706;
-               if (yych != 'e') goto yy151;
+               if (yych == 'N') goto yy706;
+               if (yych != 'n') goto yy150;
 yy706:
                YYDEBUG(706, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy707;
-               if (yych != 'n') goto yy151;
+               if (yych == 'D') goto yy707;
+               if (yych != 'd') goto yy150;
 yy707:
                YYDEBUG(707, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'D') goto yy708;
-               if (yych != 'd') goto yy151;
+               if (yych == 'S') goto yy708;
+               if (yych != 's') goto yy150;
 yy708:
                YYDEBUG(708, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'S') goto yy709;
-               if (yych != 's') goto yy151;
-yy709:
-               YYDEBUG(709, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(710, *YYCURSOR);
+               YYDEBUG(709, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1250 "Zend/zend_language_scanner.l"
+#line 1248 "Zend/zend_language_scanner.l"
                {
        return T_EXTENDS;
 }
-#line 6532 "Zend/zend_language_scanner.c"
-yy711:
-               YYDEBUG(711, *YYCURSOR);
+#line 6528 "Zend/zend_language_scanner.c"
+yy710:
+               YYDEBUG(710, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(712, *YYCURSOR);
+               YYDEBUG(711, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1102 "Zend/zend_language_scanner.l"
+#line 1100 "Zend/zend_language_scanner.l"
                {
        return T_EXIT;
 }
-#line 6545 "Zend/zend_language_scanner.c"
+#line 6541 "Zend/zend_language_scanner.c"
+yy712:
+               YYDEBUG(712, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'L') goto yy713;
+               if (yych != 'l') goto yy150;
 yy713:
                YYDEBUG(713, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'L') goto yy714;
-               if (yych != 'l') goto yy151;
-yy714:
-               YYDEBUG(714, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(715, *YYCURSOR);
+               YYDEBUG(714, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1340 "Zend/zend_language_scanner.l"
+#line 1338 "Zend/zend_language_scanner.l"
                {
        return T_EVAL;
 }
-#line 6563 "Zend/zend_language_scanner.c"
-yy716:
-               YYDEBUG(716, *YYCURSOR);
+#line 6559 "Zend/zend_language_scanner.c"
+yy715:
+               YYDEBUG(715, *YYCURSOR);
                yych = *++YYCURSOR;
                YYDEBUG(-1, yych);
                switch (yych) {
                case 'D':
-               case 'd':       goto yy717;
+               case 'd':       goto yy716;
                case 'F':
-               case 'f':       goto yy718;
+               case 'f':       goto yy717;
                case 'I':
-               case 'i':       goto yy719;
+               case 'i':       goto yy718;
                case 'S':
-               case 's':       goto yy720;
+               case 's':       goto yy719;
                case 'W':
-               case 'w':       goto yy721;
-               default:        goto yy151;
+               case 'w':       goto yy720;
+               default:        goto yy150;
                }
+yy716:
+               YYDEBUG(716, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy742;
+               if (yych == 'e') goto yy742;
+               goto yy150;
 yy717:
                YYDEBUG(717, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy743;
-               if (yych == 'e') goto yy743;
-               goto yy151;
+               if (yych == 'O') goto yy734;
+               if (yych == 'o') goto yy734;
+               goto yy150;
 yy718:
                YYDEBUG(718, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy735;
-               if (yych == 'o') goto yy735;
-               goto yy151;
+               if (yych == 'F') goto yy732;
+               if (yych == 'f') goto yy732;
+               goto yy150;
 yy719:
                YYDEBUG(719, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'F') goto yy733;
-               if (yych == 'f') goto yy733;
-               goto yy151;
+               if (yych == 'W') goto yy726;
+               if (yych == 'w') goto yy726;
+               goto yy150;
 yy720:
                YYDEBUG(720, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'W') goto yy727;
-               if (yych == 'w') goto yy727;
-               goto yy151;
+               if (yych == 'H') goto yy721;
+               if (yych != 'h') goto yy150;
 yy721:
                YYDEBUG(721, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'H') goto yy722;
-               if (yych != 'h') goto yy151;
+               if (yych == 'I') goto yy722;
+               if (yych != 'i') goto yy150;
 yy722:
                YYDEBUG(722, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy723;
-               if (yych != 'i') goto yy151;
+               if (yych == 'L') goto yy723;
+               if (yych != 'l') goto yy150;
 yy723:
                YYDEBUG(723, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy724;
-               if (yych != 'l') goto yy151;
+               if (yych == 'E') goto yy724;
+               if (yych != 'e') goto yy150;
 yy724:
                YYDEBUG(724, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy725;
-               if (yych != 'e') goto yy151;
-yy725:
-               YYDEBUG(725, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(726, *YYCURSOR);
+               YYDEBUG(725, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1162 "Zend/zend_language_scanner.l"
+#line 1160 "Zend/zend_language_scanner.l"
                {
        return T_ENDWHILE;
 }
-#line 6637 "Zend/zend_language_scanner.c"
+#line 6633 "Zend/zend_language_scanner.c"
+yy726:
+               YYDEBUG(726, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'I') goto yy727;
+               if (yych != 'i') goto yy150;
 yy727:
                YYDEBUG(727, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy728;
-               if (yych != 'i') goto yy151;
+               if (yych == 'T') goto yy728;
+               if (yych != 't') goto yy150;
 yy728:
                YYDEBUG(728, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy729;
-               if (yych != 't') goto yy151;
+               if (yych == 'C') goto yy729;
+               if (yych != 'c') goto yy150;
 yy729:
                YYDEBUG(729, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy730;
-               if (yych != 'c') goto yy151;
+               if (yych == 'H') goto yy730;
+               if (yych != 'h') goto yy150;
 yy730:
                YYDEBUG(730, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'H') goto yy731;
-               if (yych != 'h') goto yy151;
-yy731:
-               YYDEBUG(731, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(732, *YYCURSOR);
+               YYDEBUG(731, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1206 "Zend/zend_language_scanner.l"
+#line 1204 "Zend/zend_language_scanner.l"
                {
        return T_ENDSWITCH;
 }
-#line 6670 "Zend/zend_language_scanner.c"
-yy733:
-               YYDEBUG(733, *YYCURSOR);
+#line 6666 "Zend/zend_language_scanner.c"
+yy732:
+               YYDEBUG(732, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(734, *YYCURSOR);
+               YYDEBUG(733, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1150 "Zend/zend_language_scanner.l"
+#line 1148 "Zend/zend_language_scanner.l"
                {
        return T_ENDIF;
 }
-#line 6683 "Zend/zend_language_scanner.c"
+#line 6679 "Zend/zend_language_scanner.c"
+yy734:
+               YYDEBUG(734, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'R') goto yy735;
+               if (yych != 'r') goto yy150;
 yy735:
                YYDEBUG(735, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'R') goto yy736;
-               if (yych != 'r') goto yy151;
-yy736:
-               YYDEBUG(736, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '^') {
                        if (yych <= '@') {
-                               if (yych <= '/') goto yy737;
-                               if (yych <= '9') goto yy150;
+                               if (yych <= '/') goto yy736;
+                               if (yych <= '9') goto yy149;
                        } else {
-                               if (yych == 'E') goto yy738;
-                               if (yych <= 'Z') goto yy150;
+                               if (yych == 'E') goto yy737;
+                               if (yych <= 'Z') goto yy149;
                        }
                } else {
                        if (yych <= 'd') {
-                               if (yych != '`') goto yy150;
+                               if (yych != '`') goto yy149;
                        } else {
-                               if (yych <= 'e') goto yy738;
-                               if (yych <= 'z') goto yy150;
-                               if (yych >= 0x7F) goto yy150;
+                               if (yych <= 'e') goto yy737;
+                               if (yych <= 'z') goto yy149;
+                               if (yych >= 0x7F) goto yy149;
                        }
                }
-yy737:
-               YYDEBUG(737, *YYCURSOR);
+yy736:
+               YYDEBUG(736, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1174 "Zend/zend_language_scanner.l"
+#line 1172 "Zend/zend_language_scanner.l"
                {
        return T_ENDFOR;
 }
-#line 6716 "Zend/zend_language_scanner.c"
+#line 6712 "Zend/zend_language_scanner.c"
+yy737:
+               YYDEBUG(737, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'A') goto yy738;
+               if (yych != 'a') goto yy150;
 yy738:
                YYDEBUG(738, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy739;
-               if (yych != 'a') goto yy151;
+               if (yych == 'C') goto yy739;
+               if (yych != 'c') goto yy150;
 yy739:
                YYDEBUG(739, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy740;
-               if (yych != 'c') goto yy151;
+               if (yych == 'H') goto yy740;
+               if (yych != 'h') goto yy150;
 yy740:
                YYDEBUG(740, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'H') goto yy741;
-               if (yych != 'h') goto yy151;
-yy741:
-               YYDEBUG(741, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(742, *YYCURSOR);
+               YYDEBUG(741, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1182 "Zend/zend_language_scanner.l"
+#line 1180 "Zend/zend_language_scanner.l"
                {
        return T_ENDFOREACH;
 }
-#line 6744 "Zend/zend_language_scanner.c"
+#line 6740 "Zend/zend_language_scanner.c"
+yy742:
+               YYDEBUG(742, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'C') goto yy743;
+               if (yych != 'c') goto yy150;
 yy743:
                YYDEBUG(743, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy744;
-               if (yych != 'c') goto yy151;
+               if (yych == 'L') goto yy744;
+               if (yych != 'l') goto yy150;
 yy744:
                YYDEBUG(744, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy745;
-               if (yych != 'l') goto yy151;
+               if (yych == 'A') goto yy745;
+               if (yych != 'a') goto yy150;
 yy745:
                YYDEBUG(745, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy746;
-               if (yych != 'a') goto yy151;
+               if (yych == 'R') goto yy746;
+               if (yych != 'r') goto yy150;
 yy746:
                YYDEBUG(746, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy747;
-               if (yych != 'r') goto yy151;
+               if (yych == 'E') goto yy747;
+               if (yych != 'e') goto yy150;
 yy747:
                YYDEBUG(747, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy748;
-               if (yych != 'e') goto yy151;
-yy748:
-               YYDEBUG(748, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(749, *YYCURSOR);
+               YYDEBUG(748, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1190 "Zend/zend_language_scanner.l"
+#line 1188 "Zend/zend_language_scanner.l"
                {
        return T_ENDDECLARE;
 }
-#line 6782 "Zend/zend_language_scanner.c"
+#line 6778 "Zend/zend_language_scanner.c"
+yy749:
+               YYDEBUG(749, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy750;
+               if (yych != 't') goto yy150;
 yy750:
                YYDEBUG(750, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy751;
-               if (yych != 't') goto yy151;
+               if (yych == 'Y') goto yy751;
+               if (yych != 'y') goto yy150;
 yy751:
                YYDEBUG(751, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'Y') goto yy752;
-               if (yych != 'y') goto yy151;
-yy752:
-               YYDEBUG(752, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(753, *YYCURSOR);
+               YYDEBUG(752, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1380 "Zend/zend_language_scanner.l"
+#line 1378 "Zend/zend_language_scanner.l"
                {
        return T_EMPTY;
 }
-#line 6805 "Zend/zend_language_scanner.c"
+#line 6801 "Zend/zend_language_scanner.c"
+yy753:
+               YYDEBUG(753, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy754;
+               if (yych != 'e') goto yy150;
 yy754:
                YYDEBUG(754, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy755;
-               if (yych != 'e') goto yy151;
-yy755:
-               YYDEBUG(755, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '^') {
                        if (yych <= '@') {
-                               if (yych <= '/') goto yy756;
-                               if (yych <= '9') goto yy150;
+                               if (yych <= '/') goto yy755;
+                               if (yych <= '9') goto yy149;
                        } else {
-                               if (yych == 'I') goto yy757;
-                               if (yych <= 'Z') goto yy150;
+                               if (yych == 'I') goto yy756;
+                               if (yych <= 'Z') goto yy149;
                        }
                } else {
                        if (yych <= 'h') {
-                               if (yych != '`') goto yy150;
+                               if (yych != '`') goto yy149;
                        } else {
-                               if (yych <= 'i') goto yy757;
-                               if (yych <= 'z') goto yy150;
-                               if (yych >= 0x7F) goto yy150;
+                               if (yych <= 'i') goto yy756;
+                               if (yych <= 'z') goto yy149;
+                               if (yych >= 0x7F) goto yy149;
                        }
                }
-yy756:
-               YYDEBUG(756, *YYCURSOR);
+yy755:
+               YYDEBUG(755, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1154 "Zend/zend_language_scanner.l"
+#line 1152 "Zend/zend_language_scanner.l"
                {
        return T_ELSE;
 }
-#line 6838 "Zend/zend_language_scanner.c"
+#line 6834 "Zend/zend_language_scanner.c"
+yy756:
+               YYDEBUG(756, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'F') goto yy757;
+               if (yych != 'f') goto yy150;
 yy757:
                YYDEBUG(757, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'F') goto yy758;
-               if (yych != 'f') goto yy151;
-yy758:
-               YYDEBUG(758, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(759, *YYCURSOR);
+               YYDEBUG(758, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1146 "Zend/zend_language_scanner.l"
+#line 1144 "Zend/zend_language_scanner.l"
                {
        return T_ELSEIF;
 }
-#line 6856 "Zend/zend_language_scanner.c"
+#line 6852 "Zend/zend_language_scanner.c"
+yy759:
+               YYDEBUG(759, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'O') goto yy760;
+               if (yych != 'o') goto yy150;
 yy760:
                YYDEBUG(760, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'O') goto yy761;
-               if (yych != 'o') goto yy151;
-yy761:
-               YYDEBUG(761, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(762, *YYCURSOR);
+               YYDEBUG(761, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1230 "Zend/zend_language_scanner.l"
+#line 1228 "Zend/zend_language_scanner.l"
                {
        return T_ECHO;
 }
-#line 6874 "Zend/zend_language_scanner.c"
+#line 6870 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_LOOKING_FOR_PROPERTY:
@@ -6909,111 +6905,111 @@ yyc_ST_LOOKING_FOR_PROPERTY:
                         64,  64,  64,  64,  64,  64,  64,  64, 
                         64,  64,  64,  64,  64,  64,  64,  64, 
                };
-               YYDEBUG(763, *YYCURSOR);
+               YYDEBUG(762, *YYCURSOR);
                YYFILL(2);
                yych = *YYCURSOR;
                if (yych <= '-') {
                        if (yych <= '\r') {
-                               if (yych <= 0x08) goto yy771;
-                               if (yych <= '\n') goto yy765;
-                               if (yych <= '\f') goto yy771;
+                               if (yych <= 0x08) goto yy770;
+                               if (yych <= '\n') goto yy764;
+                               if (yych <= '\f') goto yy770;
                        } else {
-                               if (yych == ' ') goto yy765;
-                               if (yych <= ',') goto yy771;
-                               goto yy767;
+                               if (yych == ' ') goto yy764;
+                               if (yych <= ',') goto yy770;
+                               goto yy766;
                        }
                } else {
                        if (yych <= '_') {
-                               if (yych <= '@') goto yy771;
-                               if (yych <= 'Z') goto yy769;
-                               if (yych <= '^') goto yy771;
-                               goto yy769;
+                               if (yych <= '@') goto yy770;
+                               if (yych <= 'Z') goto yy768;
+                               if (yych <= '^') goto yy770;
+                               goto yy768;
                        } else {
-                               if (yych <= '`') goto yy771;
-                               if (yych <= 'z') goto yy769;
-                               if (yych <= '~') goto yy771;
-                               goto yy769;
+                               if (yych <= '`') goto yy770;
+                               if (yych <= 'z') goto yy768;
+                               if (yych <= '~') goto yy770;
+                               goto yy768;
                        }
                }
-yy765:
-               YYDEBUG(765, *YYCURSOR);
+yy764:
+               YYDEBUG(764, *YYCURSOR);
                ++YYCURSOR;
                yych = *YYCURSOR;
-               goto yy777;
-yy766:
-               YYDEBUG(766, *YYCURSOR);
+               goto yy776;
+yy765:
+               YYDEBUG(765, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1263 "Zend/zend_language_scanner.l"
+#line 1261 "Zend/zend_language_scanner.l"
                {
        HANDLE_NEWLINES(yytext, yyleng);
        return T_WHITESPACE;
 }
-#line 6952 "Zend/zend_language_scanner.c"
+#line 6948 "Zend/zend_language_scanner.c"
+yy766:
+               YYDEBUG(766, *YYCURSOR);
+               ++YYCURSOR;
+               if ((yych = *YYCURSOR) == '>') goto yy773;
 yy767:
                YYDEBUG(767, *YYCURSOR);
-               ++YYCURSOR;
-               if ((yych = *YYCURSOR) == '>') goto yy774;
-yy768:
-               YYDEBUG(768, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1278 "Zend/zend_language_scanner.l"
+#line 1276 "Zend/zend_language_scanner.l"
                {
        yyless(0);
        yy_pop_state();
        goto restart;
 }
-#line 6966 "Zend/zend_language_scanner.c"
-yy769:
-               YYDEBUG(769, *YYCURSOR);
+#line 6962 "Zend/zend_language_scanner.c"
+yy768:
+               YYDEBUG(768, *YYCURSOR);
                ++YYCURSOR;
                yych = *YYCURSOR;
-               goto yy773;
-yy770:
-               YYDEBUG(770, *YYCURSOR);
+               goto yy772;
+yy769:
+               YYDEBUG(769, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1272 "Zend/zend_language_scanner.l"
+#line 1270 "Zend/zend_language_scanner.l"
                {
        yy_pop_state();
        zend_copy_value(zendlval, yytext, yyleng);
        return T_STRING;
 }
-#line 6981 "Zend/zend_language_scanner.c"
+#line 6977 "Zend/zend_language_scanner.c"
+yy770:
+               YYDEBUG(770, *YYCURSOR);
+               yych = *++YYCURSOR;
+               goto yy767;
 yy771:
                YYDEBUG(771, *YYCURSOR);
-               yych = *++YYCURSOR;
-               goto yy768;
-yy772:
-               YYDEBUG(772, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-yy773:
-               YYDEBUG(773, *YYCURSOR);
+yy772:
+               YYDEBUG(772, *YYCURSOR);
                if (yybm[0+yych] & 64) {
-                       goto yy772;
+                       goto yy771;
                }
-               goto yy770;
-yy774:
-               YYDEBUG(774, *YYCURSOR);
+               goto yy769;
+yy773:
+               YYDEBUG(773, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(775, *YYCURSOR);
+               YYDEBUG(774, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1268 "Zend/zend_language_scanner.l"
+#line 1266 "Zend/zend_language_scanner.l"
                {
        return T_OBJECT_OPERATOR;
 }
-#line 7006 "Zend/zend_language_scanner.c"
-yy776:
-               YYDEBUG(776, *YYCURSOR);
+#line 7002 "Zend/zend_language_scanner.c"
+yy775:
+               YYDEBUG(775, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-yy777:
-               YYDEBUG(777, *YYCURSOR);
+yy776:
+               YYDEBUG(776, *YYCURSOR);
                if (yybm[0+yych] & 128) {
-                       goto yy776;
+                       goto yy775;
                }
-               goto yy766;
+               goto yy765;
        }
 /* *********************************** */
 yyc_ST_LOOKING_FOR_VARNAME:
@@ -7052,76 +7048,74 @@ yyc_ST_LOOKING_FOR_VARNAME:
                        128, 128, 128, 128, 128, 128, 128, 128, 
                        128, 128, 128, 128, 128, 128, 128, 128, 
                };
-               YYDEBUG(778, *YYCURSOR);
+               YYDEBUG(777, *YYCURSOR);
                YYFILL(2);
                yych = *YYCURSOR;
                if (yych <= '_') {
-                       if (yych <= '@') goto yy782;
-                       if (yych <= 'Z') goto yy780;
-                       if (yych <= '^') goto yy782;
+                       if (yych <= '@') goto yy781;
+                       if (yych <= 'Z') goto yy779;
+                       if (yych <= '^') goto yy781;
                } else {
-                       if (yych <= '`') goto yy782;
-                       if (yych <= 'z') goto yy780;
-                       if (yych <= '~') goto yy782;
+                       if (yych <= '`') goto yy781;
+                       if (yych <= 'z') goto yy779;
+                       if (yych <= '~') goto yy781;
                }
-yy780:
-               YYDEBUG(780, *YYCURSOR);
+yy779:
+               YYDEBUG(779, *YYCURSOR);
                yyaccept = 0;
                yych = *(YYMARKER = ++YYCURSOR);
                if (yych <= '_') {
                        if (yych <= '@') {
-                               if (yych <= '/') goto yy781;
-                               if (yych <= '9') goto yy784;
+                               if (yych <= '/') goto yy780;
+                               if (yych <= '9') goto yy783;
                        } else {
-                               if (yych <= '[') goto yy784;
-                               if (yych >= '_') goto yy784;
+                               if (yych <= '[') goto yy783;
+                               if (yych >= '_') goto yy783;
                        }
                } else {
                        if (yych <= '|') {
-                               if (yych <= '`') goto yy781;
-                               if (yych <= 'z') goto yy784;
+                               if (yych <= '`') goto yy780;
+                               if (yych <= 'z') goto yy783;
                        } else {
-                               if (yych != '~') goto yy784;
+                               if (yych != '~') goto yy783;
                        }
                }
-yy781:
-               YYDEBUG(781, *YYCURSOR);
+yy780:
+               YYDEBUG(780, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1583 "Zend/zend_language_scanner.l"
+#line 1581 "Zend/zend_language_scanner.l"
                {
        yyless(0);
        yy_pop_state();
        yy_push_state(ST_IN_SCRIPTING);
        goto restart;
 }
-#line 7098 "Zend/zend_language_scanner.c"
+#line 7094 "Zend/zend_language_scanner.c"
+yy781:
+               YYDEBUG(781, *YYCURSOR);
+               yych = *++YYCURSOR;
+               goto yy780;
 yy782:
                YYDEBUG(782, *YYCURSOR);
-               yych = *++YYCURSOR;
-               goto yy781;
-yy783:
-               YYDEBUG(783, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-yy784:
-               YYDEBUG(784, *YYCURSOR);
+yy783:
+               YYDEBUG(783, *YYCURSOR);
                if (yybm[0+yych] & 128) {
-                       goto yy783;
+                       goto yy782;
                }
-               if (yych <= '@') goto yy785;
-               if (yych <= '[') goto yy786;
-               if (yych == '}') goto yy786;
+               if (yych == '[') goto yy785;
+               if (yych == '}') goto yy785;
+               YYDEBUG(784, *YYCURSOR);
+               YYCURSOR = YYMARKER;
+               goto yy780;
 yy785:
                YYDEBUG(785, *YYCURSOR);
-               YYCURSOR = YYMARKER;
-               goto yy781;
-yy786:
-               YYDEBUG(786, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(787, *YYCURSOR);
+               YYDEBUG(786, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1574 "Zend/zend_language_scanner.l"
+#line 1572 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        zend_copy_value(zendlval, yytext, yyleng);
@@ -7129,18 +7123,18 @@ yy786:
        yy_push_state(ST_IN_SCRIPTING);
        return T_STRING_VARNAME;
 }
-#line 7133 "Zend/zend_language_scanner.c"
+#line 7127 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_NOWDOC:
-       YYDEBUG(788, *YYCURSOR);
+       YYDEBUG(787, *YYCURSOR);
        YYFILL(1);
        yych = *YYCURSOR;
-       YYDEBUG(790, *YYCURSOR);
+       YYDEBUG(789, *YYCURSOR);
        ++YYCURSOR;
-       YYDEBUG(791, *YYCURSOR);
+       YYDEBUG(790, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 2296 "Zend/zend_language_scanner.l"
+#line 2294 "Zend/zend_language_scanner.l"
        {
        int newline = 0;
 
@@ -7196,7 +7190,7 @@ nowdoc_scan_done:
        HANDLE_NEWLINES(yytext, yyleng - newline);
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 7200 "Zend/zend_language_scanner.c"
+#line 7194 "Zend/zend_language_scanner.c"
 /* *********************************** */
 yyc_ST_VAR_OFFSET:
        {
@@ -7234,76 +7228,76 @@ yyc_ST_VAR_OFFSET:
                         16,  16,  16,  16,  16,  16,  16,  16, 
                         16,  16,  16,  16,  16,  16,  16,  16, 
                };
-               YYDEBUG(792, *YYCURSOR);
+               YYDEBUG(791, *YYCURSOR);
                YYFILL(3);
                yych = *YYCURSOR;
                if (yych <= '/') {
                        if (yych <= ' ') {
                                if (yych <= '\f') {
-                                       if (yych <= 0x08) goto yy806;
-                                       if (yych <= '\n') goto yy802;
-                                       goto yy806;
+                                       if (yych <= 0x08) goto yy805;
+                                       if (yych <= '\n') goto yy801;
+                                       goto yy805;
                                } else {
-                                       if (yych <= '\r') goto yy802;
-                                       if (yych <= 0x1F) goto yy806;
-                                       goto yy802;
+                                       if (yych <= '\r') goto yy801;
+                                       if (yych <= 0x1F) goto yy805;
+                                       goto yy801;
                                }
                        } else {
                                if (yych <= '$') {
-                                       if (yych <= '"') goto yy801;
-                                       if (yych <= '#') goto yy802;
-                                       goto yy797;
+                                       if (yych <= '"') goto yy800;
+                                       if (yych <= '#') goto yy801;
+                                       goto yy796;
                                } else {
-                                       if (yych == '\'') goto yy802;
-                                       goto yy801;
+                                       if (yych == '\'') goto yy801;
+                                       goto yy800;
                                }
                        }
                } else {
                        if (yych <= '\\') {
                                if (yych <= '@') {
-                                       if (yych <= '0') goto yy794;
-                                       if (yych <= '9') goto yy796;
-                                       goto yy801;
+                                       if (yych <= '0') goto yy793;
+                                       if (yych <= '9') goto yy795;
+                                       goto yy800;
                                } else {
-                                       if (yych <= 'Z') goto yy804;
-                                       if (yych <= '[') goto yy801;
-                                       goto yy802;
+                                       if (yych <= 'Z') goto yy803;
+                                       if (yych <= '[') goto yy800;
+                                       goto yy801;
                                }
                        } else {
                                if (yych <= '_') {
-                                       if (yych <= ']') goto yy799;
-                                       if (yych <= '^') goto yy801;
-                                       goto yy804;
+                                       if (yych <= ']') goto yy798;
+                                       if (yych <= '^') goto yy800;
+                                       goto yy803;
                                } else {
-                                       if (yych <= '`') goto yy801;
-                                       if (yych <= 'z') goto yy804;
-                                       if (yych <= '~') goto yy801;
-                                       goto yy804;
+                                       if (yych <= '`') goto yy800;
+                                       if (yych <= 'z') goto yy803;
+                                       if (yych <= '~') goto yy800;
+                                       goto yy803;
                                }
                        }
                }
-yy794:
-               YYDEBUG(794, *YYCURSOR);
+yy793:
+               YYDEBUG(793, *YYCURSOR);
                yyaccept = 0;
                yych = *(YYMARKER = ++YYCURSOR);
                if (yych <= 'W') {
                        if (yych <= '9') {
-                               if (yych >= '0') goto yy818;
+                               if (yych >= '0') goto yy817;
                        } else {
-                               if (yych == 'B') goto yy815;
+                               if (yych == 'B') goto yy814;
                        }
                } else {
                        if (yych <= 'b') {
-                               if (yych <= 'X') goto yy817;
-                               if (yych >= 'b') goto yy815;
+                               if (yych <= 'X') goto yy816;
+                               if (yych >= 'b') goto yy814;
                        } else {
-                               if (yych == 'x') goto yy817;
+                               if (yych == 'x') goto yy816;
                        }
                }
-yy795:
-               YYDEBUG(795, *YYCURSOR);
+yy794:
+               YYDEBUG(794, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1685 "Zend/zend_language_scanner.l"
+#line 1683 "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;
@@ -7319,53 +7313,53 @@ string:
        }
        return T_NUM_STRING;
 }
-#line 7323 "Zend/zend_language_scanner.c"
+#line 7317 "Zend/zend_language_scanner.c"
+yy795:
+               YYDEBUG(795, *YYCURSOR);
+               yych = *++YYCURSOR;
+               goto yy813;
 yy796:
                YYDEBUG(796, *YYCURSOR);
-               yych = *++YYCURSOR;
-               goto yy814;
-yy797:
-               YYDEBUG(797, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '_') {
-                       if (yych <= '@') goto yy798;
-                       if (yych <= 'Z') goto yy810;
-                       if (yych >= '_') goto yy810;
+                       if (yych <= '@') goto yy797;
+                       if (yych <= 'Z') goto yy809;
+                       if (yych >= '_') goto yy809;
                } else {
-                       if (yych <= '`') goto yy798;
-                       if (yych <= 'z') goto yy810;
-                       if (yych >= 0x7F) goto yy810;
+                       if (yych <= '`') goto yy797;
+                       if (yych <= 'z') goto yy809;
+                       if (yych >= 0x7F) goto yy809;
                }
-yy798:
-               YYDEBUG(798, *YYCURSOR);
+yy797:
+               YYDEBUG(797, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1845 "Zend/zend_language_scanner.l"
+#line 1843 "Zend/zend_language_scanner.l"
                {
        /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */
        return yytext[0];
 }
-#line 7348 "Zend/zend_language_scanner.c"
-yy799:
-               YYDEBUG(799, *YYCURSOR);
+#line 7342 "Zend/zend_language_scanner.c"
+yy798:
+               YYDEBUG(798, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(800, *YYCURSOR);
+               YYDEBUG(799, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1840 "Zend/zend_language_scanner.l"
+#line 1838 "Zend/zend_language_scanner.l"
                {
        yy_pop_state();
        return ']';
 }
-#line 7359 "Zend/zend_language_scanner.c"
+#line 7353 "Zend/zend_language_scanner.c"
+yy800:
+               YYDEBUG(800, *YYCURSOR);
+               yych = *++YYCURSOR;
+               goto yy797;
 yy801:
                YYDEBUG(801, *YYCURSOR);
-               yych = *++YYCURSOR;
-               goto yy798;
-yy802:
-               YYDEBUG(802, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(803, *YYCURSOR);
+               YYDEBUG(802, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1850 "Zend/zend_language_scanner.l"
+#line 1848 "Zend/zend_language_scanner.l"
                {
        /* Invalid rule to return a more explicit parse error with proper line number */
        yyless(0);
@@ -7373,27 +7367,27 @@ yy802:
        ZVAL_NULL(zendlval);
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 7377 "Zend/zend_language_scanner.c"
-yy804:
-               YYDEBUG(804, *YYCURSOR);
+#line 7371 "Zend/zend_language_scanner.c"
+yy803:
+               YYDEBUG(803, *YYCURSOR);
                ++YYCURSOR;
                yych = *YYCURSOR;
-               goto yy809;
-yy805:
-               YYDEBUG(805, *YYCURSOR);
+               goto yy808;
+yy804:
+               YYDEBUG(804, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1858 "Zend/zend_language_scanner.l"
+#line 1856 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        return T_STRING;
 }
-#line 7391 "Zend/zend_language_scanner.c"
-yy806:
-               YYDEBUG(806, *YYCURSOR);
+#line 7385 "Zend/zend_language_scanner.c"
+yy805:
+               YYDEBUG(805, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(807, *YYCURSOR);
+               YYDEBUG(806, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2353 "Zend/zend_language_scanner.l"
+#line 2351 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -7402,115 +7396,115 @@ yy806:
        zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
        goto restart;
 }
-#line 7406 "Zend/zend_language_scanner.c"
-yy808:
-               YYDEBUG(808, *YYCURSOR);
+#line 7400 "Zend/zend_language_scanner.c"
+yy807:
+               YYDEBUG(807, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-yy809:
-               YYDEBUG(809, *YYCURSOR);
+yy808:
+               YYDEBUG(808, *YYCURSOR);
                if (yybm[0+yych] & 16) {
-                       goto yy808;
+                       goto yy807;
                }
-               goto yy805;
-yy810:
-               YYDEBUG(810, *YYCURSOR);
+               goto yy804;
+yy809:
+               YYDEBUG(809, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(811, *YYCURSOR);
+               YYDEBUG(810, *YYCURSOR);
                if (yych <= '^') {
                        if (yych <= '9') {
-                               if (yych >= '0') goto yy810;
+                               if (yych >= '0') goto yy809;
                        } else {
-                               if (yych <= '@') goto yy812;
-                               if (yych <= 'Z') goto yy810;
+                               if (yych <= '@') goto yy811;
+                               if (yych <= 'Z') goto yy809;
                        }
                } else {
                        if (yych <= '`') {
-                               if (yych <= '_') goto yy810;
+                               if (yych <= '_') goto yy809;
                        } else {
-                               if (yych <= 'z') goto yy810;
-                               if (yych >= 0x7F) goto yy810;
+                               if (yych <= 'z') goto yy809;
+                               if (yych >= 0x7F) goto yy809;
                        }
                }
-yy812:
-               YYDEBUG(812, *YYCURSOR);
+yy811:
+               YYDEBUG(811, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1835 "Zend/zend_language_scanner.l"
+#line 1833 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 7447 "Zend/zend_language_scanner.c"
-yy813:
-               YYDEBUG(813, *YYCURSOR);
+#line 7441 "Zend/zend_language_scanner.c"
+yy812:
+               YYDEBUG(812, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-yy814:
-               YYDEBUG(814, *YYCURSOR);
+yy813:
+               YYDEBUG(813, *YYCURSOR);
                if (yybm[0+yych] & 32) {
-                       goto yy813;
+                       goto yy812;
                }
-               goto yy795;
-yy815:
-               YYDEBUG(815, *YYCURSOR);
+               goto yy794;
+yy814:
+               YYDEBUG(814, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yybm[0+yych] & 128) {
-                       goto yy823;
+                       goto yy822;
                }
+yy815:
+               YYDEBUG(815, *YYCURSOR);
+               YYCURSOR = YYMARKER;
+               goto yy794;
 yy816:
                YYDEBUG(816, *YYCURSOR);
-               YYCURSOR = YYMARKER;
-               goto yy795;
-yy817:
-               YYDEBUG(817, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yybm[0+yych] & 64) {
-                       goto yy821;
+                       goto yy820;
                }
-               goto yy816;
-yy818:
-               YYDEBUG(818, *YYCURSOR);
+               goto yy815;
+yy817:
+               YYDEBUG(817, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
+               YYDEBUG(818, *YYCURSOR);
+               if (yych <= '/') goto yy819;
+               if (yych <= '9') goto yy817;
+yy819:
                YYDEBUG(819, *YYCURSOR);
-               if (yych <= '/') goto yy820;
-               if (yych <= '9') goto yy818;
-yy820:
-               YYDEBUG(820, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1701 "Zend/zend_language_scanner.l"
+#line 1699 "Zend/zend_language_scanner.l"
                { /* Offset must be treated as a string */
        ZVAL_STRINGL(zendlval, yytext, yyleng);
        return T_NUM_STRING;
 }
-#line 7492 "Zend/zend_language_scanner.c"
-yy821:
-               YYDEBUG(821, *YYCURSOR);
+#line 7486 "Zend/zend_language_scanner.c"
+yy820:
+               YYDEBUG(820, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(822, *YYCURSOR);
+               YYDEBUG(821, *YYCURSOR);
                if (yybm[0+yych] & 64) {
-                       goto yy821;
+                       goto yy820;
                }
-               goto yy820;
-yy823:
-               YYDEBUG(823, *YYCURSOR);
+               goto yy819;
+yy822:
+               YYDEBUG(822, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(824, *YYCURSOR);
+               YYDEBUG(823, *YYCURSOR);
                if (yybm[0+yych] & 128) {
-                       goto yy823;
+                       goto yy822;
                }
-               goto yy820;
+               goto yy819;
        }
 }
-#line 2362 "Zend/zend_language_scanner.l"
+#line 2360 "Zend/zend_language_scanner.l"
 
 }
index 31c9a52a44a4652b7a8cb1a367f21221c9b8fc09..e4b1314f76a24177e239da4cfeecd4511eb2de5e 100644 (file)
@@ -482,7 +482,6 @@ ZEND_API int zend_multibyte_set_filter(const zend_encoding *onetime_encoding)
 
 ZEND_API int open_file_for_scanning(zend_file_handle *file_handle)
 {
-       const char *file_path = NULL;
        char *buf;
        size_t size, offset = 0;
        zend_string *compiled_filename;
@@ -536,12 +535,11 @@ ZEND_API int open_file_for_scanning(zend_file_handle *file_handle)
        BEGIN(INITIAL);
 
        if (file_handle->opened_path) {
-               file_path = file_handle->opened_path;
+               compiled_filename = zend_string_copy(file_handle->opened_path);
        } else {
-               file_path = file_handle->filename;
+               compiled_filename = zend_string_init(file_handle->filename, strlen(file_handle->filename), 0);
        }
 
-       compiled_filename = zend_string_init(file_path, strlen(file_path), 0);
        zend_set_compiled_filename(compiled_filename);
        zend_string_release(compiled_filename);
 
@@ -623,7 +621,7 @@ zend_op_array *compile_filename(int type, zval *filename)
        zend_file_handle file_handle;
        zval tmp;
        zend_op_array *retval;
-       char *opened_path = NULL;
+       zend_string *opened_path = NULL;
 
        if (Z_TYPE_P(filename) != IS_STRING) {
                tmp = *filename;
@@ -640,13 +638,13 @@ zend_op_array *compile_filename(int type, zval *filename)
        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 = estrndup(Z_STRVAL_P(filename), Z_STRLEN_P(filename));
+                       file_handle.opened_path = opened_path = zend_string_copy(Z_STR_P(filename));
                }
 
-               zend_hash_str_add_empty_element(&EG(included_files), file_handle.opened_path, strlen(file_handle.opened_path));
+               zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path);
 
                if (opened_path) {
-                       efree(opened_path);
+                       zend_string_release(opened_path);
                }
        }
        zend_destroy_file_handle(&file_handle);
index baf859bcd461af589b453b8423364170b2777c89..5926e3c61d971615174d2f61216148cca197e370 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.7.5 */
+/* Generated by re2c 0.13.5 */
 #line 3 "Zend/zend_language_scanner_defs.h"
 
 enum YYCONDTYPE {
index 717c9b12a4e64b608d3521ffe21f61cfca0272a7..7796edb0d6c6b2e596a9e1da8f7f71f0fc712079 100644 (file)
@@ -322,7 +322,7 @@ ZEND_API void zend_file_handle_dtor(zend_file_handle *fh) /* {{{ */
                        break;
        }
        if (fh->opened_path) {
-               efree(fh->opened_path);
+               zend_string_release(fh->opened_path);
                fh->opened_path = NULL;
        }
        if (fh->free_filename && fh->filename) {
index 47a9c7d7d37a3a01c818af383c88536bf2af19e4..3dfaaf474bb8ed3a4e7b4caad11c253747441167 100644 (file)
@@ -69,7 +69,7 @@ typedef struct _zend_file_handle {
                zend_stream   stream;
        } handle;
        const char        *filename;
-       char              *opened_path;
+       zend_string       *opened_path;
        zend_stream_type  type;
        zend_bool free_filename;
 } zend_file_handle;
index 1f4fe799a390e1af351950ed4687c9725e55e8a4..7936af95b21206131c422a819f355d7ad120aa61 100644 (file)
@@ -4589,24 +4589,24 @@ ZEND_VM_HANDLER(73, ZEND_INCLUDE_OR_EVAL, CONST|TMPVAR|CV, ANY)
                        case ZEND_INCLUDE_ONCE:
                        case ZEND_REQUIRE_ONCE: {
                                        zend_file_handle file_handle;
-                                       char *resolved_path;
+                                       zend_string *resolved_path;
 
                                        resolved_path = zend_resolve_path(Z_STRVAL_P(inc_filename), (int)Z_STRLEN_P(inc_filename));
                                        if (resolved_path) {
-                                               failure_retval = zend_hash_str_exists(&EG(included_files), resolved_path, (int)strlen(resolved_path));
+                                               failure_retval = zend_hash_exists(&EG(included_files), resolved_path);
                                        } else {
-                                               resolved_path = Z_STRVAL_P(inc_filename);
+                                               resolved_path = zend_string_copy(Z_STR_P(inc_filename));
                                        }
 
                                        if (failure_retval) {
                                                /* do nothing, file already included */
-                                       } else if (SUCCESS == zend_stream_open(resolved_path, &file_handle)) {
+                                       } else if (SUCCESS == zend_stream_open(resolved_path->val, &file_handle)) {
 
                                                if (!file_handle.opened_path) {
-                                                       file_handle.opened_path = estrdup(resolved_path);
+                                                       file_handle.opened_path = zend_string_copy(resolved_path);
                                                }
 
-                                               if (zend_hash_str_add_empty_element(&EG(included_files), file_handle.opened_path, (int)strlen(file_handle.opened_path))) {
+                                               if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path)) {
                                                        new_op_array = zend_compile_file(&file_handle, (opline->extended_value==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE));
                                                        zend_destroy_file_handle(&file_handle);
                                                } else {
@@ -4620,9 +4620,7 @@ ZEND_VM_HANDLER(73, ZEND_INCLUDE_OR_EVAL, CONST|TMPVAR|CV, ANY)
                                                        zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename));
                                                }
                                        }
-                                       if (resolved_path != Z_STRVAL_P(inc_filename)) {
-                                               efree(resolved_path);
-                                       }
+                                       zend_string_release(resolved_path);
                                }
                                break;
                        case ZEND_INCLUDE:
index 0cff7d7baf75e7a6e098a6ae7b8c05b7abc24d54..a850098865bd2f186e1127f1335ed72e5e9bbe02 100644 (file)
@@ -3127,24 +3127,24 @@ static int ZEND_FASTCALL  ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HA
                        case ZEND_INCLUDE_ONCE:
                        case ZEND_REQUIRE_ONCE: {
                                        zend_file_handle file_handle;
-                                       char *resolved_path;
+                                       zend_string *resolved_path;
 
                                        resolved_path = zend_resolve_path(Z_STRVAL_P(inc_filename), (int)Z_STRLEN_P(inc_filename));
                                        if (resolved_path) {
-                                               failure_retval = zend_hash_str_exists(&EG(included_files), resolved_path, (int)strlen(resolved_path));
+                                               failure_retval = zend_hash_exists(&EG(included_files), resolved_path);
                                        } else {
-                                               resolved_path = Z_STRVAL_P(inc_filename);
+                                               resolved_path = zend_string_copy(Z_STR_P(inc_filename));
                                        }
 
                                        if (failure_retval) {
                                                /* do nothing, file already included */
-                                       } else if (SUCCESS == zend_stream_open(resolved_path, &file_handle)) {
+                                       } else if (SUCCESS == zend_stream_open(resolved_path->val, &file_handle)) {
 
                                                if (!file_handle.opened_path) {
-                                                       file_handle.opened_path = estrdup(resolved_path);
+                                                       file_handle.opened_path = zend_string_copy(resolved_path);
                                                }
 
-                                               if (zend_hash_str_add_empty_element(&EG(included_files), file_handle.opened_path, (int)strlen(file_handle.opened_path))) {
+                                               if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path)) {
                                                        new_op_array = zend_compile_file(&file_handle, (opline->extended_value==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE));
                                                        zend_destroy_file_handle(&file_handle);
                                                } else {
@@ -3158,9 +3158,7 @@ static int ZEND_FASTCALL  ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HA
                                                        zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename));
                                                }
                                        }
-                                       if (resolved_path != Z_STRVAL_P(inc_filename)) {
-                                               efree(resolved_path);
-                                       }
+                                       zend_string_release(resolved_path);
                                }
                                break;
                        case ZEND_INCLUDE:
@@ -24687,24 +24685,24 @@ static int ZEND_FASTCALL  ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDL
                        case ZEND_INCLUDE_ONCE:
                        case ZEND_REQUIRE_ONCE: {
                                        zend_file_handle file_handle;
-                                       char *resolved_path;
+                                       zend_string *resolved_path;
 
                                        resolved_path = zend_resolve_path(Z_STRVAL_P(inc_filename), (int)Z_STRLEN_P(inc_filename));
                                        if (resolved_path) {
-                                               failure_retval = zend_hash_str_exists(&EG(included_files), resolved_path, (int)strlen(resolved_path));
+                                               failure_retval = zend_hash_exists(&EG(included_files), resolved_path);
                                        } else {
-                                               resolved_path = Z_STRVAL_P(inc_filename);
+                                               resolved_path = zend_string_copy(Z_STR_P(inc_filename));
                                        }
 
                                        if (failure_retval) {
                                                /* do nothing, file already included */
-                                       } else if (SUCCESS == zend_stream_open(resolved_path, &file_handle)) {
+                                       } else if (SUCCESS == zend_stream_open(resolved_path->val, &file_handle)) {
 
                                                if (!file_handle.opened_path) {
-                                                       file_handle.opened_path = estrdup(resolved_path);
+                                                       file_handle.opened_path = zend_string_copy(resolved_path);
                                                }
 
-                                               if (zend_hash_str_add_empty_element(&EG(included_files), file_handle.opened_path, (int)strlen(file_handle.opened_path))) {
+                                               if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path)) {
                                                        new_op_array = zend_compile_file(&file_handle, (opline->extended_value==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE));
                                                        zend_destroy_file_handle(&file_handle);
                                                } else {
@@ -24718,9 +24716,7 @@ static int ZEND_FASTCALL  ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDL
                                                        zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename));
                                                }
                                        }
-                                       if (resolved_path != Z_STRVAL_P(inc_filename)) {
-                                               efree(resolved_path);
-                                       }
+                                       zend_string_release(resolved_path);
                                }
                                break;
                        case ZEND_INCLUDE:
@@ -34099,24 +34095,24 @@ static int ZEND_FASTCALL  ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_H
                        case ZEND_INCLUDE_ONCE:
                        case ZEND_REQUIRE_ONCE: {
                                        zend_file_handle file_handle;
-                                       char *resolved_path;
+                                       zend_string *resolved_path;
 
                                        resolved_path = zend_resolve_path(Z_STRVAL_P(inc_filename), (int)Z_STRLEN_P(inc_filename));
                                        if (resolved_path) {
-                                               failure_retval = zend_hash_str_exists(&EG(included_files), resolved_path, (int)strlen(resolved_path));
+                                               failure_retval = zend_hash_exists(&EG(included_files), resolved_path);
                                        } else {
-                                               resolved_path = Z_STRVAL_P(inc_filename);
+                                               resolved_path = zend_string_copy(Z_STR_P(inc_filename));
                                        }
 
                                        if (failure_retval) {
                                                /* do nothing, file already included */
-                                       } else if (SUCCESS == zend_stream_open(resolved_path, &file_handle)) {
+                                       } else if (SUCCESS == zend_stream_open(resolved_path->val, &file_handle)) {
 
                                                if (!file_handle.opened_path) {
-                                                       file_handle.opened_path = estrdup(resolved_path);
+                                                       file_handle.opened_path = zend_string_copy(resolved_path);
                                                }
 
-                                               if (zend_hash_str_add_empty_element(&EG(included_files), file_handle.opened_path, (int)strlen(file_handle.opened_path))) {
+                                               if (zend_hash_add_empty_element(&EG(included_files), file_handle.opened_path)) {
                                                        new_op_array = zend_compile_file(&file_handle, (opline->extended_value==ZEND_INCLUDE_ONCE?ZEND_INCLUDE:ZEND_REQUIRE));
                                                        zend_destroy_file_handle(&file_handle);
                                                } else {
@@ -34130,9 +34126,7 @@ static int ZEND_FASTCALL  ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_H
                                                        zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, Z_STRVAL_P(inc_filename));
                                                }
                                        }
-                                       if (resolved_path != Z_STRVAL_P(inc_filename)) {
-                                               efree(resolved_path);
-                                       }
+                                       zend_string_release(resolved_path);
                                }
                                break;
                        case ZEND_INCLUDE:
index 9b59942f26175f9de4caf763d5f8590563a9d9db..969c5e131c971c81dae35b6a355e275b4600de61 100644 (file)
@@ -235,7 +235,7 @@ PHP_BZ2_API php_stream *_php_stream_bz2open(php_stream_wrapper *wrapper,
                                                                                        const char *path,
                                                                                        const char *mode,
                                                                                        int options,
-                                                                                       char **opened_path,
+                                                                                       zend_string **opened_path,
                                                                                        php_stream_context *context STREAMS_DC)
 {
        php_stream *retstream = NULL, *stream = NULL;
@@ -266,20 +266,8 @@ PHP_BZ2_API php_stream *_php_stream_bz2open(php_stream_wrapper *wrapper,
        bz_file = BZ2_bzopen(path_copy, mode);
 
        if (opened_path && bz_file) {
-#ifdef VIRTUAL_DIR
-               *opened_path = path_copy;
-               path_copy = NULL;
-#else
-               *opened_path = estrdup(path_copy);
-#endif
-       }
-
-#ifdef VIRTUAL_DIR
-       if (path_copy) {
-               efree(path_copy);
+               *opened_path = zend_string_init(path_copy, strlen(path_copy), 0);
        }
-#endif
-       path_copy = NULL;
 
        if (bz_file == NULL) {
                /* that didn't work, so try and get something from the network/wrapper */
@@ -296,7 +284,7 @@ PHP_BZ2_API php_stream *_php_stream_bz2open(php_stream_wrapper *wrapper,
                 * failed.
                 */
                if (opened_path && !bz_file && mode[0] == 'w') {
-                       VCWD_UNLINK(*opened_path);
+                       VCWD_UNLINK((*opened_path)->val);
                }
        }
 
index b3c07250867cf0207cbcfad4b49652821e3aa4a1..b1aa4ca97c314bf4f866b152551ddfc8cacef1bf 100644 (file)
@@ -47,7 +47,7 @@ extern zend_module_entry bz2_module_entry;
 #      define PHP_BZ2_API
 #endif
 
-PHP_BZ2_API php_stream *_php_stream_bz2open(php_stream_wrapper *wrapper, const char *path, const char *mode, int options, char **opened_path, php_stream_context *context STREAMS_DC);
+PHP_BZ2_API php_stream *_php_stream_bz2open(php_stream_wrapper *wrapper, const char *path, const char *mode, int options, zend_string **opened_path, php_stream_context *context STREAMS_DC);
 PHP_BZ2_API php_stream *_php_stream_bz2open_from_BZFILE(BZFILE *bz, const char *mode, php_stream *innerstream STREAMS_DC);
 
 #define php_stream_bz2open_from_BZFILE(bz, mode, innerstream)  _php_stream_bz2open_from_BZFILE((bz), (mode), (innerstream) STREAMS_CC)
index f4569071f133c89d741009755bc9f56b447dc267..8491ff6a3822b5d41e5dee892dc84d1e6d4c8895 100644 (file)
@@ -627,7 +627,7 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
        char *file_mode;
        char mode[4], *pmode, *lock_file_mode = NULL;
        int persistent_flag = persistent ? STREAM_OPEN_PERSISTENT : 0;
-       char *opened_path = NULL;
+       zend_string *opened_path = NULL;
        char *lock_name;
 
        if (ac < 2) {
@@ -853,13 +853,9 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
                                /* when not in read mode or failed to open .lck file read only. now try again in create(write) mode and log errors */
                                lock_file_mode = "a+b";
                        } else {
-                               if (!persistent) {
-                                       info->lock.name = opened_path;
-                               } else {
-                                       if (opened_path) {
-                                               info->lock.name = pestrdup(opened_path, persistent);
-                                               efree(opened_path);
-                                       }
+                               if (opened_path) {
+                                       info->lock.name = pestrndup(opened_path->val, opened_path->len, persistent);
+                                       zend_string_release(opened_path);
                                }
                        }
                }
@@ -869,15 +865,11 @@ static void php_dba_open(INTERNAL_FUNCTION_PARAMETERS, int persistent)
                                if (lock_dbf) {
                                        /* replace the path info with the real path of the opened file */
                                        pefree(info->path, persistent);
-                                       info->path = pestrdup(opened_path, persistent);
+                                       info->path = pestrndup(opened_path->val, opened_path->len, persistent);
                                }
                                /* now store the name of the lock */
-                               if (!persistent) {
-                                       info->lock.name = opened_path;
-                               } else {
-                                       info->lock.name = pestrdup(opened_path, persistent);
-                                       efree(opened_path);
-                               }
+                               info->lock.name = pestrdup(opened_path->val, opened_path->len, persistent);
+                               zend_string_release(opened_path);
                        }
                }
                if (!lock_dbf) {
index 61050ba2881d3e617403d72266bc62fbc13715f6..9c252f45fc4352b2f4ee62508c334a1998fd47d2 100644 (file)
@@ -2686,7 +2686,7 @@ static void _php_image_output(INTERNAL_FUNCTION_PARAMETERS, int image_type, char
                int   b;
                FILE *tmp;
                char  buf[4096];
-               char *path;
+               zend_string *path;
 
                tmp = php_open_temporary_file(NULL, NULL, &path);
                if (tmp == NULL) {
@@ -2745,8 +2745,8 @@ static void _php_image_output(INTERNAL_FUNCTION_PARAMETERS, int image_type, char
                }
 
                fclose(tmp);
-               VCWD_UNLINK((const char *)path); /* make sure that the temporary file is removed */
-               efree(path);
+               VCWD_UNLINK((const char *)path->val); /* make sure that the temporary file is removed */
+               zend_string_release(path);
        }
        RETURN_TRUE;
 }
index 584a12dc4209469ff1902052df32f58110849234..efd0be4c8c32d9ef365908b97dbcc5393edaaa8e 100644 (file)
@@ -105,7 +105,7 @@ char *zps_api_failure_reason = NULL;
 
 static zend_op_array *(*accelerator_orig_compile_file)(zend_file_handle *file_handle, int type);
 static int (*accelerator_orig_zend_stream_open_function)(const char *filename, zend_file_handle *handle );
-static char *(*accelerator_orig_zend_resolve_path)(const char *filename, int filename_len);
+static zend_string *(*accelerator_orig_zend_resolve_path)(const char *filename, int filename_len);
 static void (*orig_chdir)(INTERNAL_FUNCTION_PARAMETERS) = NULL;
 static ZEND_INI_MH((*orig_include_path_on_modify)) = NULL;
 
@@ -765,25 +765,23 @@ static accel_time_t zend_get_file_handle_timestamp(zend_file_handle *file_handle
                        break;
                case ZEND_HANDLE_FILENAME:
                case ZEND_HANDLE_MAPPED:
-                       {
-                               char *file_path = file_handle->opened_path;
+                       if (file_handle->opened_path) {
+                               char *file_path = file_handle->opened_path->val;
 
-                               if (file_path) {
-                                       if (is_stream_path(file_path)) {
-                                               if (zend_get_stream_timestamp(file_path, &statbuf) == SUCCESS) {
-                                                       break;
-                                               }
-                                       }
-                                       if (VCWD_STAT(file_path, &statbuf) != -1) {
+                               if (is_stream_path(file_path)) {
+                                       if (zend_get_stream_timestamp(file_path, &statbuf) == SUCCESS) {
                                                break;
                                        }
                                }
-
-                               if (zend_get_stream_timestamp(file_handle->filename, &statbuf) != SUCCESS) {
-                                       return 0;
+                               if (VCWD_STAT(file_path, &statbuf) != -1) {
+                                       break;
                                }
-                               break;
                        }
+
+                       if (zend_get_stream_timestamp(file_handle->filename, &statbuf) != SUCCESS) {
+                               return 0;
+                       }
+                       break;
                case ZEND_HANDLE_STREAM:
                        {
                                php_stream *stream = (php_stream *)file_handle->handle.stream.handle;
@@ -825,20 +823,25 @@ static accel_time_t zend_get_file_handle_timestamp(zend_file_handle *file_handle
 static inline int do_validate_timestamps(zend_persistent_script *persistent_script, zend_file_handle *file_handle)
 {
        zend_file_handle ps_handle;
-       char *full_path_ptr = NULL;
+       zend_string *full_path_ptr = NULL;
 
        /** check that the persistent script is indeed the same file we cached
         * (if part of the path is a symlink than it possible that the user will change it)
         * See bug #15140
         */
        if (file_handle->opened_path) {
-               if (strcmp(persistent_script->full_path->val, file_handle->opened_path) != 0) {
+               if (persistent_script->full_path != file_handle->opened_path &&
+                   (persistent_script->full_path->len != file_handle->opened_path->len ||
+                    memcmp(persistent_script->full_path->val, file_handle->opened_path->val, file_handle->opened_path->len) != 0)) {
                        return FAILURE;
                }
        } else {
                full_path_ptr = accelerator_orig_zend_resolve_path(file_handle->filename, strlen(file_handle->filename));
-               if (full_path_ptr && strcmp(persistent_script->full_path->val, full_path_ptr) != 0) {
-                       efree(full_path_ptr);
+               if (full_path_ptr &&
+                   persistent_script->full_path != full_path_ptr &&
+                   (persistent_script->full_path->len != full_path_ptr->len ||
+                    memcmp(persistent_script->full_path->val, full_path_ptr->val, full_path_ptr->len) != 0)) {
+                       zend_string_release(full_path_ptr);
                        return FAILURE;
                }
                file_handle->opened_path = full_path_ptr;
@@ -846,7 +849,7 @@ static inline int do_validate_timestamps(zend_persistent_script *persistent_scri
 
        if (persistent_script->timestamp == 0) {
                if (full_path_ptr) {
-                       efree(full_path_ptr);
+                       zend_string_release(full_path_ptr);
                        file_handle->opened_path = NULL;
                }
                return FAILURE;
@@ -854,19 +857,19 @@ static inline int do_validate_timestamps(zend_persistent_script *persistent_scri
 
        if (zend_get_file_handle_timestamp(file_handle, NULL) == persistent_script->timestamp) {
                if (full_path_ptr) {
-                       efree(full_path_ptr);
+                       zend_string_release(full_path_ptr);
                        file_handle->opened_path = NULL;
                }
                return SUCCESS;
        }
        if (full_path_ptr) {
-               efree(full_path_ptr);
+               zend_string_release(full_path_ptr);
                file_handle->opened_path = NULL;
        }
 
        ps_handle.type = ZEND_HANDLE_FILENAME;
        ps_handle.filename = persistent_script->full_path->val;
-       ps_handle.opened_path = persistent_script->full_path->val;
+       ps_handle.opened_path = persistent_script->full_path;
 
        if (zend_get_file_handle_timestamp(&ps_handle, NULL) == persistent_script->timestamp) {
                return SUCCESS;
@@ -934,8 +937,8 @@ char *accel_make_persistent_key_ex(zend_file_handle *file_handle, int path_lengt
             /* we don't handle this well for now. */
             zend_accel_error(ACCEL_LOG_INFO, "getcwd() failed for '%s' (%d), please try to set opcache.use_cwd to 0 in ini file", file_handle->filename, errno);
             if (file_handle->opened_path) {
-                cwd = file_handle->opened_path;
-                       cwd_len = strlen(cwd);
+                cwd = file_handle->opened_path->val;
+                       cwd_len = file_handle->opened_path->len;
             } else {
                                ZCG(key_len) = 0;
                 return NULL;
@@ -1047,7 +1050,7 @@ static inline char *accel_make_persistent_key(zend_file_handle *file_handle, int
 
 int zend_accel_invalidate(const char *filename, int filename_len, zend_bool force)
 {
-       char *realpath;
+       zend_string *realpath;
        zend_persistent_script *persistent_script;
 
        if (!ZCG(enabled) || !accel_startup_ok || !ZCSG(accelerator_enabled) || accelerator_shm_read_lock() != SUCCESS) {
@@ -1060,12 +1063,12 @@ int zend_accel_invalidate(const char *filename, int filename_len, zend_bool forc
                return FAILURE;
        }
 
-       persistent_script = zend_accel_hash_find(&ZCSG(hash), realpath, strlen(realpath));
+       persistent_script = zend_accel_hash_find(&ZCSG(hash), realpath->val, realpath->len);
        if (persistent_script && !persistent_script->corrupted) {
                zend_file_handle file_handle;
 
                file_handle.type = ZEND_HANDLE_FILENAME;
-               file_handle.filename = realpath;
+               file_handle.filename = realpath->val;
                file_handle.opened_path = realpath;
 
                if (force ||
@@ -1317,7 +1320,7 @@ static zend_persistent_script *compile_and_cache_file(zend_file_handle *file_han
     }
 
        /* check blacklist right after ensuring that file was opened */
-       if (file_handle->opened_path && zend_accel_blacklist_is_blacklisted(&accel_blacklist, file_handle->opened_path)) {
+       if (file_handle->opened_path && zend_accel_blacklist_is_blacklisted(&accel_blacklist, file_handle->opened_path->val)) {
                ZCSG(blacklist_misses)++;
                *op_array_p = accelerator_orig_compile_file(file_handle, type);
                return NULL;
@@ -1439,7 +1442,7 @@ static zend_persistent_script *compile_and_cache_file(zend_file_handle *file_han
        }
 
        if (file_handle->opened_path) {
-               new_persistent_script->full_path = zend_string_init(file_handle->opened_path, strlen(file_handle->opened_path), 0);
+               new_persistent_script->full_path = zend_string_copy(file_handle->opened_path);
        } else {
                new_persistent_script->full_path = zend_string_init(file_handle->filename, strlen(file_handle->filename), 0);
        }
@@ -1521,7 +1524,7 @@ zend_op_array *persistent_compile_file(zend_file_handle *file_handle, int type)
                    }
 
                        if (file_handle->opened_path &&
-                           (bucket = zend_accel_hash_find_entry(&ZCSG(hash), file_handle->opened_path, strlen(file_handle->opened_path))) != NULL) {
+                           (bucket = zend_accel_hash_find_entry(&ZCSG(hash), file_handle->opened_path->val, file_handle->opened_path->len)) != NULL) {
 
                                persistent_script = (zend_persistent_script *)bucket->data;
                                if (!ZCG(accel_directives).revalidate_path &&
@@ -1702,7 +1705,7 @@ static int persistent_stream_open_function(const char *filename, zend_file_handl
                            (EG(current_execute_data) &&
                             (ZCG(cache_opline) == EG(current_execute_data)->opline))) {
                                persistent_script = ZCG(cache_persistent_script);
-                               handle->opened_path = estrndup(persistent_script->full_path->val, persistent_script->full_path->len);
+                               handle->opened_path = zend_string_copy(persistent_script->full_path);
                                handle->type = ZEND_HANDLE_FILENAME;
                                return SUCCESS;
 #if 0
@@ -1733,7 +1736,7 @@ static int persistent_stream_open_function(const char *filename, zend_file_handl
 }
 
 /* zend_resolve_path() replacement for PHP 5.3 and above */
-static char* persistent_zend_resolve_path(const char *filename, int filename_len)
+static zend_string* persistent_zend_resolve_path(const char *filename, int filename_len)
 {
        if (ZCG(enabled) && accel_startup_ok &&
            (ZCG(counted) || ZCSG(accelerator_enabled)) &&
@@ -1752,7 +1755,7 @@ static char* persistent_zend_resolve_path(const char *filename, int filename_len
                        zend_file_handle handle;
                        char *key = NULL;
                        int key_length;
-                       char *resolved_path;
+                       zend_string *resolved_path;
                        zend_accel_hash_entry *bucket;
                        zend_persistent_script *persistent_script;
 
@@ -1766,7 +1769,7 @@ static char* persistent_zend_resolve_path(const char *filename, int filename_len
                                        ZCG(key_len) = persistent_script->full_path->len;
                                        ZCG(cache_opline) = EG(current_execute_data) ? EG(current_execute_data)->opline : NULL;
                                        ZCG(cache_persistent_script) = persistent_script;
-                                       return estrndup(persistent_script->full_path->val, persistent_script->full_path->len);
+                                       return zend_string_copy(persistent_script->full_path);
                                }
                    }
 
@@ -1783,7 +1786,7 @@ static char* persistent_zend_resolve_path(const char *filename, int filename_len
                                /* we have persistent script */
                                ZCG(cache_opline) = EG(current_execute_data) ? EG(current_execute_data)->opline : NULL;
                                ZCG(cache_persistent_script) = persistent_script;
-                               return estrndup(persistent_script->full_path->val, persistent_script->full_path->len);
+                               return zend_string_copy(persistent_script->full_path);
                        }
 
                        /* find the full real path */
@@ -1791,7 +1794,7 @@ static char* persistent_zend_resolve_path(const char *filename, int filename_len
 
                    /* Check if requested file already cached (by real path) */
                        if (resolved_path &&
-                           (bucket = zend_accel_hash_find_entry(&ZCSG(hash), resolved_path, strlen(resolved_path))) != NULL) {
+                           (bucket = zend_accel_hash_find_entry(&ZCSG(hash), resolved_path->val, resolved_path->len)) != NULL) {
                                persistent_script = (zend_persistent_script *)bucket->data;
 
                                if (persistent_script && !persistent_script->corrupted) {
index 625fe65d4e155aa6f5743904c3ee474ad5eadd11..3af08d012348b02ddec31db4c1451db465ca1b65 100644 (file)
@@ -278,25 +278,25 @@ ZEND_INI_BEGIN()
 #endif
 ZEND_INI_END()
 
-static int filename_is_in_cache(char *filename, int filename_len)
+static int filename_is_in_cache(zend_string *filename)
 {
        char *key;
        int key_length;
        zend_file_handle handle = {{0}, NULL, NULL, 0, 0};
        zend_persistent_script *persistent_script;
 
-       handle.filename = filename;
+       handle.filename = filename->val;
        handle.type = ZEND_HANDLE_FILENAME;
 
-       if (IS_ABSOLUTE_PATH(filename, filename_len)) {
-               persistent_script = zend_accel_hash_find(&ZCSG(hash), filename, filename_len);
+       if (IS_ABSOLUTE_PATH(filename->val, filename->len)) {
+               persistent_script = zend_accel_hash_find(&ZCSG(hash), filename->val, filename->len);
                if (persistent_script) {
                        return !persistent_script->corrupted &&
                                validate_timestamp_and_record(persistent_script, &handle) == SUCCESS;
                }
        }
 
-       if ((key = accel_make_persistent_key_ex(&handle, filename_len, &key_length)) != NULL) {
+       if ((key = accel_make_persistent_key_ex(&handle, filename->len, &key_length)) != NULL) {
                persistent_script = zend_accel_hash_find(&ZCSG(hash), key, key_length);
                return persistent_script && !persistent_script->corrupted &&
                        validate_timestamp_and_record(persistent_script, &handle) == SUCCESS;
@@ -315,7 +315,7 @@ static int accel_file_in_cache(INTERNAL_FUNCTION_PARAMETERS)
            Z_STRLEN(zfilename) == 0) {
                return 0;
        }
-       return filename_is_in_cache(Z_STRVAL(zfilename), Z_STRLEN(zfilename));
+       return filename_is_in_cache(Z_STR(zfilename));
 }
 
 static void accel_file_exists(INTERNAL_FUNCTION_PARAMETERS)
@@ -734,8 +734,7 @@ static ZEND_FUNCTION(opcache_compile_file)
    Return true if the script is cached in OPCache, false if it is not cached or if OPCache is not running. */
 static ZEND_FUNCTION(opcache_is_script_cached)
 {
-       char *script_name;
-       size_t script_name_len;
+       zend_string *script_name;
 
        if (!validate_api_restriction()) {
                RETURN_FALSE;
@@ -745,9 +744,9 @@ static ZEND_FUNCTION(opcache_is_script_cached)
                RETURN_FALSE;
        }
 
-       if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &script_name, &script_name_len) == FAILURE) {
+       if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &script_name) == FAILURE) {
                return;
        }
 
-       RETURN_BOOL(filename_is_in_cache(script_name, script_name_len));
+       RETURN_BOOL(filename_is_in_cache(script_name));
 }
index dcfc3ddcbc972fee96fa274b58fb87f5d50a04f4..9a81dbbe3a6c1ae6d98f0dce60e79854c1ec9928 100644 (file)
@@ -300,7 +300,7 @@ PHAR_ADD_ENTRY:
 /**
  * Open a directory handle within a phar archive
  */
-php_stream *phar_wrapper_open_dir(php_stream_wrapper *wrapper, const char *path, const char *mode, int options, char **opened_path, php_stream_context *context STREAMS_DC) /* {{{ */
+php_stream *phar_wrapper_open_dir(php_stream_wrapper *wrapper, const char *path, const char *mode, int options, zend_string **opened_path, php_stream_context *context STREAMS_DC) /* {{{ */
 {
        php_url *resource = NULL;
        php_stream *ret;
index 97cc4a4cb0d32a748bbad87e6a7ad6a2cd893d78..b0e5f50ae40f35886aa07fa1833b0b555e1b6289 100644 (file)
@@ -33,7 +33,7 @@ static int    phar_dir_close(php_stream *stream, int close_handle);
 static int    phar_dir_flush(php_stream *stream);
 static int    phar_dir_seek( php_stream *stream, zend_off_t offset, int whence, zend_off_t *newoffset);
 #else
-php_stream* phar_wrapper_open_dir(php_stream_wrapper *wrapper, const char *path, const char *mode, int options, char **opened_path, php_stream_context *context STREAMS_DC);
+php_stream* phar_wrapper_open_dir(php_stream_wrapper *wrapper, const char *path, const char *mode, int options, zend_string **opened_path, php_stream_context *context STREAMS_DC);
 #endif
 END_EXTERN_C()
 
index f71e1f34c2ada37851e98b1501e6b171308a14c4..e3bdf01cf1a6d23cd883facc7af682ca3194d466 100644 (file)
@@ -118,6 +118,7 @@ PHAR_FUNC(phar_file_get_contents) /* {{{ */
 
        if (use_include_path || (!IS_ABSOLUTE_PATH(filename, filename_len) && !strstr(filename, "://"))) {
                char *arch, *entry, *fname;
+               zend_string *entry_str = NULL;
                int arch_len, entry_len, fname_len;
                php_stream_context *context = NULL;
 
@@ -148,8 +149,8 @@ PHAR_FUNC(phar_file_get_contents) /* {{{ */
                                goto skip_phar;
                        }
                        if (use_include_path) {
-                               if ((entry = phar_find_in_include_path(entry, entry_len, NULL))) {
-                                       name = entry;
+                               if ((entry_str = phar_find_in_include_path(entry, entry_len, NULL))) {
+                                       name = entry_str->val;
                                        goto phar_it;
                                } else {
                                        /* this file is not in the phar, use the original path */
@@ -188,7 +189,11 @@ phar_it:
                                context = php_stream_context_from_zval(zcontext, 0);
                        }
                        stream = php_stream_open_wrapper_ex(name, "rb", 0 | REPORT_ERRORS, NULL, context);
-                       efree(name);
+                       if (entry_str) {
+                               zend_string_release(entry_str);
+                       } else {
+                               efree(name);
+                       }
 
                        if (!stream) {
                                RETURN_FALSE;
@@ -243,6 +248,7 @@ PHAR_FUNC(phar_readfile) /* {{{ */
        }
        if (use_include_path || (!IS_ABSOLUTE_PATH(filename, filename_len) && !strstr(filename, "://"))) {
                char *arch, *entry, *fname;
+               zend_string *entry_str = NULL;
                int arch_len, entry_len, fname_len;
                php_stream_context *context = NULL;
                char *name;
@@ -267,12 +273,12 @@ PHAR_FUNC(phar_readfile) /* {{{ */
                        goto skip_phar;
                }
                if (use_include_path) {
-                       if (!(entry = phar_find_in_include_path(entry, entry_len, NULL))) {
+                       if (!(entry_str = phar_find_in_include_path(entry, entry_len, NULL))) {
                                /* this file is not in the phar, use the original path */
                                efree(arch);
                                goto skip_phar;
                        } else {
-                               name = entry;
+                               name = entry_str->val;
                        }
                } else {
                        entry = phar_fix_filepath(estrndup(entry, entry_len), &entry_len, 1);
@@ -301,7 +307,11 @@ notfound:
                efree(arch);
                context = php_stream_context_from_zval(zcontext, 0);
                stream = php_stream_open_wrapper_ex(name, "rb", 0 | REPORT_ERRORS, NULL, context);
-               efree(name);
+               if (entry_str) {
+                       zend_string_release(entry_str);
+               } else {
+                       efree(name);
+               }
                if (stream == NULL) {
                        RETURN_FALSE;
                }
@@ -339,6 +349,7 @@ PHAR_FUNC(phar_fopen) /* {{{ */
        }
        if (use_include_path || (!IS_ABSOLUTE_PATH(filename, filename_len) && !strstr(filename, "://"))) {
                char *arch, *entry, *fname;
+               zend_string *entry_str = NULL;
                int arch_len, entry_len, fname_len;
                php_stream_context *context = NULL;
                char *name;
@@ -363,12 +374,12 @@ PHAR_FUNC(phar_fopen) /* {{{ */
                        goto skip_phar;
                }
                if (use_include_path) {
-                       if (!(entry = phar_find_in_include_path(entry, entry_len, NULL))) {
+                       if (!(entry_str = phar_find_in_include_path(entry, entry_len, NULL))) {
                                /* this file is not in the phar, use the original path */
                                efree(arch);
                                goto skip_phar;
                        } else {
-                               name = entry;
+                               name = entry_str->val;
                        }
                } else {
                        entry = phar_fix_filepath(estrndup(entry, entry_len), &entry_len, 1);
@@ -398,7 +409,11 @@ notfound:
                efree(arch);
                context = php_stream_context_from_zval(zcontext, 0);
                stream = php_stream_open_wrapper_ex(name, mode, 0 | REPORT_ERRORS, NULL, context);
-               efree(name);
+               if (entry_str) {
+                       zend_string_release(entry_str);
+               } else {
+                       efree(name);
+               }
                if (stream == NULL) {
                        RETURN_FALSE;
                }
index cba275c30a3855db26d4e07897cf9e7b3aebb138..8448100f77cf1a48f6625655f7539f30b1ce4303 100644 (file)
@@ -27,7 +27,7 @@
 static void destroy_phar_data(zval *zv);
 
 ZEND_DECLARE_MODULE_GLOBALS(phar)
-char *(*phar_save_resolve_path)(const char *filename, int filename_len);
+zend_string *(*phar_save_resolve_path)(const char *filename, int filename_len);
 
 /**
  * set's phar->is_writeable based on the current INI value
@@ -1322,7 +1322,8 @@ int phar_create_or_parse_filename(char *fname, int fname_len, char *alias, int a
 {
        phar_archive_data *mydata;
        php_stream *fp;
-       char *actual = NULL, *p;
+       zend_string *actual = NULL;
+       char *p;
 
        if (!pphar) {
                pphar = &mydata;
@@ -1340,8 +1341,8 @@ int phar_create_or_parse_filename(char *fname, int fname_len, char *alias, int a
        fp = php_stream_open_wrapper(fname, "rb", IGNORE_URL|STREAM_MUST_SEEK|0, &actual);
 
        if (actual) {
-               fname = actual;
-               fname_len = strlen(actual);
+               fname = actual->val;
+               fname_len = actual->len;
        }
 
        if (fp) {
@@ -1350,20 +1351,20 @@ int phar_create_or_parse_filename(char *fname, int fname_len, char *alias, int a
                                (*pphar)->is_writeable = 1;
                        }
                        if (actual) {
-                               efree(actual);
+                               zend_string_release(actual);
                        }
                        return SUCCESS;
                } else {
                        /* file exists, but is either corrupt or not a phar archive */
                        if (actual) {
-                               efree(actual);
+                               zend_string_release(actual);
                        }
                        return FAILURE;
                }
        }
 
        if (actual) {
-               efree(actual);
+               zend_string_release(actual);
        }
 
        if (PHAR_G(readonly) && !is_data) {
@@ -1475,7 +1476,7 @@ int phar_create_or_parse_filename(char *fname, int fname_len, char *alias, int a
 int phar_open_from_filename(char *fname, int fname_len, char *alias, int alias_len, int options, phar_archive_data** pphar, char **error) /* {{{ */
 {
        php_stream *fp;
-       char *actual;
+       zend_string *actual;
        int ret, is_data = 0;
 
        if (error) {
@@ -1509,20 +1510,20 @@ int phar_open_from_filename(char *fname, int fname_len, char *alias, int alias_l
                        }
                }
                if (actual) {
-                       efree(actual);
+                       zend_string_release(actual);
                }
                return FAILURE;
        }
 
        if (actual) {
-               fname = actual;
-               fname_len = strlen(actual);
+               fname = actual->val;
+               fname_len = actual->len;
        }
 
        ret =  phar_open_from_fp(fp, fname, fname_len, alias, alias_len, options, pphar, is_data, error);
 
        if (actual) {
-               efree(actual);
+               zend_string_release(actual);
        }
 
        return ret;
@@ -2252,7 +2253,7 @@ int phar_open_executed_filename(char *alias, int alias_len, char **error) /* {{{
        char *fname;
        php_stream *fp;
        int fname_len;
-       char *actual = NULL;
+       zend_string *actual = NULL;
        int ret;
 
        if (error) {
@@ -2298,20 +2299,20 @@ int phar_open_executed_filename(char *alias, int alias_len, char **error) /* {{{
                        spprintf(error, 0, "unable to open phar for reading \"%s\"", fname);
                }
                if (actual) {
-                       efree(actual);
+                       zend_string_release(actual);
                }
                return FAILURE;
        }
 
        if (actual) {
-               fname = actual;
-               fname_len = strlen(actual);
+               fname = actual->val;
+               fname_len = actual->len;
        }
 
        ret = phar_open_from_fp(fp, fname, fname_len, alias, alias_len, REPORT_ERRORS, NULL, 0, error);
 
        if (actual) {
-               efree(actual);
+               zend_string_release(actual);
        }
 
        return ret;
@@ -3254,7 +3255,7 @@ static size_t phar_zend_stream_fsizer(void *handle) /* {{{ */
 zend_op_array *(*phar_orig_compile_file)(zend_file_handle *file_handle, int type);
 #define phar_orig_zend_open zend_stream_open_function
 
-static char *phar_resolve_path(const char *filename, int filename_len)
+static zend_string *phar_resolve_path(const char *filename, int filename_len)
 {
        return phar_find_in_include_path((char *) filename, filename_len, NULL);
 }
index 0f8323f065ebd19b99b9bc3f45d18e6b7335d14f..ccff36770b217eebe50e746e6f9cd6e5c39d486c 100644 (file)
@@ -495,7 +495,7 @@ union _phar_entry_object {
 #endif
 
 #ifndef PHAR_MAIN
-extern char *(*phar_save_resolve_path)(const char *filename, int filename_len);
+extern zend_string *(*phar_save_resolve_path)(const char *filename, int filename_len);
 #endif
 
 BEGIN_EXTERN_C()
@@ -562,7 +562,7 @@ char *phar_compress_filter(phar_entry_info * entry, int return_unknown);
 void phar_remove_virtual_dirs(phar_archive_data *phar, char *filename, int filename_len);
 void phar_add_virtual_dirs(phar_archive_data *phar, char *filename, int filename_len);
 int phar_mount_entry(phar_archive_data *phar, char *filename, int filename_len, char *path, int path_len);
-char *phar_find_in_include_path(char *file, int file_len, phar_archive_data **pphar);
+zend_string *phar_find_in_include_path(char *file, int file_len, phar_archive_data **pphar);
 char *phar_fix_filepath(char *path, int *new_len, int use_cwd);
 phar_entry_info * phar_open_jit(phar_archive_data *phar, phar_entry_info *entry, char **error);
 int phar_parse_metadata(char **buffer, zval *metadata, int zip_metadata_len);
index 0b173d1e0bb829c8da2ee4360f368228c55ff829..d5f84b87dec5337801e299e06136ace1ac3aea72 100644 (file)
@@ -1399,11 +1399,11 @@ static int phar_build(zend_object_iterator *iter, void *puser) /* {{{ */
        phar_entry_data *data;
        php_stream *fp;
        size_t contents_len;
-       char *fname, *error = NULL, *base = p_obj->b, *opened, *save = NULL, *temp = NULL;
+       char *fname, *error = NULL, *base = p_obj->b, *save = NULL, *temp = NULL;
+       zend_string *opened;
        char *str_key;
        zend_class_entry *ce = p_obj->c;
        phar_archive_object *phar_obj = p_obj->p;
-       char *str = "[stream]";
 
        value = iter->funcs->get_current_data(iter);
 
@@ -1453,7 +1453,7 @@ static int phar_build(zend_object_iterator *iter, void *puser) /* {{{ */
                        }
 
                        close_fp = 0;
-                       opened = (char *) estrndup(str, sizeof("[stream]") - 1);
+                       opened = zend_string_init("[stream]", sizeof("[stream]") - 1, 0);
                        goto after_open_fp;
                case IS_OBJECT:
                        if (instanceof_function(Z_OBJCE_P(value), spl_ce_SplFileInfo)) {
@@ -1638,7 +1638,7 @@ after_open_fp:
                }
 
                if (opened) {
-                       efree(opened);
+                       zend_string_release(opened);
                }
 
                if (close_fp) {
@@ -1657,7 +1657,7 @@ after_open_fp:
                }
 
                if (opened) {
-                       efree(opened);
+                       zend_string_release(opened);
                }
 
                if (temp) {
@@ -1692,9 +1692,7 @@ after_open_fp:
                php_stream_close(fp);
        }
 
-       // TODO: avoid reallocation ???
-       add_assoc_string(p_obj->ret, str_key, opened);
-       efree(opened);
+       add_assoc_str(p_obj->ret, str_key, opened);
 
        if (save) {
                efree(save);
@@ -4202,7 +4200,7 @@ PHP_METHOD(Phar, extractTo)
        php_stream *fp;
        php_stream_statbuf ssb;
        phar_entry_info *entry;
-       char *pathto, *filename, *actual;
+       char *pathto, *filename;
        size_t pathto_len, filename_len;
        int ret, i;
        int nelems;
@@ -4215,7 +4213,7 @@ PHP_METHOD(Phar, extractTo)
                return;
        }
 
-       fp = php_stream_open_wrapper(phar_obj->archive->fname, "rb", IGNORE_URL|STREAM_MUST_SEEK, &actual);
+       fp = php_stream_open_wrapper(phar_obj->archive->fname, "rb", IGNORE_URL|STREAM_MUST_SEEK, NULL);
 
        if (!fp) {
                zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0,
@@ -4223,7 +4221,6 @@ PHP_METHOD(Phar, extractTo)
                return;
        }
 
-       efree(actual);
        php_stream_close(fp);
 
        if (pathto_len < 1) {
index ac40b3e8dc45d4e8c872a9693946b828bb2ee4ff..e05b1663c275b100bf9d437bc9d73180267d81b5 100644 (file)
@@ -155,7 +155,7 @@ php_url* phar_parse_url(php_stream_wrapper *wrapper, const char *filename, const
 /**
  * used for fopen('phar://...') and company
  */
-static php_stream * phar_wrapper_open_url(php_stream_wrapper *wrapper, const char *path, const char *mode, int options, char **opened_path, php_stream_context *context STREAMS_DC) /* {{{ */
+static php_stream * phar_wrapper_open_url(php_stream_wrapper *wrapper, const char *path, const char *mode, int options, zend_string **opened_path, php_stream_context *context STREAMS_DC) /* {{{ */
 {
        phar_archive_data *phar;
        phar_entry_data *idata;
@@ -231,7 +231,7 @@ static php_stream * phar_wrapper_open_url(php_stream_wrapper *wrapper, const cha
                        }
                }
                if (opened_path) {
-                       spprintf(opened_path, MAXPATHLEN, "phar://%s/%s", idata->phar->fname, idata->internal_file->filename);
+                       *opened_path = zend_strpprintf(MAXPATHLEN, "phar://%s/%s", idata->phar->fname, idata->internal_file->filename);
                }
                return fpf;
        } else {
@@ -249,7 +249,7 @@ static php_stream * phar_wrapper_open_url(php_stream_wrapper *wrapper, const cha
                                }
                                efree(internal_file);
                                if (opened_path) {
-                                       spprintf(opened_path, MAXPATHLEN, "%s", phar->fname);
+                                       *opened_path = zend_strpprintf(MAXPATHLEN, "%s", phar->fname);
                                }
                                php_url_free(resource);
                                goto phar_stub;
@@ -275,7 +275,7 @@ static php_stream * phar_wrapper_open_url(php_stream_wrapper *wrapper, const cha
                                ++(entry->fp_refcount);
                                php_url_free(resource);
                                if (opened_path) {
-                                       spprintf(opened_path, MAXPATHLEN, "%s", phar->fname);
+                                       *opened_path = zend_strpprintf(MAXPATHLEN, "%s", phar->fname);
                                }
                                efree(internal_file);
                                goto phar_stub;
@@ -332,7 +332,7 @@ idata_error:
                }
        }
        if (opened_path) {
-               spprintf(opened_path, MAXPATHLEN, "phar://%s/%s", idata->phar->fname, idata->internal_file->filename);
+               *opened_path = zend_strpprintf(MAXPATHLEN, "phar://%s/%s", idata->phar->fname, idata->internal_file->filename);
        }
        efree(internal_file);
 phar_stub:
index dc798c0d1b706f69d761736370582b1d4da584c7..2b637c0caf81ac356d34013f77e099195ecac7db 100644 (file)
@@ -24,7 +24,7 @@ BEGIN_EXTERN_C()
 php_url* phar_parse_url(php_stream_wrapper *wrapper, const char *filename, const char *mode, int options);
 void phar_entry_remove(phar_entry_data *idata, char **error);
 
-static php_stream* phar_wrapper_open_url(php_stream_wrapper *wrapper, const char *path, const char *mode, int options, char **opened_path, php_stream_context *context STREAMS_DC);
+static php_stream* phar_wrapper_open_url(php_stream_wrapper *wrapper, const char *path, const char *mode, int options, zend_string **opened_path, php_stream_context *context STREAMS_DC);
 static int phar_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from, const char *url_to, int options, php_stream_context *context);
 static int phar_wrapper_unlink(php_stream_wrapper *wrapper, const char *url, int options, php_stream_context *context);
 static int phar_wrapper_stat(php_stream_wrapper *wrapper, const char *url, int flags, php_stream_statbuf *ssb, php_stream_context *context);
index 1c10ab13e0f718996cda07f2fea616825be7a12b..190f69cf610b76e537f6bbab185d1b098dab135a 100644 (file)
@@ -250,10 +250,11 @@ int phar_mount_entry(phar_archive_data *phar, char *filename, int filename_len,
 }
 /* }}} */
 
-char *phar_find_in_include_path(char *filename, int filename_len, phar_archive_data **pphar) /* {{{ */
+zend_string *phar_find_in_include_path(char *filename, int filename_len, phar_archive_data **pphar) /* {{{ */
 {
-       char *path, *fname, *arch, *entry, *ret, *test;
-       int arch_len, entry_len, fname_len, ret_len;
+       zend_string *ret;
+       char *path, *fname, *arch, *entry, *test;
+       int arch_len, entry_len, fname_len;
        phar_archive_data *phar;
 
        if (pphar) {
@@ -299,14 +300,14 @@ splitted:
 
                if (*test == '/') {
                        if (zend_hash_str_exists(&(phar->manifest), test + 1, try_len - 1)) {
-                               spprintf(&ret, 0, "phar://%s%s", arch, test);
+                               ret = zend_strpprintf(0, "phar://%s%s", arch, test);
                                efree(arch);
                                efree(test);
                                return ret;
                        }
                } else {
                        if (zend_hash_str_exists(&(phar->manifest), test, try_len)) {
-                               spprintf(&ret, 0, "phar://%s/%s", arch, test);
+                               ret = zend_strpprintf(0, "phar://%s/%s", arch, test);
                                efree(arch);
                                efree(test);
                                return ret;
@@ -320,11 +321,9 @@ splitted:
        ret = php_resolve_path(filename, filename_len, path);
        efree(path);
 
-       if (ret && strlen(ret) > 8 && !strncmp(ret, "phar://", 7)) {
-               ret_len = strlen(ret);
+       if (ret && ret->len > 8 && !strncmp(ret->val, "phar://", 7)) {
                /* found phar:// */
-
-               if (SUCCESS != phar_split_fname(ret, ret_len, &arch, &arch_len, &entry, &entry_len, 1, 0)) {
+               if (SUCCESS != phar_split_fname(ret->val, ret->len, &arch, &arch_len, &entry, &entry_len, 1, 0)) {
                        return ret;
                }
 
index 9c7dc5caffc7b1c69b240a5f048792fe9fae8f46..f16734422b8d5c476dcd329f2e85490aa094fd59 100644 (file)
@@ -273,9 +273,9 @@ static int spl_autoload(zend_string *class_name, zend_string *lc_name, const cha
        if (ret == SUCCESS) {
                zend_string *opened_path;
                if (!file_handle.opened_path) {
-                       file_handle.opened_path = estrndup(class_file, class_file_len);
+                       file_handle.opened_path = zend_string_init(class_file, class_file_len, 0);
                }
-               opened_path = zend_string_init(file_handle.opened_path, strlen(file_handle.opened_path), 0);
+               opened_path = zend_string_copy(file_handle.opened_path);
                ZVAL_NULL(&dummy);
                if (zend_hash_add(&EG(included_files), opened_path, &dummy)) {
                        new_op_array = zend_compile_file(&file_handle, ZEND_REQUIRE);
index 3599313a7130ec5004c7c505f63c8d2bafe45165..dae4235a999bc5afe2bd834f73d6da4c473408c3 100644 (file)
@@ -802,7 +802,7 @@ PHP_FUNCTION(tempnam)
 {
        char *dir, *prefix;
        size_t dir_len, prefix_len;
-       char *opened_path;
+       zend_string *opened_path;
        int fd;
        zend_string *p;
 
@@ -823,9 +823,7 @@ PHP_FUNCTION(tempnam)
 
        if ((fd = php_open_temporary_fd_ex(dir, p->val, &opened_path, 1)) >= 0) {
                close(fd);
-               // TODO: avoid reallocation ???
-               RETVAL_STRING(opened_path);
-               efree(opened_path);
+               RETVAL_STR(opened_path);
        }
        zend_string_release(p);
 }
index 1c83a9434c5c065e3e5a3cf7f3e1dd788c31134c..b003ffda0fe28c3277ea5672befd1e0add549a56 100644 (file)
@@ -131,7 +131,7 @@ static int php_stream_ftp_stream_close(php_stream_wrapper *wrapper, php_stream *
 /* {{{ php_ftp_fopen_connect
  */
 static php_stream *php_ftp_fopen_connect(php_stream_wrapper *wrapper, const char *path, const char *mode, int options,
-                                                                                char **opened_path, php_stream_context *context, php_stream **preuseid,
+                                                                                zend_string **opened_path, php_stream_context *context, php_stream **preuseid,
                                                                                 php_url **presource, int *puse_ssl, int *puse_ssl_on_data)
 {
        php_stream *stream = NULL, *reuseid = NULL;
@@ -412,7 +412,7 @@ static unsigned short php_fopen_do_pasv(php_stream *stream, char *ip, size_t ip_
 /* {{{ php_fopen_url_wrap_ftp
  */
 php_stream * php_stream_url_wrap_ftp(php_stream_wrapper *wrapper, const char *path, const char *mode,
-                                                                        int options, char **opened_path, php_stream_context *context STREAMS_DC)
+                                                                        int options, zend_string **opened_path, php_stream_context *context STREAMS_DC)
 {
        php_stream *stream = NULL, *datastream = NULL;
        php_url *resource = NULL;
@@ -684,7 +684,7 @@ static php_stream_ops php_ftp_dirstream_ops = {
 /* {{{ php_stream_ftp_opendir
  */
 php_stream * php_stream_ftp_opendir(php_stream_wrapper *wrapper, const char *path, const char *mode, int options,
-                                                                       char **opened_path, php_stream_context *context STREAMS_DC)
+                                                                       zend_string **opened_path, php_stream_context *context STREAMS_DC)
 {
        php_stream *stream, *reuseid, *datastream = NULL;
        php_ftp_dirstream_data *dirsdata;
index 6e0ea812a4f991e8e3e7fd1bb1fc93dfceddb74a..1f54f62c6c3fab4af926f50dc007704b245501b2 100644 (file)
@@ -110,7 +110,7 @@ static inline void strip_header(char *header_bag, char *lc_header_bag,
 }
 
 php_stream *php_stream_url_wrap_http_ex(php_stream_wrapper *wrapper,
-               const char *path, const char *mode, int options, char **opened_path,
+               const char *path, const char *mode, int options, zend_string **opened_path,
                php_stream_context *context, int redirect_max, int flags STREAMS_DC) /* {{{ */
 {
        php_stream *stream = NULL;
@@ -933,7 +933,7 @@ out:
 }
 /* }}} */
 
-php_stream *php_stream_url_wrap_http(php_stream_wrapper *wrapper, const char *path, const char *mode, int options, char **opened_path, php_stream_context *context STREAMS_DC) /* {{{ */
+php_stream *php_stream_url_wrap_http(php_stream_wrapper *wrapper, const char *path, const char *mode, int options, zend_string **opened_path, php_stream_context *context STREAMS_DC) /* {{{ */
 {
        return php_stream_url_wrap_http_ex(wrapper, path, mode, options, opened_path, context, PHP_URL_REDIRECT_MAX, HTTP_WRAPPER_HEADER_INIT STREAMS_CC);
 }
index 5e85d4dc43f9a191e5e29a9f37d9854c19186313..1dc6a21cf549829db92dffa08480fb3f56ec73c0 100644 (file)
@@ -172,7 +172,7 @@ static void php_stream_apply_filter_list(php_stream *stream, char *filterlist, i
 /* }}} */
 
 php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, const char *path, const char *mode, int options,
-                                                                        char **opened_path, php_stream_context *context STREAMS_DC) /* {{{ */
+                                                                        zend_string **opened_path, php_stream_context *context STREAMS_DC) /* {{{ */
 {
        int fd = -1;
        int mode_rw = 0;
@@ -345,6 +345,7 @@ php_stream * php_stream_url_wrap_php(php_stream_wrapper *wrapper, const char *pa
                        efree(pathdup);
                        return NULL;
                }
+
                if (!(stream = php_stream_open_wrapper(p + 10, mode, options, opened_path))) {
                        efree(pathdup);
                        return NULL;
index 5217144755625c0bea637de2ec98c55f8334a826..3773edbc5d23e832db34e2838023a4edc09a10fb 100644 (file)
@@ -23,8 +23,8 @@
 #ifndef PHP_FOPEN_WRAPPERS_H
 #define PHP_FOPEN_WRAPPERS_H
 
-php_stream *php_stream_url_wrap_http(php_stream_wrapper *wrapper, const char *path, const char *mode, int options, char **opened_path, php_stream_context *context STREAMS_DC);
-php_stream *php_stream_url_wrap_ftp(php_stream_wrapper *wrapper, const char *path, const char *mode, int options, char **opened_path, php_stream_context *context STREAMS_DC);
+php_stream *php_stream_url_wrap_http(php_stream_wrapper *wrapper, const char *path, const char *mode, int options, zend_string **opened_path, php_stream_context *context STREAMS_DC);
+php_stream *php_stream_url_wrap_ftp(php_stream_wrapper *wrapper, const char *path, const char *mode, int options, zend_string **opened_path, php_stream_context *context STREAMS_DC);
 extern PHPAPI php_stream_wrapper php_stream_http_wrapper;
 extern PHPAPI php_stream_wrapper php_stream_ftp_wrapper;
 extern PHPAPI php_stream_wrapper php_stream_php_wrapper;
index 46c2aaa9a1ab1030530c2896533a55ba249160c0..a86aae25f0a3678fa18c6b6fc8220fcc9eedc017 100644 (file)
@@ -1489,8 +1489,9 @@ PHP_FUNCTION(stream_socket_enable_crypto)
 Determine what file will be opened by calls to fopen() with a relative path */
 PHP_FUNCTION(stream_resolve_include_path)
 {
-       char *filename, *resolved_path;
+       char *filename;
        size_t filename_len;
+       zend_string *resolved_path;
 
        if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &filename, &filename_len) == FAILURE) {
                return;
@@ -1499,10 +1500,7 @@ PHP_FUNCTION(stream_resolve_include_path)
        resolved_path = zend_resolve_path(filename, (int)filename_len);
 
        if (resolved_path) {
-               // TODO: avoid reallocation ???
-               RETVAL_STRING(resolved_path);
-               efree(resolved_path);
-               return;
+               RETURN_STR(resolved_path);
        }
        RETURN_FALSE;
 }
index a1ae3d5d6f6a0a5cfbada8a7a3a41ca5eb09584e..31099053ef805871951b852043bbf868043d2e36 100644 (file)
@@ -90,7 +90,7 @@ static inline ze_zip_object *php_zip_fetch_object(zend_object *obj) {
 
 #define Z_ZIP_P(zv) php_zip_fetch_object(Z_OBJ_P((zv)))
 
-php_stream *php_stream_zip_opener(php_stream_wrapper *wrapper, const char *path, const char *mode, int options, char **opened_path, php_stream_context *context STREAMS_DC);
+php_stream *php_stream_zip_opener(php_stream_wrapper *wrapper, const char *path, const char *mode, int options, zend_string **opened_path, php_stream_context *context STREAMS_DC);
 php_stream *php_stream_zip_open(const char *filename, const char *path, const char *mode STREAMS_DC);
 
 extern php_stream_wrapper php_stream_zip_wrapper;
index d56213d1d5061e89a70eb84ca8ed472c159c2002..18707eed279a3a1c62553ab5b3f5ff72ea613017 100644 (file)
@@ -254,7 +254,7 @@ php_stream *php_stream_zip_opener(php_stream_wrapper *wrapper,
                                                                                        const char *path,
                                                                                        const char *mode,
                                                                                        int options,
-                                                                                       char **opened_path,
+                                                                                       zend_string **opened_path,
                                                                                        php_stream_context *context STREAMS_DC)
 {
        int path_len;
@@ -314,7 +314,7 @@ php_stream *php_stream_zip_opener(php_stream_wrapper *wrapper,
                        stream = php_stream_alloc(&php_stream_zipio_ops, self, NULL, mode);
 
                        if (opened_path) {
-                               *opened_path = estrdup(path);
+                               *opened_path = zend_string_init(path, strlen(path), 0);
                        }
                } else {
                        zip_close(za);
index 1ecf593e699926a9dac2798b2642c59a7fa46171..2a8e443eba17a386687399007bf1f0f62076aa47 100644 (file)
@@ -58,7 +58,7 @@ ZEND_BEGIN_MODULE_GLOBALS(zlib)
        int compression_coding;
 ZEND_END_MODULE_GLOBALS(zlib);
 
-php_stream *php_stream_gzopen(php_stream_wrapper *wrapper, const char *path, const char *mode, int options, char **opened_path, php_stream_context *context STREAMS_DC);
+php_stream *php_stream_gzopen(php_stream_wrapper *wrapper, const char *path, const char *mode, int options, zend_string **opened_path, php_stream_context *context STREAMS_DC);
 extern php_stream_ops php_stream_gzio_ops;
 extern php_stream_wrapper php_stream_gzip_wrapper;
 extern php_stream_filter_factory php_zlib_filter_factory;
index 8b17eca12b0ae4bddb07baff9ab3e46ca82c6a69..6e63cc26411fbc7c9317ca880ed7f702c77674ec 100644 (file)
@@ -111,7 +111,7 @@ php_stream_ops php_stream_gzio_ops = {
 };
 
 php_stream *php_stream_gzopen(php_stream_wrapper *wrapper, const char *path, const char *mode, int options,
-                                                         char **opened_path, php_stream_context *context STREAMS_DC)
+                                                         zend_string **opened_path, php_stream_context *context STREAMS_DC)
 {
        struct php_gz_stream_data_t *self;
        php_stream *stream = NULL, *innerstream = NULL;
index 9414ebdf3669906a44e221ab35912afd1ce2a0a4..c51648129850578dec553947d091278260494d6c 100644 (file)
@@ -340,7 +340,7 @@ PHPAPI int php_check_open_basedir_ex(const char *path, int warn)
 
 /* {{{ php_fopen_and_set_opened_path
  */
-static FILE *php_fopen_and_set_opened_path(const char *path, const char *mode, char **opened_path)
+static FILE *php_fopen_and_set_opened_path(const char *path, const char *mode, zend_string **opened_path)
 {
        FILE *fp;
 
@@ -349,7 +349,12 @@ static FILE *php_fopen_and_set_opened_path(const char *path, const char *mode, c
        }
        fp = VCWD_FOPEN(path, mode);
        if (fp && opened_path) {
-               *opened_path = expand_filepath_with_mode(path, NULL, NULL, 0, CWD_EXPAND);
+               //TODO :avoid reallocation
+               char *tmp = expand_filepath_with_mode(path, NULL, NULL, 0, CWD_EXPAND);
+               if (tmp) {
+                       *opened_path = zend_string_init(tmp, strlen(tmp), 0);
+                       efree(tmp);
+               }
        }
        return fp;
 }
@@ -361,7 +366,7 @@ PHPAPI int php_fopen_primary_script(zend_file_handle *file_handle)
 {
        char *path_info;
        char *filename = NULL;
-       char *resolved_path = NULL;
+       zend_string *resolved_path = NULL;
        int length;
        zend_bool orig_display_errors;
 
@@ -448,7 +453,7 @@ PHPAPI int php_fopen_primary_script(zend_file_handle *file_handle)
                }
                return FAILURE;
        }
-       efree(resolved_path);
+       zend_string_release(resolved_path);
 
        orig_display_errors = PG(display_errors);
        PG(display_errors) = 0;
@@ -481,7 +486,7 @@ PHPAPI int php_fopen_primary_script(zend_file_handle *file_handle)
 /* {{{ php_resolve_path
  * Returns the realpath for given filename according to include path
  */
-PHPAPI char *php_resolve_path(const char *filename, int filename_length, const char *path)
+PHPAPI zend_string *php_resolve_path(const char *filename, int filename_length, const char *path)
 {
        char resolved_path[MAXPATHLEN];
        char trypath[MAXPATHLEN];
@@ -499,7 +504,7 @@ PHPAPI char *php_resolve_path(const char *filename, int filename_length, const c
                wrapper = php_stream_locate_url_wrapper(filename, &actual_path, STREAM_OPEN_FOR_INCLUDE);
                if (wrapper == &php_plain_files_wrapper) {
                        if (tsrm_realpath(actual_path, resolved_path)) {
-                               return estrdup(resolved_path);
+                               return zend_string_init(resolved_path, strlen(resolved_path), 0);
                        }
                }
                return NULL;
@@ -512,7 +517,7 @@ PHPAPI char *php_resolve_path(const char *filename, int filename_length, const c
            !path ||
            !*path) {
                if (tsrm_realpath(filename, resolved_path)) {
-                       return estrdup(resolved_path);
+                       return zend_string_init(resolved_path, strlen(resolved_path), 0);
                } else {
                        return NULL;
                }
@@ -562,14 +567,14 @@ PHPAPI char *php_resolve_path(const char *filename, int filename_length, const c
                                        php_stream_statbuf ssb;
 
                                        if (SUCCESS == wrapper->wops->url_stat(wrapper, trypath, 0, &ssb, NULL)) {
-                                               return estrdup(trypath);
+                                               return zend_string_init(trypath, strlen(trypath), 0);
                                        }
                                }
                                continue;
                        }
                }
                if (tsrm_realpath(actual_path, resolved_path)) {
-                       return estrdup(resolved_path);
+                       return zend_string_init(resolved_path, strlen(resolved_path), 0);
                }
        } /* end provided path */
 
@@ -598,7 +603,7 @@ PHPAPI char *php_resolve_path(const char *filename, int filename_length, const c
                                                php_stream_statbuf ssb;
 
                                                if (SUCCESS == wrapper->wops->url_stat(wrapper, trypath, 0, &ssb, NULL)) {
-                                                       return estrdup(trypath);
+                                                       return zend_string_init(trypath, strlen(trypath), 0);
                                                }
                                        }
                                        return NULL;
@@ -606,7 +611,7 @@ PHPAPI char *php_resolve_path(const char *filename, int filename_length, const c
                        }
 
                        if (tsrm_realpath(actual_path, resolved_path)) {
-                               return estrdup(resolved_path);
+                               return zend_string_init(resolved_path, strlen(resolved_path), 0);
                        }
                }
        }
@@ -619,7 +624,7 @@ PHPAPI char *php_resolve_path(const char *filename, int filename_length, const c
  * Tries to open a file with a PATH-style list of directories.
  * If the filename starts with "." or "/", the path is ignored.
  */
-PHPAPI FILE *php_fopen_with_path(const char *filename, const char *mode, const char *path, char **opened_path)
+PHPAPI FILE *php_fopen_with_path(const char *filename, const char *mode, const char *path, zend_string **opened_path)
 {
        char *pathbuf, *ptr, *end;
        const char *exec_fname;
index e54a499603911c9d3980f9c32c1d08eed00ae351..e693b03dbaafee5d92127deed411e26648434a7e 100644 (file)
@@ -46,9 +46,9 @@ PHPAPI int php_check_specific_open_basedir(const char *basedir, const char *path
 
 PHPAPI int php_check_safe_mode_include_dir(const char *path);
 
-PHPAPI char *php_resolve_path(const char *filename, int filename_len, const char *path);
+PHPAPI zend_string *php_resolve_path(const char *filename, int filename_len, const char *path);
 
-PHPAPI FILE *php_fopen_with_path(const char *filename, const char *mode, const char *path, char **opened_path);
+PHPAPI FILE *php_fopen_with_path(const char *filename, const char *mode, const char *path, zend_string **opened_path);
 
 PHPAPI char *php_strip_url_passwd(char *path);
 
index 3dcba48779c4172aa1f649f5bb4cb3712cf0b53b..f5c04099eaab3d3707956159eca4408542c5d213 100644 (file)
@@ -1350,7 +1350,7 @@ PHP_FUNCTION(set_time_limit)
 
 /* {{{ php_fopen_wrapper_for_zend
  */
-static FILE *php_fopen_wrapper_for_zend(const char *filename, char **opened_path)
+static FILE *php_fopen_wrapper_for_zend(const char *filename, zend_string **opened_path)
 {
        return php_stream_open_wrapper_as_file((char *)filename, "rb", USE_PATH|IGNORE_URL_WIN|REPORT_ERRORS|STREAM_OPEN_FOR_INCLUDE, opened_path);
 }
@@ -1428,7 +1428,7 @@ PHPAPI int php_stream_open_for_zend_ex(const char *filename, zend_file_handle *h
 }
 /* }}} */
 
-static char *php_resolve_path_for_zend(const char *filename, int filename_len) /* {{{ */
+static zend_string *php_resolve_path_for_zend(const char *filename, int filename_len) /* {{{ */
 {
        return php_resolve_path(filename, filename_len, PG(include_path));
 }
@@ -2490,12 +2490,9 @@ PHPAPI int php_execute_script(zend_file_handle *primary_file)
                        primary_file->opened_path == NULL &&
                        primary_file->type != ZEND_HANDLE_FILENAME
                ) {
-                       int realfile_len;
-
                        if (expand_filepath(primary_file->filename, realfile)) {
-                               realfile_len =  (int)strlen(realfile);
-                               zend_hash_str_add_empty_element(&EG(included_files), realfile, realfile_len);
-                               primary_file->opened_path = estrndup(realfile, realfile_len);
+                               primary_file->opened_path = zend_string_init(realfile, strlen(realfile), 0);
+                               zend_hash_add_empty_element(&EG(included_files), primary_file->opened_path);
                        }
                }
 
index 9c16aa327d2cfd0666cb6a5fa42e2a9d85067eaf..7914244147a988468bd848998931e840c1889aa4 100644 (file)
@@ -389,6 +389,7 @@ int php_init_config(void)
        char *open_basedir;
        int free_ini_search_path = 0;
        zend_file_handle fh;
+       zend_string *opened_path = NULL;
 
        zend_hash_init(&configuration_hash, 8, NULL, config_zval_dtor, 1);
 
@@ -555,7 +556,8 @@ int php_init_config(void)
                                if (!((statbuf.st_mode & S_IFMT) == S_IFDIR)) {
                                        fh.handle.fp = VCWD_FOPEN(php_ini_file_name, "r");
                                        if (fh.handle.fp) {
-                                               fh.filename = php_ini_opened_path = expand_filepath(php_ini_file_name, NULL);
+                                               fh.filename = expand_filepath(php_ini_file_name, NULL);
+                                               opened_path = zend_string_init(fh.filename, strlen(fh.filename), 0);
                                        }
                                }
                        }
@@ -566,18 +568,18 @@ int php_init_config(void)
                        const char *fmt = "php-%s.ini";
                        char *ini_fname;
                        spprintf(&ini_fname, 0, fmt, sapi_module.name);
-                       fh.handle.fp = php_fopen_with_path(ini_fname, "r", php_ini_search_path, &php_ini_opened_path);
+                       fh.handle.fp = php_fopen_with_path(ini_fname, "r", php_ini_search_path, &opened_path);
                        efree(ini_fname);
                        if (fh.handle.fp) {
-                               fh.filename = php_ini_opened_path;
+                               fh.filename = opened_path->val;
                        }
                }
 
                /* If still no ini file found, search for php.ini file in search path */
                if (!fh.handle.fp) {
-                       fh.handle.fp = php_fopen_with_path("php.ini", "r", php_ini_search_path, &php_ini_opened_path);
+                       fh.handle.fp = php_fopen_with_path("php.ini", "r", php_ini_search_path, &opened_path);
                        if (fh.handle.fp) {
-                               fh.filename = php_ini_opened_path;
+                               fh.filename = opened_path->val;
                        }
                }
        }
@@ -599,8 +601,8 @@ int php_init_config(void)
 
                        ZVAL_NEW_STR(&tmp, zend_string_init(fh.filename, strlen(fh.filename), 1));
                        zend_hash_str_update(&configuration_hash, "cfg_file_path", sizeof("cfg_file_path")-1, &tmp);
-                       if (php_ini_opened_path) {
-                               efree(php_ini_opened_path);
+                       if (opened_path) {
+                               zend_string_release(opened_path);
                        }
                        php_ini_opened_path = zend_strndup(Z_STRVAL(tmp), Z_STRLEN(tmp));
                }
index 9bb5bd77eeb8fc1abc47bd1d3690a93b3d923b58..a88c823eedba992c9f6ae91b07513561123930c9 100644 (file)
  * SUCH DAMAGE.
  */
 
-static int php_do_open_temporary_file(const char *path, const char *pfx, char **opened_path_p)
+static int php_do_open_temporary_file(const char *path, const char *pfx, zend_string **opened_path_p)
 {
        char *trailing_slash;
-       char *opened_path;
+       char opened_path[MAXPATHLEN];
        char cwd[MAXPATHLEN];
        cwd_state new_state;
        int fd = -1;
@@ -138,8 +138,7 @@ static int php_do_open_temporary_file(const char *path, const char *pfx, char **
                trailing_slash = "/";
        }
 
-       if (spprintf(&opened_path, 0, "%s%s%sXXXXXX", new_state.cwd, trailing_slash, pfx) >= MAXPATHLEN) {
-               efree(opened_path);
+       if (snprintf(opened_path, MAXPATHLEN, "%s%s%sXXXXXX", new_state.cwd, trailing_slash, pfx) >= MAXPATHLEN) {
                efree(new_state.cwd);
                return -1;
        }
@@ -150,7 +149,6 @@ static int php_do_open_temporary_file(const char *path, const char *pfx, char **
                /* Some versions of windows set the temp file to be read-only,
                 * which means that opening it will fail... */
                if (VCWD_CHMOD(opened_path, 0600)) {
-                       efree(opened_path);
                        efree(new_state.cwd);
                        return -1;
                }
@@ -165,10 +163,8 @@ static int php_do_open_temporary_file(const char *path, const char *pfx, char **
        }
 #endif
 
-       if (fd == -1 || !opened_path_p) {
-               efree(opened_path);
-       } else {
-               *opened_path_p = opened_path;
+       if (fd != -1 && opened_path_p) {
+               *opened_path_p = zend_string_init(opened_path, strlen(opened_path), 0);
        }
        efree(new_state.cwd);
        return fd;
@@ -264,7 +260,7 @@ PHPAPI const char* php_get_temporary_directory(void)
  * This function should do its best to return a file pointer to a newly created
  * unique file, on every platform.
  */
-PHPAPI int php_open_temporary_fd_ex(const char *dir, const char *pfx, char **opened_path_p, zend_bool open_basedir_check)
+PHPAPI int php_open_temporary_fd_ex(const char *dir, const char *pfx, zend_string **opened_path_p, zend_bool open_basedir_check)
 {
        int fd;
        const char *temp_dir;
@@ -296,12 +292,12 @@ def_tmp:
        return fd;
 }
 
-PHPAPI int php_open_temporary_fd(const char *dir, const char *pfx, char **opened_path_p)
+PHPAPI int php_open_temporary_fd(const char *dir, const char *pfx, zend_string **opened_path_p)
 {
        return php_open_temporary_fd_ex(dir, pfx, opened_path_p, 0);
 }
 
-PHPAPI FILE *php_open_temporary_file(const char *dir, const char *pfx, char **opened_path_p)
+PHPAPI FILE *php_open_temporary_file(const char *dir, const char *pfx, zend_string **opened_path_p)
 {
        FILE *fp;
        int fd = php_open_temporary_fd(dir, pfx, opened_path_p);
index e63cc599f0f5911dbed0f3b2377bb1446801134d..912f4a8adc45293e5bc9465712bb756614893c0f 100644 (file)
@@ -22,9 +22,9 @@
 #define PHP_OPEN_TEMPORARY_FILE_H
 
 BEGIN_EXTERN_C()
-PHPAPI FILE *php_open_temporary_file(const char *dir, const char *pfx, char **opened_path_p);
-PHPAPI int php_open_temporary_fd_ex(const char *dir, const char *pfx, char **opened_path_p, zend_bool open_basedir_check);
-PHPAPI int php_open_temporary_fd(const char *dir, const char *pfx, char **opened_path_p);
+PHPAPI FILE *php_open_temporary_file(const char *dir, const char *pfx, zend_string **opened_path_p);
+PHPAPI int php_open_temporary_fd_ex(const char *dir, const char *pfx, zend_string **opened_path_p, zend_bool open_basedir_check);
+PHPAPI int php_open_temporary_fd(const char *dir, const char *pfx, zend_string **opened_path_p);
 PHPAPI const char *php_get_temporary_directory(void);
 PHPAPI void php_shutdown_temporary_directory(void);
 END_EXTERN_C()
index 3cd0c047cd9bbffb0e86d8cd2de38ee51d0d7ee4..3035bd560b32b0c77124a39172957b4c6f9dd563 100644 (file)
@@ -134,7 +134,7 @@ typedef struct _php_stream_ops  {
 typedef struct _php_stream_wrapper_ops {
        /* open/create a wrapped stream */
        php_stream *(*stream_opener)(php_stream_wrapper *wrapper, const char *filename, const char *mode,
-                       int options, char **opened_path, php_stream_context *context STREAMS_DC);
+                       int options, zend_string **opened_path, php_stream_context *context STREAMS_DC);
        /* close/destroy a wrapped stream */
        int (*stream_closer)(php_stream_wrapper *wrapper, php_stream *stream);
        /* stat a wrapped stream */
@@ -143,7 +143,7 @@ typedef struct _php_stream_wrapper_ops {
        int (*url_stat)(php_stream_wrapper *wrapper, const char *url, int flags, php_stream_statbuf *ssb, php_stream_context *context);
        /* open a "directory" stream */
        php_stream *(*dir_opener)(php_stream_wrapper *wrapper, const char *filename, const char *mode,
-                       int options, char **opened_path, php_stream_context *context STREAMS_DC);
+                       int options, zend_string **opened_path, php_stream_context *context STREAMS_DC);
 
        const char *label;
 
@@ -554,7 +554,7 @@ PHPAPI int php_register_url_stream_wrapper(const char *protocol, php_stream_wrap
 PHPAPI int php_unregister_url_stream_wrapper(const char *protocol);
 PHPAPI int php_register_url_stream_wrapper_volatile(const char *protocol, php_stream_wrapper *wrapper);
 PHPAPI int php_unregister_url_stream_wrapper_volatile(const char *protocol);
-PHPAPI php_stream *_php_stream_open_wrapper_ex(const char *path, const char *mode, int options, char **opened_path, php_stream_context *context STREAMS_DC);
+PHPAPI php_stream *_php_stream_open_wrapper_ex(const char *path, const char *mode, int options, zend_string **opened_path, php_stream_context *context STREAMS_DC);
 PHPAPI php_stream_wrapper *php_stream_locate_url_wrapper(const char *path, const char **path_for_open, int options);
 PHPAPI const char *php_stream_locate_eol(php_stream *stream, zend_string *buf);
 
index a1d8232dd94f2e4304fac4553124122b03cf40ec..493f70b65e67f00846b3a1be6c05ecfaa2e76578 100644 (file)
@@ -191,16 +191,16 @@ static void register_http_post_files_variable_ex(char *var, zval *val, zval *htt
 
 static int unlink_filename(zval *el) /* {{{ */
 {
-       char *filename = (char*)Z_PTR_P(el);
-       VCWD_UNLINK(filename);
+       zend_string *filename = Z_STR_P(el);
+       VCWD_UNLINK(filename->val);
        return 0;
 }
 /* }}} */
 
 
 static void free_filename(zval *el) {
-       char *filename = (char*)Z_PTR_P(el);
-       efree(filename);
+       zend_string *filename = Z_STR_P(el);
+       zend_string_release(filename);
 }
 
 void destroy_uploaded_files_hash(void) /* {{{ */
@@ -685,7 +685,8 @@ static char *multipart_buffer_read_body(multipart_buffer *self, size_t *len)
 SAPI_API SAPI_POST_HANDLER_FUNC(rfc1867_post_handler) /* {{{ */
 {
        char *boundary, *s = NULL, *boundary_end = NULL, *start_arr = NULL, *array_index = NULL;
-       char *temp_filename = NULL, *lbuf = NULL, *abuf = NULL;
+       char *lbuf = NULL, *abuf = NULL;
+       zend_string *temp_filename = NULL;
        int boundary_len = 0, cancel_upload = 0, is_arr_upload = 0, array_len = 0;
        int64_t total_bytes = 0, max_file_size = 0;
        int skip_upload = 0, anonindex = 0, is_anonymous;
@@ -980,7 +981,7 @@ SAPI_API SAPI_POST_HANDLER_FUNC(rfc1867_post_handler) /* {{{ */
                                event_file_start.name = param;
                                event_file_start.filename = &filename;
                                if (php_rfc1867_callback(MULTIPART_EVENT_FILE_START, &event_file_start, &event_extra_data) == FAILURE) {
-                                       temp_filename = "";
+                                       temp_filename = NULL;
                                        efree(param);
                                        efree(filename);
                                        continue;
@@ -1095,7 +1096,7 @@ SAPI_API SAPI_POST_HANDLER_FUNC(rfc1867_post_handler) /* {{{ */
                                multipart_event_file_end event_file_end;
 
                                event_file_end.post_bytes_processed = SG(read_post_bytes);
-                               event_file_end.temp_filename = temp_filename;
+                               event_file_end.temp_filename = temp_filename->val;
                                event_file_end.cancel_upload = cancel_upload;
                                if (php_rfc1867_callback(MULTIPART_EVENT_FILE_END, &event_file_end, &event_extra_data) == FAILURE) {
                                        cancel_upload = UPLOAD_ERROR_X;
@@ -1105,13 +1106,13 @@ SAPI_API SAPI_POST_HANDLER_FUNC(rfc1867_post_handler) /* {{{ */
                        if (cancel_upload) {
                                if (temp_filename) {
                                        if (cancel_upload != UPLOAD_ERROR_E) { /* file creation failed */
-                                               unlink(temp_filename);
+                                               unlink(temp_filename->val);
                                        }
-                                       efree(temp_filename);
+                                       zend_string_release(temp_filename);
                                }
-                               temp_filename = "";
+                               temp_filename = NULL;
                        } else {
-                               zend_hash_str_add_ptr(SG(rfc1867_uploaded_files), temp_filename, strlen(temp_filename), temp_filename);
+                               zend_hash_add_ptr(SG(rfc1867_uploaded_files), temp_filename, temp_filename);
                        }
 
                        /* is_arr_upload is true when name of file upload field
@@ -1211,7 +1212,11 @@ SAPI_API SAPI_POST_HANDLER_FUNC(rfc1867_post_handler) /* {{{ */
 
                                /* if param is of form xxx[.*] this will cut it to xxx */
                                if (!is_anonymous) {
-                                       ZVAL_STRING(&zfilename, temp_filename);
+                                       if (temp_filename) {
+                                               ZVAL_STR_COPY(&zfilename, temp_filename);
+                                       } else {
+                                               ZVAL_EMPTY_STRING(&zfilename);
+                                       }
                                        safe_php_register_variable_ex(param, &zfilename, NULL, 1);
                                }
 
@@ -1222,7 +1227,11 @@ SAPI_API SAPI_POST_HANDLER_FUNC(rfc1867_post_handler) /* {{{ */
                                        snprintf(lbuf, llen, "%s[tmp_name]", param);
                                }
                                add_protected_variable(lbuf);
-                               ZVAL_STRING(&zfilename, temp_filename);
+                               if (temp_filename) {
+                                       ZVAL_STR_COPY(&zfilename, temp_filename);
+                               } else {
+                                       ZVAL_EMPTY_STRING(&zfilename);
+                               }
                                register_http_post_files_variable_ex(lbuf, &zfilename, &PG(http_globals)[TRACK_VARS_FILES], 1);
                        }
 
index da8c6f1de8e680912adb06faa31ec3131547385e..bc9cc805e8f945128faef12f64502adb6e43a4f2 100644 (file)
@@ -342,7 +342,7 @@ exit_success:
 /* }}} */
 
 /* {{{ php_stream_open_wrapper_as_file */
-PHPAPI FILE * _php_stream_open_wrapper_as_file(char *path, char *mode, int options, char **opened_path STREAMS_DC)
+PHPAPI FILE * _php_stream_open_wrapper_as_file(char *path, char *mode, int options, zend_string **opened_path STREAMS_DC)
 {
        FILE *fp = NULL;
        php_stream *stream = NULL;
@@ -356,7 +356,7 @@ PHPAPI FILE * _php_stream_open_wrapper_as_file(char *path, char *mode, int optio
        if (php_stream_cast(stream, PHP_STREAM_AS_STDIO|PHP_STREAM_CAST_TRY_HARD|PHP_STREAM_CAST_RELEASE, (void**)&fp, REPORT_ERRORS) == FAILURE) {
                php_stream_close(stream);
                if (opened_path && *opened_path) {
-                       efree(*opened_path);
+                       zend_string_release(*opened_path);
                }
                return NULL;
        }
index 3926fc6540815b380ccf1595141098062851ba44..4dffc27ade5b8df929a780a8148c847996be6018 100644 (file)
@@ -207,7 +207,7 @@ php_stream_ops  php_glob_stream_ops = {
 
  /* {{{ php_glob_stream_opener */
 static php_stream *php_glob_stream_opener(php_stream_wrapper *wrapper, const char *path, const char *mode,
-               int options, char **opened_path, php_stream_context *context STREAMS_DC)
+               int options, zend_string **opened_path, php_stream_context *context STREAMS_DC)
 {
        glob_s_t *pglob;
        int ret;
@@ -220,7 +220,7 @@ static php_stream *php_glob_stream_opener(php_stream_wrapper *wrapper, const cha
        if (!strncmp(path, "glob://", sizeof("glob://")-1)) {
                path += sizeof("glob://")-1;
                if (opened_path) {
-                       *opened_path = estrdup(path);
+                       *opened_path = zend_string_init(path, strlen(path), 0);
                }
        }
 
index 2016a9898c219ac4266aa0295c2a4b344c43c6c2..9a9b11fe07857240d0260ed030fbc8da03d8b55b 100644 (file)
@@ -619,7 +619,7 @@ PHPAPI php_stream_ops php_stream_rfc2397_ops = {
 };
 
 static php_stream * php_stream_url_wrap_rfc2397(php_stream_wrapper *wrapper, const char *path,
-                                                                                               const char *mode, int options, char **opened_path,
+                                                                                               const char *mode, int options, zend_string **opened_path,
                                                                                                php_stream_context *context STREAMS_DC) /* {{{ */
 {
        php_stream *stream;
index cdf91084ab805522a7e2afdc1735223b0faaec22..61fc09542bdda8feaaca5b7a0f74b98dcc95b66e 100644 (file)
@@ -27,10 +27,10 @@ PHPAPI extern php_stream_wrapper php_plain_files_wrapper;
 BEGIN_EXTERN_C()
 
 /* like fopen, but returns a stream */
-PHPAPI php_stream *_php_stream_fopen(const char *filename, const char *mode, char **opened_path, int options STREAMS_DC);
+PHPAPI php_stream *_php_stream_fopen(const char *filename, const char *mode, zend_string **opened_path, int options STREAMS_DC);
 #define php_stream_fopen(filename, mode, opened)       _php_stream_fopen((filename), (mode), (opened), 0 STREAMS_CC)
 
-PHPAPI php_stream *_php_stream_fopen_with_path(const char *filename, const char *mode, const char *path, char **opened_path, int options STREAMS_DC);
+PHPAPI php_stream *_php_stream_fopen_with_path(const char *filename, const char *mode, const char *path, zend_string **opened_path, int options STREAMS_DC);
 #define php_stream_fopen_with_path(filename, mode, path, opened)       _php_stream_fopen_with_path((filename), (mode), (path), (opened), 0 STREAMS_CC)
 
 PHPAPI php_stream *_php_stream_fopen_from_file(FILE *file, const char *mode STREAMS_DC);
@@ -45,13 +45,13 @@ PHPAPI php_stream *_php_stream_fopen_from_pipe(FILE *file, const char *mode STRE
 PHPAPI php_stream *_php_stream_fopen_tmpfile(int dummy STREAMS_DC);
 #define php_stream_fopen_tmpfile()     _php_stream_fopen_tmpfile(0 STREAMS_CC)
 
-PHPAPI php_stream *_php_stream_fopen_temporary_file(const char *dir, const char *pfx, char **opened_path STREAMS_DC);
+PHPAPI php_stream *_php_stream_fopen_temporary_file(const char *dir, const char *pfx, zend_string **opened_path STREAMS_DC);
 #define php_stream_fopen_temporary_file(dir, pfx, opened_path) _php_stream_fopen_temporary_file((dir), (pfx), (opened_path) STREAMS_CC)
 
 /* This is a utility API for extensions that are opening a stream, converting it
  * to a FILE* and then closing it again.  Be warned that fileno() on the result
  * will most likely fail on systems with fopencookie. */
-PHPAPI FILE * _php_stream_open_wrapper_as_file(char * path, char * mode, int options, char **opened_path STREAMS_DC);
+PHPAPI FILE * _php_stream_open_wrapper_as_file(char * path, char * mode, int options, zend_string **opened_path STREAMS_DC);
 #define php_stream_open_wrapper_as_file(path, mode, options, opened_path) _php_stream_open_wrapper_as_file((path), (mode), (options), (opened_path) STREAMS_CC)
 
 END_EXTERN_C()
index fe256b767ec5e96fef0fc9c66b62ba8e3106f7b3..83bd059c348291d547681c99e1e718e43e54a2e5 100644 (file)
@@ -124,7 +124,7 @@ typedef struct {
        unsigned _reserved:29;
 
        int lock_flag;                  /* stores the lock state */
-       char *temp_file_name;   /* if non-null, this is the path to a temporary file that
+       zend_string *temp_name; /* if non-null, this is the path to a temporary file that
                                                         * is to be deleted when the stream is closed */
 #if HAVE_FLUSHIO
        char last_op;
@@ -168,7 +168,7 @@ static php_stream *_php_stream_fopen_from_fd_int(int fd, const char *mode, const
        self->is_pipe = 0;
        self->lock_flag = LOCK_UN;
        self->is_process_pipe = 0;
-       self->temp_file_name = NULL;
+       self->temp_name = NULL;
        self->fd = fd;
 
        return php_stream_alloc_rel(&php_stream_stdio_ops, self, persistent_id, mode);
@@ -184,15 +184,15 @@ static php_stream *_php_stream_fopen_from_file_int(FILE *file, const char *mode
        self->is_pipe = 0;
        self->lock_flag = LOCK_UN;
        self->is_process_pipe = 0;
-       self->temp_file_name = NULL;
+       self->temp_name = NULL;
        self->fd = fileno(file);
 
        return php_stream_alloc_rel(&php_stream_stdio_ops, self, 0, mode);
 }
 
-PHPAPI php_stream *_php_stream_fopen_temporary_file(const char *dir, const char *pfx, char **opened_path_ptr STREAMS_DC)
+PHPAPI php_stream *_php_stream_fopen_temporary_file(const char *dir, const char *pfx, zend_string **opened_path_ptr STREAMS_DC)
 {
-       char *opened_path = NULL;
+       zend_string *opened_path = NULL;
        int fd;
 
        fd = php_open_temporary_fd(dir, pfx, &opened_path);
@@ -207,9 +207,9 @@ PHPAPI php_stream *_php_stream_fopen_temporary_file(const char *dir, const char
                if (stream) {
                        php_stdio_stream_data *self = (php_stdio_stream_data*)stream->abstract;
                        stream->wrapper = &php_plain_files_wrapper;
-                       stream->orig_path = estrdup(opened_path);
+                       stream->orig_path = estrndup(opened_path->val, opened_path->len);
 
-                       self->temp_file_name = opened_path;
+                       self->temp_name = opened_path;
                        self->lock_flag = LOCK_UN;
 
                        return stream;
@@ -311,7 +311,7 @@ PHPAPI php_stream *_php_stream_fopen_from_pipe(FILE *file, const char *mode STRE
        self->lock_flag = LOCK_UN;
        self->is_process_pipe = 1;
        self->fd = fileno(file);
-       self->temp_file_name = NULL;
+       self->temp_name = NULL;
 
        stream = php_stream_alloc_rel(&php_stream_stdio_ops, self, 0, mode);
        stream->flags |= PHP_STREAM_FLAG_NO_SEEK;
@@ -450,11 +450,11 @@ static int php_stdiop_close(php_stream *stream, int close_handle)
                } else {
                        return 0; /* everything should be closed already -> success */
                }
-               if (data->temp_file_name) {
-                       unlink(data->temp_file_name);
+               if (data->temp_name) {
+                       unlink(data->temp_name->val);
                        /* temporary streams are never persistent */
-                       efree(data->temp_file_name);
-                       data->temp_file_name = NULL;
+                       zend_string_release(data->temp_name);
+                       data->temp_name = NULL;
                }
        } else {
                ret = 0;
@@ -890,7 +890,7 @@ static php_stream_ops       php_plain_files_dirstream_ops = {
 };
 
 static php_stream *php_plain_files_dir_opener(php_stream_wrapper *wrapper, const char *path, const char *mode,
-               int options, char **opened_path, php_stream_context *context STREAMS_DC)
+               int options, zend_string **opened_path, php_stream_context *context STREAMS_DC)
 {
        DIR *dir = NULL;
        php_stream *stream = NULL;
@@ -928,9 +928,9 @@ static php_stream *php_plain_files_dir_opener(php_stream_wrapper *wrapper, const
 /* }}} */
 
 /* {{{ php_stream_fopen */
-PHPAPI php_stream *_php_stream_fopen(const char *filename, const char *mode, char **opened_path, int options STREAMS_DC)
+PHPAPI php_stream *_php_stream_fopen(const char *filename, const char *mode, zend_string **opened_path, int options STREAMS_DC)
 {
-       char *realpath = NULL;
+       char realpath[MAXPATHLEN];
        int open_flags;
        int fd;
        php_stream *ret;
@@ -945,9 +945,9 @@ PHPAPI php_stream *_php_stream_fopen(const char *filename, const char *mode, cha
        }
 
        if (options & STREAM_ASSUME_REALPATH) {
-               realpath = estrdup(filename);
+               strlcpy(realpath, filename, sizeof(realpath));
        } else {
-               if ((realpath = expand_filepath(filename, NULL)) == NULL) {
+               if (expand_filepath(filename, realpath) == NULL) {
                        return NULL;
                }
        }
@@ -957,15 +957,12 @@ PHPAPI php_stream *_php_stream_fopen(const char *filename, const char *mode, cha
                switch (php_stream_from_persistent_id(persistent_id, &ret)) {
                        case PHP_STREAM_PERSISTENT_SUCCESS:
                                if (opened_path) {
-                                       *opened_path = realpath;
-                                       realpath = NULL;
+                                       //TODO: avoid reallocation???
+                                       *opened_path = zend_string_init(realpath, strlen(realpath), 0);
                                }
                                /* fall through */
 
                        case PHP_STREAM_PERSISTENT_FAILURE:
-                               if (realpath) {
-                                       efree(realpath);
-                               }
                                efree(persistent_id);;
                                return ret;
                }
@@ -983,11 +980,7 @@ PHPAPI php_stream *_php_stream_fopen(const char *filename, const char *mode, cha
 
                if (ret)        {
                        if (opened_path) {
-                               *opened_path = realpath;
-                               realpath = NULL;
-                       }
-                       if (realpath) {
-                               efree(realpath);
+                               *opened_path = zend_string_init(realpath, strlen(realpath), 0);
                        }
                        if (persistent_id) {
                                efree(persistent_id);
@@ -1005,7 +998,7 @@ PHPAPI php_stream *_php_stream_fopen(const char *filename, const char *mode, cha
                                r = do_fstat(self, 0);
                                if ((r == 0 && !S_ISREG(self->sb.st_mode))) {
                                        if (opened_path) {
-                                               efree(*opened_path);
+                                               zend_string_release(*opened_path);
                                                *opened_path = NULL;
                                        }
                                        php_stream_close(ret);
@@ -1018,7 +1011,6 @@ PHPAPI php_stream *_php_stream_fopen(const char *filename, const char *mode, cha
                }
                close(fd);
        }
-       efree(realpath);
        if (persistent_id) {
                efree(persistent_id);
        }
@@ -1028,7 +1020,7 @@ PHPAPI php_stream *_php_stream_fopen(const char *filename, const char *mode, cha
 
 
 static php_stream *php_plain_files_stream_opener(php_stream_wrapper *wrapper, const char *path, const char *mode,
-               int options, char **opened_path, php_stream_context *context STREAMS_DC)
+               int options, zend_string **opened_path, php_stream_context *context STREAMS_DC)
 {
        if (((options & STREAM_DISABLE_OPEN_BASEDIR) == 0) && php_check_open_basedir(path)) {
                return NULL;
@@ -1393,7 +1385,7 @@ PHPAPI php_stream_wrapper php_plain_files_wrapper = {
 };
 
 /* {{{ php_stream_fopen_with_path */
-PHPAPI php_stream *_php_stream_fopen_with_path(const char *filename, const char *mode, const char *path, char **opened_path, int options STREAMS_DC)
+PHPAPI php_stream *_php_stream_fopen_with_path(const char *filename, const char *mode, const char *path, zend_string **opened_path, int options STREAMS_DC)
 {
        /* code ripped off from fopen_wrappers.c */
        char *pathbuf, *end;
index 7821c44c2ebb0426972d660adcf2f4a559a83e04..16149fbc924235d7eb53413ad17405b4b6a99012 100644 (file)
@@ -2015,13 +2015,13 @@ PHPAPI php_stream_dirent *_php_stream_readdir(php_stream *dirstream, php_stream_
 
 /* {{{ php_stream_open_wrapper_ex */
 PHPAPI php_stream *_php_stream_open_wrapper_ex(const char *path, const char *mode, int options,
-               char **opened_path, php_stream_context *context STREAMS_DC)
+               zend_string **opened_path, php_stream_context *context STREAMS_DC)
 {
        php_stream *stream = NULL;
        php_stream_wrapper *wrapper = NULL;
        const char *path_to_open;
        int persistent = options & STREAM_OPEN_PERSISTENT;
-       char *resolved_path = NULL;
+       zend_string *resolved_path = NULL;
        char *copy_of_path = NULL;
 
        if (opened_path) {
@@ -2036,7 +2036,7 @@ PHPAPI php_stream *_php_stream_open_wrapper_ex(const char *path, const char *mod
        if (options & USE_PATH) {
                resolved_path = zend_resolve_path(path, (int)strlen(path));
                if (resolved_path) {
-                       path = resolved_path;
+                       path = resolved_path->val;
                        /* we've found this file, don't re-check include_path or run realpath */
                        options |= STREAM_ASSUME_REALPATH;
                        options &= ~USE_PATH;
@@ -2049,7 +2049,7 @@ PHPAPI php_stream *_php_stream_open_wrapper_ex(const char *path, const char *mod
        if (options & STREAM_USE_URL && (!wrapper || !wrapper->is_url)) {
                php_error_docref(NULL, E_WARNING, "This function may only be used against URLs");
                if (resolved_path) {
-                       efree(resolved_path);
+                       zend_string_release(resolved_path);
                }
                return NULL;
        }
@@ -2102,7 +2102,7 @@ PHPAPI php_stream *_php_stream_open_wrapper_ex(const char *path, const char *mod
                                                ? PHP_STREAM_PREFER_STDIO : PHP_STREAM_NO_PREFERENCE)) {
                        case PHP_STREAM_UNCHANGED:
                                if (resolved_path) {
-                                       efree(resolved_path);
+                                       zend_string_release(resolved_path);
                                }
                                return stream;
                        case PHP_STREAM_RELEASED:
@@ -2111,7 +2111,7 @@ PHPAPI php_stream *_php_stream_open_wrapper_ex(const char *path, const char *mod
                                }
                                newstream->orig_path = pestrdup(path, persistent);
                                if (resolved_path) {
-                                       efree(resolved_path);
+                                       zend_string_release(resolved_path);
                                }
                                return newstream;
                        default:
@@ -2141,7 +2141,7 @@ PHPAPI php_stream *_php_stream_open_wrapper_ex(const char *path, const char *mod
        if (stream == NULL && (options & REPORT_ERRORS)) {
                php_stream_display_wrapper_errors(wrapper, path, "failed to open stream");
                if (opened_path && *opened_path) {
-                       efree(*opened_path);
+                       zend_string_release(*opened_path);
                        *opened_path = NULL;
                }
        }
@@ -2152,7 +2152,7 @@ PHPAPI php_stream *_php_stream_open_wrapper_ex(const char *path, const char *mod
        }
 #endif
        if (resolved_path) {
-               efree(resolved_path);
+               zend_string_release(resolved_path);
        }
        return stream;
 }
index 8d40ec3e12ee568556ecdb978d00356ea4ed2a00..33dbbf8d6743fb7263de06e5879b58c52601a74a 100644 (file)
@@ -45,7 +45,7 @@ struct php_user_stream_wrapper {
        php_stream_wrapper wrapper;
 };
 
-static php_stream *user_wrapper_opener(php_stream_wrapper *wrapper, const char *filename, const char *mode, int options, char **opened_path, php_stream_context *context STREAMS_DC);
+static php_stream *user_wrapper_opener(php_stream_wrapper *wrapper, const char *filename, const char *mode, int options, zend_string **opened_path, php_stream_context *context STREAMS_DC);
 static int user_wrapper_stat_url(php_stream_wrapper *wrapper, const char *url, int flags, php_stream_statbuf *ssb, php_stream_context *context);
 static int user_wrapper_unlink(php_stream_wrapper *wrapper, const char *url, int options, php_stream_context *context);
 static int user_wrapper_rename(php_stream_wrapper *wrapper, const char *url_from, const char *url_to, int options, php_stream_context *context);
@@ -53,7 +53,7 @@ static int user_wrapper_mkdir(php_stream_wrapper *wrapper, const char *url, int
 static int user_wrapper_rmdir(php_stream_wrapper *wrapper, const char *url, int options, php_stream_context *context);
 static int user_wrapper_metadata(php_stream_wrapper *wrapper, const char *url, int option, void *value, php_stream_context *context);
 static php_stream *user_wrapper_opendir(php_stream_wrapper *wrapper, const char *filename, const char *mode,
-               int options, char **opened_path, php_stream_context *context STREAMS_DC);
+               int options, zend_string **opened_path, php_stream_context *context STREAMS_DC);
 
 static php_stream_wrapper_ops user_stream_wops = {
        user_wrapper_opener,
@@ -325,7 +325,7 @@ static void user_stream_create_object(struct php_user_stream_wrapper *uwrap, php
 }
 
 static php_stream *user_wrapper_opener(php_stream_wrapper *wrapper, const char *filename, const char *mode,
-                                                                          int options, char **opened_path, php_stream_context *context STREAMS_DC)
+                                                                          int options, zend_string **opened_path, php_stream_context *context STREAMS_DC)
 {
        struct php_user_stream_wrapper *uwrap = (struct php_user_stream_wrapper*)wrapper->abstract;
        php_userstream_data_t *us;
@@ -385,7 +385,7 @@ static php_stream *user_wrapper_opener(php_stream_wrapper *wrapper, const char *
 
                /* if the opened path is set, copy it out */
                if (Z_ISREF(args[3]) && Z_TYPE_P(Z_REFVAL(args[3])) == IS_STRING && opened_path) {
-                       *opened_path = estrndup(Z_STRVAL_P(Z_REFVAL(args[3])), Z_STRLEN_P(Z_REFVAL(args[3])));
+                       *opened_path = zend_string_copy(Z_STR_P(Z_REFVAL(args[3])));
                }
 
                /* set wrapper data to be a reference to our object */
@@ -415,7 +415,7 @@ static php_stream *user_wrapper_opener(php_stream_wrapper *wrapper, const char *
 }
 
 static php_stream *user_wrapper_opendir(php_stream_wrapper *wrapper, const char *filename, const char *mode,
-               int options, char **opened_path, php_stream_context *context STREAMS_DC)
+               int options, zend_string **opened_path, php_stream_context *context STREAMS_DC)
 {
        struct php_user_stream_wrapper *uwrap = (struct php_user_stream_wrapper*)wrapper->abstract;
        php_userstream_data_t *us;