]> granicus.if.org Git - php/commitdiff
Eliminated checks for (func->op_array.fn_flags & ZEND_ACC_GENERATOR) in fast path...
authorDmitry Stogov <dmitry@zend.com>
Thu, 12 May 2016 22:40:15 +0000 (01:40 +0300)
committerDmitry Stogov <dmitry@zend.com>
Thu, 12 May 2016 22:40:15 +0000 (01:40 +0300)
This slightly improves calls to regular function and method calls in cost of a bit slower generator initialization.
Separate call frame for generators, allocated on heap, now created by ZEND_GENERATOR_CREATE instruction.

17 files changed:
Zend/zend_compile.c
Zend/zend_compile.h
Zend/zend_execute.c
Zend/zend_execute.h
Zend/zend_execute_API.c
Zend/zend_generators.c
Zend/zend_generators.h
Zend/zend_globals.h
Zend/zend_language_parser.y
Zend/zend_language_scanner.c
Zend/zend_language_scanner.l
Zend/zend_language_scanner_defs.h
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
Zend/zend_vm_opcodes.c
Zend/zend_vm_opcodes.h
ext/opcache/Optimizer/zend_cfg.c

index b4cb05f61637f01ebb041c324b8a825f8cdf5747..c534088b58ae77b91140270e21d37291615f1973 100644 (file)
@@ -3489,24 +3489,6 @@ int zend_compile_func_cuf(znode *result, zend_ast_list *args, zend_string *lcnam
 }
 /* }}} */
 
-static void zend_compile_assert_side_effects(zend_ast *ast) /* {{{ */
-{
-       int i;
-       int children = zend_ast_is_list(ast) ? zend_ast_get_list(ast)->children : zend_ast_get_num_children(ast);
-
-       for (i = 0; i < children; i++) {
-               zend_ast *child = (zend_ast_is_list(ast) ? zend_ast_get_list(ast)->child : ast->child)[i];
-               if (child) {
-                       if (child->kind == ZEND_AST_YIELD) {
-                               zend_mark_function_as_generator();
-                       } else if (ast->kind >= ZEND_AST_IS_LIST_SHIFT) {
-                               zend_compile_assert_side_effects(child);
-                       }
-               }
-       }
-}
-/* }}} */
-
 static int zend_compile_assert(znode *result, zend_ast_list *args, zend_string *name, zend_function *fbc) /* {{{ */
 {
        if (EG(assertions) >= 0) {
@@ -3549,8 +3531,6 @@ static int zend_compile_assert(znode *result, zend_ast_list *args, zend_string *
                }
                result->op_type = IS_CONST;
                ZVAL_TRUE(&result->u.constant);
-
-               zend_compile_assert_side_effects((zend_ast *) args);
        }
 
        return SUCCESS;
@@ -5411,6 +5391,10 @@ void zend_compile_func_decl(znode *result, zend_ast *ast) /* {{{ */
        }
 
        zend_compile_params(params_ast, return_type_ast);
+       if (CG(active_op_array)->fn_flags & ZEND_ACC_GENERATOR) {
+               zend_mark_function_as_generator();
+               zend_emit_op(NULL, ZEND_GENERATOR_CREATE, NULL, NULL);
+       }
        if (uses_ast) {
                zend_compile_closure_uses(uses_ast);
        }
index f52d22a3846085986a6d8e62c3394c759dc65415..81fb6c7a03e3d9f4673c7be49f91a4fbbcaee566 100644 (file)
@@ -473,8 +473,10 @@ struct _zend_execute_data {
 #define ZEND_CALL_RELEASE_THIS       (1 << 6)
 #define ZEND_CALL_ALLOCATED          (1 << 7)
 
+#define ZEND_CALL_INFO_SHIFT         24
+
 #define ZEND_CALL_INFO(call) \
-       (Z_TYPE_INFO((call)->This) >> 24)
+       (Z_TYPE_INFO((call)->This) >> ZEND_CALL_INFO_SHIFT)
 
 #define ZEND_CALL_KIND_EX(call_info) \
        (call_info & (ZEND_CALL_CODE | ZEND_CALL_TOP))
@@ -483,11 +485,11 @@ struct _zend_execute_data {
        ZEND_CALL_KIND_EX(ZEND_CALL_INFO(call))
 
 #define ZEND_SET_CALL_INFO(call, object, info) do { \
-               Z_TYPE_INFO((call)->This) = ((object) ? IS_OBJECT_EX : IS_UNDEF) | ((info) << 24); \
+               Z_TYPE_INFO((call)->This) = ((object) ? IS_OBJECT_EX : IS_UNDEF) | ((info) << ZEND_CALL_INFO_SHIFT); \
        } while (0)
 
 #define ZEND_ADD_CALL_FLAG_EX(call_info, flag) do { \
-               call_info |= ((flag) << 24); \
+               call_info |= ((flag) << ZEND_CALL_INFO_SHIFT); \
        } while (0)
 
 #define ZEND_ADD_CALL_FLAG(call, flag) do { \
index 0bc21e57acacd8fa0be763edc8a4c4034367d09b..0da6b32ef9bc1dd8a746a926b90cc7b8cadd243f 100644 (file)
@@ -2335,50 +2335,6 @@ static zend_always_inline void i_init_execute_data(zend_execute_data *execute_da
 }
 /* }}} */
 
-ZEND_API zend_execute_data *zend_create_generator_execute_data(zend_execute_data *call, zend_op_array *op_array, zval *return_value) /* {{{ */
-{
-       /*
-        * Normally the execute_data is allocated on the VM stack (because it does
-        * not actually do any allocation and thus is faster). For generators
-        * though this behavior would be suboptimal, because the (rather large)
-        * structure would have to be copied back and forth every time execution is
-        * suspended or resumed. That's why for generators the execution context
-        * is allocated using a separate VM stack frame.
-        */
-       zend_execute_data *execute_data;
-       uint32_t num_args = ZEND_CALL_NUM_ARGS(call);
-       uint32_t used_stack = (ZEND_CALL_FRAME_SLOT + num_args + op_array->last_var + op_array->T - MIN(op_array->num_args, num_args)) * sizeof(zval);
-
-       execute_data = (zend_execute_data*)emalloc(used_stack);
-       ZEND_SET_CALL_INFO(execute_data, Z_TYPE(call->This) == IS_OBJECT, ZEND_CALL_TOP_FUNCTION | ZEND_CALL_ALLOCATED | (ZEND_CALL_INFO(call) & (ZEND_CALL_CLOSURE|ZEND_CALL_RELEASE_THIS)));
-       EX(func) = (zend_function*)op_array;
-       Z_OBJ(EX(This)) = Z_OBJ(call->This);
-       ZEND_CALL_NUM_ARGS(execute_data) = num_args;
-       EX(prev_execute_data) = NULL;
-
-       /* copy arguments */
-       if (num_args > 0) {
-               zval *arg_src = ZEND_CALL_ARG(call, 1);
-               zval *arg_dst = ZEND_CALL_ARG(execute_data, 1);
-               zval *end = arg_src + num_args;
-
-               do {
-                       ZVAL_COPY_VALUE(arg_dst, arg_src);
-                       arg_src++;
-                       arg_dst++;
-               } while (arg_src != end);
-       }
-
-       if (UNEXPECTED(!op_array->run_time_cache)) {
-               init_func_run_time_cache(op_array);
-       }
-
-       i_init_func_execute_data(execute_data, op_array, return_value, 1);
-
-       return execute_data;
-}
-/* }}} */
-
 ZEND_API void zend_init_execute_data(zend_execute_data *execute_data, zend_op_array *op_array, zval *return_value) /* {{{ */
 {
        EX(prev_execute_data) = EG(current_execute_data);
index 88c9461dc5a24f02b961847800766135f5f3a639..a1d1b0a71b070982c647e5d4e47c3976dbfde526 100644 (file)
@@ -37,7 +37,6 @@ void init_executor(void);
 void shutdown_executor(void);
 void shutdown_destructors(void);
 ZEND_API void zend_init_execute_data(zend_execute_data *execute_data, zend_op_array *op_array, zval *return_value);
-ZEND_API zend_execute_data *zend_create_generator_execute_data(zend_execute_data *call, zend_op_array *op_array, zval *return_value);
 ZEND_API void zend_execute(zend_op_array *op_array, zval *return_value);
 ZEND_API void execute_ex(zend_execute_data *execute_data);
 ZEND_API void execute_internal(zend_execute_data *execute_data, zval *return_value);
index b98e83be52fc95e054b79b702fc1bba273a35443..9817a5f88e2dbe523b73be6defe60c11b0c05f88 100644 (file)
@@ -834,12 +834,8 @@ int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache) /
 
        if (func->type == ZEND_USER_FUNCTION) {
                int call_via_handler = (func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) != 0;
-               if (EXPECTED((func->op_array.fn_flags & ZEND_ACC_GENERATOR) == 0)) {
-                       zend_init_execute_data(call, &func->op_array, fci->retval);
-                       zend_execute_ex(call);
-               } else {
-                       zend_generator_create_zval(call, &func->op_array, fci->retval);
-               }
+               zend_init_execute_data(call, &func->op_array, fci->retval);
+               zend_execute_ex(call);
                if (call_via_handler) {
                        /* We must re-initialize function again */
                        fci_cache->initialized = 0;
index 5f8a6b2ce49f622b1a4193ebef7cbed5afa89ffd..8460b9da14a1813818543d79e1e3ac61e588c39d 100644 (file)
@@ -379,38 +379,6 @@ static zend_object *zend_generator_create(zend_class_entry *class_type) /* {{{ *
 }
 /* }}} */
 
-/* Requires globals EG(current_execute_data). */
-ZEND_API void zend_generator_create_zval(zend_execute_data *call, zend_op_array *op_array, zval *return_value) /* {{{ */
-{
-       zend_generator *generator;
-       zend_execute_data *current_execute_data;
-       zend_execute_data *execute_data;
-
-       /* Create new execution context. We have to back up and restore  EG(current_execute_data) here. */
-       current_execute_data = EG(current_execute_data);
-       execute_data = zend_create_generator_execute_data(call, op_array, return_value);
-       EG(current_execute_data) = current_execute_data;
-
-       object_init_ex(return_value, zend_ce_generator);
-
-       if (Z_TYPE(EX(This)) == IS_OBJECT && !(EX_CALL_INFO() & ZEND_CALL_CLOSURE)) {
-               ZEND_ADD_CALL_FLAG(execute_data, ZEND_CALL_RELEASE_THIS);
-               Z_ADDREF(EX(This));
-       }
-
-       /* Save execution context in generator object. */
-       generator = (zend_generator *) Z_OBJ_P(return_value);
-       generator->execute_data = execute_data;
-       generator->frozen_call_stack = NULL;
-
-       /* EX(return_value) keeps pointer to zend_object (not a real zval) */
-       execute_data->return_value = (zval*)generator;
-
-       memset(&generator->execute_fake, 0, sizeof(zend_execute_data));
-       ZVAL_OBJ(&generator->execute_fake.This, (zend_object *) generator);
-}
-/* }}} */
-
 static ZEND_COLD zend_function *zend_generator_get_constructor(zend_object *object) /* {{{ */
 {
        zend_throw_error(NULL, "The \"Generator\" class is reserved for internal use and cannot be manually instantiated");
index 4e6241fc02e87027fba64b44be90ef729e6b8e66..6aabcc6a4d2b7c12523f6f968fa66c8aa1355aad 100644 (file)
@@ -102,7 +102,6 @@ static const zend_uchar ZEND_GENERATOR_AT_FIRST_YIELD    = 0x4;
 static const zend_uchar ZEND_GENERATOR_DO_INIT           = 0x8;
 
 void zend_register_generator_ce(void);
-ZEND_API void zend_generator_create_zval(zend_execute_data *call, zend_op_array *op_array, zval *return_value);
 ZEND_API void zend_generator_close(zend_generator *generator, zend_bool finished_execution);
 ZEND_API void zend_generator_resume(zend_generator *generator);
 
index 59ba3477a2cecd2a1fda0d9a66f3954f11cf632e..b560038b7a09c3f58fece01abb2ced3088361dd3 100644 (file)
@@ -101,6 +101,7 @@ struct _zend_compiler_globals {
        zend_bool increment_lineno;
 
        zend_string *doc_comment;
+       uint32_t extra_fn_flags;
 
        uint32_t compiler_options; /* set of ZEND_COMPILE_* constants */
 
index fb2f67adbe7ad59ae83568794393b56352182947..bedb7e62bc9eac36f52d9e8100ff278145015e2a 100644 (file)
@@ -257,7 +257,7 @@ static YYSIZE_T zend_yytnamerr(char*, const char*);
 
 %type <num> returns_ref function is_reference is_variadic variable_modifiers
 %type <num> method_modifiers non_empty_member_modifiers member_modifier
-%type <num> class_modifiers class_modifier use_type
+%type <num> class_modifiers class_modifier use_type backup_fn_flags
 
 %type <str> backup_doc_comment
 
@@ -481,9 +481,9 @@ unset_variable:
 
 function_declaration_statement:
        function returns_ref T_STRING backup_doc_comment '(' parameter_list ')' return_type
-       '{' inner_statement_list '}'
-               { $$ = zend_ast_create_decl(ZEND_AST_FUNC_DECL, $2, $1, $4,
-                     zend_ast_get_str($3), $6, NULL, $10, $8); }
+       backup_fn_flags '{' inner_statement_list '}' backup_fn_flags
+               { $$ = zend_ast_create_decl(ZEND_AST_FUNC_DECL, $2 | $13, $1, $4,
+                     zend_ast_get_str($3), $6, NULL, $11, $8); CG(extra_fn_flags) = $9; }
 ;
 
 is_reference:
@@ -713,9 +713,9 @@ class_statement:
        |       T_USE name_list trait_adaptations
                        { $$ = zend_ast_create(ZEND_AST_USE_TRAIT, $2, $3); }
        |       method_modifiers function returns_ref identifier backup_doc_comment '(' parameter_list ')'
-               return_type method_body
-                       { $$ = zend_ast_create_decl(ZEND_AST_METHOD, $3 | $1, $2, $5,
-                                 zend_ast_get_str($4), $7, NULL, $10, $9); }
+               return_type backup_fn_flags method_body backup_fn_flags
+                       { $$ = zend_ast_create_decl(ZEND_AST_METHOD, $3 | $1 | $12, $2, $5,
+                                 zend_ast_get_str($4), $7, NULL, $11, $9); CG(extra_fn_flags) = $10; }
 ;
 
 name_list:
@@ -962,20 +962,20 @@ expr_without_variable:
        |       scalar { $$ = $1; }
        |       '`' backticks_expr '`' { $$ = zend_ast_create(ZEND_AST_SHELL_EXEC, $2); }
        |       T_PRINT expr { $$ = zend_ast_create(ZEND_AST_PRINT, $2); }
-       |       T_YIELD { $$ = zend_ast_create(ZEND_AST_YIELD, NULL, NULL); }
-       |       T_YIELD expr { $$ = zend_ast_create(ZEND_AST_YIELD, $2, NULL); }
-       |       T_YIELD expr T_DOUBLE_ARROW expr { $$ = zend_ast_create(ZEND_AST_YIELD, $4, $2); }
-       |       T_YIELD_FROM expr { $$ = zend_ast_create(ZEND_AST_YIELD_FROM, $2); }
+       |       T_YIELD { $$ = zend_ast_create(ZEND_AST_YIELD, NULL, NULL); CG(extra_fn_flags) |= ZEND_ACC_GENERATOR; }
+       |       T_YIELD expr { $$ = zend_ast_create(ZEND_AST_YIELD, $2, NULL); CG(extra_fn_flags) |= ZEND_ACC_GENERATOR; }
+       |       T_YIELD expr T_DOUBLE_ARROW expr { $$ = zend_ast_create(ZEND_AST_YIELD, $4, $2); CG(extra_fn_flags) |= ZEND_ACC_GENERATOR; }
+       |       T_YIELD_FROM expr { $$ = zend_ast_create(ZEND_AST_YIELD_FROM, $2); CG(extra_fn_flags) |= ZEND_ACC_GENERATOR; }
        |       function returns_ref backup_doc_comment '(' parameter_list ')' lexical_vars return_type
-               '{' inner_statement_list '}'
-                       { $$ = zend_ast_create_decl(ZEND_AST_CLOSURE, $2, $1, $3,
+               backup_fn_flags '{' inner_statement_list '}' backup_fn_flags
+                       { $$ = zend_ast_create_decl(ZEND_AST_CLOSURE, $2 | $13, $1, $3,
                                  zend_string_init("{closure}", sizeof("{closure}") - 1, 0),
-                             $5, $7, $10, $8); }
+                             $5, $7, $11, $8); CG(extra_fn_flags) = $9; }
        |       T_STATIC function returns_ref backup_doc_comment '(' parameter_list ')' lexical_vars
-               return_type '{' inner_statement_list '}'
-                       { $$ = zend_ast_create_decl(ZEND_AST_CLOSURE, $3 | ZEND_ACC_STATIC, $2, $4,
+               return_type backup_fn_flags '{' inner_statement_list '}' backup_fn_flags
+                       { $$ = zend_ast_create_decl(ZEND_AST_CLOSURE, $3 | $14 | ZEND_ACC_STATIC, $2, $4,
                              zend_string_init("{closure}", sizeof("{closure}") - 1, 0),
-                             $6, $8, $11, $9); }
+                             $6, $8, $12, $9); CG(extra_fn_flags) = $10; }
 ;
 
 function:
@@ -986,6 +986,10 @@ backup_doc_comment:
        /* empty */ { $$ = CG(doc_comment); CG(doc_comment) = NULL; }
 ;
 
+backup_fn_flags:
+       /* empty */ { $$ = CG(extra_fn_flags); CG(extra_fn_flags) = 0; }
+;
+
 returns_ref:
                /* empty */     { $$ = 0; }
        |       '&'                     { $$ = ZEND_ACC_RETURN_REFERENCE; }
index 02b1334844c57697a3667cb4c42ae064bbaa5186..18245888b73a86f2b6858886c92411c55025689f 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.15.3 */
+/* Generated by re2c 0.13.5 */
 #line 1 "Zend/zend_language_scanner.l"
 /*
    +----------------------------------------------------------------------+
@@ -180,6 +180,7 @@ void startup_scanner(void)
 {
        CG(parse_error) = 0;
        CG(doc_comment) = NULL;
+       CG(extra_fn_flags) = 0;
        zend_stack_init(&SCNG(state_stack), sizeof(int));
        zend_ptr_stack_init(&SCNG(heredoc_label_stack));
 }
@@ -1093,7 +1094,7 @@ restart:
        SCNG(yy_text) = YYCURSOR;
 
 
-#line 1097 "Zend/zend_language_scanner.c"
+#line 1098 "Zend/zend_language_scanner.c"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
@@ -1136,17 +1137,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 1789 "Zend/zend_language_scanner.l"
+#line 1790 "Zend/zend_language_scanner.l"
        {
        if (YYCURSOR > YYLIMIT) {
                RETURN_TOKEN(END);
@@ -1191,24 +1193,25 @@ inline_char_handler:
        HANDLE_NEWLINES(yytext, yyleng);
        RETURN_TOKEN(T_INLINE_HTML);
 }
-#line 1195 "Zend/zend_language_scanner.c"
+#line 1197 "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 1780 "Zend/zend_language_scanner.l"
+#line 1781 "Zend/zend_language_scanner.l"
        {
        if (CG(short_tags)) {
                BEGIN(ST_IN_SCRIPTING);
@@ -1217,60 +1220,60 @@ yy7:
                goto inline_char_handler;
        }
 }
-#line 1221 "Zend/zend_language_scanner.c"
-yy8:
-       YYDEBUG(8, *YYCURSOR);
+#line 1224 "Zend/zend_language_scanner.c"
+yy7:
+       YYDEBUG(7, *YYCURSOR);
        ++YYCURSOR;
-       YYDEBUG(9, *YYCURSOR);
+       YYDEBUG(8, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 1767 "Zend/zend_language_scanner.l"
+#line 1768 "Zend/zend_language_scanner.l"
        {
        BEGIN(ST_IN_SCRIPTING);
        RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO);
 }
-#line 1232 "Zend/zend_language_scanner.c"
+#line 1235 "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 1773 "Zend/zend_language_scanner.l"
+#line 1774 "Zend/zend_language_scanner.l"
        {
        HANDLE_NEWLINE(yytext[yyleng-1]);
        BEGIN(ST_IN_SCRIPTING);
        RETURN_TOKEN(T_OPEN_TAG);
 }
-#line 1269 "Zend/zend_language_scanner.c"
-yy16:
-       YYDEBUG(16, *YYCURSOR);
+#line 1272 "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:
        {
@@ -1308,34 +1311,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 >= 0x80) goto yy27;
+                               if (yych <= '{') goto yy29;
+                               if (yych >= 0x80) goto yy26;
                        }
                }
-yy20:
-               YYDEBUG(20, *YYCURSOR);
+yy19:
+               YYDEBUG(19, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2199 "Zend/zend_language_scanner.l"
+#line 2200 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                RETURN_TOKEN(END);
@@ -1376,118 +1379,118 @@ yy20:
        zend_scan_escape_string(zendlval, yytext, yyleng, '`');
        RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
 }
-#line 1380 "Zend/zend_language_scanner.c"
+#line 1383 "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 2143 "Zend/zend_language_scanner.l"
+#line 2144 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        RETURN_TOKEN('`');
 }
-#line 1396 "Zend/zend_language_scanner.c"
+#line 1399 "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 2130 "Zend/zend_language_scanner.l"
+#line 2131 "Zend/zend_language_scanner.l"
                {
        Z_LVAL_P(zendlval) = (zend_long) '{';
        yy_push_state(ST_IN_SCRIPTING);
        yyless(1);
        RETURN_TOKEN(T_CURLY_OPEN);
 }
-#line 1413 "Zend/zend_language_scanner.c"
-yy27:
-               YYDEBUG(27, *YYCURSOR);
+#line 1416 "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 1854 "Zend/zend_language_scanner.l"
+#line 1855 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
 }
-#line 1434 "Zend/zend_language_scanner.c"
-yy30:
-               YYDEBUG(30, *YYCURSOR);
+#line 1437 "Zend/zend_language_scanner.c"
+yy29:
+               YYDEBUG(29, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(31, *YYCURSOR);
+               YYDEBUG(30, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1572 "Zend/zend_language_scanner.l"
+#line 1573 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_VARNAME);
        RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES);
 }
-#line 1445 "Zend/zend_language_scanner.c"
+#line 1448 "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 1847 "Zend/zend_language_scanner.l"
+#line 1848 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
 }
-#line 1466 "Zend/zend_language_scanner.c"
-yy36:
-               YYDEBUG(36, *YYCURSOR);
+#line 1469 "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 <= 0x7F) goto yy33;
+                       if (yych <= '`') goto yy32;
+                       if (yych <= 'z') goto yy36;
+                       if (yych <= 0x7F) goto yy32;
                }
-yy37:
-               YYDEBUG(37, *YYCURSOR);
+yy36:
+               YYDEBUG(36, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(38, *YYCURSOR);
+               YYDEBUG(37, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1838 "Zend/zend_language_scanner.l"
+#line 1839 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
 }
-#line 1491 "Zend/zend_language_scanner.c"
+#line 1494 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_DOUBLE_QUOTES:
@@ -1526,36 +1529,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 >= 0x80) goto yy49;
+                               if (yych <= '{') goto yy51;
+                               if (yych >= 0x80) goto yy48;
                        }
                }
-yy42:
-               YYDEBUG(42, *YYCURSOR);
+yy41:
+               YYDEBUG(41, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2149 "Zend/zend_language_scanner.l"
+#line 2150 "Zend/zend_language_scanner.l"
                {
        if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) {
                YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1;
@@ -1604,129 +1607,129 @@ double_quotes_scan_done:
        zend_scan_escape_string(zendlval, yytext, yyleng, '"');
        RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
 }
-#line 1608 "Zend/zend_language_scanner.c"
+#line 1611 "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 2138 "Zend/zend_language_scanner.l"
+#line 2139 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        RETURN_TOKEN('"');
 }
-#line 1624 "Zend/zend_language_scanner.c"
+#line 1627 "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 2130 "Zend/zend_language_scanner.l"
+#line 2131 "Zend/zend_language_scanner.l"
                {
        Z_LVAL_P(zendlval) = (zend_long) '{';
        yy_push_state(ST_IN_SCRIPTING);
        yyless(1);
        RETURN_TOKEN(T_CURLY_OPEN);
 }
-#line 1641 "Zend/zend_language_scanner.c"
-yy49:
-               YYDEBUG(49, *YYCURSOR);
+#line 1644 "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 1854 "Zend/zend_language_scanner.l"
+#line 1855 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
 }
-#line 1662 "Zend/zend_language_scanner.c"
-yy52:
-               YYDEBUG(52, *YYCURSOR);
+#line 1665 "Zend/zend_language_scanner.c"
+yy51:
+               YYDEBUG(51, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(53, *YYCURSOR);
+               YYDEBUG(52, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1572 "Zend/zend_language_scanner.l"
+#line 1573 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_VARNAME);
        RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES);
 }
-#line 1673 "Zend/zend_language_scanner.c"
+#line 1676 "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 1847 "Zend/zend_language_scanner.l"
+#line 1848 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
 }
-#line 1694 "Zend/zend_language_scanner.c"
-yy58:
-               YYDEBUG(58, *YYCURSOR);
+#line 1697 "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 <= 0x7F) goto yy55;
+                       if (yych <= '`') goto yy54;
+                       if (yych <= 'z') goto yy58;
+                       if (yych <= 0x7F) goto yy54;
                }
-yy59:
-               YYDEBUG(59, *YYCURSOR);
+yy58:
+               YYDEBUG(58, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(60, *YYCURSOR);
+               YYDEBUG(59, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1838 "Zend/zend_language_scanner.l"
+#line 1839 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
 }
-#line 1719 "Zend/zend_language_scanner.c"
+#line 1722 "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 2116 "Zend/zend_language_scanner.l"
+#line 2117 "Zend/zend_language_scanner.l"
        {
        zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack));
 
@@ -1739,7 +1742,7 @@ yyc_ST_END_HEREDOC:
        BEGIN(ST_IN_SCRIPTING);
        RETURN_TOKEN(T_END_HEREDOC);
 }
-#line 1743 "Zend/zend_language_scanner.c"
+#line 1746 "Zend/zend_language_scanner.c"
 /* *********************************** */
 yyc_ST_HEREDOC:
        {
@@ -1777,31 +1780,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 >= 0x80) goto yy73;
+                               if (yych <= '{') goto yy75;
+                               if (yych >= 0x80) goto yy72;
                        }
                }
-yy68:
-               YYDEBUG(68, *YYCURSOR);
+yy67:
+               YYDEBUG(67, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2241 "Zend/zend_language_scanner.l"
+#line 2242 "Zend/zend_language_scanner.l"
                {
        int newline = 0;
 
@@ -1874,107 +1877,107 @@ heredoc_scan_done:
        zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0);
        RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
 }
-#line 1878 "Zend/zend_language_scanner.c"
+#line 1881 "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 2130 "Zend/zend_language_scanner.l"
+#line 2131 "Zend/zend_language_scanner.l"
                {
        Z_LVAL_P(zendlval) = (zend_long) '{';
        yy_push_state(ST_IN_SCRIPTING);
        yyless(1);
        RETURN_TOKEN(T_CURLY_OPEN);
 }
-#line 1900 "Zend/zend_language_scanner.c"
-yy73:
-               YYDEBUG(73, *YYCURSOR);
+#line 1903 "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 1854 "Zend/zend_language_scanner.l"
+#line 1855 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
 }
-#line 1921 "Zend/zend_language_scanner.c"
-yy76:
-               YYDEBUG(76, *YYCURSOR);
+#line 1924 "Zend/zend_language_scanner.c"
+yy75:
+               YYDEBUG(75, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(77, *YYCURSOR);
+               YYDEBUG(76, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1572 "Zend/zend_language_scanner.l"
+#line 1573 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_VARNAME);
        RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES);
 }
-#line 1932 "Zend/zend_language_scanner.c"
+#line 1935 "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 1847 "Zend/zend_language_scanner.l"
+#line 1848 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
 }
-#line 1953 "Zend/zend_language_scanner.c"
-yy82:
-               YYDEBUG(82, *YYCURSOR);
+#line 1956 "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 <= 0x7F) goto yy79;
+                       if (yych <= '`') goto yy78;
+                       if (yych <= 'z') goto yy82;
+                       if (yych <= 0x7F) goto yy78;
                }
-yy83:
-               YYDEBUG(83, *YYCURSOR);
+yy82:
+               YYDEBUG(82, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(84, *YYCURSOR);
+               YYDEBUG(83, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1838 "Zend/zend_language_scanner.l"
+#line 1839 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
 }
-#line 1978 "Zend/zend_language_scanner.c"
+#line 1981 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_IN_SCRIPTING:
@@ -2013,9 +2016,10 @@ 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);
                switch (yych) {
                case 0x00:
                case 0x01:
@@ -2046,32 +2050,32 @@ yyc_ST_IN_SCRIPTING:
                case 0x1D:
                case 0x1E:
                case 0x1F:
-               case 0x7F:      goto yy148;
+               case 0x7F:      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':
@@ -2080,593 +2084,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);
-               ++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 yy705;
+               case 'c':       goto yy704;
                case 'L':
-               case 'l':       goto yy706;
+               case 'l':       goto yy705;
                case 'M':
-               case 'm':       goto yy707;
+               case 'm':       goto yy706;
                case 'N':
-               case 'n':       goto yy708;
+               case 'n':       goto yy707;
                case 'V':
-               case 'v':       goto yy709;
+               case 'v':       goto yy708;
                case 'X':
-               case 'x':       goto yy710;
-               default:        goto yy151;
+               case 'x':       goto yy709;
+               default:        goto yy150;
                }
-yy88:
-               YYDEBUG(88, *YYCURSOR);
+yy87:
+               YYDEBUG(87, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1877 "Zend/zend_language_scanner.l"
+#line 1878 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        RETURN_TOKEN(T_STRING);
 }
-#line 2165 "Zend/zend_language_scanner.c"
-yy89:
-               YYDEBUG(89, *YYCURSOR);
+#line 2170 "Zend/zend_language_scanner.c"
+yy88:
+               YYDEBUG(88, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'O') {
                        if (yych <= 'H') {
-                               if (yych == 'E') goto yy687;
-                               goto yy151;
+                               if (yych == 'E') goto yy686;
+                               goto yy150;
                        } else {
-                               if (yych <= 'I') goto yy688;
-                               if (yych <= 'N') goto yy151;
-                               goto yy689;
+                               if (yych <= 'I') goto yy687;
+                               if (yych <= 'N') goto yy150;
+                               goto yy688;
                        }
                } else {
                        if (yych <= 'h') {
-                               if (yych == 'e') goto yy687;
-                               goto yy151;
+                               if (yych == 'e') goto yy686;
+                               goto yy150;
                        } else {
-                               if (yych <= 'i') goto yy688;
-                               if (yych == 'o') goto yy689;
-                               goto yy151;
+                               if (yych <= 'i') goto yy687;
+                               if (yych == 'o') goto yy688;
+                               goto yy150;
                        }
                }
-yy90:
-               YYDEBUG(90, *YYCURSOR);
+yy89:
+               YYDEBUG(89, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'U') {
                        if (yych <= 'N') {
-                               if (yych == 'I') goto yy663;
-                               goto yy151;
+                               if (yych == 'I') goto yy662;
+                               goto yy150;
                        } else {
-                               if (yych <= 'O') goto yy664;
-                               if (yych <= 'T') goto yy151;
-                               goto yy665;
+                               if (yych <= 'O') goto yy663;
+                               if (yych <= 'T') goto yy150;
+                               goto yy664;
                        }
                } else {
                        if (yych <= 'n') {
-                               if (yych == 'i') goto yy663;
-                               goto yy151;
+                               if (yych == 'i') goto yy662;
+                               goto yy150;
                        } else {
-                               if (yych <= 'o') goto yy664;
-                               if (yych == 'u') goto yy665;
-                               goto yy151;
+                               if (yych <= 'o') goto yy663;
+                               if (yych == 'u') goto yy664;
+                               goto yy150;
                        }
                }
-yy91:
-               YYDEBUG(91, *YYCURSOR);
+yy90:
+               YYDEBUG(90, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'O') {
                        if (yych <= 'K') {
-                               if (yych == 'A') goto yy628;
-                               goto yy151;
+                               if (yych == 'A') goto yy627;
+                               goto yy150;
                        } else {
-                               if (yych <= 'L') goto yy629;
-                               if (yych <= 'N') goto yy151;
-                               goto yy630;
+                               if (yych <= 'L') goto yy628;
+                               if (yych <= 'N') goto yy150;
+                               goto yy629;
                        }
                } else {
                        if (yych <= 'k') {
-                               if (yych == 'a') goto yy628;
-                               goto yy151;
+                               if (yych == 'a') goto yy627;
+                               goto yy150;
                        } else {
-                               if (yych <= 'l') goto yy629;
-                               if (yych == 'o') goto yy630;
-                               goto yy151;
+                               if (yych <= 'l') goto yy628;
+                               if (yych == 'o') goto yy629;
+                               goto yy150;
                        }
                }
+yy91:
+               YYDEBUG(91, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy609;
+               if (yych == 'e') goto yy609;
+               goto yy150;
 yy92:
                YYDEBUG(92, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy610;
-               if (yych == 'e') goto yy610;
-               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 1561 "Zend/zend_language_scanner.l"
+#line 1562 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(yytext[0]);
 }
-#line 2401 "Zend/zend_language_scanner.c"
-yy104:
-               YYDEBUG(104, *YYCURSOR);
+#line 2406 "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 1276 "Zend/zend_language_scanner.l"
+#line 1277 "Zend/zend_language_scanner.l"
                {
        HANDLE_NEWLINES(yytext, yyleng);
        RETURN_TOKEN(T_WHITESPACE);
 }
-#line 2415 "Zend/zend_language_scanner.c"
+#line 2420 "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 1301 "Zend/zend_language_scanner.l"
+#line 1302 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_NS_SEPARATOR);
 }
-#line 2430 "Zend/zend_language_scanner.c"
-yy109:
-               YYDEBUG(109, *YYCURSOR);
+#line 2435 "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;
                }
-yy110:
-               YYDEBUG(110, *YYCURSOR);
+yy109:
+               YYDEBUG(109, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych <= '=') goto yy103;
-               if (yych <= '>') goto yy432;
-               if (yych <= '?') goto yy434;
-               goto yy103;
-yy111:
-               YYDEBUG(111, *YYCURSOR);
+               if (yych <= '=') goto yy102;
+               if (yych <= '>') goto yy431;
+               if (yych <= '?') goto yy433;
+               goto yy102;
+yy110:
+               YYDEBUG(110, *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 <= 0x7F) goto yy103;
-                       goto yy170;
+                       if (yych <= '`') goto yy102;
+                       if (yych <= 'z') goto yy169;
+                       if (yych <= 0x7F) 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 1566 "Zend/zend_language_scanner.l"
+#line 1567 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_IN_SCRIPTING);
        RETURN_TOKEN('{');
 }
-#line 2664 "Zend/zend_language_scanner.c"
-yy134:
-               YYDEBUG(134, *YYCURSOR);
+#line 2669 "Zend/zend_language_scanner.c"
+yy133:
+               YYDEBUG(133, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(135, *YYCURSOR);
+               YYDEBUG(134, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1578 "Zend/zend_language_scanner.l"
+#line 1579 "Zend/zend_language_scanner.l"
                {
        RESET_DOC_COMMENT();
        if (!zend_stack_is_empty(&SCNG(state_stack))) {
@@ -2674,35 +2679,35 @@ yy134:
        }
        RETURN_TOKEN('}');
 }
-#line 2678 "Zend/zend_language_scanner.c"
-yy136:
-               YYDEBUG(136, *YYCURSOR);
+#line 2683 "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 1631 "Zend/zend_language_scanner.l"
+#line 1632 "Zend/zend_language_scanner.l"
                {
        char *end;
        if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */
@@ -2747,35 +2752,35 @@ yy137:
        ZEND_ASSERT(!errno);
        RETURN_TOKEN(T_LNUMBER);
 }
-#line 2751 "Zend/zend_language_scanner.c"
-yy138:
-               YYDEBUG(138, *YYCURSOR);
+#line 2756 "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 1883 "Zend/zend_language_scanner.l"
+#line 1884 "Zend/zend_language_scanner.l"
                {
        while (YYCURSOR < YYLIMIT) {
                switch (*YYCURSOR++) {
@@ -2804,14 +2809,14 @@ yy141:
 
        RETURN_TOKEN(T_COMMENT);
 }
-#line 2808 "Zend/zend_language_scanner.c"
+#line 2813 "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 1951 "Zend/zend_language_scanner.l"
+#line 1952 "Zend/zend_language_scanner.l"
                {
        register char *s, *t;
        char *end;
@@ -2879,14 +2884,14 @@ yy143:
        }
        RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING);
 }
-#line 2883 "Zend/zend_language_scanner.c"
+#line 2888 "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 2020 "Zend/zend_language_scanner.l"
+#line 2021 "Zend/zend_language_scanner.l"
                {
        int bprefix = (yytext[0] != '"') ? 1 : 0;
 
@@ -2927,24 +2932,24 @@ yy145:
        BEGIN(ST_DOUBLE_QUOTES);
        RETURN_TOKEN('"');
 }
-#line 2931 "Zend/zend_language_scanner.c"
-yy146:
-               YYDEBUG(146, *YYCURSOR);
+#line 2936 "Zend/zend_language_scanner.c"
+yy145:
+               YYDEBUG(145, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(147, *YYCURSOR);
+               YYDEBUG(146, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2110 "Zend/zend_language_scanner.l"
+#line 2111 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_BACKQUOTE);
        RETURN_TOKEN('`');
 }
-#line 2942 "Zend/zend_language_scanner.c"
-yy148:
-               YYDEBUG(148, *YYCURSOR);
+#line 2947 "Zend/zend_language_scanner.c"
+yy147:
+               YYDEBUG(147, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(149, *YYCURSOR);
+               YYDEBUG(148, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2372 "Zend/zend_language_scanner.l"
+#line 2373 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                RETURN_TOKEN(END);
@@ -2953,34 +2958,34 @@ yy148:
        zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
        goto restart;
 }
-#line 2957 "Zend/zend_language_scanner.c"
-yy150:
-               YYDEBUG(150, *YYCURSOR);
+#line 2962 "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 1725 "Zend/zend_language_scanner.l"
+#line 1726 "Zend/zend_language_scanner.l"
                {
        const char *end;
 
@@ -2989,103 +2994,103 @@ yy154:
        ZEND_ASSERT(end == yytext + yyleng);
        RETURN_TOKEN(T_DNUMBER);
 }
-#line 2993 "Zend/zend_language_scanner.c"
-yy155:
-               YYDEBUG(155, *YYCURSOR);
+#line 2998 "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 <= 3) {
                        if (yyaccept <= 1) {
-                               if (yyaccept == 0) {
-                                       goto yy88;
+                               if (yyaccept <= 0) {
+                                       goto yy87;
                                } else {
-                                       goto yy103;
+                                       goto yy102;
                                }
                        } else {
-                               if (yyaccept == 2) {
-                                       goto yy137;
+                               if (yyaccept <= 2) {
+                                       goto yy136;
                                } else {
-                                       goto yy154;
+                                       goto yy153;
                                }
                        }
                } else {
                        if (yyaccept <= 5) {
-                               if (yyaccept == 4) {
-                                       goto yy191;
+                               if (yyaccept <= 4) {
+                                       goto yy190;
                                } else {
-                                       goto yy211;
+                                       goto yy210;
                                }
                        } else {
-                               goto yy602;
+                               goto yy601;
                        }
                }
+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 1603 "Zend/zend_language_scanner.l"
+#line 1604 "Zend/zend_language_scanner.l"
                {
        char *bin = yytext + 2; /* Skip "0b" */
        int len = yyleng - 2;
@@ -3113,19 +3118,19 @@ yy164:
                RETURN_TOKEN(T_DNUMBER);
        }
 }
-#line 3117 "Zend/zend_language_scanner.c"
-yy167:
-               YYDEBUG(167, *YYCURSOR);
+#line 3122 "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 1676 "Zend/zend_language_scanner.l"
+#line 1677 "Zend/zend_language_scanner.l"
                {
        char *hex = yytext + 2; /* Skip "0x" */
        int len = yyleng - 2;
@@ -3153,137 +3158,137 @@ yy167:
                RETURN_TOKEN(T_DNUMBER);
        }
 }
-#line 3157 "Zend/zend_language_scanner.c"
-yy170:
-               YYDEBUG(170, *YYCURSOR);
+#line 3162 "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 >= 0x80) goto yy170;
+                               if (yych <= 'z') goto yy169;
+                               if (yych >= 0x80) goto yy169;
                        }
                }
-yy172:
-               YYDEBUG(172, *YYCURSOR);
+yy171:
+               YYDEBUG(171, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1854 "Zend/zend_language_scanner.l"
+#line 1855 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
 }
-#line 3187 "Zend/zend_language_scanner.c"
+#line 3192 "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 1549 "Zend/zend_language_scanner.l"
+#line 1550 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_LOGICAL_XOR);
 }
-#line 3205 "Zend/zend_language_scanner.c"
-yy176:
-               YYDEBUG(176, *YYCURSOR);
+#line 3210 "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 1541 "Zend/zend_language_scanner.l"
+#line 1542 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_LOGICAL_OR);
 }
-#line 3218 "Zend/zend_language_scanner.c"
-yy178:
-               YYDEBUG(178, *YYCURSOR);
+#line 3223 "Zend/zend_language_scanner.c"
+yy177:
+               YYDEBUG(177, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(179, *YYCURSOR);
+               YYDEBUG(178, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1529 "Zend/zend_language_scanner.l"
+#line 1530 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_XOR_EQUAL);
 }
-#line 3228 "Zend/zend_language_scanner.c"
-yy180:
-               YYDEBUG(180, *YYCURSOR);
+#line 3233 "Zend/zend_language_scanner.c"
+yy179:
+               YYDEBUG(179, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(181, *YYCURSOR);
+               YYDEBUG(180, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1533 "Zend/zend_language_scanner.l"
+#line 1534 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_BOOLEAN_OR);
 }
-#line 3238 "Zend/zend_language_scanner.c"
-yy182:
-               YYDEBUG(182, *YYCURSOR);
+#line 3243 "Zend/zend_language_scanner.c"
+yy181:
+               YYDEBUG(181, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(183, *YYCURSOR);
+               YYDEBUG(182, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1525 "Zend/zend_language_scanner.l"
+#line 1526 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_OR_EQUAL);
 }
-#line 3248 "Zend/zend_language_scanner.c"
-yy184:
-               YYDEBUG(184, *YYCURSOR);
+#line 3253 "Zend/zend_language_scanner.c"
+yy183:
+               YYDEBUG(183, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(185, *YYCURSOR);
+               YYDEBUG(184, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1537 "Zend/zend_language_scanner.l"
+#line 1538 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_BOOLEAN_AND);
 }
-#line 3258 "Zend/zend_language_scanner.c"
-yy186:
-               YYDEBUG(186, *YYCURSOR);
+#line 3263 "Zend/zend_language_scanner.c"
+yy185:
+               YYDEBUG(185, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(187, *YYCURSOR);
+               YYDEBUG(186, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1521 "Zend/zend_language_scanner.l"
+#line 1522 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_AND_EQUAL);
 }
-#line 3268 "Zend/zend_language_scanner.c"
-yy188:
-               YYDEBUG(188, *YYCURSOR);
+#line 3273 "Zend/zend_language_scanner.c"
+yy187:
+               YYDEBUG(187, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(189, *YYCURSOR);
+               YYDEBUG(188, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1509 "Zend/zend_language_scanner.l"
+#line 1510 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_MOD_EQUAL);
 }
-#line 3278 "Zend/zend_language_scanner.c"
-yy190:
-               YYDEBUG(190, *YYCURSOR);
+#line 3283 "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 1912 "Zend/zend_language_scanner.l"
+#line 1913 "Zend/zend_language_scanner.l"
                {
        int doc_com;
 
@@ -3316,262 +3321,262 @@ yy191:
 
        RETURN_TOKEN(T_COMMENT);
 }
-#line 3320 "Zend/zend_language_scanner.c"
+#line 3325 "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 1501 "Zend/zend_language_scanner.l"
+#line 1502 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_DIV_EQUAL);
 }
-#line 3334 "Zend/zend_language_scanner.c"
-yy195:
-               YYDEBUG(195, *YYCURSOR);
+#line 3339 "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 1493 "Zend/zend_language_scanner.l"
+#line 1494 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_POW);
 }
-#line 3362 "Zend/zend_language_scanner.c"
-yy200:
-               YYDEBUG(200, *YYCURSOR);
+#line 3367 "Zend/zend_language_scanner.c"
+yy199:
+               YYDEBUG(199, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(201, *YYCURSOR);
+               YYDEBUG(200, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1489 "Zend/zend_language_scanner.l"
+#line 1490 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_MUL_EQUAL);
 }
-#line 3372 "Zend/zend_language_scanner.c"
-yy202:
-               YYDEBUG(202, *YYCURSOR);
+#line 3377 "Zend/zend_language_scanner.c"
+yy201:
+               YYDEBUG(201, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(203, *YYCURSOR);
+               YYDEBUG(202, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1497 "Zend/zend_language_scanner.l"
+#line 1498 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_POW_EQUAL);
 }
-#line 3382 "Zend/zend_language_scanner.c"
-yy204:
-               YYDEBUG(204, *YYCURSOR);
+#line 3387 "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 1557 "Zend/zend_language_scanner.l"
+#line 1558 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_SR);
 }
-#line 3393 "Zend/zend_language_scanner.c"
-yy206:
-               YYDEBUG(206, *YYCURSOR);
+#line 3398 "Zend/zend_language_scanner.c"
+yy205:
+               YYDEBUG(205, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(207, *YYCURSOR);
+               YYDEBUG(206, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1477 "Zend/zend_language_scanner.l"
+#line 1478 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_IS_GREATER_OR_EQUAL);
 }
-#line 3403 "Zend/zend_language_scanner.c"
-yy208:
-               YYDEBUG(208, *YYCURSOR);
+#line 3408 "Zend/zend_language_scanner.c"
+yy207:
+               YYDEBUG(207, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(209, *YYCURSOR);
+               YYDEBUG(208, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1517 "Zend/zend_language_scanner.l"
+#line 1518 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_SR_EQUAL);
 }
-#line 3413 "Zend/zend_language_scanner.c"
-yy210:
-               YYDEBUG(210, *YYCURSOR);
+#line 3418 "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 1553 "Zend/zend_language_scanner.l"
+#line 1554 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_SL);
 }
-#line 3428 "Zend/zend_language_scanner.c"
-yy212:
-               YYDEBUG(212, *YYCURSOR);
+#line 3433 "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 1473 "Zend/zend_language_scanner.l"
+#line 1474 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL);
 }
-#line 3439 "Zend/zend_language_scanner.c"
+#line 3444 "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 1465 "Zend/zend_language_scanner.l"
+#line 1466 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_IS_NOT_EQUAL);
 }
-#line 3450 "Zend/zend_language_scanner.c"
-yy216:
-               YYDEBUG(216, *YYCURSOR);
+#line 3455 "Zend/zend_language_scanner.c"
+yy215:
+               YYDEBUG(215, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(217, *YYCURSOR);
+               YYDEBUG(216, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1469 "Zend/zend_language_scanner.l"
+#line 1470 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_SPACESHIP);
 }
-#line 3460 "Zend/zend_language_scanner.c"
-yy218:
-               YYDEBUG(218, *YYCURSOR);
+#line 3465 "Zend/zend_language_scanner.c"
+yy217:
+               YYDEBUG(217, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(219, *YYCURSOR);
+               YYDEBUG(218, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1513 "Zend/zend_language_scanner.l"
+#line 1514 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_SL_EQUAL);
 }
-#line 3470 "Zend/zend_language_scanner.c"
-yy220:
-               YYDEBUG(220, *YYCURSOR);
+#line 3475 "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 <= 0x7F) goto yy158;
+                               if (yych <= 'z') goto yy221;
+                               if (yych <= 0x7F) 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 <= 0x7F) goto yy158;
-                               goto yy222;
+                               if (yych <= '`') goto yy157;
+                               if (yych <= 'z') goto yy221;
+                               if (yych <= 0x7F) 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 <= 0x7F) goto yy158;
-                               goto yy226;
+                               if (yych <= 'z') goto yy225;
+                               if (yych <= 0x7F) 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 2062 "Zend/zend_language_scanner.l"
+#line 2063 "Zend/zend_language_scanner.l"
                {
        char *s;
        int bprefix = (yytext[0] != '<') ? 1 : 0;
@@ -3618,3326 +3623,3328 @@ yy230:
 
        RETURN_TOKEN(T_START_HEREDOC);
 }
-#line 3622 "Zend/zend_language_scanner.c"
+#line 3627 "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 <= 0x7F) goto yy158;
-                               goto yy232;
+                               if (yych <= 'z') goto yy231;
+                               if (yych <= 0x7F) 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 1457 "Zend/zend_language_scanner.l"
+#line 1458 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_IS_NOT_IDENTICAL);
 }
-#line 3666 "Zend/zend_language_scanner.c"
-yy237:
-               YYDEBUG(237, *YYCURSOR);
+#line 3671 "Zend/zend_language_scanner.c"
+yy236:
+               YYDEBUG(236, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(238, *YYCURSOR);
+               YYDEBUG(237, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1481 "Zend/zend_language_scanner.l"
+#line 1482 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_PLUS_EQUAL);
 }
-#line 3676 "Zend/zend_language_scanner.c"
-yy239:
-               YYDEBUG(239, *YYCURSOR);
+#line 3681 "Zend/zend_language_scanner.c"
+yy238:
+               YYDEBUG(238, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(240, *YYCURSOR);
+               YYDEBUG(239, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1445 "Zend/zend_language_scanner.l"
+#line 1446 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_INC);
 }
-#line 3686 "Zend/zend_language_scanner.c"
+#line 3691 "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 1433 "Zend/zend_language_scanner.l"
+#line 1434 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_LIST);
 }
-#line 3709 "Zend/zend_language_scanner.c"
-yy245:
-               YYDEBUG(245, *YYCURSOR);
+#line 3714 "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 1461 "Zend/zend_language_scanner.l"
+#line 1462 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_IS_EQUAL);
 }
-#line 3720 "Zend/zend_language_scanner.c"
-yy247:
-               YYDEBUG(247, *YYCURSOR);
+#line 3725 "Zend/zend_language_scanner.c"
+yy246:
+               YYDEBUG(246, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(248, *YYCURSOR);
+               YYDEBUG(247, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1429 "Zend/zend_language_scanner.l"
+#line 1430 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_DOUBLE_ARROW);
 }
-#line 3730 "Zend/zend_language_scanner.c"
-yy249:
-               YYDEBUG(249, *YYCURSOR);
+#line 3735 "Zend/zend_language_scanner.c"
+yy248:
+               YYDEBUG(248, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(250, *YYCURSOR);
+               YYDEBUG(249, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1453 "Zend/zend_language_scanner.l"
+#line 1454 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_IS_IDENTICAL);
 }
-#line 3740 "Zend/zend_language_scanner.c"
-yy251:
-               YYDEBUG(251, *YYCURSOR);
+#line 3745 "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 1762 "Zend/zend_language_scanner.l"
+#line 1763 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_NS_C);
 }
-#line 3873 "Zend/zend_language_scanner.c"
+#line 3879 "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 1758 "Zend/zend_language_scanner.l"
+#line 1759 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_DIR);
 }
-#line 3897 "Zend/zend_language_scanner.c"
+#line 3903 "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 1750 "Zend/zend_language_scanner.l"
+#line 1751 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_LINE);
 }
-#line 3926 "Zend/zend_language_scanner.c"
+#line 3932 "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 1746 "Zend/zend_language_scanner.l"
+#line 1747 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_METHOD_C);
 }
-#line 3965 "Zend/zend_language_scanner.c"
+#line 3971 "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 1742 "Zend/zend_language_scanner.l"
+#line 1743 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_FUNC_C);
 }
-#line 4020 "Zend/zend_language_scanner.c"
+#line 4026 "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 1754 "Zend/zend_language_scanner.l"
+#line 1755 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_FILE);
 }
-#line 4044 "Zend/zend_language_scanner.c"
+#line 4050 "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 1738 "Zend/zend_language_scanner.l"
+#line 1739 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_TRAIT_C);
 }
-#line 4078 "Zend/zend_language_scanner.c"
+#line 4084 "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 1734 "Zend/zend_language_scanner.l"
+#line 1735 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_CLASS_C);
 }
-#line 4112 "Zend/zend_language_scanner.c"
+#line 4118 "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 1397 "Zend/zend_language_scanner.l"
+#line 1398 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_HALT_COMPILER);
 }
-#line 4178 "Zend/zend_language_scanner.c"
+#line 4184 "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 1377 "Zend/zend_language_scanner.l"
+#line 1378 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_USE);
 }
-#line 4202 "Zend/zend_language_scanner.c"
+#line 4208 "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 1425 "Zend/zend_language_scanner.l"
+#line 1426 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_UNSET);
 }
-#line 4225 "Zend/zend_language_scanner.c"
-yy341:
-               YYDEBUG(341, *YYCURSOR);
+#line 4231 "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 1325 "Zend/zend_language_scanner.l"
+#line 1326 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_INT_CAST);
 }
-#line 4401 "Zend/zend_language_scanner.c"
+#line 4407 "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 1329 "Zend/zend_language_scanner.l"
+#line 1330 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_DOUBLE_CAST);
 }
-#line 4449 "Zend/zend_language_scanner.c"
+#line 4455 "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 1333 "Zend/zend_language_scanner.l"
+#line 1334 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_STRING_CAST);
 }
-#line 4523 "Zend/zend_language_scanner.c"
+#line 4529 "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 1337 "Zend/zend_language_scanner.l"
+#line 1338 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_ARRAY_CAST);
 }
-#line 4560 "Zend/zend_language_scanner.c"
+#line 4566 "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 1341 "Zend/zend_language_scanner.l"
+#line 1342 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_OBJECT_CAST);
 }
-#line 4602 "Zend/zend_language_scanner.c"
+#line 4608 "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);
-               if (yych <= 0x1F) {
-                       if (yych == '\t') goto yy401;
-                       goto yy158;
+yy401:
+               YYDEBUG(401, *YYCURSOR);
+               if (yych <= 0x1F) {
+                       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 1345 "Zend/zend_language_scanner.l"
+#line 1346 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_BOOL_CAST);
 }
-#line 4647 "Zend/zend_language_scanner.c"
+#line 4653 "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 1349 "Zend/zend_language_scanner.l"
+#line 1350 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_UNSET_CAST);
 }
-#line 4711 "Zend/zend_language_scanner.c"
+#line 4717 "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 1321 "Zend/zend_language_scanner.l"
+#line 1322 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_VAR);
 }
-#line 4729 "Zend/zend_language_scanner.c"
+#line 4735 "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 1313 "Zend/zend_language_scanner.l"
+#line 1314 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_NEW);
 }
-#line 4753 "Zend/zend_language_scanner.c"
+#line 4759 "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 1373 "Zend/zend_language_scanner.l"
+#line 1374 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_NAMESPACE);
 }
-#line 4796 "Zend/zend_language_scanner.c"
+#line 4802 "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 1945 "Zend/zend_language_scanner.l"
+#line 1946 "Zend/zend_language_scanner.l"
                {
        BEGIN(INITIAL);
        RETURN_TOKEN(T_CLOSE_TAG);  /* implicit ';' at php-end tag */
 }
-#line 4810 "Zend/zend_language_scanner.c"
-yy434:
-               YYDEBUG(434, *YYCURSOR);
+#line 4816 "Zend/zend_language_scanner.c"
+yy433:
+               YYDEBUG(433, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(435, *YYCURSOR);
+               YYDEBUG(434, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1309 "Zend/zend_language_scanner.l"
+#line 1310 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_COALESCE);
 }
-#line 4820 "Zend/zend_language_scanner.c"
+#line 4826 "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 1505 "Zend/zend_language_scanner.l"
+#line 1506 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_CONCAT_EQUAL);
 }
-#line 4855 "Zend/zend_language_scanner.c"
-yy442:
-               YYDEBUG(442, *YYCURSOR);
+#line 4861 "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 1305 "Zend/zend_language_scanner.l"
+#line 1306 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_ELLIPSIS);
 }
-#line 4868 "Zend/zend_language_scanner.c"
-yy445:
-               YYDEBUG(445, *YYCURSOR);
+#line 4874 "Zend/zend_language_scanner.c"
+yy444:
+               YYDEBUG(444, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(446, *YYCURSOR);
+               YYDEBUG(445, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1297 "Zend/zend_language_scanner.l"
+#line 1298 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM);
 }
-#line 4878 "Zend/zend_language_scanner.c"
-yy447:
-               YYDEBUG(447, *YYCURSOR);
+#line 4884 "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 1485 "Zend/zend_language_scanner.l"
+#line 1486 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_MINUS_EQUAL);
 }
-#line 4904 "Zend/zend_language_scanner.c"
-yy451:
-               YYDEBUG(451, *YYCURSOR);
+#line 4910 "Zend/zend_language_scanner.c"
+yy450:
+               YYDEBUG(450, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(452, *YYCURSOR);
+               YYDEBUG(451, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1449 "Zend/zend_language_scanner.l"
+#line 1450 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_DEC);
 }
-#line 4914 "Zend/zend_language_scanner.c"
-yy453:
-               YYDEBUG(453, *YYCURSOR);
+#line 4920 "Zend/zend_language_scanner.c"
+yy452:
+               YYDEBUG(452, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(454, *YYCURSOR);
+               YYDEBUG(453, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1271 "Zend/zend_language_scanner.l"
+#line 1272 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_PROPERTY);
        RETURN_TOKEN(T_OBJECT_OPERATOR);
 }
-#line 4925 "Zend/zend_language_scanner.c"
-yy455:
-               YYDEBUG(455, *YYCURSOR);
+#line 4931 "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 1421 "Zend/zend_language_scanner.l"
+#line 1422 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_PUBLIC);
 }
-#line 4974 "Zend/zend_language_scanner.c"
-yy462:
-               YYDEBUG(462, *YYCURSOR);
+#line 4980 "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 1417 "Zend/zend_language_scanner.l"
+#line 1418 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_PROTECTED);
 }
-#line 5033 "Zend/zend_language_scanner.c"
+#line 5039 "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 1413 "Zend/zend_language_scanner.l"
+#line 1414 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_PRIVATE);
 }
-#line 5067 "Zend/zend_language_scanner.c"
-yy477:
-               YYDEBUG(477, *YYCURSOR);
+#line 5073 "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 1247 "Zend/zend_language_scanner.l"
+#line 1248 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_PRINT);
 }
-#line 5080 "Zend/zend_language_scanner.c"
+#line 5086 "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 1239 "Zend/zend_language_scanner.l"
+#line 1240 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_GOTO);
 }
-#line 5109 "Zend/zend_language_scanner.c"
+#line 5115 "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 1385 "Zend/zend_language_scanner.l"
+#line 1386 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_GLOBAL);
 }
-#line 5137 "Zend/zend_language_scanner.c"
+#line 5143 "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 1231 "Zend/zend_language_scanner.l"
+#line 1232 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_BREAK);
 }
-#line 5178 "Zend/zend_language_scanner.c"
+#line 5184 "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 1215 "Zend/zend_language_scanner.l"
+#line 1216 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_SWITCH);
 }
-#line 5222 "Zend/zend_language_scanner.c"
+#line 5228 "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 1401 "Zend/zend_language_scanner.l"
+#line 1402 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_STATIC);
 }
-#line 5250 "Zend/zend_language_scanner.c"
+#line 5256 "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 1211 "Zend/zend_language_scanner.l"
+#line 1212 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_AS);
 }
-#line 5281 "Zend/zend_language_scanner.c"
+#line 5287 "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 1437 "Zend/zend_language_scanner.l"
+#line 1438 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_ARRAY);
 }
-#line 5304 "Zend/zend_language_scanner.c"
-yy519:
-               YYDEBUG(519, *YYCURSOR);
+#line 5310 "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 1545 "Zend/zend_language_scanner.l"
+#line 1546 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_LOGICAL_AND);
 }
-#line 5317 "Zend/zend_language_scanner.c"
+#line 5323 "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 1405 "Zend/zend_language_scanner.l"
+#line 1406 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_ABSTRACT);
 }
-#line 5355 "Zend/zend_language_scanner.c"
+#line 5361 "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 1171 "Zend/zend_language_scanner.l"
+#line 1172 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_WHILE);
 }
-#line 5383 "Zend/zend_language_scanner.c"
-yy533:
-               YYDEBUG(533, *YYCURSOR);
+#line 5389 "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 1155 "Zend/zend_language_scanner.l"
+#line 1156 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_IF);
 }
-#line 5396 "Zend/zend_language_scanner.c"
+#line 5402 "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 1389 "Zend/zend_language_scanner.l"
+#line 1390 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_ISSET);
 }
-#line 5452 "Zend/zend_language_scanner.c"
+#line 5458 "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 >= 0x80) goto yy150;
+                               if (yych <= 'z') goto yy149;
+                               if (yych >= 0x80) goto yy149;
                        }
                }
-yy549:
-               YYDEBUG(549, *YYCURSOR);
+yy548:
+               YYDEBUG(548, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1357 "Zend/zend_language_scanner.l"
+#line 1358 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_INCLUDE);
 }
-#line 5510 "Zend/zend_language_scanner.c"
+#line 5516 "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 1361 "Zend/zend_language_scanner.l"
+#line 1362 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_INCLUDE_ONCE);
 }
-#line 5543 "Zend/zend_language_scanner.c"
+#line 5549 "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 1255 "Zend/zend_language_scanner.l"
+#line 1256 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_INTERFACE);
 }
-#line 5581 "Zend/zend_language_scanner.c"
-yy563:
-               YYDEBUG(563, *YYCURSOR);
+#line 5587 "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 1381 "Zend/zend_language_scanner.l"
+#line 1382 "Zend/zend_language_scanner.l"
                {
     RETURN_TOKEN(T_INSTEADOF);
 }
-#line 5635 "Zend/zend_language_scanner.c"
+#line 5641 "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 1207 "Zend/zend_language_scanner.l"
+#line 1208 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_INSTANCEOF);
 }
-#line 5668 "Zend/zend_language_scanner.c"
+#line 5674 "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 1267 "Zend/zend_language_scanner.l"
+#line 1268 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_IMPLEMENTS);
 }
-#line 5716 "Zend/zend_language_scanner.c"
+#line 5722 "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 1139 "Zend/zend_language_scanner.l"
+#line 1140 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_TRY);
 }
-#line 5748 "Zend/zend_language_scanner.c"
+#line 5754 "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 1259 "Zend/zend_language_scanner.l"
+#line 1260 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_TRAIT);
 }
-#line 5771 "Zend/zend_language_scanner.c"
+#line 5777 "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 1151 "Zend/zend_language_scanner.l"
+#line 1152 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_THROW);
 }
-#line 5794 "Zend/zend_language_scanner.c"
+#line 5800 "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);
                yyaccept = 6;
                yych = *(YYMARKER = ++YYCURSOR);
                if (yybm[0+yych] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
                if (yych <= '\f') {
-                       if (yych <= 0x08) goto yy602;
-                       if (yych <= '\n') goto yy603;
+                       if (yych <= 0x08) goto yy601;
+                       if (yych <= '\n') goto yy602;
                } else {
-                       if (yych <= '\r') goto yy603;
-                       if (yych == ' ') goto yy603;
+                       if (yych <= '\r') goto yy602;
+                       if (yych == ' ') goto yy602;
                }
-yy602:
-               YYDEBUG(602, *YYCURSOR);
+yy601:
+               YYDEBUG(601, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1135 "Zend/zend_language_scanner.l"
+#line 1136 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_YIELD);
 }
-#line 5831 "Zend/zend_language_scanner.c"
-yy603:
-               YYDEBUG(603, *YYCURSOR);
+#line 5837 "Zend/zend_language_scanner.c"
+yy602:
+               YYDEBUG(602, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(4);
                yych = *YYCURSOR;
-               YYDEBUG(604, *YYCURSOR);
+               YYDEBUG(603, *YYCURSOR);
                if (yych <= 0x1F) {
                        if (yych <= '\n') {
-                               if (yych <= 0x08) goto yy158;
-                               goto yy603;
+                               if (yych <= 0x08) goto yy157;
+                               goto yy602;
                        } else {
-                               if (yych == '\r') goto yy603;
-                               goto yy158;
+                               if (yych == '\r') goto yy602;
+                               goto yy157;
                        }
                } else {
                        if (yych <= 'F') {
-                               if (yych <= ' ') goto yy603;
-                               if (yych <= 'E') goto yy158;
+                               if (yych <= ' ') goto yy602;
+                               if (yych <= 'E') goto yy157;
                        } else {
-                               if (yych != 'f') goto yy158;
+                               if (yych != 'f') goto yy157;
                        }
                }
+               YYDEBUG(604, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'R') goto yy605;
+               if (yych != 'r') goto yy157;
+yy605:
                YYDEBUG(605, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy606;
-               if (yych != 'r') goto yy158;
+               if (yych == 'O') goto yy606;
+               if (yych != 'o') goto yy157;
 yy606:
                YYDEBUG(606, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy607;
-               if (yych != 'o') goto yy158;
+               if (yych == 'M') goto yy607;
+               if (yych != 'm') goto yy157;
 yy607:
                YYDEBUG(607, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'M') goto yy608;
-               if (yych != 'm') goto yy158;
-yy608:
-               YYDEBUG(608, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(609, *YYCURSOR);
+               YYDEBUG(608, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1130 "Zend/zend_language_scanner.l"
+#line 1131 "Zend/zend_language_scanner.l"
                {
        HANDLE_NEWLINES(yytext, yyleng);
        RETURN_TOKEN(T_YIELD_FROM);
 }
-#line 5878 "Zend/zend_language_scanner.c"
-yy610:
-               YYDEBUG(610, *YYCURSOR);
+#line 5884 "Zend/zend_language_scanner.c"
+yy609:
+               YYDEBUG(609, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'T') {
-                       if (yych == 'Q') goto yy612;
-                       if (yych <= 'S') goto yy151;
+                       if (yych == 'Q') goto yy611;
+                       if (yych <= 'S') goto yy150;
                } else {
                        if (yych <= 'q') {
-                               if (yych <= 'p') goto yy151;
-                               goto yy612;
+                               if (yych <= 'p') goto yy150;
+                               goto yy611;
                        } else {
-                               if (yych != 't') goto yy151;
+                               if (yych != 't') goto yy150;
                        }
                }
+               YYDEBUG(610, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'U') goto yy623;
+               if (yych == 'u') goto yy623;
+               goto yy150;
+yy611:
                YYDEBUG(611, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'U') goto yy624;
-               if (yych == 'u') goto yy624;
-               goto yy151;
+               if (yych == 'U') goto yy612;
+               if (yych != 'u') goto yy150;
 yy612:
                YYDEBUG(612, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'U') goto yy613;
-               if (yych != 'u') goto yy151;
+               if (yych == 'I') goto yy613;
+               if (yych != 'i') goto yy150;
 yy613:
                YYDEBUG(613, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy614;
-               if (yych != 'i') goto yy151;
+               if (yych == 'R') goto yy614;
+               if (yych != 'r') goto yy150;
 yy614:
                YYDEBUG(614, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy615;
-               if (yych != 'r') goto yy151;
+               if (yych == 'E') goto yy615;
+               if (yych != 'e') goto yy150;
 yy615:
                YYDEBUG(615, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy616;
-               if (yych != 'e') goto yy151;
-yy616:
-               YYDEBUG(616, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '^') {
                        if (yych <= '9') {
-                               if (yych >= '0') goto yy150;
+                               if (yych >= '0') goto yy149;
                        } else {
-                               if (yych <= '@') goto yy617;
-                               if (yych <= 'Z') goto yy150;
+                               if (yych <= '@') goto yy616;
+                               if (yych <= 'Z') goto yy149;
                        }
                } else {
                        if (yych <= '`') {
-                               if (yych <= '_') goto yy618;
+                               if (yych <= '_') goto yy617;
                        } else {
-                               if (yych <= 'z') goto yy150;
-                               if (yych >= 0x80) goto yy150;
+                               if (yych <= 'z') goto yy149;
+                               if (yych >= 0x80) goto yy149;
                        }
                }
-yy617:
-               YYDEBUG(617, *YYCURSOR);
+yy616:
+               YYDEBUG(616, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1365 "Zend/zend_language_scanner.l"
+#line 1366 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_REQUIRE);
 }
-#line 5943 "Zend/zend_language_scanner.c"
+#line 5949 "Zend/zend_language_scanner.c"
+yy617:
+               YYDEBUG(617, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'O') goto yy618;
+               if (yych != 'o') goto yy150;
 yy618:
                YYDEBUG(618, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy619;
-               if (yych != 'o') goto yy151;
+               if (yych == 'N') goto yy619;
+               if (yych != 'n') goto yy150;
 yy619:
                YYDEBUG(619, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy620;
-               if (yych != 'n') goto yy151;
+               if (yych == 'C') goto yy620;
+               if (yych != 'c') goto yy150;
 yy620:
                YYDEBUG(620, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy621;
-               if (yych != 'c') goto yy151;
+               if (yych == 'E') goto yy621;
+               if (yych != 'e') goto yy150;
 yy621:
                YYDEBUG(621, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy622;
-               if (yych != 'e') goto yy151;
-yy622:
-               YYDEBUG(622, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(623, *YYCURSOR);
+               YYDEBUG(622, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1369 "Zend/zend_language_scanner.l"
+#line 1370 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_REQUIRE_ONCE);
 }
-#line 5976 "Zend/zend_language_scanner.c"
+#line 5982 "Zend/zend_language_scanner.c"
+yy623:
+               YYDEBUG(623, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'R') goto yy624;
+               if (yych != 'r') goto yy150;
 yy624:
                YYDEBUG(624, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy625;
-               if (yych != 'r') goto yy151;
+               if (yych == 'N') goto yy625;
+               if (yych != 'n') goto yy150;
 yy625:
                YYDEBUG(625, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'N') goto yy626;
-               if (yych != 'n') goto yy151;
-yy626:
-               YYDEBUG(626, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(627, *YYCURSOR);
+               YYDEBUG(626, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1126 "Zend/zend_language_scanner.l"
+#line 1127 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_RETURN);
 }
-#line 5999 "Zend/zend_language_scanner.c"
-yy628:
-               YYDEBUG(628, *YYCURSOR);
+#line 6005 "Zend/zend_language_scanner.c"
+yy627:
+               YYDEBUG(627, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'T') {
                        if (yych <= 'L') {
-                               if (yych <= 'K') goto yy151;
-                               goto yy651;
+                               if (yych <= 'K') goto yy150;
+                               goto yy650;
                        } else {
-                               if (yych <= 'R') goto yy151;
-                               if (yych <= 'S') goto yy650;
-                               goto yy649;
+                               if (yych <= 'R') goto yy150;
+                               if (yych <= 'S') goto yy649;
+                               goto yy648;
                        }
                } else {
                        if (yych <= 'r') {
-                               if (yych == 'l') goto yy651;
-                               goto yy151;
+                               if (yych == 'l') goto yy650;
+                               goto yy150;
                        } else {
-                               if (yych <= 's') goto yy650;
-                               if (yych <= 't') goto yy649;
-                               goto yy151;
+                               if (yych <= 's') goto yy649;
+                               if (yych <= 't') goto yy648;
+                               goto yy150;
                        }
                }
-yy629:
-               YYDEBUG(629, *YYCURSOR);
+yy628:
+               YYDEBUG(628, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'O') {
-                       if (yych == 'A') goto yy641;
-                       if (yych <= 'N') goto yy151;
-                       goto yy642;
+                       if (yych == 'A') goto yy640;
+                       if (yych <= 'N') goto yy150;
+                       goto yy641;
                } else {
                        if (yych <= 'a') {
-                               if (yych <= '`') goto yy151;
-                               goto yy641;
+                               if (yych <= '`') goto yy150;
+                               goto yy640;
                        } else {
-                               if (yych == 'o') goto yy642;
-                               goto yy151;
+                               if (yych == 'o') goto yy641;
+                               goto yy150;
                        }
                }
+yy629:
+               YYDEBUG(629, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'N') goto yy630;
+               if (yych != 'n') goto yy150;
 yy630:
                YYDEBUG(630, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy631;
-               if (yych != 'n') goto yy151;
-yy631:
-               YYDEBUG(631, *YYCURSOR);
-               yych = *++YYCURSOR;
                if (yych <= 'T') {
-                       if (yych <= 'R') goto yy151;
-                       if (yych >= 'T') goto yy633;
+                       if (yych <= 'R') goto yy150;
+                       if (yych >= 'T') goto yy632;
                } else {
-                       if (yych <= 'r') goto yy151;
-                       if (yych <= 's') goto yy632;
-                       if (yych <= 't') goto yy633;
-                       goto yy151;
+                       if (yych <= 'r') goto yy150;
+                       if (yych <= 's') goto yy631;
+                       if (yych <= 't') goto yy632;
+                       goto yy150;
                }
+yy631:
+               YYDEBUG(631, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy638;
+               if (yych == 't') goto yy638;
+               goto yy150;
 yy632:
                YYDEBUG(632, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy639;
-               if (yych == 't') goto yy639;
-               goto yy151;
+               if (yych == 'I') goto yy633;
+               if (yych != 'i') goto yy150;
 yy633:
                YYDEBUG(633, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy634;
-               if (yych != 'i') goto yy151;
+               if (yych == 'N') goto yy634;
+               if (yych != 'n') goto yy150;
 yy634:
                YYDEBUG(634, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy635;
-               if (yych != 'n') goto yy151;
+               if (yych == 'U') goto yy635;
+               if (yych != 'u') goto yy150;
 yy635:
                YYDEBUG(635, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'U') goto yy636;
-               if (yych != 'u') 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 1235 "Zend/zend_language_scanner.l"
+#line 1236 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_CONTINUE);
 }
-#line 6093 "Zend/zend_language_scanner.c"
-yy639:
-               YYDEBUG(639, *YYCURSOR);
+#line 6099 "Zend/zend_language_scanner.c"
+yy638:
+               YYDEBUG(638, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(640, *YYCURSOR);
+               YYDEBUG(639, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1122 "Zend/zend_language_scanner.l"
+#line 1123 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_CONST);
 }
-#line 6106 "Zend/zend_language_scanner.c"
+#line 6112 "Zend/zend_language_scanner.c"
+yy640:
+               YYDEBUG(640, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'S') goto yy645;
+               if (yych == 's') goto yy645;
+               goto yy150;
 yy641:
                YYDEBUG(641, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'S') goto yy646;
-               if (yych == 's') goto yy646;
-               goto yy151;
+               if (yych == 'N') goto yy642;
+               if (yych != 'n') goto yy150;
 yy642:
                YYDEBUG(642, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy643;
-               if (yych != 'n') goto yy151;
+               if (yych == 'E') goto yy643;
+               if (yych != 'e') goto yy150;
 yy643:
                YYDEBUG(643, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy644;
-               if (yych != 'e') goto yy151;
-yy644:
-               YYDEBUG(644, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(645, *YYCURSOR);
+               YYDEBUG(644, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1317 "Zend/zend_language_scanner.l"
+#line 1318 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_CLONE);
 }
-#line 6135 "Zend/zend_language_scanner.c"
+#line 6141 "Zend/zend_language_scanner.c"
+yy645:
+               YYDEBUG(645, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'S') goto yy646;
+               if (yych != 's') goto yy150;
 yy646:
                YYDEBUG(646, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'S') goto yy647;
-               if (yych != 's') goto yy151;
-yy647:
-               YYDEBUG(647, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(648, *YYCURSOR);
+               YYDEBUG(647, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1251 "Zend/zend_language_scanner.l"
+#line 1252 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_CLASS);
 }
-#line 6153 "Zend/zend_language_scanner.c"
+#line 6159 "Zend/zend_language_scanner.c"
+yy648:
+               YYDEBUG(648, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'C') goto yy659;
+               if (yych == 'c') goto yy659;
+               goto yy150;
 yy649:
                YYDEBUG(649, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy660;
-               if (yych == 'c') goto yy660;
-               goto yy151;
+               if (yych == 'E') goto yy657;
+               if (yych == 'e') goto yy657;
+               goto yy150;
 yy650:
                YYDEBUG(650, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy658;
-               if (yych == 'e') goto yy658;
-               goto yy151;
+               if (yych == 'L') goto yy651;
+               if (yych != 'l') goto yy150;
 yy651:
                YYDEBUG(651, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy652;
-               if (yych != 'l') goto yy151;
+               if (yych == 'A') goto yy652;
+               if (yych != 'a') goto yy150;
 yy652:
                YYDEBUG(652, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy653;
-               if (yych != 'a') goto yy151;
+               if (yych == 'B') goto yy653;
+               if (yych != 'b') goto yy150;
 yy653:
                YYDEBUG(653, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'B') goto yy654;
-               if (yych != 'b') goto yy151;
+               if (yych == 'L') goto yy654;
+               if (yych != 'l') goto yy150;
 yy654:
                YYDEBUG(654, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy655;
-               if (yych != 'l') goto yy151;
+               if (yych == 'E') goto yy655;
+               if (yych != 'e') goto yy150;
 yy655:
                YYDEBUG(655, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy656;
-               if (yych != 'e') goto yy151;
-yy656:
-               YYDEBUG(656, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(657, *YYCURSOR);
+               YYDEBUG(656, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1441 "Zend/zend_language_scanner.l"
+#line 1442 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_CALLABLE);
 }
-#line 6203 "Zend/zend_language_scanner.c"
-yy658:
-               YYDEBUG(658, *YYCURSOR);
+#line 6209 "Zend/zend_language_scanner.c"
+yy657:
+               YYDEBUG(657, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(659, *YYCURSOR);
+               YYDEBUG(658, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1223 "Zend/zend_language_scanner.l"
+#line 1224 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_CASE);
 }
-#line 6216 "Zend/zend_language_scanner.c"
+#line 6222 "Zend/zend_language_scanner.c"
+yy659:
+               YYDEBUG(659, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'H') goto yy660;
+               if (yych != 'h') goto yy150;
 yy660:
                YYDEBUG(660, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'H') goto yy661;
-               if (yych != 'h') goto yy151;
-yy661:
-               YYDEBUG(661, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(662, *YYCURSOR);
+               YYDEBUG(661, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1143 "Zend/zend_language_scanner.l"
+#line 1144 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_CATCH);
 }
-#line 6234 "Zend/zend_language_scanner.c"
+#line 6240 "Zend/zend_language_scanner.c"
+yy662:
+               YYDEBUG(662, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'N') goto yy679;
+               if (yych == 'n') goto yy679;
+               goto yy150;
 yy663:
                YYDEBUG(663, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy680;
-               if (yych == 'n') goto yy680;
-               goto yy151;
+               if (yych == 'R') goto yy672;
+               if (yych == 'r') goto yy672;
+               goto yy150;
 yy664:
                YYDEBUG(664, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy673;
-               if (yych == 'r') goto yy673;
-               goto yy151;
+               if (yych == 'N') goto yy665;
+               if (yych != 'n') goto yy150;
 yy665:
                YYDEBUG(665, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy666;
-               if (yych != 'n') goto yy151;
+               if (yych == 'C') goto yy666;
+               if (yych != 'c') goto yy150;
 yy666:
                YYDEBUG(666, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy667;
-               if (yych != 'c') goto yy151;
+               if (yych == 'T') goto yy667;
+               if (yych != 't') goto yy150;
 yy667:
                YYDEBUG(667, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy668;
-               if (yych != 't') goto yy151;
+               if (yych == 'I') goto yy668;
+               if (yych != 'i') goto yy150;
 yy668:
                YYDEBUG(668, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy669;
-               if (yych != 'i') goto yy151;
+               if (yych == 'O') goto yy669;
+               if (yych != 'o') goto yy150;
 yy669:
                YYDEBUG(669, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy670;
-               if (yych != 'o') goto yy151;
+               if (yych == 'N') goto yy670;
+               if (yych != 'n') goto yy150;
 yy670:
                YYDEBUG(670, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'N') goto yy671;
-               if (yych != 'n') 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 1118 "Zend/zend_language_scanner.l"
+#line 1119 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_FUNCTION);
 }
-#line 6289 "Zend/zend_language_scanner.c"
-yy673:
-               YYDEBUG(673, *YYCURSOR);
+#line 6295 "Zend/zend_language_scanner.c"
+yy672:
+               YYDEBUG(672, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '^') {
                        if (yych <= '@') {
-                               if (yych <= '/') goto yy674;
-                               if (yych <= '9') goto yy150;
+                               if (yych <= '/') goto yy673;
+                               if (yych <= '9') goto yy149;
                        } else {
-                               if (yych == 'E') goto yy675;
-                               if (yych <= 'Z') goto yy150;
+                               if (yych == 'E') goto yy674;
+                               if (yych <= 'Z') goto yy149;
                        }
                } else {
                        if (yych <= 'd') {
-                               if (yych != '`') goto yy150;
+                               if (yych != '`') goto yy149;
                        } else {
-                               if (yych <= 'e') goto yy675;
-                               if (yych <= 'z') goto yy150;
-                               if (yych >= 0x80) goto yy150;
+                               if (yych <= 'e') goto yy674;
+                               if (yych <= 'z') goto yy149;
+                               if (yych >= 0x80) goto yy149;
                        }
                }
-yy674:
-               YYDEBUG(674, *YYCURSOR);
+yy673:
+               YYDEBUG(673, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1183 "Zend/zend_language_scanner.l"
+#line 1184 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_FOR);
 }
-#line 6317 "Zend/zend_language_scanner.c"
+#line 6323 "Zend/zend_language_scanner.c"
+yy674:
+               YYDEBUG(674, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'A') goto yy675;
+               if (yych != 'a') goto yy150;
 yy675:
                YYDEBUG(675, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy676;
-               if (yych != 'a') goto yy151;
+               if (yych == 'C') goto yy676;
+               if (yych != 'c') goto yy150;
 yy676:
                YYDEBUG(676, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy677;
-               if (yych != 'c') goto yy151;
+               if (yych == 'H') goto yy677;
+               if (yych != 'h') goto yy150;
 yy677:
                YYDEBUG(677, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'H') goto yy678;
-               if (yych != 'h') 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 1191 "Zend/zend_language_scanner.l"
+#line 1192 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_FOREACH);
 }
-#line 6345 "Zend/zend_language_scanner.c"
+#line 6351 "Zend/zend_language_scanner.c"
+yy679:
+               YYDEBUG(679, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'A') goto yy680;
+               if (yych != 'a') goto yy150;
 yy680:
                YYDEBUG(680, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy681;
-               if (yych != 'a') goto yy151;
+               if (yych == 'L') goto yy681;
+               if (yych != 'l') goto yy150;
 yy681:
                YYDEBUG(681, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'L') goto yy682;
-               if (yych != 'l') goto yy151;
-yy682:
-               YYDEBUG(682, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '^') {
                        if (yych <= '@') {
-                               if (yych <= '/') goto yy683;
-                               if (yych <= '9') goto yy150;
+                               if (yych <= '/') goto yy682;
+                               if (yych <= '9') goto yy149;
                        } else {
-                               if (yych == 'L') goto yy684;
-                               if (yych <= 'Z') goto yy150;
+                               if (yych == 'L') goto yy683;
+                               if (yych <= 'Z') goto yy149;
                        }
                } else {
                        if (yych <= 'k') {
-                               if (yych != '`') goto yy150;
+                               if (yych != '`') goto yy149;
                        } else {
-                               if (yych <= 'l') goto yy684;
-                               if (yych <= 'z') goto yy150;
-                               if (yych >= 0x80) goto yy150;
+                               if (yych <= 'l') goto yy683;
+                               if (yych <= 'z') goto yy149;
+                               if (yych >= 0x80) goto yy149;
                        }
                }
-yy683:
-               YYDEBUG(683, *YYCURSOR);
+yy682:
+               YYDEBUG(682, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1409 "Zend/zend_language_scanner.l"
+#line 1410 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_FINAL);
 }
-#line 6383 "Zend/zend_language_scanner.c"
+#line 6389 "Zend/zend_language_scanner.c"
+yy683:
+               YYDEBUG(683, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'Y') goto yy684;
+               if (yych != 'y') goto yy150;
 yy684:
                YYDEBUG(684, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'Y') goto yy685;
-               if (yych != 'y') goto yy151;
-yy685:
-               YYDEBUG(685, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(686, *YYCURSOR);
+               YYDEBUG(685, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1147 "Zend/zend_language_scanner.l"
+#line 1148 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_FINALLY);
 }
-#line 6401 "Zend/zend_language_scanner.c"
-yy687:
-               YYDEBUG(687, *YYCURSOR);
+#line 6407 "Zend/zend_language_scanner.c"
+yy686:
+               YYDEBUG(686, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'F') {
-                       if (yych == 'C') goto yy693;
-                       if (yych <= 'E') goto yy151;
-                       goto yy694;
+                       if (yych == 'C') goto yy692;
+                       if (yych <= 'E') goto yy150;
+                       goto yy693;
                } else {
                        if (yych <= 'c') {
-                               if (yych <= 'b') goto yy151;
-                               goto yy693;
+                               if (yych <= 'b') goto yy150;
+                               goto yy692;
                        } else {
-                               if (yych == 'f') goto yy694;
-                               goto yy151;
+                               if (yych == 'f') goto yy693;
+                               goto yy150;
                        }
                }
+yy687:
+               YYDEBUG(687, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy690;
+               if (yych == 'e') goto yy690;
+               goto yy150;
 yy688:
                YYDEBUG(688, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy691;
-               if (yych == 'e') goto yy691;
-               goto yy151;
-yy689:
-               YYDEBUG(689, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(690, *YYCURSOR);
+               YYDEBUG(689, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1179 "Zend/zend_language_scanner.l"
+#line 1180 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_DO);
 }
-#line 6436 "Zend/zend_language_scanner.c"
-yy691:
-               YYDEBUG(691, *YYCURSOR);
+#line 6442 "Zend/zend_language_scanner.c"
+yy690:
+               YYDEBUG(690, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(692, *YYCURSOR);
+               YYDEBUG(691, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1114 "Zend/zend_language_scanner.l"
+#line 1115 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_EXIT);
 }
-#line 6449 "Zend/zend_language_scanner.c"
+#line 6455 "Zend/zend_language_scanner.c"
+yy692:
+               YYDEBUG(692, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'L') goto yy699;
+               if (yych == 'l') goto yy699;
+               goto yy150;
 yy693:
                YYDEBUG(693, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy700;
-               if (yych == 'l') goto yy700;
-               goto yy151;
+               if (yych == 'A') goto yy694;
+               if (yych != 'a') goto yy150;
 yy694:
                YYDEBUG(694, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy695;
-               if (yych != 'a') goto yy151;
+               if (yych == 'U') goto yy695;
+               if (yych != 'u') goto yy150;
 yy695:
                YYDEBUG(695, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'U') goto yy696;
-               if (yych != 'u') goto yy151;
+               if (yych == 'L') goto yy696;
+               if (yych != 'l') goto yy150;
 yy696:
                YYDEBUG(696, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy697;
-               if (yych != 'l') goto yy151;
+               if (yych == 'T') goto yy697;
+               if (yych != 't') goto yy150;
 yy697:
                YYDEBUG(697, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy698;
-               if (yych != 't') goto yy151;
-yy698:
-               YYDEBUG(698, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(699, *YYCURSOR);
+               YYDEBUG(698, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1227 "Zend/zend_language_scanner.l"
+#line 1228 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_DEFAULT);
 }
-#line 6488 "Zend/zend_language_scanner.c"
+#line 6494 "Zend/zend_language_scanner.c"
+yy699:
+               YYDEBUG(699, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'A') goto yy700;
+               if (yych != 'a') goto yy150;
 yy700:
                YYDEBUG(700, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy701;
-               if (yych != 'a') goto yy151;
+               if (yych == 'R') goto yy701;
+               if (yych != 'r') goto yy150;
 yy701:
                YYDEBUG(701, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy702;
-               if (yych != 'r') goto yy151;
+               if (yych == 'E') goto yy702;
+               if (yych != 'e') goto yy150;
 yy702:
                YYDEBUG(702, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy703;
-               if (yych != 'e') goto yy151;
-yy703:
-               YYDEBUG(703, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(704, *YYCURSOR);
+               YYDEBUG(703, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1199 "Zend/zend_language_scanner.l"
+#line 1200 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_DECLARE);
 }
-#line 6516 "Zend/zend_language_scanner.c"
+#line 6522 "Zend/zend_language_scanner.c"
+yy704:
+               YYDEBUG(704, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'H') goto yy766;
+               if (yych == 'h') goto yy766;
+               goto yy150;
 yy705:
                YYDEBUG(705, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'H') goto yy767;
-               if (yych == 'h') goto yy767;
-               goto yy151;
+               if (yych == 'S') goto yy760;
+               if (yych == 's') goto yy760;
+               goto yy150;
 yy706:
                YYDEBUG(706, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'S') goto yy761;
-               if (yych == 's') goto yy761;
-               goto yy151;
+               if (yych == 'P') goto yy756;
+               if (yych == 'p') goto yy756;
+               goto yy150;
 yy707:
                YYDEBUG(707, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'P') goto yy757;
-               if (yych == 'p') goto yy757;
-               goto yy151;
+               if (yych == 'D') goto yy722;
+               if (yych == 'd') goto yy722;
+               goto yy150;
 yy708:
                YYDEBUG(708, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'D') goto yy723;
-               if (yych == 'd') goto yy723;
-               goto yy151;
+               if (yych == 'A') goto yy719;
+               if (yych == 'a') goto yy719;
+               goto yy150;
 yy709:
                YYDEBUG(709, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy720;
-               if (yych == 'a') goto yy720;
-               goto yy151;
-yy710:
-               YYDEBUG(710, *YYCURSOR);
-               yych = *++YYCURSOR;
                if (yych <= 'T') {
-                       if (yych == 'I') goto yy711;
-                       if (yych <= 'S') goto yy151;
-                       goto yy712;
+                       if (yych == 'I') goto yy710;
+                       if (yych <= 'S') goto yy150;
+                       goto yy711;
                } else {
                        if (yych <= 'i') {
-                               if (yych <= 'h') goto yy151;
+                               if (yych <= 'h') goto yy150;
                        } else {
-                               if (yych == 't') goto yy712;
-                               goto yy151;
+                               if (yych == 't') goto yy711;
+                               goto yy150;
                        }
                }
+yy710:
+               YYDEBUG(710, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy717;
+               if (yych == 't') goto yy717;
+               goto yy150;
 yy711:
                YYDEBUG(711, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy718;
-               if (yych == 't') goto yy718;
-               goto yy151;
+               if (yych == 'E') goto yy712;
+               if (yych != 'e') goto yy150;
 yy712:
                YYDEBUG(712, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy713;
-               if (yych != 'e') goto yy151;
+               if (yych == 'N') goto yy713;
+               if (yych != 'n') goto yy150;
 yy713:
                YYDEBUG(713, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy714;
-               if (yych != 'n') goto yy151;
+               if (yych == 'D') goto yy714;
+               if (yych != 'd') goto yy150;
 yy714:
                YYDEBUG(714, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'D') goto yy715;
-               if (yych != 'd') goto yy151;
+               if (yych == 'S') goto yy715;
+               if (yych != 's') goto yy150;
 yy715:
                YYDEBUG(715, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'S') goto yy716;
-               if (yych != 's') goto yy151;
-yy716:
-               YYDEBUG(716, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(717, *YYCURSOR);
+               YYDEBUG(716, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1263 "Zend/zend_language_scanner.l"
+#line 1264 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_EXTENDS);
 }
-#line 6600 "Zend/zend_language_scanner.c"
-yy718:
-               YYDEBUG(718, *YYCURSOR);
+#line 6606 "Zend/zend_language_scanner.c"
+yy717:
+               YYDEBUG(717, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(719, *YYCURSOR);
+               YYDEBUG(718, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1110 "Zend/zend_language_scanner.l"
+#line 1111 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_EXIT);
 }
-#line 6613 "Zend/zend_language_scanner.c"
+#line 6619 "Zend/zend_language_scanner.c"
+yy719:
+               YYDEBUG(719, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'L') goto yy720;
+               if (yych != 'l') goto yy150;
 yy720:
                YYDEBUG(720, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'L') goto yy721;
-               if (yych != 'l') goto yy151;
-yy721:
-               YYDEBUG(721, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(722, *YYCURSOR);
+               YYDEBUG(721, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1353 "Zend/zend_language_scanner.l"
+#line 1354 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_EVAL);
 }
-#line 6631 "Zend/zend_language_scanner.c"
-yy723:
-               YYDEBUG(723, *YYCURSOR);
+#line 6637 "Zend/zend_language_scanner.c"
+yy722:
+               YYDEBUG(722, *YYCURSOR);
                yych = *++YYCURSOR;
+               YYDEBUG(-1, yych);
                switch (yych) {
                case 'D':
-               case 'd':       goto yy724;
+               case 'd':       goto yy723;
                case 'F':
-               case 'f':       goto yy725;
+               case 'f':       goto yy724;
                case 'I':
-               case 'i':       goto yy726;
+               case 'i':       goto yy725;
                case 'S':
-               case 's':       goto yy727;
+               case 's':       goto yy726;
                case 'W':
-               case 'w':       goto yy728;
-               default:        goto yy151;
+               case 'w':       goto yy727;
+               default:        goto yy150;
                }
+yy723:
+               YYDEBUG(723, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy749;
+               if (yych == 'e') goto yy749;
+               goto yy150;
 yy724:
                YYDEBUG(724, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy750;
-               if (yych == 'e') goto yy750;
-               goto yy151;
+               if (yych == 'O') goto yy741;
+               if (yych == 'o') goto yy741;
+               goto yy150;
 yy725:
                YYDEBUG(725, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy742;
-               if (yych == 'o') goto yy742;
-               goto yy151;
+               if (yych == 'F') goto yy739;
+               if (yych == 'f') goto yy739;
+               goto yy150;
 yy726:
                YYDEBUG(726, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'F') goto yy740;
-               if (yych == 'f') goto yy740;
-               goto yy151;
+               if (yych == 'W') goto yy733;
+               if (yych == 'w') goto yy733;
+               goto yy150;
 yy727:
                YYDEBUG(727, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'W') goto yy734;
-               if (yych == 'w') goto yy734;
-               goto yy151;
+               if (yych == 'H') goto yy728;
+               if (yych != 'h') goto yy150;
 yy728:
                YYDEBUG(728, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'H') goto yy729;
-               if (yych != 'h') goto yy151;
+               if (yych == 'I') goto yy729;
+               if (yych != 'i') goto yy150;
 yy729:
                YYDEBUG(729, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy730;
-               if (yych != 'i') goto yy151;
+               if (yych == 'L') goto yy730;
+               if (yych != 'l') goto yy150;
 yy730:
                YYDEBUG(730, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy731;
-               if (yych != 'l') goto yy151;
+               if (yych == 'E') goto yy731;
+               if (yych != 'e') goto yy150;
 yy731:
                YYDEBUG(731, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy732;
-               if (yych != 'e') goto yy151;
-yy732:
-               YYDEBUG(732, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(733, *YYCURSOR);
+               YYDEBUG(732, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1175 "Zend/zend_language_scanner.l"
+#line 1176 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_ENDWHILE);
 }
-#line 6704 "Zend/zend_language_scanner.c"
+#line 6711 "Zend/zend_language_scanner.c"
+yy733:
+               YYDEBUG(733, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'I') goto yy734;
+               if (yych != 'i') goto yy150;
 yy734:
                YYDEBUG(734, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy735;
-               if (yych != 'i') goto yy151;
+               if (yych == 'T') goto yy735;
+               if (yych != 't') goto yy150;
 yy735:
                YYDEBUG(735, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy736;
-               if (yych != 't') goto yy151;
+               if (yych == 'C') goto yy736;
+               if (yych != 'c') goto yy150;
 yy736:
                YYDEBUG(736, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy737;
-               if (yych != 'c') goto yy151;
+               if (yych == 'H') goto yy737;
+               if (yych != 'h') goto yy150;
 yy737:
                YYDEBUG(737, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'H') goto yy738;
-               if (yych != 'h') goto yy151;
-yy738:
-               YYDEBUG(738, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(739, *YYCURSOR);
+               YYDEBUG(738, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1219 "Zend/zend_language_scanner.l"
+#line 1220 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_ENDSWITCH);
 }
-#line 6737 "Zend/zend_language_scanner.c"
-yy740:
-               YYDEBUG(740, *YYCURSOR);
+#line 6744 "Zend/zend_language_scanner.c"
+yy739:
+               YYDEBUG(739, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(741, *YYCURSOR);
+               YYDEBUG(740, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1163 "Zend/zend_language_scanner.l"
+#line 1164 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_ENDIF);
 }
-#line 6750 "Zend/zend_language_scanner.c"
+#line 6757 "Zend/zend_language_scanner.c"
+yy741:
+               YYDEBUG(741, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'R') goto yy742;
+               if (yych != 'r') goto yy150;
 yy742:
                YYDEBUG(742, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'R') goto yy743;
-               if (yych != 'r') goto yy151;
-yy743:
-               YYDEBUG(743, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '^') {
                        if (yych <= '@') {
-                               if (yych <= '/') goto yy744;
-                               if (yych <= '9') goto yy150;
+                               if (yych <= '/') goto yy743;
+                               if (yych <= '9') goto yy149;
                        } else {
-                               if (yych == 'E') goto yy745;
-                               if (yych <= 'Z') goto yy150;
+                               if (yych == 'E') goto yy744;
+                               if (yych <= 'Z') goto yy149;
                        }
                } else {
                        if (yych <= 'd') {
-                               if (yych != '`') goto yy150;
+                               if (yych != '`') goto yy149;
                        } else {
-                               if (yych <= 'e') goto yy745;
-                               if (yych <= 'z') goto yy150;
-                               if (yych >= 0x80) goto yy150;
+                               if (yych <= 'e') goto yy744;
+                               if (yych <= 'z') goto yy149;
+                               if (yych >= 0x80) goto yy149;
                        }
                }
-yy744:
-               YYDEBUG(744, *YYCURSOR);
+yy743:
+               YYDEBUG(743, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1187 "Zend/zend_language_scanner.l"
+#line 1188 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_ENDFOR);
 }
-#line 6783 "Zend/zend_language_scanner.c"
+#line 6790 "Zend/zend_language_scanner.c"
+yy744:
+               YYDEBUG(744, *YYCURSOR);
+               yych = *++YYCURSOR;
+               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 == 'C') goto yy746;
+               if (yych != 'c') goto yy150;
 yy746:
                YYDEBUG(746, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy747;
-               if (yych != 'c') goto yy151;
+               if (yych == 'H') goto yy747;
+               if (yych != 'h') goto yy150;
 yy747:
                YYDEBUG(747, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'H') goto yy748;
-               if (yych != 'h') 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 1195 "Zend/zend_language_scanner.l"
+#line 1196 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_ENDFOREACH);
 }
-#line 6811 "Zend/zend_language_scanner.c"
+#line 6818 "Zend/zend_language_scanner.c"
+yy749:
+               YYDEBUG(749, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'C') goto yy750;
+               if (yych != 'c') goto yy150;
 yy750:
                YYDEBUG(750, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy751;
-               if (yych != 'c') goto yy151;
+               if (yych == 'L') goto yy751;
+               if (yych != 'l') goto yy150;
 yy751:
                YYDEBUG(751, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy752;
-               if (yych != 'l') goto yy151;
+               if (yych == 'A') goto yy752;
+               if (yych != 'a') goto yy150;
 yy752:
                YYDEBUG(752, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy753;
-               if (yych != 'a') goto yy151;
+               if (yych == 'R') goto yy753;
+               if (yych != 'r') goto yy150;
 yy753:
                YYDEBUG(753, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy754;
-               if (yych != 'r') goto yy151;
+               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 (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(756, *YYCURSOR);
+               YYDEBUG(755, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1203 "Zend/zend_language_scanner.l"
+#line 1204 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_ENDDECLARE);
 }
-#line 6849 "Zend/zend_language_scanner.c"
+#line 6856 "Zend/zend_language_scanner.c"
+yy756:
+               YYDEBUG(756, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy757;
+               if (yych != 't') goto yy150;
 yy757:
                YYDEBUG(757, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy758;
-               if (yych != 't') goto yy151;
+               if (yych == 'Y') goto yy758;
+               if (yych != 'y') goto yy150;
 yy758:
                YYDEBUG(758, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'Y') goto yy759;
-               if (yych != 'y') goto yy151;
-yy759:
-               YYDEBUG(759, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(760, *YYCURSOR);
+               YYDEBUG(759, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1393 "Zend/zend_language_scanner.l"
+#line 1394 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_EMPTY);
 }
-#line 6872 "Zend/zend_language_scanner.c"
+#line 6879 "Zend/zend_language_scanner.c"
+yy760:
+               YYDEBUG(760, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy761;
+               if (yych != 'e') goto yy150;
 yy761:
                YYDEBUG(761, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy762;
-               if (yych != 'e') goto yy151;
-yy762:
-               YYDEBUG(762, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '^') {
                        if (yych <= '@') {
-                               if (yych <= '/') goto yy763;
-                               if (yych <= '9') goto yy150;
+                               if (yych <= '/') goto yy762;
+                               if (yych <= '9') goto yy149;
                        } else {
-                               if (yych == 'I') goto yy764;
-                               if (yych <= 'Z') goto yy150;
+                               if (yych == 'I') goto yy763;
+                               if (yych <= 'Z') goto yy149;
                        }
                } else {
                        if (yych <= 'h') {
-                               if (yych != '`') goto yy150;
+                               if (yych != '`') goto yy149;
                        } else {
-                               if (yych <= 'i') goto yy764;
-                               if (yych <= 'z') goto yy150;
-                               if (yych >= 0x80) goto yy150;
+                               if (yych <= 'i') goto yy763;
+                               if (yych <= 'z') goto yy149;
+                               if (yych >= 0x80) goto yy149;
                        }
                }
-yy763:
-               YYDEBUG(763, *YYCURSOR);
+yy762:
+               YYDEBUG(762, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1167 "Zend/zend_language_scanner.l"
+#line 1168 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_ELSE);
 }
-#line 6905 "Zend/zend_language_scanner.c"
+#line 6912 "Zend/zend_language_scanner.c"
+yy763:
+               YYDEBUG(763, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'F') goto yy764;
+               if (yych != 'f') goto yy150;
 yy764:
                YYDEBUG(764, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'F') goto yy765;
-               if (yych != 'f') goto yy151;
-yy765:
-               YYDEBUG(765, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(766, *YYCURSOR);
+               YYDEBUG(765, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1159 "Zend/zend_language_scanner.l"
+#line 1160 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_ELSEIF);
 }
-#line 6923 "Zend/zend_language_scanner.c"
+#line 6930 "Zend/zend_language_scanner.c"
+yy766:
+               YYDEBUG(766, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'O') goto yy767;
+               if (yych != 'o') goto yy150;
 yy767:
                YYDEBUG(767, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'O') goto yy768;
-               if (yych != 'o') goto yy151;
-yy768:
-               YYDEBUG(768, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy150;
+                       goto yy149;
                }
-               YYDEBUG(769, *YYCURSOR);
+               YYDEBUG(768, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1243 "Zend/zend_language_scanner.l"
+#line 1244 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_ECHO);
 }
-#line 6941 "Zend/zend_language_scanner.c"
+#line 6948 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_LOOKING_FOR_PROPERTY:
@@ -6976,111 +6983,111 @@ yyc_ST_LOOKING_FOR_PROPERTY:
                         64,  64,  64,  64,  64,  64,  64,  64, 
                         64,  64,  64,  64,  64,  64,  64,  64, 
                };
-               YYDEBUG(770, *YYCURSOR);
+               YYDEBUG(769, *YYCURSOR);
                YYFILL(2);
                yych = *YYCURSOR;
                if (yych <= '-') {
                        if (yych <= '\r') {
-                               if (yych <= 0x08) goto yy778;
-                               if (yych <= '\n') goto yy772;
-                               if (yych <= '\f') goto yy778;
+                               if (yych <= 0x08) goto yy777;
+                               if (yych <= '\n') goto yy771;
+                               if (yych <= '\f') goto yy777;
                        } else {
-                               if (yych == ' ') goto yy772;
-                               if (yych <= ',') goto yy778;
-                               goto yy774;
+                               if (yych == ' ') goto yy771;
+                               if (yych <= ',') goto yy777;
+                               goto yy773;
                        }
                } else {
                        if (yych <= '_') {
-                               if (yych <= '@') goto yy778;
-                               if (yych <= 'Z') goto yy776;
-                               if (yych <= '^') goto yy778;
-                               goto yy776;
+                               if (yych <= '@') goto yy777;
+                               if (yych <= 'Z') goto yy775;
+                               if (yych <= '^') goto yy777;
+                               goto yy775;
                        } else {
-                               if (yych <= '`') goto yy778;
-                               if (yych <= 'z') goto yy776;
-                               if (yych <= 0x7F) goto yy778;
-                               goto yy776;
+                               if (yych <= '`') goto yy777;
+                               if (yych <= 'z') goto yy775;
+                               if (yych <= 0x7F) goto yy777;
+                               goto yy775;
                        }
                }
-yy772:
-               YYDEBUG(772, *YYCURSOR);
+yy771:
+               YYDEBUG(771, *YYCURSOR);
                ++YYCURSOR;
                yych = *YYCURSOR;
-               goto yy784;
-yy773:
-               YYDEBUG(773, *YYCURSOR);
+               goto yy783;
+yy772:
+               YYDEBUG(772, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1276 "Zend/zend_language_scanner.l"
+#line 1277 "Zend/zend_language_scanner.l"
                {
        HANDLE_NEWLINES(yytext, yyleng);
        RETURN_TOKEN(T_WHITESPACE);
 }
-#line 7019 "Zend/zend_language_scanner.c"
+#line 7026 "Zend/zend_language_scanner.c"
+yy773:
+               YYDEBUG(773, *YYCURSOR);
+               ++YYCURSOR;
+               if ((yych = *YYCURSOR) == '>') goto yy780;
 yy774:
                YYDEBUG(774, *YYCURSOR);
-               ++YYCURSOR;
-               if ((yych = *YYCURSOR) == '>') goto yy781;
-yy775:
-               YYDEBUG(775, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1291 "Zend/zend_language_scanner.l"
+#line 1292 "Zend/zend_language_scanner.l"
                {
        yyless(0);
        yy_pop_state();
        goto restart;
 }
-#line 7033 "Zend/zend_language_scanner.c"
-yy776:
-               YYDEBUG(776, *YYCURSOR);
+#line 7040 "Zend/zend_language_scanner.c"
+yy775:
+               YYDEBUG(775, *YYCURSOR);
                ++YYCURSOR;
                yych = *YYCURSOR;
-               goto yy780;
-yy777:
-               YYDEBUG(777, *YYCURSOR);
+               goto yy779;
+yy776:
+               YYDEBUG(776, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1285 "Zend/zend_language_scanner.l"
+#line 1286 "Zend/zend_language_scanner.l"
                {
        yy_pop_state();
        zend_copy_value(zendlval, yytext, yyleng);
        RETURN_TOKEN(T_STRING);
 }
-#line 7048 "Zend/zend_language_scanner.c"
+#line 7055 "Zend/zend_language_scanner.c"
+yy777:
+               YYDEBUG(777, *YYCURSOR);
+               yych = *++YYCURSOR;
+               goto yy774;
 yy778:
                YYDEBUG(778, *YYCURSOR);
-               yych = *++YYCURSOR;
-               goto yy775;
-yy779:
-               YYDEBUG(779, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-yy780:
-               YYDEBUG(780, *YYCURSOR);
+yy779:
+               YYDEBUG(779, *YYCURSOR);
                if (yybm[0+yych] & 64) {
-                       goto yy779;
+                       goto yy778;
                }
-               goto yy777;
-yy781:
-               YYDEBUG(781, *YYCURSOR);
+               goto yy776;
+yy780:
+               YYDEBUG(780, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(782, *YYCURSOR);
+               YYDEBUG(781, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1281 "Zend/zend_language_scanner.l"
+#line 1282 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_OBJECT_OPERATOR);
 }
-#line 7073 "Zend/zend_language_scanner.c"
-yy783:
-               YYDEBUG(783, *YYCURSOR);
+#line 7080 "Zend/zend_language_scanner.c"
+yy782:
+               YYDEBUG(782, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-yy784:
-               YYDEBUG(784, *YYCURSOR);
+yy783:
+               YYDEBUG(783, *YYCURSOR);
                if (yybm[0+yych] & 128) {
-                       goto yy783;
+                       goto yy782;
                }
-               goto yy773;
+               goto yy772;
        }
 /* *********************************** */
 yyc_ST_LOOKING_FOR_VARNAME:
@@ -7119,76 +7126,75 @@ yyc_ST_LOOKING_FOR_VARNAME:
                        128, 128, 128, 128, 128, 128, 128, 128, 
                        128, 128, 128, 128, 128, 128, 128, 128, 
                };
-               YYDEBUG(785, *YYCURSOR);
+               YYDEBUG(784, *YYCURSOR);
                YYFILL(2);
                yych = *YYCURSOR;
                if (yych <= '_') {
-                       if (yych <= '@') goto yy789;
-                       if (yych <= 'Z') goto yy787;
-                       if (yych <= '^') goto yy789;
+                       if (yych <= '@') goto yy788;
+                       if (yych <= 'Z') goto yy786;
+                       if (yych <= '^') goto yy788;
                } else {
-                       if (yych <= '`') goto yy789;
-                       if (yych <= 'z') goto yy787;
-                       if (yych <= 0x7F) goto yy789;
+                       if (yych <= '`') goto yy788;
+                       if (yych <= 'z') goto yy786;
+                       if (yych <= 0x7F) goto yy788;
                }
-yy787:
-               YYDEBUG(787, *YYCURSOR);
+yy786:
+               YYDEBUG(786, *YYCURSOR);
+               yyaccept = 0;
                yych = *(YYMARKER = ++YYCURSOR);
                if (yych <= '_') {
                        if (yych <= '@') {
-                               if (yych <= '/') goto yy788;
-                               if (yych <= '9') goto yy791;
+                               if (yych <= '/') goto yy787;
+                               if (yych <= '9') goto yy790;
                        } else {
-                               if (yych <= '[') goto yy791;
-                               if (yych >= '_') goto yy791;
+                               if (yych <= '[') goto yy790;
+                               if (yych >= '_') goto yy790;
                        }
                } else {
                        if (yych <= '|') {
-                               if (yych <= '`') goto yy788;
-                               if (yych <= 'z') goto yy791;
+                               if (yych <= '`') goto yy787;
+                               if (yych <= 'z') goto yy790;
                        } else {
-                               if (yych <= '}') goto yy791;
-                               if (yych >= 0x80) goto yy791;
+                               if (yych <= '}') goto yy790;
+                               if (yych >= 0x80) goto yy790;
                        }
                }
-yy788:
-               YYDEBUG(788, *YYCURSOR);
+yy787:
+               YYDEBUG(787, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1596 "Zend/zend_language_scanner.l"
+#line 1597 "Zend/zend_language_scanner.l"
                {
        yyless(0);
        yy_pop_state();
        yy_push_state(ST_IN_SCRIPTING);
        goto restart;
 }
-#line 7165 "Zend/zend_language_scanner.c"
+#line 7173 "Zend/zend_language_scanner.c"
+yy788:
+               YYDEBUG(788, *YYCURSOR);
+               yych = *++YYCURSOR;
+               goto yy787;
 yy789:
                YYDEBUG(789, *YYCURSOR);
-               yych = *++YYCURSOR;
-               goto yy788;
-yy790:
-               YYDEBUG(790, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-yy791:
-               YYDEBUG(791, *YYCURSOR);
+yy790:
+               YYDEBUG(790, *YYCURSOR);
                if (yybm[0+yych] & 128) {
-                       goto yy790;
+                       goto yy789;
                }
-               if (yych <= '@') goto yy792;
-               if (yych <= '[') goto yy793;
-               if (yych == '}') goto yy793;
+               if (yych == '[') goto yy792;
+               if (yych == '}') goto yy792;
+               YYDEBUG(791, *YYCURSOR);
+               YYCURSOR = YYMARKER;
+               goto yy787;
 yy792:
                YYDEBUG(792, *YYCURSOR);
-               YYCURSOR = YYMARKER;
-               goto yy788;
-yy793:
-               YYDEBUG(793, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(794, *YYCURSOR);
+               YYDEBUG(793, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1587 "Zend/zend_language_scanner.l"
+#line 1588 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        zend_copy_value(zendlval, yytext, yyleng);
@@ -7196,18 +7202,18 @@ yy793:
        yy_push_state(ST_IN_SCRIPTING);
        RETURN_TOKEN(T_STRING_VARNAME);
 }
-#line 7200 "Zend/zend_language_scanner.c"
+#line 7206 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_NOWDOC:
-       YYDEBUG(795, *YYCURSOR);
+       YYDEBUG(794, *YYCURSOR);
        YYFILL(1);
        yych = *YYCURSOR;
-       YYDEBUG(797, *YYCURSOR);
+       YYDEBUG(796, *YYCURSOR);
        ++YYCURSOR;
-       YYDEBUG(798, *YYCURSOR);
+       YYDEBUG(797, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 2315 "Zend/zend_language_scanner.l"
+#line 2316 "Zend/zend_language_scanner.l"
        {
        int newline = 0;
 
@@ -7263,7 +7269,7 @@ nowdoc_scan_done:
        HANDLE_NEWLINES(yytext, yyleng - newline);
        RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
 }
-#line 7267 "Zend/zend_language_scanner.c"
+#line 7273 "Zend/zend_language_scanner.c"
 /* *********************************** */
 yyc_ST_VAR_OFFSET:
        {
@@ -7301,73 +7307,74 @@ yyc_ST_VAR_OFFSET:
                         16,  16,  16,  16,  16,  16,  16,  16, 
                         16,  16,  16,  16,  16,  16,  16,  16, 
                };
-               YYDEBUG(799, *YYCURSOR);
+               YYDEBUG(798, *YYCURSOR);
                YYFILL(3);
                yych = *YYCURSOR;
                if (yych <= '0') {
                        if (yych <= ' ') {
                                if (yych <= '\f') {
-                                       if (yych <= 0x08) goto yy813;
-                                       if (yych <= '\n') goto yy809;
-                                       goto yy813;
+                                       if (yych <= 0x08) goto yy812;
+                                       if (yych <= '\n') goto yy808;
+                                       goto yy812;
                                } else {
-                                       if (yych <= '\r') goto yy809;
-                                       if (yych <= 0x1F) goto yy813;
-                                       goto yy809;
+                                       if (yych <= '\r') goto yy808;
+                                       if (yych <= 0x1F) goto yy812;
+                                       goto yy808;
                                }
                        } else {
                                if (yych <= '$') {
-                                       if (yych <= '"') goto yy808;
-                                       if (yych <= '#') goto yy809;
-                                       goto yy804;
+                                       if (yych <= '"') goto yy807;
+                                       if (yych <= '#') goto yy808;
+                                       goto yy803;
                                } else {
-                                       if (yych == '\'') goto yy809;
-                                       if (yych <= '/') goto yy808;
+                                       if (yych == '\'') goto yy808;
+                                       if (yych <= '/') goto yy807;
                                }
                        }
                } else {
                        if (yych <= ']') {
                                if (yych <= 'Z') {
-                                       if (yych <= '9') goto yy803;
-                                       if (yych <= '@') goto yy808;
-                                       goto yy811;
+                                       if (yych <= '9') goto yy802;
+                                       if (yych <= '@') goto yy807;
+                                       goto yy810;
                                } else {
-                                       if (yych <= '[') goto yy808;
-                                       if (yych <= '\\') goto yy809;
-                                       goto yy806;
+                                       if (yych <= '[') goto yy807;
+                                       if (yych <= '\\') goto yy808;
+                                       goto yy805;
                                }
                        } else {
                                if (yych <= '`') {
-                                       if (yych == '_') goto yy811;
-                                       goto yy808;
+                                       if (yych == '_') goto yy810;
+                                       goto yy807;
                                } else {
-                                       if (yych <= 'z') goto yy811;
-                                       if (yych <= '~') goto yy808;
-                                       if (yych <= 0x7F) goto yy813;
-                                       goto yy811;
+                                       if (yych <= 'z') goto yy810;
+                                       if (yych <= '~') goto yy807;
+                                       if (yych <= 0x7F) goto yy812;
+                                       goto yy810;
                                }
                        }
                }
-               YYDEBUG(801, *YYCURSOR);
+               YYDEBUG(800, *YYCURSOR);
+               yyaccept = 0;
                yych = *(YYMARKER = ++YYCURSOR);
                if (yych <= 'W') {
                        if (yych <= '9') {
-                               if (yych >= '0') goto yy825;
+                               if (yych >= '0') goto yy824;
                        } else {
-                               if (yych == 'B') goto yy822;
+                               if (yych == 'B') goto yy821;
                        }
                } else {
                        if (yych <= 'b') {
-                               if (yych <= 'X') goto yy824;
-                               if (yych >= 'b') goto yy822;
+                               if (yych <= 'X') goto yy823;
+                               if (yych >= 'b') goto yy821;
                        } else {
-                               if (yych == 'x') goto yy824;
+                               if (yych == 'x') goto yy823;
                        }
                }
-yy802:
-               YYDEBUG(802, *YYCURSOR);
+yy801:
+               YYDEBUG(801, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1704 "Zend/zend_language_scanner.l"
+#line 1705 "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;
@@ -7383,53 +7390,53 @@ string:
        }
        RETURN_TOKEN(T_NUM_STRING);
 }
-#line 7387 "Zend/zend_language_scanner.c"
+#line 7394 "Zend/zend_language_scanner.c"
+yy802:
+               YYDEBUG(802, *YYCURSOR);
+               yych = *++YYCURSOR;
+               goto yy820;
 yy803:
                YYDEBUG(803, *YYCURSOR);
-               yych = *++YYCURSOR;
-               goto yy821;
-yy804:
-               YYDEBUG(804, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '_') {
-                       if (yych <= '@') goto yy805;
-                       if (yych <= 'Z') goto yy817;
-                       if (yych >= '_') goto yy817;
+                       if (yych <= '@') goto yy804;
+                       if (yych <= 'Z') goto yy816;
+                       if (yych >= '_') goto yy816;
                } else {
-                       if (yych <= '`') goto yy805;
-                       if (yych <= 'z') goto yy817;
-                       if (yych >= 0x80) goto yy817;
+                       if (yych <= '`') goto yy804;
+                       if (yych <= 'z') goto yy816;
+                       if (yych >= 0x80) goto yy816;
                }
-yy805:
-               YYDEBUG(805, *YYCURSOR);
+yy804:
+               YYDEBUG(804, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1864 "Zend/zend_language_scanner.l"
+#line 1865 "Zend/zend_language_scanner.l"
                {
        /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */
        RETURN_TOKEN(yytext[0]);
 }
-#line 7412 "Zend/zend_language_scanner.c"
-yy806:
-               YYDEBUG(806, *YYCURSOR);
+#line 7419 "Zend/zend_language_scanner.c"
+yy805:
+               YYDEBUG(805, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(807, *YYCURSOR);
+               YYDEBUG(806, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1859 "Zend/zend_language_scanner.l"
+#line 1860 "Zend/zend_language_scanner.l"
                {
        yy_pop_state();
        RETURN_TOKEN(']');
 }
-#line 7423 "Zend/zend_language_scanner.c"
+#line 7430 "Zend/zend_language_scanner.c"
+yy807:
+               YYDEBUG(807, *YYCURSOR);
+               yych = *++YYCURSOR;
+               goto yy804;
 yy808:
                YYDEBUG(808, *YYCURSOR);
-               yych = *++YYCURSOR;
-               goto yy805;
-yy809:
-               YYDEBUG(809, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(810, *YYCURSOR);
+               YYDEBUG(809, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1869 "Zend/zend_language_scanner.l"
+#line 1870 "Zend/zend_language_scanner.l"
                {
        /* Invalid rule to return a more explicit parse error with proper line number */
        yyless(0);
@@ -7437,27 +7444,27 @@ yy809:
        ZVAL_NULL(zendlval);
        RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
 }
-#line 7441 "Zend/zend_language_scanner.c"
-yy811:
-               YYDEBUG(811, *YYCURSOR);
+#line 7448 "Zend/zend_language_scanner.c"
+yy810:
+               YYDEBUG(810, *YYCURSOR);
                ++YYCURSOR;
                yych = *YYCURSOR;
-               goto yy816;
-yy812:
-               YYDEBUG(812, *YYCURSOR);
+               goto yy815;
+yy811:
+               YYDEBUG(811, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1877 "Zend/zend_language_scanner.l"
+#line 1878 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        RETURN_TOKEN(T_STRING);
 }
-#line 7455 "Zend/zend_language_scanner.c"
-yy813:
-               YYDEBUG(813, *YYCURSOR);
+#line 7462 "Zend/zend_language_scanner.c"
+yy812:
+               YYDEBUG(812, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(814, *YYCURSOR);
+               YYDEBUG(813, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2372 "Zend/zend_language_scanner.l"
+#line 2373 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                RETURN_TOKEN(END);
@@ -7466,115 +7473,115 @@ yy813:
        zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
        goto restart;
 }
-#line 7470 "Zend/zend_language_scanner.c"
-yy815:
-               YYDEBUG(815, *YYCURSOR);
+#line 7477 "Zend/zend_language_scanner.c"
+yy814:
+               YYDEBUG(814, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-yy816:
-               YYDEBUG(816, *YYCURSOR);
+yy815:
+               YYDEBUG(815, *YYCURSOR);
                if (yybm[0+yych] & 16) {
-                       goto yy815;
+                       goto yy814;
                }
-               goto yy812;
-yy817:
-               YYDEBUG(817, *YYCURSOR);
+               goto yy811;
+yy816:
+               YYDEBUG(816, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(818, *YYCURSOR);
+               YYDEBUG(817, *YYCURSOR);
                if (yych <= '^') {
                        if (yych <= '9') {
-                               if (yych >= '0') goto yy817;
+                               if (yych >= '0') goto yy816;
                        } else {
-                               if (yych <= '@') goto yy819;
-                               if (yych <= 'Z') goto yy817;
+                               if (yych <= '@') goto yy818;
+                               if (yych <= 'Z') goto yy816;
                        }
                } else {
                        if (yych <= '`') {
-                               if (yych <= '_') goto yy817;
+                               if (yych <= '_') goto yy816;
                        } else {
-                               if (yych <= 'z') goto yy817;
-                               if (yych >= 0x80) goto yy817;
+                               if (yych <= 'z') goto yy816;
+                               if (yych >= 0x80) goto yy816;
                        }
                }
-yy819:
-               YYDEBUG(819, *YYCURSOR);
+yy818:
+               YYDEBUG(818, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1854 "Zend/zend_language_scanner.l"
+#line 1855 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
 }
-#line 7511 "Zend/zend_language_scanner.c"
-yy820:
-               YYDEBUG(820, *YYCURSOR);
+#line 7518 "Zend/zend_language_scanner.c"
+yy819:
+               YYDEBUG(819, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-yy821:
-               YYDEBUG(821, *YYCURSOR);
+yy820:
+               YYDEBUG(820, *YYCURSOR);
                if (yybm[0+yych] & 32) {
-                       goto yy820;
+                       goto yy819;
                }
-               goto yy802;
-yy822:
-               YYDEBUG(822, *YYCURSOR);
+               goto yy801;
+yy821:
+               YYDEBUG(821, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yybm[0+yych] & 128) {
-                       goto yy830;
+                       goto yy829;
                }
+yy822:
+               YYDEBUG(822, *YYCURSOR);
+               YYCURSOR = YYMARKER;
+               goto yy801;
 yy823:
                YYDEBUG(823, *YYCURSOR);
-               YYCURSOR = YYMARKER;
-               goto yy802;
-yy824:
-               YYDEBUG(824, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yybm[0+yych] & 64) {
-                       goto yy828;
+                       goto yy827;
                }
-               goto yy823;
-yy825:
-               YYDEBUG(825, *YYCURSOR);
+               goto yy822;
+yy824:
+               YYDEBUG(824, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
+               YYDEBUG(825, *YYCURSOR);
+               if (yych <= '/') goto yy826;
+               if (yych <= '9') goto yy824;
+yy826:
                YYDEBUG(826, *YYCURSOR);
-               if (yych <= '/') goto yy827;
-               if (yych <= '9') goto yy825;
-yy827:
-               YYDEBUG(827, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1720 "Zend/zend_language_scanner.l"
+#line 1721 "Zend/zend_language_scanner.l"
                { /* Offset must be treated as a string */
        ZVAL_STRINGL(zendlval, yytext, yyleng);
        RETURN_TOKEN(T_NUM_STRING);
 }
-#line 7556 "Zend/zend_language_scanner.c"
-yy828:
-               YYDEBUG(828, *YYCURSOR);
+#line 7563 "Zend/zend_language_scanner.c"
+yy827:
+               YYDEBUG(827, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(829, *YYCURSOR);
+               YYDEBUG(828, *YYCURSOR);
                if (yybm[0+yych] & 64) {
-                       goto yy828;
+                       goto yy827;
                }
-               goto yy827;
-yy830:
-               YYDEBUG(830, *YYCURSOR);
+               goto yy826;
+yy829:
+               YYDEBUG(829, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(831, *YYCURSOR);
+               YYDEBUG(830, *YYCURSOR);
                if (yybm[0+yych] & 128) {
-                       goto yy830;
+                       goto yy829;
                }
-               goto yy827;
+               goto yy826;
        }
 }
-#line 2381 "Zend/zend_language_scanner.l"
+#line 2382 "Zend/zend_language_scanner.l"
 
 }
index 201445da0184042fb83bba0b5c4095f8bc6634bc..c60fa7c102fa7a4f9ba139ff47e200345b1a1b9a 100644 (file)
@@ -178,6 +178,7 @@ void startup_scanner(void)
 {
        CG(parse_error) = 0;
        CG(doc_comment) = NULL;
+       CG(extra_fn_flags) = 0;
        zend_stack_init(&SCNG(state_stack), sizeof(int));
        zend_ptr_stack_init(&SCNG(heredoc_label_stack));
 }
index 09bcf92f4fe82eda13cc71903d461abad6b64867..5926e3c61d971615174d2f61216148cca197e370 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.15.3 */
+/* Generated by re2c 0.13.5 */
 #line 3 "Zend/zend_language_scanner_defs.h"
 
 enum YYCONDTYPE {
index a7c37ed09b1697b2e9694ac7e361a571a315f112..b65075830c43e5677db85316149f61eff008b620 100644 (file)
@@ -3612,27 +3612,16 @@ ZEND_VM_HANDLER(131, ZEND_DO_FCALL_BY_NAME, ANY, ANY, SPEC(RETVAL))
        EX(call) = call->prev_execute_data;
 
        if (EXPECTED(fbc->type == ZEND_USER_FUNCTION)) {
-               if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_GENERATOR) != 0)) {
-                       if (EXPECTED(RETURN_VALUE_USED(opline))) {
-                               ret = EX_VAR(opline->result.var);
-                               zend_generator_create_zval(call, &fbc->op_array, ret);
-                       } else {
-                               zend_vm_stack_free_args(call);
-                       }
-
-                       zend_vm_stack_free_call_frame(call);
-               } else {
-                       ret = NULL;
-                       if (RETURN_VALUE_USED(opline)) {
-                               ret = EX_VAR(opline->result.var);
-                               ZVAL_NULL(ret);
-                       }
+               ret = NULL;
+               if (RETURN_VALUE_USED(opline)) {
+                       ret = EX_VAR(opline->result.var);
+                       ZVAL_NULL(ret);
+               }
 
-                       call->prev_execute_data = execute_data;
-                       i_init_func_execute_data(call, &fbc->op_array, ret, 0);
+               call->prev_execute_data = execute_data;
+               i_init_func_execute_data(call, &fbc->op_array, ret, 0);
 
-                       ZEND_VM_ENTER();
-               }
+               ZEND_VM_ENTER();
        } else {
                zval retval;
                ZEND_ASSERT(fbc->type == ZEND_INTERNAL_FUNCTION);
@@ -3720,32 +3709,20 @@ ZEND_VM_HANDLER(60, ZEND_DO_FCALL, ANY, ANY, SPEC(RETVAL))
        LOAD_OPLINE();
 
        if (EXPECTED(fbc->type == ZEND_USER_FUNCTION)) {
-               if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_GENERATOR) != 0)) {
-                       if (EXPECTED(RETURN_VALUE_USED(opline))) {
-                               ret = EX_VAR(opline->result.var);
-                               zend_generator_create_zval(call, &fbc->op_array, ret);
-                       } else {
-                               if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_CLOSURE)) {
-                                       OBJ_RELEASE((zend_object*)fbc->op_array.prototype);
-                               }
-                               zend_vm_stack_free_args(call);
-                       }
-               } else {
-                       ret = NULL;
-                       if (RETURN_VALUE_USED(opline)) {
-                               ret = EX_VAR(opline->result.var);
-                               ZVAL_NULL(ret);
-                       }
+               ret = NULL;
+               if (RETURN_VALUE_USED(opline)) {
+                       ret = EX_VAR(opline->result.var);
+                       ZVAL_NULL(ret);
+               }
 
-                       call->prev_execute_data = execute_data;
-                       i_init_func_execute_data(call, &fbc->op_array, ret, 1);
+               call->prev_execute_data = execute_data;
+               i_init_func_execute_data(call, &fbc->op_array, ret, 1);
 
-                       if (EXPECTED(zend_execute_ex == execute_ex)) {
-                               ZEND_VM_ENTER();
-                       } else {
-                               ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
-                               zend_execute_ex(call);
-                       }
+               if (EXPECTED(zend_execute_ex == execute_ex)) {
+                       ZEND_VM_ENTER();
+               } else {
+                       ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
+                       zend_execute_ex(call);
                }
        } else if (EXPECTED(fbc->type < ZEND_USER_FUNCTION)) {
                zval retval;
@@ -4010,6 +3987,72 @@ ZEND_VM_HANDLER(111, ZEND_RETURN_BY_REF, CONST|TMP|VAR|CV, ANY, SRC)
        ZEND_VM_DISPATCH_TO_HELPER(zend_leave_helper);
 }
 
+ZEND_VM_HANDLER(41, ZEND_GENERATOR_CREATE, ANY, ANY)
+{
+       zval *return_value = EX(return_value);
+
+       if (EXPECTED(return_value)) {
+               USE_OPLINE
+               zend_generator *generator;
+               zend_execute_data *gen_execute_data;
+               uint32_t num_args, used_stack, call_info;
+
+               object_init_ex(return_value, zend_ce_generator);
+
+               /*
+                * Normally the execute_data is allocated on the VM stack (because it does
+                * not actually do any allocation and thus is faster). For generators
+                * though this behavior would be suboptimal, because the (rather large)
+                * structure would have to be copied back and forth every time execution is
+                * suspended or resumed. That's why for generators the execution context
+                * is allocated on heap.
+                */
+               num_args = EX_NUM_ARGS();
+               used_stack = (ZEND_CALL_FRAME_SLOT + num_args + EX(func)->op_array.last_var + EX(func)->op_array.T - MIN(EX(func)->op_array.num_args, num_args)) * sizeof(zval);
+               gen_execute_data = (zend_execute_data*)emalloc(used_stack);
+               memcpy(gen_execute_data, execute_data, used_stack);
+
+               /* Save execution context in generator object. */
+               generator = (zend_generator *) Z_OBJ_P(EX(return_value));
+               generator->execute_data = gen_execute_data;
+               generator->frozen_call_stack = NULL;
+               memset(&generator->execute_fake, 0, sizeof(zend_execute_data));
+               ZVAL_OBJ(&generator->execute_fake.This, (zend_object *) generator);
+
+               gen_execute_data->opline = opline + 1;
+               /* EX(return_value) keeps pointer to zend_object (not a real zval) */
+               gen_execute_data->return_value = (zval*)generator;
+               call_info = Z_TYPE_INFO(EX(This));
+               if ((call_info & Z_TYPE_MASK) == IS_OBJECT
+                && !(call_info & ((ZEND_CALL_CLOSURE|ZEND_CALL_RELEASE_THIS) << ZEND_CALL_INFO_SHIFT))) {
+                       ZEND_ADD_CALL_FLAG_EX(call_info, ZEND_CALL_RELEASE_THIS);
+                       Z_ADDREF(gen_execute_data->This);
+               }
+               ZEND_ADD_CALL_FLAG_EX(call_info, (ZEND_CALL_TOP_FUNCTION | ZEND_CALL_ALLOCATED));
+               Z_TYPE_INFO(gen_execute_data->This) = call_info;
+               gen_execute_data->prev_execute_data = NULL;
+
+               call_info = EX_CALL_INFO();
+               EG(current_execute_data) = EX(prev_execute_data);
+               if (EXPECTED(!(call_info & (ZEND_CALL_TOP|ZEND_CALL_ALLOCATED)))) {
+                       EG(vm_stack_top) = (zval*)execute_data;
+                       execute_data = EX(prev_execute_data);
+                       LOAD_NEXT_OPLINE();
+                       ZEND_VM_LEAVE();
+               } else if (EXPECTED(!(call_info & ZEND_CALL_TOP))) {
+                       zend_execute_data *old_execute_data = execute_data;
+                       execute_data = EX(prev_execute_data);
+                       zend_vm_stack_free_call_frame_ex(call_info, old_execute_data);
+                       LOAD_NEXT_OPLINE();
+                       ZEND_VM_LEAVE();
+               } else {
+                       ZEND_VM_RETURN();
+               }
+       } else {
+               ZEND_VM_DISPATCH_TO_HELPER(zend_leave_helper);
+       }
+}
+
 ZEND_VM_HANDLER(161, ZEND_GENERATOR_RETURN, CONST|TMP|VAR|CV, ANY)
 {
        USE_OPLINE
index c9274bd64f0daf76567982455293338616db0d02..9eaff4624dd4b762e8680af9af88c27196d4e77d 100644 (file)
@@ -744,27 +744,16 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_U
        EX(call) = call->prev_execute_data;
 
        if (EXPECTED(fbc->type == ZEND_USER_FUNCTION)) {
-               if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_GENERATOR) != 0)) {
-                       if (EXPECTED(0)) {
-                               ret = EX_VAR(opline->result.var);
-                               zend_generator_create_zval(call, &fbc->op_array, ret);
-                       } else {
-                               zend_vm_stack_free_args(call);
-                       }
-
-                       zend_vm_stack_free_call_frame(call);
-               } else {
-                       ret = NULL;
-                       if (0) {
-                               ret = EX_VAR(opline->result.var);
-                               ZVAL_NULL(ret);
-                       }
+               ret = NULL;
+               if (0) {
+                       ret = EX_VAR(opline->result.var);
+                       ZVAL_NULL(ret);
+               }
 
-                       call->prev_execute_data = execute_data;
-                       i_init_func_execute_data(call, &fbc->op_array, ret, 0);
+               call->prev_execute_data = execute_data;
+               i_init_func_execute_data(call, &fbc->op_array, ret, 0);
 
-                       ZEND_VM_ENTER();
-               }
+               ZEND_VM_ENTER();
        } else {
                zval retval;
                ZEND_ASSERT(fbc->type == ZEND_INTERNAL_FUNCTION);
@@ -834,27 +823,16 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_U
        EX(call) = call->prev_execute_data;
 
        if (EXPECTED(fbc->type == ZEND_USER_FUNCTION)) {
-               if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_GENERATOR) != 0)) {
-                       if (EXPECTED(1)) {
-                               ret = EX_VAR(opline->result.var);
-                               zend_generator_create_zval(call, &fbc->op_array, ret);
-                       } else {
-                               zend_vm_stack_free_args(call);
-                       }
-
-                       zend_vm_stack_free_call_frame(call);
-               } else {
-                       ret = NULL;
-                       if (1) {
-                               ret = EX_VAR(opline->result.var);
-                               ZVAL_NULL(ret);
-                       }
+               ret = NULL;
+               if (1) {
+                       ret = EX_VAR(opline->result.var);
+                       ZVAL_NULL(ret);
+               }
 
-                       call->prev_execute_data = execute_data;
-                       i_init_func_execute_data(call, &fbc->op_array, ret, 0);
+               call->prev_execute_data = execute_data;
+               i_init_func_execute_data(call, &fbc->op_array, ret, 0);
 
-                       ZEND_VM_ENTER();
-               }
+               ZEND_VM_ENTER();
        } else {
                zval retval;
                ZEND_ASSERT(fbc->type == ZEND_INTERNAL_FUNCTION);
@@ -942,32 +920,20 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_SPEC_RETVAL_UNUSED_HA
        LOAD_OPLINE();
 
        if (EXPECTED(fbc->type == ZEND_USER_FUNCTION)) {
-               if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_GENERATOR) != 0)) {
-                       if (EXPECTED(0)) {
-                               ret = EX_VAR(opline->result.var);
-                               zend_generator_create_zval(call, &fbc->op_array, ret);
-                       } else {
-                               if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_CLOSURE)) {
-                                       OBJ_RELEASE((zend_object*)fbc->op_array.prototype);
-                               }
-                               zend_vm_stack_free_args(call);
-                       }
-               } else {
-                       ret = NULL;
-                       if (0) {
-                               ret = EX_VAR(opline->result.var);
-                               ZVAL_NULL(ret);
-                       }
+               ret = NULL;
+               if (0) {
+                       ret = EX_VAR(opline->result.var);
+                       ZVAL_NULL(ret);
+               }
 
-                       call->prev_execute_data = execute_data;
-                       i_init_func_execute_data(call, &fbc->op_array, ret, 1);
+               call->prev_execute_data = execute_data;
+               i_init_func_execute_data(call, &fbc->op_array, ret, 1);
 
-                       if (EXPECTED(zend_execute_ex == execute_ex)) {
-                               ZEND_VM_ENTER();
-                       } else {
-                               ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
-                               zend_execute_ex(call);
-                       }
+               if (EXPECTED(zend_execute_ex == execute_ex)) {
+                       ZEND_VM_ENTER();
+               } else {
+                       ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
+                       zend_execute_ex(call);
                }
        } else if (EXPECTED(fbc->type < ZEND_USER_FUNCTION)) {
                zval retval;
@@ -1083,32 +1049,20 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_SPEC_RETVAL_USED_HAND
        LOAD_OPLINE();
 
        if (EXPECTED(fbc->type == ZEND_USER_FUNCTION)) {
-               if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_GENERATOR) != 0)) {
-                       if (EXPECTED(1)) {
-                               ret = EX_VAR(opline->result.var);
-                               zend_generator_create_zval(call, &fbc->op_array, ret);
-                       } else {
-                               if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_CLOSURE)) {
-                                       OBJ_RELEASE((zend_object*)fbc->op_array.prototype);
-                               }
-                               zend_vm_stack_free_args(call);
-                       }
-               } else {
-                       ret = NULL;
-                       if (1) {
-                               ret = EX_VAR(opline->result.var);
-                               ZVAL_NULL(ret);
-                       }
+               ret = NULL;
+               if (1) {
+                       ret = EX_VAR(opline->result.var);
+                       ZVAL_NULL(ret);
+               }
 
-                       call->prev_execute_data = execute_data;
-                       i_init_func_execute_data(call, &fbc->op_array, ret, 1);
+               call->prev_execute_data = execute_data;
+               i_init_func_execute_data(call, &fbc->op_array, ret, 1);
 
-                       if (EXPECTED(zend_execute_ex == execute_ex)) {
-                               ZEND_VM_ENTER();
-                       } else {
-                               ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
-                               zend_execute_ex(call);
-                       }
+               if (EXPECTED(zend_execute_ex == execute_ex)) {
+                       ZEND_VM_ENTER();
+               } else {
+                       ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
+                       zend_execute_ex(call);
                }
        } else if (EXPECTED(fbc->type < ZEND_USER_FUNCTION)) {
                zval retval;
@@ -1195,6 +1149,72 @@ fcall_end:
        ZEND_VM_CONTINUE();
 }
 
+static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GENERATOR_CREATE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+       zval *return_value = EX(return_value);
+
+       if (EXPECTED(return_value)) {
+               USE_OPLINE
+               zend_generator *generator;
+               zend_execute_data *gen_execute_data;
+               uint32_t num_args, used_stack, call_info;
+
+               object_init_ex(return_value, zend_ce_generator);
+
+               /*
+                * Normally the execute_data is allocated on the VM stack (because it does
+                * not actually do any allocation and thus is faster). For generators
+                * though this behavior would be suboptimal, because the (rather large)
+                * structure would have to be copied back and forth every time execution is
+                * suspended or resumed. That's why for generators the execution context
+                * is allocated on heap.
+                */
+               num_args = EX_NUM_ARGS();
+               used_stack = (ZEND_CALL_FRAME_SLOT + num_args + EX(func)->op_array.last_var + EX(func)->op_array.T - MIN(EX(func)->op_array.num_args, num_args)) * sizeof(zval);
+               gen_execute_data = (zend_execute_data*)emalloc(used_stack);
+               memcpy(gen_execute_data, execute_data, used_stack);
+
+               /* Save execution context in generator object. */
+               generator = (zend_generator *) Z_OBJ_P(EX(return_value));
+               generator->execute_data = gen_execute_data;
+               generator->frozen_call_stack = NULL;
+               memset(&generator->execute_fake, 0, sizeof(zend_execute_data));
+               ZVAL_OBJ(&generator->execute_fake.This, (zend_object *) generator);
+
+               gen_execute_data->opline = opline + 1;
+               /* EX(return_value) keeps pointer to zend_object (not a real zval) */
+               gen_execute_data->return_value = (zval*)generator;
+               call_info = Z_TYPE_INFO(EX(This));
+               if ((call_info & Z_TYPE_MASK) == IS_OBJECT
+                && !(call_info & ((ZEND_CALL_CLOSURE|ZEND_CALL_RELEASE_THIS) << ZEND_CALL_INFO_SHIFT))) {
+                       ZEND_ADD_CALL_FLAG_EX(call_info, ZEND_CALL_RELEASE_THIS);
+                       Z_ADDREF(gen_execute_data->This);
+               }
+               ZEND_ADD_CALL_FLAG_EX(call_info, (ZEND_CALL_TOP_FUNCTION | ZEND_CALL_ALLOCATED));
+               Z_TYPE_INFO(gen_execute_data->This) = call_info;
+               gen_execute_data->prev_execute_data = NULL;
+
+               call_info = EX_CALL_INFO();
+               EG(current_execute_data) = EX(prev_execute_data);
+               if (EXPECTED(!(call_info & (ZEND_CALL_TOP|ZEND_CALL_ALLOCATED)))) {
+                       EG(vm_stack_top) = (zval*)execute_data;
+                       execute_data = EX(prev_execute_data);
+                       LOAD_NEXT_OPLINE();
+                       ZEND_VM_LEAVE();
+               } else if (EXPECTED(!(call_info & ZEND_CALL_TOP))) {
+                       zend_execute_data *old_execute_data = execute_data;
+                       execute_data = EX(prev_execute_data);
+                       zend_vm_stack_free_call_frame_ex(call_info, old_execute_data);
+                       LOAD_NEXT_OPLINE();
+                       ZEND_VM_LEAVE();
+               } else {
+                       ZEND_VM_RETURN();
+               }
+       } else {
+               ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
+       }
+}
+
 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_UNPACK_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -56848,6 +56868,7 @@ void zend_init_opcodes_handlers(void)
                ZEND_ECHO_SPEC_TMPVAR_HANDLER,
                ZEND_NULL_HANDLER,
                ZEND_ECHO_SPEC_CV_HANDLER,
+               ZEND_GENERATOR_CREATE_SPEC_HANDLER,
                ZEND_JMP_SPEC_HANDLER,
                ZEND_JMPZ_SPEC_CONST_HANDLER,
                ZEND_JMPZ_SPEC_TMPVAR_HANDLER,
@@ -59881,150 +59902,150 @@ void zend_init_opcodes_handlers(void)
                776 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_RETVAL,
                826 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
                851 | SPEC_RULE_OP1,
-               3845,
                856,
-               857 | SPEC_RULE_OP1,
-               862 | SPEC_RULE_OP1,
-               867 | SPEC_RULE_OP1,
-               872 | SPEC_RULE_OP1,
-               877 | SPEC_RULE_OP1,
-               882 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               3845,
-               3845,
-               3845,
-               907 | SPEC_RULE_OP1,
-               912 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               937 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               962 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               987 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1012,
-               1013 | SPEC_RULE_OP1,
-               1018 | SPEC_RULE_OP2,
-               1023 | SPEC_RULE_RETVAL,
-               1025 | SPEC_RULE_OP2,
-               1030 | SPEC_RULE_OP1,
-               1035,
-               1036 | SPEC_RULE_OP2,
-               1041 | SPEC_RULE_OP1,
-               1046 | SPEC_RULE_OP1 | SPEC_RULE_QUICK_ARG,
-               1056 | SPEC_RULE_OP1,
-               1061 | SPEC_RULE_OP1,
-               1066 | SPEC_RULE_OP2,
-               1071 | SPEC_RULE_OP1,
-               1076 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1101 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1126 | SPEC_RULE_OP1,
-               1131 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1156 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1181 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1206 | SPEC_RULE_OP1,
-               1211 | SPEC_RULE_OP1,
-               1216 | SPEC_RULE_OP1,
-               1221 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1246 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1271 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1296 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1321 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1346 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1371 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1396 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1421 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1446 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1471 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1496 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1521 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1546 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1571 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1596 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1621 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1646 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1671 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1696 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               3845,
-               1721,
+               857,
+               858 | SPEC_RULE_OP1,
+               863 | SPEC_RULE_OP1,
+               868 | SPEC_RULE_OP1,
+               873 | SPEC_RULE_OP1,
+               878 | SPEC_RULE_OP1,
+               883 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               3846,
+               3846,
+               3846,
+               908 | SPEC_RULE_OP1,
+               913 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               938 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               963 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               988 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1013,
+               1014 | SPEC_RULE_OP1,
+               1019 | SPEC_RULE_OP2,
+               1024 | SPEC_RULE_RETVAL,
+               1026 | SPEC_RULE_OP2,
+               1031 | SPEC_RULE_OP1,
+               1036,
+               1037 | SPEC_RULE_OP2,
+               1042 | SPEC_RULE_OP1,
+               1047 | SPEC_RULE_OP1 | SPEC_RULE_QUICK_ARG,
+               1057 | SPEC_RULE_OP1,
+               1062 | SPEC_RULE_OP1,
+               1067 | SPEC_RULE_OP2,
+               1072 | SPEC_RULE_OP1,
+               1077 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1102 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1127 | SPEC_RULE_OP1,
+               1132 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1157 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1182 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1207 | SPEC_RULE_OP1,
+               1212 | SPEC_RULE_OP1,
+               1217 | SPEC_RULE_OP1,
+               1222 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1247 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1272 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1297 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1322 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1347 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1372 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1397 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1422 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1447 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1472 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1497 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1522 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1547 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1572 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1597 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1622 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1647 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1672 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1697 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               3846,
                1722,
                1723,
                1724,
                1725,
-               1726 | SPEC_RULE_OP1,
-               1731 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1756 | SPEC_RULE_OP1,
-               1761 | SPEC_RULE_OP2,
-               1766 | SPEC_RULE_OP1,
-               1771 | SPEC_RULE_OP1,
-               1776 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1801 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1826 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1851 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1876 | SPEC_RULE_OP1 | SPEC_RULE_QUICK_ARG,
-               1886 | SPEC_RULE_OP1,
-               1891 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1916,
-               1917 | SPEC_RULE_OP1,
-               1922 | SPEC_RULE_OP1,
-               1927 | SPEC_RULE_OP1,
-               1932 | SPEC_RULE_OP1,
-               1937 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               1962 | SPEC_RULE_OP1,
-               1967 | SPEC_RULE_OP1,
-               1972 | SPEC_RULE_OP1,
-               1977 | SPEC_RULE_OP2,
-               1982 | SPEC_RULE_RETVAL,
-               1984 | SPEC_RULE_RETVAL,
-               1986 | SPEC_RULE_RETVAL,
-               1988 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               2013 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               2038 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               2063 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               2088 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_OP_DATA,
-               2213,
-               2214 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               2239,
-               2240 | SPEC_RULE_OP2,
-               2245,
-               2246 | SPEC_RULE_OP1,
-               2251 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               2276 | SPEC_RULE_OP2,
-               2281 | SPEC_RULE_OP2,
-               2286,
-               2287 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_OP_DATA,
-               2412 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               2437,
+               1726,
+               1727 | SPEC_RULE_OP1,
+               1732 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1757 | SPEC_RULE_OP1,
+               1762 | SPEC_RULE_OP2,
+               1767 | SPEC_RULE_OP1,
+               1772 | SPEC_RULE_OP1,
+               1777 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1802 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1827 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1852 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1877 | SPEC_RULE_OP1 | SPEC_RULE_QUICK_ARG,
+               1887 | SPEC_RULE_OP1,
+               1892 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1917,
+               1918 | SPEC_RULE_OP1,
+               1923 | SPEC_RULE_OP1,
+               1928 | SPEC_RULE_OP1,
+               1933 | SPEC_RULE_OP1,
+               1938 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               1963 | SPEC_RULE_OP1,
+               1968 | SPEC_RULE_OP1,
+               1973 | SPEC_RULE_OP1,
+               1978 | SPEC_RULE_OP2,
+               1983 | SPEC_RULE_RETVAL,
+               1985 | SPEC_RULE_RETVAL,
+               1987 | SPEC_RULE_RETVAL,
+               1989 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               2014 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               2039 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               2064 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               2089 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_OP_DATA,
+               2214,
+               2215 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               2240,
+               2241 | SPEC_RULE_OP2,
+               2246,
+               2247 | SPEC_RULE_OP1,
+               2252 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               2277 | SPEC_RULE_OP2,
+               2282 | SPEC_RULE_OP2,
+               2287,
+               2288 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_OP_DATA,
+               2413 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
                2438,
                2439,
-               2440 | SPEC_RULE_OP1,
-               2445 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               2470,
+               2440,
+               2441 | SPEC_RULE_OP1,
+               2446 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
                2471,
-               2472 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               2497,
+               2472,
+               2473 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
                2498,
                2499,
-               2500 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               2525 | SPEC_RULE_OP1,
-               2530,
+               2500,
+               2501 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               2526 | SPEC_RULE_OP1,
                2531,
                2532,
                2533,
-               2534 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               2559 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               2584 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               2609 | SPEC_RULE_OP1,
-               2614 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               2639,
-               2640 | SPEC_RULE_OP2,
-               2645 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               2670 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               2695 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               2720 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               2745 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               2770 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               2795 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               2820 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               2845 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               2870 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               2895 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
-               3845
+               2534,
+               2535 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               2560 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               2585 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               2610 | SPEC_RULE_OP1,
+               2615 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               2640,
+               2641 | SPEC_RULE_OP2,
+               2646 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               2671 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               2696 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               2721 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               2746 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               2771 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               2796 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               2821 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               2846 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               2871 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               2896 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
+               3846
        };
        zend_opcode_handlers = labels;
                zend_handlers_count = sizeof(labels) / sizeof(void*);
@@ -60123,7 +60144,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
                                if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
                                        break;
                                }
-                               spec = 2920 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
+                               spec = 2921 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
                                if (op->op1_type > op->op2_type) {
                                        zend_swap_operands(op);
                                }
@@ -60131,7 +60152,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
                                if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
                                        break;
                                }
-                               spec = 2945 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
+                               spec = 2946 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
                                if (op->op1_type > op->op2_type) {
                                        zend_swap_operands(op);
                                }
@@ -60139,7 +60160,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
                                if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
                                        break;
                                }
-                               spec = 2970 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
+                               spec = 2971 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
                                if (op->op1_type > op->op2_type) {
                                        zend_swap_operands(op);
                                }
@@ -60150,17 +60171,17 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
                                if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
                                        break;
                                }
-                               spec = 2995 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
+                               spec = 2996 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
                        } else if ((op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG)) {
                                if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
                                        break;
                                }
-                               spec = 3020 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
+                               spec = 3021 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
                        } else if ((op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE)) {
                                if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
                                        break;
                                }
-                               spec = 3045 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
+                               spec = 3046 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
                        }
                        break;
                case ZEND_MUL:
@@ -60168,7 +60189,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
                                if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
                                        break;
                                }
-                               spec = 3070 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
+                               spec = 3071 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
                                if (op->op1_type > op->op2_type) {
                                        zend_swap_operands(op);
                                }
@@ -60176,7 +60197,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
                                if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
                                        break;
                                }
-                               spec = 3095 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
+                               spec = 3096 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
                                if (op->op1_type > op->op2_type) {
                                        zend_swap_operands(op);
                                }
@@ -60184,7 +60205,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
                                if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
                                        break;
                                }
-                               spec = 3120 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
+                               spec = 3121 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
                                if (op->op1_type > op->op2_type) {
                                        zend_swap_operands(op);
                                }
@@ -60195,7 +60216,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
                                if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
                                        break;
                                }
-                               spec = 3145 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
+                               spec = 3146 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
                                if (op->op1_type > op->op2_type) {
                                        zend_swap_operands(op);
                                }
@@ -60203,7 +60224,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
                                if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
                                        break;
                                }
-                               spec = 3220 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
+                               spec = 3221 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
                                if (op->op1_type > op->op2_type) {
                                        zend_swap_operands(op);
                                }
@@ -60214,7 +60235,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
                                if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
                                        break;
                                }
-                               spec = 3295 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
+                               spec = 3296 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
                                if (op->op1_type > op->op2_type) {
                                        zend_swap_operands(op);
                                }
@@ -60222,7 +60243,7 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
                                if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
                                        break;
                                }
-                               spec = 3370 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
+                               spec = 3371 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
                                if (op->op1_type > op->op2_type) {
                                        zend_swap_operands(op);
                                }
@@ -60233,12 +60254,12 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
                                if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
                                        break;
                                }
-                               spec = 3445 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
+                               spec = 3446 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
                        } else if ((op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE)) {
                                if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
                                        break;
                                }
-                               spec = 3520 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
+                               spec = 3521 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
                        }
                        break;
                case ZEND_IS_SMALLER_OR_EQUAL:
@@ -60246,55 +60267,55 @@ ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint
                                if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
                                        break;
                                }
-                               spec = 3595 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
+                               spec = 3596 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
                        } else if ((op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE)) {
                                if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
                                        break;
                                }
-                               spec = 3670 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
+                               spec = 3671 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
                        }
                        break;
                case ZEND_QM_ASSIGN:
                        if ((op1_info == MAY_BE_DOUBLE)) {
-                               spec = 3835 | SPEC_RULE_OP1;
+                               spec = 3836 | SPEC_RULE_OP1;
                        } else if ((!(op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE))))) {
-                               spec = 3840 | SPEC_RULE_OP1;
+                               spec = 3841 | SPEC_RULE_OP1;
                        }
                        break;
                case ZEND_PRE_INC:
                        if ((res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG)) {
-                               spec = 3745 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
+                               spec = 3746 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
                        } else if ((op1_info == MAY_BE_LONG)) {
-                               spec = 3755 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
+                               spec = 3756 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
                        } else if ((op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE))) {
-                               spec = 3765 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
+                               spec = 3766 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
                        }
                        break;
                case ZEND_PRE_DEC:
                        if ((res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG)) {
-                               spec = 3775 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
+                               spec = 3776 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
                        } else if ((op1_info == MAY_BE_LONG)) {
-                               spec = 3785 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
+                               spec = 3786 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
                        } else if ((op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE))) {
-                               spec = 3795 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
+                               spec = 3796 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
                        }
                        break;
                case ZEND_POST_INC:
                        if ((res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG)) {
-                               spec = 3805 | SPEC_RULE_OP1;
+                               spec = 3806 | SPEC_RULE_OP1;
                        } else if ((op1_info == MAY_BE_LONG)) {
-                               spec = 3810 | SPEC_RULE_OP1;
+                               spec = 3811 | SPEC_RULE_OP1;
                        } else if ((op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE))) {
-                               spec = 3815 | SPEC_RULE_OP1;
+                               spec = 3816 | SPEC_RULE_OP1;
                        }
                        break;
                case ZEND_POST_DEC:
                        if ((res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG)) {
-                               spec = 3820 | SPEC_RULE_OP1;
+                               spec = 3821 | SPEC_RULE_OP1;
                        } else if ((op1_info == MAY_BE_LONG)) {
-                               spec = 3825 | SPEC_RULE_OP1;
+                               spec = 3826 | SPEC_RULE_OP1;
                        } else if ((op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE))) {
-                               spec = 3830 | SPEC_RULE_OP1;
+                               spec = 3831 | SPEC_RULE_OP1;
                        }
                        break;
                default:
index d4c76ad2657a109dceea069d0c7fa0abcdfa64d5..3edde60853a9348472b6eff5e0eef4c23a871f27 100644 (file)
@@ -63,7 +63,7 @@ static const char *zend_vm_opcodes_names[184] = {
        "ZEND_ASSIGN",
        "ZEND_ASSIGN_REF",
        "ZEND_ECHO",
-       NULL,
+       "ZEND_GENERATOR_CREATE",
        "ZEND_JMP",
        "ZEND_JMPZ",
        "ZEND_JMPNZ",
index 90f2ea4e51a27bd933aa9969b56136b313ac87d7..00aa20ea37bfdcb0cfb9bdf09cb84f15008d2838 100644 (file)
@@ -111,6 +111,7 @@ END_EXTERN_C()
 #define ZEND_ASSIGN                           38
 #define ZEND_ASSIGN_REF                       39
 #define ZEND_ECHO                             40
+#define ZEND_GENERATOR_CREATE                 41
 #define ZEND_JMP                              42
 #define ZEND_JMPZ                             43
 #define ZEND_JMPNZ                            44
index 69a77f3b717042ddbd02af30efa3945558f124ec..ee0336392fdb9d413a96a9a4b74c58aea03305ef 100644 (file)
@@ -57,6 +57,7 @@ static void zend_mark_reachable(zend_op *opcodes, zend_basic_block *blocks, zend
                                        //TODO: support for stackless CFG???
                                        if (0/*stackless*/) {
                                                if (opcode == ZEND_INCLUDE_OR_EVAL ||
+                                                   opcode == ZEND_GENERATOR_CREATE ||
                                                    opcode == ZEND_YIELD ||
                                                    opcode == ZEND_YIELD_FROM ||
                                                    opcode == ZEND_DO_FCALL ||
@@ -268,6 +269,7 @@ int zend_build_cfg(zend_arena **arena, const zend_op_array *op_array, uint32_t b
                                break;
                        case ZEND_INCLUDE_OR_EVAL:
                                flags |= ZEND_FUNC_INDIRECT_VAR_ACCESS;
+                       case ZEND_GENERATOR_CREATE:
                        case ZEND_YIELD:
                        case ZEND_YIELD_FROM:
                                if (build_flags & ZEND_CFG_STACKLESS) {