]> granicus.if.org Git - php/commitdiff
Move more stuff to file_context
authorNikita Popov <nikic@php.net>
Mon, 20 Apr 2015 18:16:58 +0000 (20:16 +0200)
committerNikita Popov <nikic@php.net>
Tue, 21 Apr 2015 15:39:07 +0000 (17:39 +0200)
Introduce helper macro FC(x) for CG(file_context).x.

end_compilation() now handled by file_context_end().

While at it, dropped zval wrapper for ticcks.

Zend/tests/bug69388.phpt [new file with mode: 0644]
Zend/tests/bug69388_2.phpt [new file with mode: 0644]
Zend/zend_compile.c
Zend/zend_compile.h
Zend/zend_globals.h
Zend/zend_language_scanner.c
Zend/zend_language_scanner.l

diff --git a/Zend/tests/bug69388.phpt b/Zend/tests/bug69388.phpt
new file mode 100644 (file)
index 0000000..ce39eb0
--- /dev/null
@@ -0,0 +1,19 @@
+--TEST--
+Bug #69388: Use after free on recursive calls to PHP compiler
+--FILE--
+<?php
+
+error_reporting(E_ALL | E_STRICT);
+function handle_error($code, $message, $file, $line, $context) {
+       if (!function_exists("bla")) {
+               eval('function bla($s) {echo "$s\n";}');
+       }
+       bla($message);
+}
+
+set_error_handler('handle_error');
+eval('namespace {use Exception;}');
+
+?>
+--EXPECT--
+The use statement with non-compound name 'Exception' has no effect
diff --git a/Zend/tests/bug69388_2.phpt b/Zend/tests/bug69388_2.phpt
new file mode 100644 (file)
index 0000000..d597365
--- /dev/null
@@ -0,0 +1,16 @@
+--TEST--
+Bug #69388 - Variation
+--FILE--
+<?php
+error_reporting(E_ALL | E_STRICT);
+function handle_error($code, $message, $file, $line, $context) {
+    eval('namespace Foo;');
+    echo "$message\n";
+}
+
+set_error_handler('handle_error');
+eval('namespace {use Exception;}');
+
+?>
+--EXPECT--
+The use statement with non-compound name 'Exception' has no effect
index 75349343a294097ef5b028c1ac9702b766d16e7f..aeba6a94029f3065e5a05f82cb1519b04230531f 100644 (file)
@@ -50,6 +50,8 @@
                } \
        } while (0)
 
+#define FC(member) (CG(file_context).member)
+
 static inline void zend_alloc_cache_slot(uint32_t literal) {
        zend_op_array *op_array = CG(active_op_array);
        Z_CACHE_SLOT(op_array->literals[literal]) = op_array->cache_size;
@@ -219,12 +221,6 @@ static zend_always_inline zend_uchar zend_lookup_scalar_typehint_by_name(const z
 /* }}} */
 
 
-static void init_compiler_declarables(void) /* {{{ */
-{
-       ZVAL_LONG(&CG(declarables).ticks, 0);
-}
-/* }}} */
-
 void zend_oparray_context_begin(zend_oparray_context *prev_context) /* {{{ */
 {
        *prev_context = CG(context);
@@ -252,23 +248,32 @@ void zend_oparray_context_end(zend_oparray_context *prev_context) /* {{{ */
 
 static void zend_reset_import_tables(void) /* {{{ */
 {
-       zend_file_context *ctx = &CG(file_context);
-       if (ctx->imports) {
-               zend_hash_destroy(ctx->imports);
-               efree(ctx->imports);
-               ctx->imports = NULL;
+       if (FC(imports)) {
+               zend_hash_destroy(FC(imports));
+               efree(FC(imports));
+               FC(imports) = NULL;
        }
 
-       if (ctx->imports_function) {
-               zend_hash_destroy(ctx->imports_function);
-               efree(ctx->imports_function);
-               ctx->imports_function = NULL;
+       if (FC(imports_function)) {
+               zend_hash_destroy(FC(imports_function));
+               efree(FC(imports_function));
+               FC(imports_function) = NULL;
        }
 
-       if (ctx->imports_const) {
-               zend_hash_destroy(ctx->imports_const);
-               efree(ctx->imports_const);
-               ctx->imports_const = NULL;
+       if (FC(imports_const)) {
+               zend_hash_destroy(FC(imports_const));
+               efree(FC(imports_const));
+               FC(imports_const) = NULL;
+       }
+}
+/* }}} */
+
+static void zend_end_namespace(void) /* {{{ */ {
+       FC(in_namespace) = 0;
+       zend_reset_import_tables();
+       if (FC(current_namespace)) {
+               zend_string_release(FC(current_namespace));
+               FC(current_namespace) = NULL;
        }
 }
 /* }}} */
@@ -276,15 +281,19 @@ static void zend_reset_import_tables(void) /* {{{ */
 void zend_file_context_begin(zend_file_context *prev_context) /* {{{ */
 {
        *prev_context = CG(file_context);
-       CG(file_context).imports = NULL;
-       CG(file_context).imports_function = NULL;
-       CG(file_context).imports_const = NULL;
+       FC(imports) = NULL;
+       FC(imports_function) = NULL;
+       FC(imports_const) = NULL;
+       FC(current_namespace) = NULL;
+       FC(in_namespace) = 0;
+       FC(has_bracketed_namespaces) = 0;
+       FC(declarables).ticks = 0;
 }
 /* }}} */
 
 void zend_file_context_end(zend_file_context *prev_context) /* {{{ */
 {
-       zend_reset_import_tables();
+       zend_end_namespace();
        CG(file_context) = *prev_context;
 }
 /* }}} */
@@ -296,11 +305,7 @@ void zend_init_compiler_data_structures(void) /* {{{ */
        CG(active_class_entry) = NULL;
        CG(in_compilation) = 0;
        CG(start_lineno) = 0;
-       CG(current_namespace) = NULL;
-       CG(in_namespace) = 0;
-       CG(has_bracketed_namespaces) = 0;
        zend_hash_init(&CG(const_filenames), 8, NULL, NULL, 0);
-       init_compiler_declarables();
 
        CG(encoding_declared) = 0;
 }
@@ -714,8 +719,8 @@ zend_string *zend_concat_names(char *name1, size_t name1_len, char *name2, size_
 }
 
 zend_string *zend_prefix_with_ns(zend_string *name) {
-       if (CG(current_namespace)) {
-               zend_string *ns = CG(current_namespace);
+       if (FC(current_namespace)) {
+               zend_string *ns = FC(current_namespace);
                return zend_concat_names(ns->val, ns->len, name->val, name->len);
        } else {
                return zend_string_copy(name);
@@ -777,10 +782,10 @@ zend_string *zend_resolve_non_class_name(
                *is_fully_qualified = 1;
        }
 
-       if (compound && CG(file_context).imports) {
+       if (compound && FC(imports)) {
                /* If the first part of a qualified name is an alias, substitute it. */
                size_t len = compound - name->val;
-               zend_string *import_name = zend_hash_find_ptr_lc(CG(file_context).imports, name->val, len);
+               zend_string *import_name = zend_hash_find_ptr_lc(FC(imports), name->val, len);
 
                if (import_name) {
                        return zend_concat_names(
@@ -795,13 +800,13 @@ zend_string *zend_resolve_non_class_name(
 zend_string *zend_resolve_function_name(zend_string *name, uint32_t type, zend_bool *is_fully_qualified) /* {{{ */
 {
        return zend_resolve_non_class_name(
-               name, type, is_fully_qualified, 0, CG(file_context).imports_function);
+               name, type, is_fully_qualified, 0, FC(imports_function));
 }
 /* }}} */
 
 zend_string *zend_resolve_const_name(zend_string *name, uint32_t type, zend_bool *is_fully_qualified) /* {{{ */ {
        return zend_resolve_non_class_name(
-               name, type, is_fully_qualified, 1, CG(file_context).imports_const);
+               name, type, is_fully_qualified, 1, FC(imports_const));
 }
 /* }}} */
 
@@ -827,13 +832,13 @@ zend_string *zend_resolve_class_name(zend_string *name, uint32_t type) /* {{{ */
                return name;
        }
 
-       if (CG(file_context).imports) {
+       if (FC(imports)) {
                compound = memchr(name->val, '\\', name->len);
                if (compound) {
                        /* If the first part of a qualified name is an alias, substitute it. */
                        size_t len = compound - name->val;
                        zend_string *import_name =
-                               zend_hash_find_ptr_lc(CG(file_context).imports, name->val, len);
+                               zend_hash_find_ptr_lc(FC(imports), name->val, len);
 
                        if (import_name) {
                                return zend_concat_names(
@@ -842,7 +847,7 @@ zend_string *zend_resolve_class_name(zend_string *name, uint32_t type) /* {{{ */
                } else {
                        /* If an unqualified name is an alias, replace it. */
                        zend_string *import_name
-                               = zend_hash_find_ptr_lc(CG(file_context).imports, name->val, name->len);
+                               = zend_hash_find_ptr_lc(FC(imports), name->val, name->len);
 
                        if (import_name) {
                                return zend_string_copy(import_name);
@@ -1647,29 +1652,12 @@ zend_ast *zend_ast_append_doc_comment(zend_ast *list) /* {{{ */
 
 void zend_verify_namespace(void) /* {{{ */
 {
-       if (CG(has_bracketed_namespaces) && !CG(in_namespace)) {
+       if (FC(has_bracketed_namespaces) && !FC(in_namespace)) {
                zend_error_noreturn(E_COMPILE_ERROR, "No code may exist outside of namespace {}");
        }
 }
 /* }}} */
 
-static void zend_end_namespace(void) /* {{{ */ {
-       CG(in_namespace) = 0;
-       zend_reset_import_tables();
-       if (CG(current_namespace)) {
-               zend_string_release(CG(current_namespace));
-               CG(current_namespace) = NULL;
-       }
-}
-/* }}} */
-
-void zend_do_end_compilation(void) /* {{{ */
-{
-       CG(has_bracketed_namespaces) = 0;
-       zend_end_namespace();
-}
-/* }}} */
-
 /* {{{ zend_dirname
    Returns directory name component of path */
 ZEND_API size_t zend_dirname(char *path, size_t len)
@@ -1863,7 +1851,7 @@ static void zend_emit_tick(void) /* {{{ */
        opline->opcode = ZEND_TICKS;
        SET_UNUSED(opline->op1);
        SET_UNUSED(opline->op2);
-       opline->extended_value = Z_LVAL(CG(declarables).ticks);
+       opline->extended_value = FC(declarables).ticks;
 }
 /* }}} */
 
@@ -2774,7 +2762,7 @@ zend_bool zend_compile_function_name(znode *name_node, zend_ast *name_ast) /* {{
        ZVAL_STR(&name_node->u.constant, zend_resolve_function_name(
                orig_name, name_ast->attr, &is_fully_qualified));
 
-       return !is_fully_qualified && CG(current_namespace);
+       return !is_fully_qualified && FC(current_namespace);
 }
 /* }}} */
 
@@ -4054,7 +4042,7 @@ void zend_compile_declare(zend_ast *ast) /* {{{ */
 {
        zend_ast_list *declares = zend_ast_get_list(ast->child[0]);
        zend_ast *stmt_ast = ast->child[1];
-       zend_declarables orig_declarables = CG(declarables);
+       zend_declarables orig_declarables = FC(declarables);
        uint32_t i;
 
        for (i = 0; i < declares->children; ++i) {
@@ -4066,8 +4054,7 @@ void zend_compile_declare(zend_ast *ast) /* {{{ */
                if (zend_string_equals_literal_ci(name, "ticks")) {
                        zval value_zv;
                        zend_const_expr_to_zval(&value_zv, value_ast);
-                       convert_to_long(&value_zv);
-                       ZVAL_COPY_VALUE(&CG(declarables).ticks, &value_zv);
+                       FC(declarables).ticks = zval_get_long(&value_zv);
                        zval_dtor(&value_zv);
                } else if (zend_string_equals_literal_ci(name, "encoding")) {
 
@@ -4106,7 +4093,7 @@ void zend_compile_declare(zend_ast *ast) /* {{{ */
        if (stmt_ast) {
                zend_compile_stmt(stmt_ast);
 
-               CG(declarables) = orig_declarables;
+               FC(declarables) = orig_declarables;
        }
 }
 /* }}} */
@@ -4513,8 +4500,8 @@ static void zend_begin_func_decl(znode *result, zend_op_array *op_array, zend_as
 
        lcname = zend_string_tolower(name);
 
-       if (CG(file_context).imports_function) {
-               zend_string *import_name = zend_hash_find_ptr(CG(file_context).imports_function, lcname);
+       if (FC(imports_function)) {
+               zend_string *import_name = zend_hash_find_ptr(FC(imports_function), lcname);
                if (import_name && !zend_string_equals_ci(lcname, import_name)) {
                        zend_error_noreturn(E_COMPILE_ERROR, "Cannot declare function %s "
                                "because the name is already in use", name->val);
@@ -4563,8 +4550,6 @@ void zend_compile_func_decl(znode *result, zend_ast *ast) /* {{{ */
        zend_op_array *op_array = zend_arena_alloc(&CG(arena), sizeof(zend_op_array));
        zend_oparray_context orig_oparray_context;
 
-       // TODO.AST interactive (not just here - also bpc etc!)
-
        init_op_array(op_array, ZEND_USER_FUNCTION, INITIAL_OP_ARRAY_SIZE);
 
        op_array->fn_flags |= (orig_op_array->fn_flags & ZEND_ACC_STRICT_TYPES);
@@ -4821,7 +4806,7 @@ void zend_compile_use_trait(zend_ast *ast) /* {{{ */
 
                opline = get_next_op(CG(active_op_array));
                opline->opcode = ZEND_ADD_TRAIT;
-               SET_NODE(opline->op1, &CG(implementing_class));
+               SET_NODE(opline->op1, &FC(implementing_class));
                opline->op2_type = IS_CONST;
                opline->op2.constant = zend_add_class_name_literal(CG(active_op_array),
                        zend_resolve_class_name_ast(trait_ast));
@@ -4894,11 +4879,11 @@ void zend_compile_class_decl(zend_ast *ast) /* {{{ */
 
        lcname = zend_string_tolower(name);
 
-       if (CG(file_context).imports) {
-               import_name = zend_hash_find_ptr(CG(file_context).imports, lcname);
+       if (FC(imports)) {
+               import_name = zend_hash_find_ptr(FC(imports), lcname);
        }
 
-       if (CG(current_namespace)) {
+       if (FC(current_namespace)) {
                name = zend_prefix_with_ns(name);
 
                zend_string_release(lcname);
@@ -4941,7 +4926,7 @@ void zend_compile_class_decl(zend_ast *ast) /* {{{ */
        zend_make_var_result(&declare_node, opline);
 
        // TODO.AST drop this
-       GET_NODE(&CG(implementing_class), opline->result);
+       GET_NODE(&FC(implementing_class), opline->result);
 
        opline->op2_type = IS_CONST;
        LITERAL_STR(opline->op2, lcname);
@@ -5046,26 +5031,25 @@ void zend_compile_class_decl(zend_ast *ast) /* {{{ */
 
 static HashTable *zend_get_import_ht(uint32_t type) /* {{{ */
 {
-       zend_file_context *ctx = &CG(file_context);
        switch (type) {
                case T_CLASS:
-                       if (!ctx->imports) {
-                               ctx->imports = emalloc(sizeof(HashTable));
-                               zend_hash_init(ctx->imports, 8, NULL, str_dtor, 0);
+                       if (!FC(imports)) {
+                               FC(imports) = emalloc(sizeof(HashTable));
+                               zend_hash_init(FC(imports), 8, NULL, str_dtor, 0);
                        }
-                       return ctx->imports;
+                       return FC(imports);
                case T_FUNCTION:
-                       if (!ctx->imports_function) {
-                               ctx->imports_function = emalloc(sizeof(HashTable));
-                               zend_hash_init(ctx->imports_function, 8, NULL, str_dtor, 0);
+                       if (!FC(imports_function)) {
+                               FC(imports_function) = emalloc(sizeof(HashTable));
+                               zend_hash_init(FC(imports_function), 8, NULL, str_dtor, 0);
                        }
-                       return ctx->imports_function;
+                       return FC(imports_function);
                case T_CONST:
-                       if (!ctx->imports_const) {
-                               ctx->imports_const = emalloc(sizeof(HashTable));
-                               zend_hash_init(ctx->imports_const, 8, NULL, str_dtor, 0);
+                       if (!FC(imports_const)) {
+                               FC(imports_const) = emalloc(sizeof(HashTable));
+                               zend_hash_init(FC(imports_const), 8, NULL, str_dtor, 0);
                        }
-                       return ctx->imports_const;
+                       return FC(imports_const);
                EMPTY_SWITCH_DEFAULT_CASE()
        }
 
@@ -5104,7 +5088,7 @@ void zend_compile_use(zend_ast *ast) /* {{{ */
 {
        zend_ast_list *list = zend_ast_get_list(ast);
        uint32_t i;
-       zend_string *current_ns = CG(current_namespace);
+       zend_string *current_ns = FC(current_namespace);
        uint32_t type = ast->attr;
        HashTable *current_import = zend_get_import_ht(type);
        zend_bool case_sensitive = type == T_CONST;
@@ -5252,8 +5236,8 @@ void zend_compile_const_decl(zend_ast *ast) /* {{{ */
                name = zend_prefix_with_ns(name);
                name = zend_new_interned_string(name);
 
-               if (CG(file_context).imports_const
-                       && (import_name = zend_hash_find_ptr(CG(file_context).imports_const, name))
+               if (FC(imports_const)
+                       && (import_name = zend_hash_find_ptr(FC(imports_const), name))
                ) {
                        if (!zend_string_equals(import_name, name)) {
                                zend_error_noreturn(E_COMPILE_ERROR, "Cannot declare const %s because "
@@ -5279,8 +5263,8 @@ void zend_compile_namespace(zend_ast *ast) /* {{{ */
        zend_bool with_bracket = stmt_ast != NULL;
 
        /* handle mixed syntax declaration or nested namespaces */
-       if (!CG(has_bracketed_namespaces)) {
-               if (CG(current_namespace)) {
+       if (!FC(has_bracketed_namespaces)) {
+               if (FC(current_namespace)) {
                        /* previous namespace declarations were unbracketed */
                        if (with_bracket) {
                                zend_error_noreturn(E_COMPILE_ERROR, "Cannot mix bracketed namespace declarations "
@@ -5292,13 +5276,13 @@ void zend_compile_namespace(zend_ast *ast) /* {{{ */
                if (!with_bracket) {
                        zend_error_noreturn(E_COMPILE_ERROR, "Cannot mix bracketed namespace declarations "
                                "with unbracketed namespace declarations");
-               } else if (CG(current_namespace) || CG(in_namespace)) {
+               } else if (FC(current_namespace) || FC(in_namespace)) {
                        zend_error_noreturn(E_COMPILE_ERROR, "Namespace declarations cannot be nested");
                }
        }
 
-       if (((!with_bracket && !CG(current_namespace))
-                || (with_bracket && !CG(has_bracketed_namespaces))) && CG(active_op_array)->last > 0
+       if (((!with_bracket && !FC(current_namespace))
+                || (with_bracket && !FC(has_bracketed_namespaces))) && CG(active_op_array)->last > 0
        ) {
                /* ignore ZEND_EXT_STMT and ZEND_TICKS */
                uint32_t num = CG(active_op_array)->last;
@@ -5313,8 +5297,8 @@ void zend_compile_namespace(zend_ast *ast) /* {{{ */
                }
        }
 
-       if (CG(current_namespace)) {
-               zend_string_release(CG(current_namespace));
+       if (FC(current_namespace)) {
+               zend_string_release(FC(current_namespace));
        }
 
        if (name_ast) {
@@ -5324,16 +5308,16 @@ void zend_compile_namespace(zend_ast *ast) /* {{{ */
                        zend_error_noreturn(E_COMPILE_ERROR, "Cannot use '%s' as namespace name", name->val);
                }
 
-               CG(current_namespace) = zend_string_copy(name);
+               FC(current_namespace) = zend_string_copy(name);
        } else {
-               CG(current_namespace) = NULL;
+               FC(current_namespace) = NULL;
        }
 
        zend_reset_import_tables();
 
-       CG(in_namespace) = 1;
+       FC(in_namespace) = 1;
        if (with_bracket) {
-               CG(has_bracketed_namespaces) = 1;
+               FC(has_bracketed_namespaces) = 1;
        }
 
        if (stmt_ast) {
@@ -5351,7 +5335,7 @@ void zend_compile_halt_compiler(zend_ast *ast) /* {{{ */
        zend_string *filename, *name;
        const char const_name[] = "__COMPILER_HALT_OFFSET__";
 
-       if (CG(has_bracketed_namespaces) && CG(in_namespace)) {
+       if (FC(has_bracketed_namespaces) && FC(in_namespace)) {
                zend_error_noreturn(E_COMPILE_ERROR,
                        "__HALT_COMPILER() can only be used from the outermost scope");
        }
@@ -5436,8 +5420,8 @@ static zend_bool zend_try_ct_eval_magic_const(zval *zv, zend_ast *ast) /* {{{ */
                        }
                        break;
                case T_NS_C:
-                       if (CG(current_namespace)) {
-                               ZVAL_STR_COPY(zv, CG(current_namespace));
+                       if (FC(current_namespace)) {
+                               ZVAL_STR_COPY(zv, FC(current_namespace));
                        } else {
                                ZVAL_EMPTY_STRING(zv);
                        }
@@ -6198,7 +6182,7 @@ void zend_compile_const(znode *result, zend_ast *ast) /* {{{ */
                        CG(active_op_array), resolved_name, 0);
        } else {
                opline->extended_value = IS_CONSTANT_UNQUALIFIED;
-               if (CG(current_namespace)) {
+               if (FC(current_namespace)) {
                        opline->extended_value |= IS_CONSTANT_IN_NAMESPACE;
                        opline->op2.constant = zend_add_const_name_literal(
                                CG(active_op_array), resolved_name, 1);
@@ -6771,7 +6755,7 @@ void zend_compile_stmt(zend_ast *ast) /* {{{ */
                }
        }
 
-       if (Z_LVAL(CG(declarables).ticks) && !zend_is_unticked_stmt(ast)) {
+       if (FC(declarables).ticks && !zend_is_unticked_stmt(ast)) {
                zend_emit_tick();
        }
 }
index 2037d98eb3087b9486ba9fd08adf1691899a178f..4b3d0a25b2b2c8ef097bb75a00577ffebfadbc56 100644 (file)
 typedef struct _zend_op_array zend_op_array;
 typedef struct _zend_op zend_op;
 
-/* Compilation context that is different for each op array. */
-typedef struct _zend_oparray_context {
-       uint32_t   opcodes_size;
-       int        vars_size;
-       int        literals_size;
-       int        current_brk_cont;
-       int        backpatch_count;
-       int        in_finally;
-       uint32_t   fast_call_var;
-       HashTable *labels;
-} zend_oparray_context;
-
-/* Compilation context that is different for each file, but shared between op arrays. */
-typedef struct _zend_file_context {
-       HashTable *imports;
-       HashTable *imports_function;
-       HashTable *imports_const;
-} zend_file_context;
-
 /* On 64-bit systems less optimal, but more compact VM code leads to better
  * performance. So on 32-bit systems we use absolute addresses for jump
  * targets and constants, but on 64-bit systems realtive 32-bit offsets */
@@ -124,6 +105,36 @@ static zend_always_inline znode *zend_ast_get_znode(zend_ast *ast) {
        return &((zend_ast_znode *) ast)->node;
 }
 
+typedef struct _zend_declarables {
+       zend_long ticks;
+} zend_declarables;
+
+/* Compilation context that is different for each op array. */
+typedef struct _zend_oparray_context {
+       uint32_t   opcodes_size;
+       int        vars_size;
+       int        literals_size;
+       int        current_brk_cont;
+       int        backpatch_count;
+       int        in_finally;
+       uint32_t   fast_call_var;
+       HashTable *labels;
+} zend_oparray_context;
+
+/* Compilation context that is different for each file, but shared between op arrays. */
+typedef struct _zend_file_context {
+       zend_declarables declarables;
+       znode implementing_class;
+
+       zend_string *current_namespace;
+       zend_bool in_namespace;
+       zend_bool has_bracketed_namespaces;
+
+       HashTable *imports;
+       HashTable *imports_function;
+       HashTable *imports_const;
+} zend_file_context;
+
 typedef union _zend_parser_stack_elem {
        zend_ast *ast;
        zend_string *str;
@@ -702,7 +713,6 @@ void zend_do_extended_fcall_begin(void);
 void zend_do_extended_fcall_end(void);
 
 void zend_verify_namespace(void);
-void zend_do_end_compilation(void);
 
 void zend_resolve_goto_label(zend_op_array *op_array, zend_op *opline, int pass2);
 
index f2ab02804e63545a642dc6b1877fd8963b56dac4..326955a103b3cdc34456fd4aaca4bce0267c7237 100644 (file)
@@ -63,10 +63,6 @@ END_EXTERN_C()
 #define ZEND_EARLY_BINDING_DELAYED      1
 #define ZEND_EARLY_BINDING_DELAYED_ALL  2
 
-typedef struct _zend_declarables {
-       zval ticks;
-} zend_declarables;
-
 typedef struct _zend_vm_stack *zend_vm_stack;
 typedef struct _zend_ini_entry zend_ini_entry;
 
@@ -93,8 +89,6 @@ struct _zend_compiler_globals {
        zend_bool in_compilation;
        zend_bool short_tags;
 
-       zend_declarables declarables;
-
        zend_bool unclean_shutdown;
 
        zend_bool ini_parser_unbuffered_errors;
@@ -106,16 +100,10 @@ struct _zend_compiler_globals {
        uint32_t start_lineno;
        zend_bool increment_lineno;
 
-       znode implementing_class;
-
        zend_string *doc_comment;
 
        uint32_t compiler_options; /* set of ZEND_COMPILE_* constants */
 
-       zend_string *current_namespace;
-       zend_bool  in_namespace;
-       zend_bool  has_bracketed_namespaces;
-
        HashTable const_filenames;
 
        zend_oparray_context context;
index 6e7852c4c56c05612256a814bf07cea8215680c1..e62e865a5acff3a840bccc11efd5990dbfef303d 100644 (file)
@@ -595,7 +595,6 @@ ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type)
                        zend_file_context_begin(&original_file_context);
                        zend_oparray_context_begin(&original_oparray_context);
                        zend_compile_top_stmt(CG(ast));
-                       zend_do_end_compilation();
                        zend_emit_final_return(&retval_zv);
                        pass_two(op_array);
                        zend_oparray_context_end(&original_oparray_context);
@@ -759,7 +758,6 @@ zend_op_array *compile_string(zval *source_string, char *filename)
                        zend_file_context_begin(&original_file_context);
                        zend_oparray_context_begin(&original_oparray_context);
                        zend_compile_top_stmt(CG(ast));
-                       zend_do_end_compilation();
                        zend_emit_final_return(NULL);
                        pass_two(op_array);
                        zend_oparray_context_end(&original_oparray_context);
@@ -1090,7 +1088,7 @@ restart:
        SCNG(yy_text) = YYCURSOR;
 
 
-#line 1094 "Zend/zend_language_scanner.c"
+#line 1092 "Zend/zend_language_scanner.c"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
@@ -1144,7 +1142,7 @@ yyc_INITIAL:
 yy3:
        YYDEBUG(3, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 1782 "Zend/zend_language_scanner.l"
+#line 1780 "Zend/zend_language_scanner.l"
        {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -1189,7 +1187,7 @@ inline_char_handler:
        HANDLE_NEWLINES(yytext, yyleng);
        return T_INLINE_HTML;
 }
-#line 1193 "Zend/zend_language_scanner.c"
+#line 1191 "Zend/zend_language_scanner.c"
 yy4:
        YYDEBUG(4, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -1207,7 +1205,7 @@ yy5:
 yy6:
        YYDEBUG(6, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 1773 "Zend/zend_language_scanner.l"
+#line 1771 "Zend/zend_language_scanner.l"
        {
        if (CG(short_tags)) {
                BEGIN(ST_IN_SCRIPTING);
@@ -1216,18 +1214,18 @@ yy6:
                goto inline_char_handler;
        }
 }
-#line 1220 "Zend/zend_language_scanner.c"
+#line 1218 "Zend/zend_language_scanner.c"
 yy7:
        YYDEBUG(7, *YYCURSOR);
        ++YYCURSOR;
        YYDEBUG(8, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 1760 "Zend/zend_language_scanner.l"
+#line 1758 "Zend/zend_language_scanner.l"
        {
        BEGIN(ST_IN_SCRIPTING);
        return T_OPEN_TAG_WITH_ECHO;
 }
-#line 1231 "Zend/zend_language_scanner.c"
+#line 1229 "Zend/zend_language_scanner.c"
 yy9:
        YYDEBUG(9, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -1258,13 +1256,13 @@ yy13:
 yy14:
        YYDEBUG(14, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 1766 "Zend/zend_language_scanner.l"
+#line 1764 "Zend/zend_language_scanner.l"
        {
        HANDLE_NEWLINE(yytext[yyleng-1]);
        BEGIN(ST_IN_SCRIPTING);
        return T_OPEN_TAG;
 }
-#line 1268 "Zend/zend_language_scanner.c"
+#line 1266 "Zend/zend_language_scanner.c"
 yy15:
        YYDEBUG(15, *YYCURSOR);
        ++YYCURSOR;
@@ -1334,7 +1332,7 @@ yyc_ST_BACKQUOTE:
 yy19:
                YYDEBUG(19, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2196 "Zend/zend_language_scanner.l"
+#line 2194 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -1377,7 +1375,7 @@ yy19:
        }
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 1381 "Zend/zend_language_scanner.c"
+#line 1379 "Zend/zend_language_scanner.c"
 yy20:
                YYDEBUG(20, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1388,12 +1386,12 @@ yy21:
                ++YYCURSOR;
                YYDEBUG(22, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2138 "Zend/zend_language_scanner.l"
+#line 2136 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        return '`';
 }
-#line 1397 "Zend/zend_language_scanner.c"
+#line 1395 "Zend/zend_language_scanner.c"
 yy23:
                YYDEBUG(23, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1403,14 +1401,14 @@ yy24:
                ++YYCURSOR;
                YYDEBUG(25, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2125 "Zend/zend_language_scanner.l"
+#line 2123 "Zend/zend_language_scanner.l"
                {
        Z_LVAL_P(zendlval) = (zend_long) '{';
        yy_push_state(ST_IN_SCRIPTING);
        yyless(1);
        return T_CURLY_OPEN;
 }
-#line 1414 "Zend/zend_language_scanner.c"
+#line 1412 "Zend/zend_language_scanner.c"
 yy26:
                YYDEBUG(26, *YYCURSOR);
                yyaccept = 0;
@@ -1426,23 +1424,23 @@ yy26:
 yy28:
                YYDEBUG(28, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1847 "Zend/zend_language_scanner.l"
+#line 1845 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1435 "Zend/zend_language_scanner.c"
+#line 1433 "Zend/zend_language_scanner.c"
 yy29:
                YYDEBUG(29, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(30, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1568 "Zend/zend_language_scanner.l"
+#line 1566 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_VARNAME);
        return T_DOLLAR_OPEN_CURLY_BRACES;
 }
-#line 1446 "Zend/zend_language_scanner.c"
+#line 1444 "Zend/zend_language_scanner.c"
 yy31:
                YYDEBUG(31, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1456,14 +1454,14 @@ yy33:
                ++YYCURSOR;
                YYDEBUG(34, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1840 "Zend/zend_language_scanner.l"
+#line 1838 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1467 "Zend/zend_language_scanner.c"
+#line 1465 "Zend/zend_language_scanner.c"
 yy35:
                YYDEBUG(35, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1481,14 +1479,14 @@ yy36:
                ++YYCURSOR;
                YYDEBUG(37, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1831 "Zend/zend_language_scanner.l"
+#line 1829 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1492 "Zend/zend_language_scanner.c"
+#line 1490 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_DOUBLE_QUOTES:
@@ -1556,7 +1554,7 @@ yy40:
 yy41:
                YYDEBUG(41, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2144 "Zend/zend_language_scanner.l"
+#line 2142 "Zend/zend_language_scanner.l"
                {
        if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) {
                YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1;
@@ -1607,7 +1605,7 @@ double_quotes_scan_done:
        }
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 1611 "Zend/zend_language_scanner.c"
+#line 1609 "Zend/zend_language_scanner.c"
 yy42:
                YYDEBUG(42, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1618,12 +1616,12 @@ yy43:
                ++YYCURSOR;
                YYDEBUG(44, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2133 "Zend/zend_language_scanner.l"
+#line 2131 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        return '"';
 }
-#line 1627 "Zend/zend_language_scanner.c"
+#line 1625 "Zend/zend_language_scanner.c"
 yy45:
                YYDEBUG(45, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1633,14 +1631,14 @@ yy46:
                ++YYCURSOR;
                YYDEBUG(47, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2125 "Zend/zend_language_scanner.l"
+#line 2123 "Zend/zend_language_scanner.l"
                {
        Z_LVAL_P(zendlval) = (zend_long) '{';
        yy_push_state(ST_IN_SCRIPTING);
        yyless(1);
        return T_CURLY_OPEN;
 }
-#line 1644 "Zend/zend_language_scanner.c"
+#line 1642 "Zend/zend_language_scanner.c"
 yy48:
                YYDEBUG(48, *YYCURSOR);
                yyaccept = 0;
@@ -1656,23 +1654,23 @@ yy48:
 yy50:
                YYDEBUG(50, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1847 "Zend/zend_language_scanner.l"
+#line 1845 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1665 "Zend/zend_language_scanner.c"
+#line 1663 "Zend/zend_language_scanner.c"
 yy51:
                YYDEBUG(51, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(52, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1568 "Zend/zend_language_scanner.l"
+#line 1566 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_VARNAME);
        return T_DOLLAR_OPEN_CURLY_BRACES;
 }
-#line 1676 "Zend/zend_language_scanner.c"
+#line 1674 "Zend/zend_language_scanner.c"
 yy53:
                YYDEBUG(53, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1686,14 +1684,14 @@ yy55:
                ++YYCURSOR;
                YYDEBUG(56, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1840 "Zend/zend_language_scanner.l"
+#line 1838 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1697 "Zend/zend_language_scanner.c"
+#line 1695 "Zend/zend_language_scanner.c"
 yy57:
                YYDEBUG(57, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1711,14 +1709,14 @@ yy58:
                ++YYCURSOR;
                YYDEBUG(59, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1831 "Zend/zend_language_scanner.l"
+#line 1829 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1722 "Zend/zend_language_scanner.c"
+#line 1720 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_END_HEREDOC:
@@ -1729,7 +1727,7 @@ yyc_ST_END_HEREDOC:
        ++YYCURSOR;
        YYDEBUG(63, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 2111 "Zend/zend_language_scanner.l"
+#line 2109 "Zend/zend_language_scanner.l"
        {
        zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack));
 
@@ -1742,7 +1740,7 @@ yyc_ST_END_HEREDOC:
        BEGIN(ST_IN_SCRIPTING);
        return T_END_HEREDOC;
 }
-#line 1746 "Zend/zend_language_scanner.c"
+#line 1744 "Zend/zend_language_scanner.c"
 /* *********************************** */
 yyc_ST_HEREDOC:
        {
@@ -1804,7 +1802,7 @@ yy66:
 yy67:
                YYDEBUG(67, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2240 "Zend/zend_language_scanner.l"
+#line 2238 "Zend/zend_language_scanner.l"
                {
        int newline = 0;
 
@@ -1879,7 +1877,7 @@ heredoc_scan_done:
        }
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 1883 "Zend/zend_language_scanner.c"
+#line 1881 "Zend/zend_language_scanner.c"
 yy68:
                YYDEBUG(68, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1894,14 +1892,14 @@ yy70:
                ++YYCURSOR;
                YYDEBUG(71, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2125 "Zend/zend_language_scanner.l"
+#line 2123 "Zend/zend_language_scanner.l"
                {
        Z_LVAL_P(zendlval) = (zend_long) '{';
        yy_push_state(ST_IN_SCRIPTING);
        yyless(1);
        return T_CURLY_OPEN;
 }
-#line 1905 "Zend/zend_language_scanner.c"
+#line 1903 "Zend/zend_language_scanner.c"
 yy72:
                YYDEBUG(72, *YYCURSOR);
                yyaccept = 0;
@@ -1917,23 +1915,23 @@ yy72:
 yy74:
                YYDEBUG(74, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1847 "Zend/zend_language_scanner.l"
+#line 1845 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1926 "Zend/zend_language_scanner.c"
+#line 1924 "Zend/zend_language_scanner.c"
 yy75:
                YYDEBUG(75, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(76, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1568 "Zend/zend_language_scanner.l"
+#line 1566 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_VARNAME);
        return T_DOLLAR_OPEN_CURLY_BRACES;
 }
-#line 1937 "Zend/zend_language_scanner.c"
+#line 1935 "Zend/zend_language_scanner.c"
 yy77:
                YYDEBUG(77, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1947,14 +1945,14 @@ yy79:
                ++YYCURSOR;
                YYDEBUG(80, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1840 "Zend/zend_language_scanner.l"
+#line 1838 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1958 "Zend/zend_language_scanner.c"
+#line 1956 "Zend/zend_language_scanner.c"
 yy81:
                YYDEBUG(81, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -1972,14 +1970,14 @@ yy82:
                ++YYCURSOR;
                YYDEBUG(83, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1831 "Zend/zend_language_scanner.l"
+#line 1829 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 1983 "Zend/zend_language_scanner.c"
+#line 1981 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_IN_SCRIPTING:
@@ -2162,12 +2160,12 @@ yy86:
 yy87:
                YYDEBUG(87, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1870 "Zend/zend_language_scanner.l"
+#line 1868 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        return T_STRING;
 }
-#line 2171 "Zend/zend_language_scanner.c"
+#line 2169 "Zend/zend_language_scanner.c"
 yy88:
                YYDEBUG(88, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -2399,11 +2397,11 @@ yy101:
 yy102:
                YYDEBUG(102, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1557 "Zend/zend_language_scanner.l"
+#line 1555 "Zend/zend_language_scanner.l"
                {
        return yytext[0];
 }
-#line 2407 "Zend/zend_language_scanner.c"
+#line 2405 "Zend/zend_language_scanner.c"
 yy103:
                YYDEBUG(103, *YYCURSOR);
                ++YYCURSOR;
@@ -2412,12 +2410,12 @@ yy103:
 yy104:
                YYDEBUG(104, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1272 "Zend/zend_language_scanner.l"
+#line 1270 "Zend/zend_language_scanner.l"
                {
        HANDLE_NEWLINES(yytext, yyleng);
        return T_WHITESPACE;
 }
-#line 2421 "Zend/zend_language_scanner.c"
+#line 2419 "Zend/zend_language_scanner.c"
 yy105:
                YYDEBUG(105, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -2428,11 +2426,11 @@ yy106:
                ++YYCURSOR;
                YYDEBUG(107, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1297 "Zend/zend_language_scanner.l"
+#line 1295 "Zend/zend_language_scanner.l"
                {
        return T_NS_SEPARATOR;
 }
-#line 2436 "Zend/zend_language_scanner.c"
+#line 2434 "Zend/zend_language_scanner.c"
 yy108:
                YYDEBUG(108, *YYCURSOR);
                yyaccept = 1;
@@ -2661,18 +2659,18 @@ yy131:
                ++YYCURSOR;
                YYDEBUG(132, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1562 "Zend/zend_language_scanner.l"
+#line 1560 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_IN_SCRIPTING);
        return '{';
 }
-#line 2670 "Zend/zend_language_scanner.c"
+#line 2668 "Zend/zend_language_scanner.c"
 yy133:
                YYDEBUG(133, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(134, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1574 "Zend/zend_language_scanner.l"
+#line 1572 "Zend/zend_language_scanner.l"
                {
        RESET_DOC_COMMENT();
        if (!zend_stack_is_empty(&SCNG(state_stack))) {
@@ -2680,7 +2678,7 @@ yy133:
        }
        return '}';
 }
-#line 2684 "Zend/zend_language_scanner.c"
+#line 2682 "Zend/zend_language_scanner.c"
 yy135:
                YYDEBUG(135, *YYCURSOR);
                yyaccept = 2;
@@ -2708,7 +2706,7 @@ yy135:
 yy136:
                YYDEBUG(136, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1627 "Zend/zend_language_scanner.l"
+#line 1625 "Zend/zend_language_scanner.l"
                {
        char *end;
        if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */
@@ -2750,7 +2748,7 @@ yy136:
        ZEND_ASSERT(!errno);
        return T_LNUMBER;
 }
-#line 2754 "Zend/zend_language_scanner.c"
+#line 2752 "Zend/zend_language_scanner.c"
 yy137:
                YYDEBUG(137, *YYCURSOR);
                yyaccept = 2;
@@ -2778,7 +2776,7 @@ yy139:
 yy140:
                YYDEBUG(140, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1876 "Zend/zend_language_scanner.l"
+#line 1874 "Zend/zend_language_scanner.l"
                {
        while (YYCURSOR < YYLIMIT) {
                switch (*YYCURSOR++) {
@@ -2807,14 +2805,14 @@ yy140:
 
        return T_COMMENT;
 }
-#line 2811 "Zend/zend_language_scanner.c"
+#line 2809 "Zend/zend_language_scanner.c"
 yy141:
                YYDEBUG(141, *YYCURSOR);
                ++YYCURSOR;
 yy142:
                YYDEBUG(142, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1944 "Zend/zend_language_scanner.l"
+#line 1942 "Zend/zend_language_scanner.l"
                {
        register char *s, *t;
        char *end;
@@ -2882,14 +2880,14 @@ yy142:
        }
        return T_CONSTANT_ENCAPSED_STRING;
 }
-#line 2886 "Zend/zend_language_scanner.c"
+#line 2884 "Zend/zend_language_scanner.c"
 yy143:
                YYDEBUG(143, *YYCURSOR);
                ++YYCURSOR;
 yy144:
                YYDEBUG(144, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2013 "Zend/zend_language_scanner.l"
+#line 2011 "Zend/zend_language_scanner.l"
                {
        int bprefix = (yytext[0] != '"') ? 1 : 0;
 
@@ -2932,24 +2930,24 @@ yy144:
        BEGIN(ST_DOUBLE_QUOTES);
        return '"';
 }
-#line 2936 "Zend/zend_language_scanner.c"
+#line 2934 "Zend/zend_language_scanner.c"
 yy145:
                YYDEBUG(145, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(146, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2105 "Zend/zend_language_scanner.l"
+#line 2103 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_BACKQUOTE);
        return '`';
 }
-#line 2947 "Zend/zend_language_scanner.c"
+#line 2945 "Zend/zend_language_scanner.c"
 yy147:
                YYDEBUG(147, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(148, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2373 "Zend/zend_language_scanner.l"
+#line 2371 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -2958,7 +2956,7 @@ yy147:
        zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
        goto restart;
 }
-#line 2962 "Zend/zend_language_scanner.c"
+#line 2960 "Zend/zend_language_scanner.c"
 yy149:
                YYDEBUG(149, *YYCURSOR);
                ++YYCURSOR;
@@ -2985,7 +2983,7 @@ yy151:
 yy153:
                YYDEBUG(153, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1718 "Zend/zend_language_scanner.l"
+#line 1716 "Zend/zend_language_scanner.l"
                {
        const char *end;
 
@@ -2994,7 +2992,7 @@ yy153:
        ZEND_ASSERT(end == yytext + yyleng);
        return T_DNUMBER;
 }
-#line 2998 "Zend/zend_language_scanner.c"
+#line 2996 "Zend/zend_language_scanner.c"
 yy154:
                YYDEBUG(154, *YYCURSOR);
                yyaccept = 2;
@@ -3090,7 +3088,7 @@ yy163:
                }
                YYDEBUG(165, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1599 "Zend/zend_language_scanner.l"
+#line 1597 "Zend/zend_language_scanner.l"
                {
        char *bin = yytext + 2; /* Skip "0b" */
        int len = yyleng - 2;
@@ -3118,7 +3116,7 @@ yy163:
                return T_DNUMBER;
        }
 }
-#line 3122 "Zend/zend_language_scanner.c"
+#line 3120 "Zend/zend_language_scanner.c"
 yy166:
                YYDEBUG(166, *YYCURSOR);
                ++YYCURSOR;
@@ -3130,7 +3128,7 @@ yy166:
                }
                YYDEBUG(168, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1669 "Zend/zend_language_scanner.l"
+#line 1667 "Zend/zend_language_scanner.l"
                {
        char *hex = yytext + 2; /* Skip "0x" */
        int len = yyleng - 2;
@@ -3158,7 +3156,7 @@ yy166:
                return T_DNUMBER;
        }
 }
-#line 3162 "Zend/zend_language_scanner.c"
+#line 3160 "Zend/zend_language_scanner.c"
 yy169:
                YYDEBUG(169, *YYCURSOR);
                ++YYCURSOR;
@@ -3183,12 +3181,12 @@ yy169:
 yy171:
                YYDEBUG(171, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1847 "Zend/zend_language_scanner.l"
+#line 1845 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 3192 "Zend/zend_language_scanner.c"
+#line 3190 "Zend/zend_language_scanner.c"
 yy172:
                YYDEBUG(172, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3202,11 +3200,11 @@ yy173:
                }
                YYDEBUG(174, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1545 "Zend/zend_language_scanner.l"
+#line 1543 "Zend/zend_language_scanner.l"
                {
        return T_LOGICAL_XOR;
 }
-#line 3210 "Zend/zend_language_scanner.c"
+#line 3208 "Zend/zend_language_scanner.c"
 yy175:
                YYDEBUG(175, *YYCURSOR);
                ++YYCURSOR;
@@ -3215,71 +3213,71 @@ yy175:
                }
                YYDEBUG(176, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1537 "Zend/zend_language_scanner.l"
+#line 1535 "Zend/zend_language_scanner.l"
                {
        return T_LOGICAL_OR;
 }
-#line 3223 "Zend/zend_language_scanner.c"
+#line 3221 "Zend/zend_language_scanner.c"
 yy177:
                YYDEBUG(177, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(178, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1525 "Zend/zend_language_scanner.l"
+#line 1523 "Zend/zend_language_scanner.l"
                {
        return T_XOR_EQUAL;
 }
-#line 3233 "Zend/zend_language_scanner.c"
+#line 3231 "Zend/zend_language_scanner.c"
 yy179:
                YYDEBUG(179, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(180, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1529 "Zend/zend_language_scanner.l"
+#line 1527 "Zend/zend_language_scanner.l"
                {
        return T_BOOLEAN_OR;
 }
-#line 3243 "Zend/zend_language_scanner.c"
+#line 3241 "Zend/zend_language_scanner.c"
 yy181:
                YYDEBUG(181, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(182, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1521 "Zend/zend_language_scanner.l"
+#line 1519 "Zend/zend_language_scanner.l"
                {
        return T_OR_EQUAL;
 }
-#line 3253 "Zend/zend_language_scanner.c"
+#line 3251 "Zend/zend_language_scanner.c"
 yy183:
                YYDEBUG(183, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(184, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1533 "Zend/zend_language_scanner.l"
+#line 1531 "Zend/zend_language_scanner.l"
                {
        return T_BOOLEAN_AND;
 }
-#line 3263 "Zend/zend_language_scanner.c"
+#line 3261 "Zend/zend_language_scanner.c"
 yy185:
                YYDEBUG(185, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(186, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1517 "Zend/zend_language_scanner.l"
+#line 1515 "Zend/zend_language_scanner.l"
                {
        return T_AND_EQUAL;
 }
-#line 3273 "Zend/zend_language_scanner.c"
+#line 3271 "Zend/zend_language_scanner.c"
 yy187:
                YYDEBUG(187, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(188, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1505 "Zend/zend_language_scanner.l"
+#line 1503 "Zend/zend_language_scanner.l"
                {
        return T_MOD_EQUAL;
 }
-#line 3283 "Zend/zend_language_scanner.c"
+#line 3281 "Zend/zend_language_scanner.c"
 yy189:
                YYDEBUG(189, *YYCURSOR);
                yyaccept = 4;
@@ -3288,7 +3286,7 @@ yy189:
 yy190:
                YYDEBUG(190, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1905 "Zend/zend_language_scanner.l"
+#line 1903 "Zend/zend_language_scanner.l"
                {
        int doc_com;
 
@@ -3321,7 +3319,7 @@ yy190:
 
        return T_COMMENT;
 }
-#line 3325 "Zend/zend_language_scanner.c"
+#line 3323 "Zend/zend_language_scanner.c"
 yy191:
                YYDEBUG(191, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3331,11 +3329,11 @@ yy192:
                ++YYCURSOR;
                YYDEBUG(193, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1497 "Zend/zend_language_scanner.l"
+#line 1495 "Zend/zend_language_scanner.l"
                {
        return T_DIV_EQUAL;
 }
-#line 3339 "Zend/zend_language_scanner.c"
+#line 3337 "Zend/zend_language_scanner.c"
 yy194:
                YYDEBUG(194, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3359,62 +3357,62 @@ yy197:
                if ((yych = *YYCURSOR) == '=') goto yy201;
                YYDEBUG(198, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1489 "Zend/zend_language_scanner.l"
+#line 1487 "Zend/zend_language_scanner.l"
                {
        return T_POW;
 }
-#line 3367 "Zend/zend_language_scanner.c"
+#line 3365 "Zend/zend_language_scanner.c"
 yy199:
                YYDEBUG(199, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(200, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1485 "Zend/zend_language_scanner.l"
+#line 1483 "Zend/zend_language_scanner.l"
                {
        return T_MUL_EQUAL;
 }
-#line 3377 "Zend/zend_language_scanner.c"
+#line 3375 "Zend/zend_language_scanner.c"
 yy201:
                YYDEBUG(201, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(202, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1493 "Zend/zend_language_scanner.l"
+#line 1491 "Zend/zend_language_scanner.l"
                {
        return T_POW_EQUAL;
 }
-#line 3387 "Zend/zend_language_scanner.c"
+#line 3385 "Zend/zend_language_scanner.c"
 yy203:
                YYDEBUG(203, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) == '=') goto yy207;
                YYDEBUG(204, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1553 "Zend/zend_language_scanner.l"
+#line 1551 "Zend/zend_language_scanner.l"
                {
        return T_SR;
 }
-#line 3398 "Zend/zend_language_scanner.c"
+#line 3396 "Zend/zend_language_scanner.c"
 yy205:
                YYDEBUG(205, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(206, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1473 "Zend/zend_language_scanner.l"
+#line 1471 "Zend/zend_language_scanner.l"
                {
        return T_IS_GREATER_OR_EQUAL;
 }
-#line 3408 "Zend/zend_language_scanner.c"
+#line 3406 "Zend/zend_language_scanner.c"
 yy207:
                YYDEBUG(207, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(208, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1513 "Zend/zend_language_scanner.l"
+#line 1511 "Zend/zend_language_scanner.l"
                {
        return T_SR_EQUAL;
 }
-#line 3418 "Zend/zend_language_scanner.c"
+#line 3416 "Zend/zend_language_scanner.c"
 yy209:
                YYDEBUG(209, *YYCURSOR);
                yyaccept = 5;
@@ -3425,53 +3423,53 @@ yy209:
 yy210:
                YYDEBUG(210, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1549 "Zend/zend_language_scanner.l"
+#line 1547 "Zend/zend_language_scanner.l"
                {
        return T_SL;
 }
-#line 3433 "Zend/zend_language_scanner.c"
+#line 3431 "Zend/zend_language_scanner.c"
 yy211:
                YYDEBUG(211, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) == '>') goto yy215;
                YYDEBUG(212, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1469 "Zend/zend_language_scanner.l"
+#line 1467 "Zend/zend_language_scanner.l"
                {
        return T_IS_SMALLER_OR_EQUAL;
 }
-#line 3444 "Zend/zend_language_scanner.c"
+#line 3442 "Zend/zend_language_scanner.c"
 yy213:
                YYDEBUG(213, *YYCURSOR);
                ++YYCURSOR;
 yy214:
                YYDEBUG(214, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1461 "Zend/zend_language_scanner.l"
+#line 1459 "Zend/zend_language_scanner.l"
                {
        return T_IS_NOT_EQUAL;
 }
-#line 3455 "Zend/zend_language_scanner.c"
+#line 3453 "Zend/zend_language_scanner.c"
 yy215:
                YYDEBUG(215, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(216, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1465 "Zend/zend_language_scanner.l"
+#line 1463 "Zend/zend_language_scanner.l"
                {
        return T_SPACESHIP;
 }
-#line 3465 "Zend/zend_language_scanner.c"
+#line 3463 "Zend/zend_language_scanner.c"
 yy217:
                YYDEBUG(217, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(218, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1509 "Zend/zend_language_scanner.l"
+#line 1507 "Zend/zend_language_scanner.l"
                {
        return T_SL_EQUAL;
 }
-#line 3475 "Zend/zend_language_scanner.c"
+#line 3473 "Zend/zend_language_scanner.c"
 yy219:
                YYDEBUG(219, *YYCURSOR);
                ++YYCURSOR;
@@ -3576,7 +3574,7 @@ yy228:
 yy229:
                YYDEBUG(229, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2057 "Zend/zend_language_scanner.l"
+#line 2055 "Zend/zend_language_scanner.l"
                {
        char *s;
        int bprefix = (yytext[0] != '<') ? 1 : 0;
@@ -3623,7 +3621,7 @@ yy229:
 
        return T_START_HEREDOC;
 }
-#line 3627 "Zend/zend_language_scanner.c"
+#line 3625 "Zend/zend_language_scanner.c"
 yy230:
                YYDEBUG(230, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3663,31 +3661,31 @@ yy233:
                ++YYCURSOR;
                YYDEBUG(235, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1453 "Zend/zend_language_scanner.l"
+#line 1451 "Zend/zend_language_scanner.l"
                {
        return T_IS_NOT_IDENTICAL;
 }
-#line 3671 "Zend/zend_language_scanner.c"
+#line 3669 "Zend/zend_language_scanner.c"
 yy236:
                YYDEBUG(236, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(237, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1477 "Zend/zend_language_scanner.l"
+#line 1475 "Zend/zend_language_scanner.l"
                {
        return T_PLUS_EQUAL;
 }
-#line 3681 "Zend/zend_language_scanner.c"
+#line 3679 "Zend/zend_language_scanner.c"
 yy238:
                YYDEBUG(238, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(239, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1441 "Zend/zend_language_scanner.l"
+#line 1439 "Zend/zend_language_scanner.l"
                {
        return T_INC;
 }
-#line 3691 "Zend/zend_language_scanner.c"
+#line 3689 "Zend/zend_language_scanner.c"
 yy240:
                YYDEBUG(240, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3706,42 +3704,42 @@ yy242:
                }
                YYDEBUG(243, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1429 "Zend/zend_language_scanner.l"
+#line 1427 "Zend/zend_language_scanner.l"
                {
        return T_LIST;
 }
-#line 3714 "Zend/zend_language_scanner.c"
+#line 3712 "Zend/zend_language_scanner.c"
 yy244:
                YYDEBUG(244, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) == '=') goto yy248;
                YYDEBUG(245, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1457 "Zend/zend_language_scanner.l"
+#line 1455 "Zend/zend_language_scanner.l"
                {
        return T_IS_EQUAL;
 }
-#line 3725 "Zend/zend_language_scanner.c"
+#line 3723 "Zend/zend_language_scanner.c"
 yy246:
                YYDEBUG(246, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(247, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1425 "Zend/zend_language_scanner.l"
+#line 1423 "Zend/zend_language_scanner.l"
                {
        return T_DOUBLE_ARROW;
 }
-#line 3735 "Zend/zend_language_scanner.c"
+#line 3733 "Zend/zend_language_scanner.c"
 yy248:
                YYDEBUG(248, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(249, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1449 "Zend/zend_language_scanner.l"
+#line 1447 "Zend/zend_language_scanner.l"
                {
        return T_IS_IDENTICAL;
 }
-#line 3745 "Zend/zend_language_scanner.c"
+#line 3743 "Zend/zend_language_scanner.c"
 yy250:
                YYDEBUG(250, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3871,11 +3869,11 @@ yy266:
                }
                YYDEBUG(269, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1755 "Zend/zend_language_scanner.l"
+#line 1753 "Zend/zend_language_scanner.l"
                {
        return T_NS_C;
 }
-#line 3879 "Zend/zend_language_scanner.c"
+#line 3877 "Zend/zend_language_scanner.c"
 yy270:
                YYDEBUG(270, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3895,11 +3893,11 @@ yy271:
                }
                YYDEBUG(274, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1751 "Zend/zend_language_scanner.l"
+#line 1749 "Zend/zend_language_scanner.l"
                {
        return T_DIR;
 }
-#line 3903 "Zend/zend_language_scanner.c"
+#line 3901 "Zend/zend_language_scanner.c"
 yy275:
                YYDEBUG(275, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3924,11 +3922,11 @@ yy277:
                }
                YYDEBUG(280, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1743 "Zend/zend_language_scanner.l"
+#line 1741 "Zend/zend_language_scanner.l"
                {
        return T_LINE;
 }
-#line 3932 "Zend/zend_language_scanner.c"
+#line 3930 "Zend/zend_language_scanner.c"
 yy281:
                YYDEBUG(281, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -3963,11 +3961,11 @@ yy285:
                }
                YYDEBUG(288, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1739 "Zend/zend_language_scanner.l"
+#line 1737 "Zend/zend_language_scanner.l"
                {
        return T_METHOD_C;
 }
-#line 3971 "Zend/zend_language_scanner.c"
+#line 3969 "Zend/zend_language_scanner.c"
 yy289:
                YYDEBUG(289, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4018,11 +4016,11 @@ yy296:
                }
                YYDEBUG(299, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1735 "Zend/zend_language_scanner.l"
+#line 1733 "Zend/zend_language_scanner.l"
                {
        return T_FUNC_C;
 }
-#line 4026 "Zend/zend_language_scanner.c"
+#line 4024 "Zend/zend_language_scanner.c"
 yy300:
                YYDEBUG(300, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4042,11 +4040,11 @@ yy301:
                }
                YYDEBUG(304, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1747 "Zend/zend_language_scanner.l"
+#line 1745 "Zend/zend_language_scanner.l"
                {
        return T_FILE;
 }
-#line 4050 "Zend/zend_language_scanner.c"
+#line 4048 "Zend/zend_language_scanner.c"
 yy305:
                YYDEBUG(305, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4076,11 +4074,11 @@ yy308:
                }
                YYDEBUG(311, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1731 "Zend/zend_language_scanner.l"
+#line 1729 "Zend/zend_language_scanner.l"
                {
        return T_TRAIT_C;
 }
-#line 4084 "Zend/zend_language_scanner.c"
+#line 4082 "Zend/zend_language_scanner.c"
 yy312:
                YYDEBUG(312, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4110,11 +4108,11 @@ yy315:
                }
                YYDEBUG(318, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1727 "Zend/zend_language_scanner.l"
+#line 1725 "Zend/zend_language_scanner.l"
                {
        return T_CLASS_C;
 }
-#line 4118 "Zend/zend_language_scanner.c"
+#line 4116 "Zend/zend_language_scanner.c"
 yy319:
                YYDEBUG(319, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4176,11 +4174,11 @@ yy330:
                }
                YYDEBUG(331, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1393 "Zend/zend_language_scanner.l"
+#line 1391 "Zend/zend_language_scanner.l"
                {
        return T_HALT_COMPILER;
 }
-#line 4184 "Zend/zend_language_scanner.c"
+#line 4182 "Zend/zend_language_scanner.c"
 yy332:
                YYDEBUG(332, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4200,11 +4198,11 @@ yy334:
                }
                YYDEBUG(335, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1373 "Zend/zend_language_scanner.l"
+#line 1371 "Zend/zend_language_scanner.l"
                {
        return T_USE;
 }
-#line 4208 "Zend/zend_language_scanner.c"
+#line 4206 "Zend/zend_language_scanner.c"
 yy336:
                YYDEBUG(336, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4223,11 +4221,11 @@ yy338:
                }
                YYDEBUG(339, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1421 "Zend/zend_language_scanner.l"
+#line 1419 "Zend/zend_language_scanner.l"
                {
        return T_UNSET;
 }
-#line 4231 "Zend/zend_language_scanner.c"
+#line 4229 "Zend/zend_language_scanner.c"
 yy340:
                YYDEBUG(340, *YYCURSOR);
                ++YYCURSOR;
@@ -4399,11 +4397,11 @@ yy355:
                ++YYCURSOR;
                YYDEBUG(357, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1321 "Zend/zend_language_scanner.l"
+#line 1319 "Zend/zend_language_scanner.l"
                {
        return T_INT_CAST;
 }
-#line 4407 "Zend/zend_language_scanner.c"
+#line 4405 "Zend/zend_language_scanner.c"
 yy358:
                YYDEBUG(358, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4447,11 +4445,11 @@ yy363:
                ++YYCURSOR;
                YYDEBUG(366, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1325 "Zend/zend_language_scanner.l"
+#line 1323 "Zend/zend_language_scanner.l"
                {
        return T_DOUBLE_CAST;
 }
-#line 4455 "Zend/zend_language_scanner.c"
+#line 4453 "Zend/zend_language_scanner.c"
 yy367:
                YYDEBUG(367, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4521,11 +4519,11 @@ yy377:
                ++YYCURSOR;
                YYDEBUG(380, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1329 "Zend/zend_language_scanner.l"
+#line 1327 "Zend/zend_language_scanner.l"
                {
        return T_STRING_CAST;
 }
-#line 4529 "Zend/zend_language_scanner.c"
+#line 4527 "Zend/zend_language_scanner.c"
 yy381:
                YYDEBUG(381, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4558,11 +4556,11 @@ yy384:
                ++YYCURSOR;
                YYDEBUG(387, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1333 "Zend/zend_language_scanner.l"
+#line 1331 "Zend/zend_language_scanner.l"
                {
        return T_ARRAY_CAST;
 }
-#line 4566 "Zend/zend_language_scanner.c"
+#line 4564 "Zend/zend_language_scanner.c"
 yy388:
                YYDEBUG(388, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4600,11 +4598,11 @@ yy392:
                ++YYCURSOR;
                YYDEBUG(395, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1337 "Zend/zend_language_scanner.l"
+#line 1335 "Zend/zend_language_scanner.l"
                {
        return T_OBJECT_CAST;
 }
-#line 4608 "Zend/zend_language_scanner.c"
+#line 4606 "Zend/zend_language_scanner.c"
 yy396:
                YYDEBUG(396, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4645,11 +4643,11 @@ yy401:
                ++YYCURSOR;
                YYDEBUG(403, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1341 "Zend/zend_language_scanner.l"
+#line 1339 "Zend/zend_language_scanner.l"
                {
        return T_BOOL_CAST;
 }
-#line 4653 "Zend/zend_language_scanner.c"
+#line 4651 "Zend/zend_language_scanner.c"
 yy404:
                YYDEBUG(404, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4709,11 +4707,11 @@ yy412:
                ++YYCURSOR;
                YYDEBUG(415, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1345 "Zend/zend_language_scanner.l"
+#line 1343 "Zend/zend_language_scanner.l"
                {
        return T_UNSET_CAST;
 }
-#line 4717 "Zend/zend_language_scanner.c"
+#line 4715 "Zend/zend_language_scanner.c"
 yy416:
                YYDEBUG(416, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4727,11 +4725,11 @@ yy417:
                }
                YYDEBUG(418, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1317 "Zend/zend_language_scanner.l"
+#line 1315 "Zend/zend_language_scanner.l"
                {
        return T_VAR;
 }
-#line 4735 "Zend/zend_language_scanner.c"
+#line 4733 "Zend/zend_language_scanner.c"
 yy419:
                YYDEBUG(419, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4751,11 +4749,11 @@ yy421:
                }
                YYDEBUG(422, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1309 "Zend/zend_language_scanner.l"
+#line 1307 "Zend/zend_language_scanner.l"
                {
        return T_NEW;
 }
-#line 4759 "Zend/zend_language_scanner.c"
+#line 4757 "Zend/zend_language_scanner.c"
 yy423:
                YYDEBUG(423, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4794,11 +4792,11 @@ yy429:
                }
                YYDEBUG(430, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1369 "Zend/zend_language_scanner.l"
+#line 1367 "Zend/zend_language_scanner.l"
                {
        return T_NAMESPACE;
 }
-#line 4802 "Zend/zend_language_scanner.c"
+#line 4800 "Zend/zend_language_scanner.c"
 yy431:
                YYDEBUG(431, *YYCURSOR);
                ++YYCURSOR;
@@ -4807,22 +4805,22 @@ yy431:
 yy432:
                YYDEBUG(432, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1938 "Zend/zend_language_scanner.l"
+#line 1936 "Zend/zend_language_scanner.l"
                {
        BEGIN(INITIAL);
        return T_CLOSE_TAG;  /* implicit ';' at php-end tag */
 }
-#line 4816 "Zend/zend_language_scanner.c"
+#line 4814 "Zend/zend_language_scanner.c"
 yy433:
                YYDEBUG(433, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(434, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1305 "Zend/zend_language_scanner.l"
+#line 1303 "Zend/zend_language_scanner.l"
                {
        return T_COALESCE;
 }
-#line 4826 "Zend/zend_language_scanner.c"
+#line 4824 "Zend/zend_language_scanner.c"
 yy435:
                YYDEBUG(435, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4853,11 +4851,11 @@ yy439:
                ++YYCURSOR;
                YYDEBUG(440, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1501 "Zend/zend_language_scanner.l"
+#line 1499 "Zend/zend_language_scanner.l"
                {
        return T_CONCAT_EQUAL;
 }
-#line 4861 "Zend/zend_language_scanner.c"
+#line 4859 "Zend/zend_language_scanner.c"
 yy441:
                YYDEBUG(441, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4866,21 +4864,21 @@ yy441:
                ++YYCURSOR;
                YYDEBUG(443, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1301 "Zend/zend_language_scanner.l"
+#line 1299 "Zend/zend_language_scanner.l"
                {
        return T_ELLIPSIS;
 }
-#line 4874 "Zend/zend_language_scanner.c"
+#line 4872 "Zend/zend_language_scanner.c"
 yy444:
                YYDEBUG(444, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(445, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1293 "Zend/zend_language_scanner.l"
+#line 1291 "Zend/zend_language_scanner.l"
                {
        return T_PAAMAYIM_NEKUDOTAYIM;
 }
-#line 4884 "Zend/zend_language_scanner.c"
+#line 4882 "Zend/zend_language_scanner.c"
 yy446:
                YYDEBUG(446, *YYCURSOR);
                ++YYCURSOR;
@@ -4902,32 +4900,32 @@ yy448:
                ++YYCURSOR;
                YYDEBUG(449, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1481 "Zend/zend_language_scanner.l"
+#line 1479 "Zend/zend_language_scanner.l"
                {
        return T_MINUS_EQUAL;
 }
-#line 4910 "Zend/zend_language_scanner.c"
+#line 4908 "Zend/zend_language_scanner.c"
 yy450:
                YYDEBUG(450, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(451, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1445 "Zend/zend_language_scanner.l"
+#line 1443 "Zend/zend_language_scanner.l"
                {
        return T_DEC;
 }
-#line 4920 "Zend/zend_language_scanner.c"
+#line 4918 "Zend/zend_language_scanner.c"
 yy452:
                YYDEBUG(452, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(453, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1267 "Zend/zend_language_scanner.l"
+#line 1265 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_PROPERTY);
        return T_OBJECT_OPERATOR;
 }
-#line 4931 "Zend/zend_language_scanner.c"
+#line 4929 "Zend/zend_language_scanner.c"
 yy454:
                YYDEBUG(454, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4972,11 +4970,11 @@ yy459:
                }
                YYDEBUG(460, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1417 "Zend/zend_language_scanner.l"
+#line 1415 "Zend/zend_language_scanner.l"
                {
        return T_PUBLIC;
 }
-#line 4980 "Zend/zend_language_scanner.c"
+#line 4978 "Zend/zend_language_scanner.c"
 yy461:
                YYDEBUG(461, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5031,11 +5029,11 @@ yy468:
                }
                YYDEBUG(469, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1413 "Zend/zend_language_scanner.l"
+#line 1411 "Zend/zend_language_scanner.l"
                {
        return T_PROTECTED;
 }
-#line 5039 "Zend/zend_language_scanner.c"
+#line 5037 "Zend/zend_language_scanner.c"
 yy470:
                YYDEBUG(470, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5065,11 +5063,11 @@ yy474:
                }
                YYDEBUG(475, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1409 "Zend/zend_language_scanner.l"
+#line 1407 "Zend/zend_language_scanner.l"
                {
        return T_PRIVATE;
 }
-#line 5073 "Zend/zend_language_scanner.c"
+#line 5071 "Zend/zend_language_scanner.c"
 yy476:
                YYDEBUG(476, *YYCURSOR);
                ++YYCURSOR;
@@ -5078,11 +5076,11 @@ yy476:
                }
                YYDEBUG(477, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1243 "Zend/zend_language_scanner.l"
+#line 1241 "Zend/zend_language_scanner.l"
                {
        return T_PRINT;
 }
-#line 5086 "Zend/zend_language_scanner.c"
+#line 5084 "Zend/zend_language_scanner.c"
 yy478:
                YYDEBUG(478, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5107,11 +5105,11 @@ yy481:
                }
                YYDEBUG(482, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1235 "Zend/zend_language_scanner.l"
+#line 1233 "Zend/zend_language_scanner.l"
                {
        return T_GOTO;
 }
-#line 5115 "Zend/zend_language_scanner.c"
+#line 5113 "Zend/zend_language_scanner.c"
 yy483:
                YYDEBUG(483, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5135,11 +5133,11 @@ yy486:
                }
                YYDEBUG(487, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1381 "Zend/zend_language_scanner.l"
+#line 1379 "Zend/zend_language_scanner.l"
                {
        return T_GLOBAL;
 }
-#line 5143 "Zend/zend_language_scanner.c"
+#line 5141 "Zend/zend_language_scanner.c"
 yy488:
                YYDEBUG(488, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5176,11 +5174,11 @@ yy494:
                }
                YYDEBUG(495, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1227 "Zend/zend_language_scanner.l"
+#line 1225 "Zend/zend_language_scanner.l"
                {
        return T_BREAK;
 }
-#line 5184 "Zend/zend_language_scanner.c"
+#line 5182 "Zend/zend_language_scanner.c"
 yy496:
                YYDEBUG(496, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5220,11 +5218,11 @@ yy502:
                }
                YYDEBUG(503, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1211 "Zend/zend_language_scanner.l"
+#line 1209 "Zend/zend_language_scanner.l"
                {
        return T_SWITCH;
 }
-#line 5228 "Zend/zend_language_scanner.c"
+#line 5226 "Zend/zend_language_scanner.c"
 yy504:
                YYDEBUG(504, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5248,11 +5246,11 @@ yy507:
                }
                YYDEBUG(508, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1397 "Zend/zend_language_scanner.l"
+#line 1395 "Zend/zend_language_scanner.l"
                {
        return T_STATIC;
 }
-#line 5256 "Zend/zend_language_scanner.c"
+#line 5254 "Zend/zend_language_scanner.c"
 yy509:
                YYDEBUG(509, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5279,11 +5277,11 @@ yy512:
                }
                YYDEBUG(513, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1207 "Zend/zend_language_scanner.l"
+#line 1205 "Zend/zend_language_scanner.l"
                {
        return T_AS;
 }
-#line 5287 "Zend/zend_language_scanner.c"
+#line 5285 "Zend/zend_language_scanner.c"
 yy514:
                YYDEBUG(514, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5302,11 +5300,11 @@ yy516:
                }
                YYDEBUG(517, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1433 "Zend/zend_language_scanner.l"
+#line 1431 "Zend/zend_language_scanner.l"
                {
        return T_ARRAY;
 }
-#line 5310 "Zend/zend_language_scanner.c"
+#line 5308 "Zend/zend_language_scanner.c"
 yy518:
                YYDEBUG(518, *YYCURSOR);
                ++YYCURSOR;
@@ -5315,11 +5313,11 @@ yy518:
                }
                YYDEBUG(519, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1541 "Zend/zend_language_scanner.l"
+#line 1539 "Zend/zend_language_scanner.l"
                {
        return T_LOGICAL_AND;
 }
-#line 5323 "Zend/zend_language_scanner.c"
+#line 5321 "Zend/zend_language_scanner.c"
 yy520:
                YYDEBUG(520, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5353,11 +5351,11 @@ yy525:
                }
                YYDEBUG(526, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1401 "Zend/zend_language_scanner.l"
+#line 1399 "Zend/zend_language_scanner.l"
                {
        return T_ABSTRACT;
 }
-#line 5361 "Zend/zend_language_scanner.c"
+#line 5359 "Zend/zend_language_scanner.c"
 yy527:
                YYDEBUG(527, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5381,11 +5379,11 @@ yy530:
                }
                YYDEBUG(531, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1167 "Zend/zend_language_scanner.l"
+#line 1165 "Zend/zend_language_scanner.l"
                {
        return T_WHILE;
 }
-#line 5389 "Zend/zend_language_scanner.c"
+#line 5387 "Zend/zend_language_scanner.c"
 yy532:
                YYDEBUG(532, *YYCURSOR);
                ++YYCURSOR;
@@ -5394,11 +5392,11 @@ yy532:
                }
                YYDEBUG(533, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1151 "Zend/zend_language_scanner.l"
+#line 1149 "Zend/zend_language_scanner.l"
                {
        return T_IF;
 }
-#line 5402 "Zend/zend_language_scanner.c"
+#line 5400 "Zend/zend_language_scanner.c"
 yy534:
                YYDEBUG(534, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5450,11 +5448,11 @@ yy539:
                }
                YYDEBUG(540, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1385 "Zend/zend_language_scanner.l"
+#line 1383 "Zend/zend_language_scanner.l"
                {
        return T_ISSET;
 }
-#line 5458 "Zend/zend_language_scanner.c"
+#line 5456 "Zend/zend_language_scanner.c"
 yy541:
                YYDEBUG(541, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5508,11 +5506,11 @@ yy547:
 yy548:
                YYDEBUG(548, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1353 "Zend/zend_language_scanner.l"
+#line 1351 "Zend/zend_language_scanner.l"
                {
        return T_INCLUDE;
 }
-#line 5516 "Zend/zend_language_scanner.c"
+#line 5514 "Zend/zend_language_scanner.c"
 yy549:
                YYDEBUG(549, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5541,11 +5539,11 @@ yy553:
                }
                YYDEBUG(554, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1357 "Zend/zend_language_scanner.l"
+#line 1355 "Zend/zend_language_scanner.l"
                {
        return T_INCLUDE_ONCE;
 }
-#line 5549 "Zend/zend_language_scanner.c"
+#line 5547 "Zend/zend_language_scanner.c"
 yy555:
                YYDEBUG(555, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5579,11 +5577,11 @@ yy560:
                }
                YYDEBUG(561, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1251 "Zend/zend_language_scanner.l"
+#line 1249 "Zend/zend_language_scanner.l"
                {
        return T_INTERFACE;
 }
-#line 5587 "Zend/zend_language_scanner.c"
+#line 5585 "Zend/zend_language_scanner.c"
 yy562:
                YYDEBUG(562, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5633,11 +5631,11 @@ yy568:
                }
                YYDEBUG(569, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1377 "Zend/zend_language_scanner.l"
+#line 1375 "Zend/zend_language_scanner.l"
                {
         return T_INSTEADOF;
 }
-#line 5641 "Zend/zend_language_scanner.c"
+#line 5639 "Zend/zend_language_scanner.c"
 yy570:
                YYDEBUG(570, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5666,11 +5664,11 @@ yy574:
                }
                YYDEBUG(575, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1203 "Zend/zend_language_scanner.l"
+#line 1201 "Zend/zend_language_scanner.l"
                {
        return T_INSTANCEOF;
 }
-#line 5674 "Zend/zend_language_scanner.c"
+#line 5672 "Zend/zend_language_scanner.c"
 yy576:
                YYDEBUG(576, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5714,11 +5712,11 @@ yy583:
                }
                YYDEBUG(584, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1263 "Zend/zend_language_scanner.l"
+#line 1261 "Zend/zend_language_scanner.l"
                {
        return T_IMPLEMENTS;
 }
-#line 5722 "Zend/zend_language_scanner.c"
+#line 5720 "Zend/zend_language_scanner.c"
 yy585:
                YYDEBUG(585, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5746,11 +5744,11 @@ yy586:
                }
                YYDEBUG(588, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1135 "Zend/zend_language_scanner.l"
+#line 1133 "Zend/zend_language_scanner.l"
                {
        return T_TRY;
 }
-#line 5754 "Zend/zend_language_scanner.c"
+#line 5752 "Zend/zend_language_scanner.c"
 yy589:
                YYDEBUG(589, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5769,11 +5767,11 @@ yy591:
                }
                YYDEBUG(592, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1255 "Zend/zend_language_scanner.l"
+#line 1253 "Zend/zend_language_scanner.l"
                {
        return T_TRAIT;
 }
-#line 5777 "Zend/zend_language_scanner.c"
+#line 5775 "Zend/zend_language_scanner.c"
 yy593:
                YYDEBUG(593, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5792,11 +5790,11 @@ yy595:
                }
                YYDEBUG(596, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1147 "Zend/zend_language_scanner.l"
+#line 1145 "Zend/zend_language_scanner.l"
                {
        return T_THROW;
 }
-#line 5800 "Zend/zend_language_scanner.c"
+#line 5798 "Zend/zend_language_scanner.c"
 yy597:
                YYDEBUG(597, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5829,11 +5827,11 @@ yy600:
 yy601:
                YYDEBUG(601, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1131 "Zend/zend_language_scanner.l"
+#line 1129 "Zend/zend_language_scanner.l"
                {
        return T_YIELD;
 }
-#line 5837 "Zend/zend_language_scanner.c"
+#line 5835 "Zend/zend_language_scanner.c"
 yy602:
                YYDEBUG(602, *YYCURSOR);
                ++YYCURSOR;
@@ -5875,11 +5873,11 @@ yy607:
                ++YYCURSOR;
                YYDEBUG(608, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1127 "Zend/zend_language_scanner.l"
+#line 1125 "Zend/zend_language_scanner.l"
                {
        return T_YIELD_FROM;
 }
-#line 5883 "Zend/zend_language_scanner.c"
+#line 5881 "Zend/zend_language_scanner.c"
 yy609:
                YYDEBUG(609, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5940,11 +5938,11 @@ yy615:
 yy616:
                YYDEBUG(616, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1361 "Zend/zend_language_scanner.l"
+#line 1359 "Zend/zend_language_scanner.l"
                {
        return T_REQUIRE;
 }
-#line 5948 "Zend/zend_language_scanner.c"
+#line 5946 "Zend/zend_language_scanner.c"
 yy617:
                YYDEBUG(617, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5973,11 +5971,11 @@ yy621:
                }
                YYDEBUG(622, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1365 "Zend/zend_language_scanner.l"
+#line 1363 "Zend/zend_language_scanner.l"
                {
        return T_REQUIRE_ONCE;
 }
-#line 5981 "Zend/zend_language_scanner.c"
+#line 5979 "Zend/zend_language_scanner.c"
 yy623:
                YYDEBUG(623, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5996,11 +5994,11 @@ yy625:
                }
                YYDEBUG(626, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1123 "Zend/zend_language_scanner.l"
+#line 1121 "Zend/zend_language_scanner.l"
                {
        return T_RETURN;
 }
-#line 6004 "Zend/zend_language_scanner.c"
+#line 6002 "Zend/zend_language_scanner.c"
 yy627:
                YYDEBUG(627, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6090,11 +6088,11 @@ yy636:
                }
                YYDEBUG(637, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1231 "Zend/zend_language_scanner.l"
+#line 1229 "Zend/zend_language_scanner.l"
                {
        return T_CONTINUE;
 }
-#line 6098 "Zend/zend_language_scanner.c"
+#line 6096 "Zend/zend_language_scanner.c"
 yy638:
                YYDEBUG(638, *YYCURSOR);
                ++YYCURSOR;
@@ -6103,11 +6101,11 @@ yy638:
                }
                YYDEBUG(639, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1119 "Zend/zend_language_scanner.l"
+#line 1117 "Zend/zend_language_scanner.l"
                {
        return T_CONST;
 }
-#line 6111 "Zend/zend_language_scanner.c"
+#line 6109 "Zend/zend_language_scanner.c"
 yy640:
                YYDEBUG(640, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6132,11 +6130,11 @@ yy643:
                }
                YYDEBUG(644, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1313 "Zend/zend_language_scanner.l"
+#line 1311 "Zend/zend_language_scanner.l"
                {
        return T_CLONE;
 }
-#line 6140 "Zend/zend_language_scanner.c"
+#line 6138 "Zend/zend_language_scanner.c"
 yy645:
                YYDEBUG(645, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6150,11 +6148,11 @@ yy646:
                }
                YYDEBUG(647, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1247 "Zend/zend_language_scanner.l"
+#line 1245 "Zend/zend_language_scanner.l"
                {
        return T_CLASS;
 }
-#line 6158 "Zend/zend_language_scanner.c"
+#line 6156 "Zend/zend_language_scanner.c"
 yy648:
                YYDEBUG(648, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6200,11 +6198,11 @@ yy655:
                }
                YYDEBUG(656, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1437 "Zend/zend_language_scanner.l"
+#line 1435 "Zend/zend_language_scanner.l"
                {
  return T_CALLABLE;
 }
-#line 6208 "Zend/zend_language_scanner.c"
+#line 6206 "Zend/zend_language_scanner.c"
 yy657:
                YYDEBUG(657, *YYCURSOR);
                ++YYCURSOR;
@@ -6213,11 +6211,11 @@ yy657:
                }
                YYDEBUG(658, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1219 "Zend/zend_language_scanner.l"
+#line 1217 "Zend/zend_language_scanner.l"
                {
        return T_CASE;
 }
-#line 6221 "Zend/zend_language_scanner.c"
+#line 6219 "Zend/zend_language_scanner.c"
 yy659:
                YYDEBUG(659, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6231,11 +6229,11 @@ yy660:
                }
                YYDEBUG(661, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1139 "Zend/zend_language_scanner.l"
+#line 1137 "Zend/zend_language_scanner.l"
                {
        return T_CATCH;
 }
-#line 6239 "Zend/zend_language_scanner.c"
+#line 6237 "Zend/zend_language_scanner.c"
 yy662:
                YYDEBUG(662, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6286,11 +6284,11 @@ yy670:
                }
                YYDEBUG(671, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1115 "Zend/zend_language_scanner.l"
+#line 1113 "Zend/zend_language_scanner.l"
                {
        return T_FUNCTION;
 }
-#line 6294 "Zend/zend_language_scanner.c"
+#line 6292 "Zend/zend_language_scanner.c"
 yy672:
                YYDEBUG(672, *YYCURSOR);
                ++YYCURSOR;
@@ -6314,11 +6312,11 @@ yy672:
 yy673:
                YYDEBUG(673, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1179 "Zend/zend_language_scanner.l"
+#line 1177 "Zend/zend_language_scanner.l"
                {
        return T_FOR;
 }
-#line 6322 "Zend/zend_language_scanner.c"
+#line 6320 "Zend/zend_language_scanner.c"
 yy674:
                YYDEBUG(674, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6342,11 +6340,11 @@ yy677:
                }
                YYDEBUG(678, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1187 "Zend/zend_language_scanner.l"
+#line 1185 "Zend/zend_language_scanner.l"
                {
        return T_FOREACH;
 }
-#line 6350 "Zend/zend_language_scanner.c"
+#line 6348 "Zend/zend_language_scanner.c"
 yy679:
                YYDEBUG(679, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6380,11 +6378,11 @@ yy681:
 yy682:
                YYDEBUG(682, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1405 "Zend/zend_language_scanner.l"
+#line 1403 "Zend/zend_language_scanner.l"
                {
        return T_FINAL;
 }
-#line 6388 "Zend/zend_language_scanner.c"
+#line 6386 "Zend/zend_language_scanner.c"
 yy683:
                YYDEBUG(683, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6398,11 +6396,11 @@ yy684:
                }
                YYDEBUG(685, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1143 "Zend/zend_language_scanner.l"
+#line 1141 "Zend/zend_language_scanner.l"
                {
        return T_FINALLY;
 }
-#line 6406 "Zend/zend_language_scanner.c"
+#line 6404 "Zend/zend_language_scanner.c"
 yy686:
                YYDEBUG(686, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6433,11 +6431,11 @@ yy688:
                }
                YYDEBUG(689, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1175 "Zend/zend_language_scanner.l"
+#line 1173 "Zend/zend_language_scanner.l"
                {
        return T_DO;
 }
-#line 6441 "Zend/zend_language_scanner.c"
+#line 6439 "Zend/zend_language_scanner.c"
 yy690:
                YYDEBUG(690, *YYCURSOR);
                ++YYCURSOR;
@@ -6446,11 +6444,11 @@ yy690:
                }
                YYDEBUG(691, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1111 "Zend/zend_language_scanner.l"
+#line 1109 "Zend/zend_language_scanner.l"
                {
        return T_EXIT;
 }
-#line 6454 "Zend/zend_language_scanner.c"
+#line 6452 "Zend/zend_language_scanner.c"
 yy692:
                YYDEBUG(692, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6485,11 +6483,11 @@ yy697:
                }
                YYDEBUG(698, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1223 "Zend/zend_language_scanner.l"
+#line 1221 "Zend/zend_language_scanner.l"
                {
        return T_DEFAULT;
 }
-#line 6493 "Zend/zend_language_scanner.c"
+#line 6491 "Zend/zend_language_scanner.c"
 yy699:
                YYDEBUG(699, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6513,11 +6511,11 @@ yy702:
                }
                YYDEBUG(703, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1195 "Zend/zend_language_scanner.l"
+#line 1193 "Zend/zend_language_scanner.l"
                {
        return T_DECLARE;
 }
-#line 6521 "Zend/zend_language_scanner.c"
+#line 6519 "Zend/zend_language_scanner.c"
 yy704:
                YYDEBUG(704, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6597,11 +6595,11 @@ yy715:
                }
                YYDEBUG(716, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1259 "Zend/zend_language_scanner.l"
+#line 1257 "Zend/zend_language_scanner.l"
                {
        return T_EXTENDS;
 }
-#line 6605 "Zend/zend_language_scanner.c"
+#line 6603 "Zend/zend_language_scanner.c"
 yy717:
                YYDEBUG(717, *YYCURSOR);
                ++YYCURSOR;
@@ -6610,11 +6608,11 @@ yy717:
                }
                YYDEBUG(718, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1107 "Zend/zend_language_scanner.l"
+#line 1105 "Zend/zend_language_scanner.l"
                {
        return T_EXIT;
 }
-#line 6618 "Zend/zend_language_scanner.c"
+#line 6616 "Zend/zend_language_scanner.c"
 yy719:
                YYDEBUG(719, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6628,11 +6626,11 @@ yy720:
                }
                YYDEBUG(721, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1349 "Zend/zend_language_scanner.l"
+#line 1347 "Zend/zend_language_scanner.l"
                {
        return T_EVAL;
 }
-#line 6636 "Zend/zend_language_scanner.c"
+#line 6634 "Zend/zend_language_scanner.c"
 yy722:
                YYDEBUG(722, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6702,11 +6700,11 @@ yy731:
                }
                YYDEBUG(732, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1171 "Zend/zend_language_scanner.l"
+#line 1169 "Zend/zend_language_scanner.l"
                {
        return T_ENDWHILE;
 }
-#line 6710 "Zend/zend_language_scanner.c"
+#line 6708 "Zend/zend_language_scanner.c"
 yy733:
                YYDEBUG(733, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6735,11 +6733,11 @@ yy737:
                }
                YYDEBUG(738, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1215 "Zend/zend_language_scanner.l"
+#line 1213 "Zend/zend_language_scanner.l"
                {
        return T_ENDSWITCH;
 }
-#line 6743 "Zend/zend_language_scanner.c"
+#line 6741 "Zend/zend_language_scanner.c"
 yy739:
                YYDEBUG(739, *YYCURSOR);
                ++YYCURSOR;
@@ -6748,11 +6746,11 @@ yy739:
                }
                YYDEBUG(740, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1159 "Zend/zend_language_scanner.l"
+#line 1157 "Zend/zend_language_scanner.l"
                {
        return T_ENDIF;
 }
-#line 6756 "Zend/zend_language_scanner.c"
+#line 6754 "Zend/zend_language_scanner.c"
 yy741:
                YYDEBUG(741, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6781,11 +6779,11 @@ yy742:
 yy743:
                YYDEBUG(743, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1183 "Zend/zend_language_scanner.l"
+#line 1181 "Zend/zend_language_scanner.l"
                {
        return T_ENDFOR;
 }
-#line 6789 "Zend/zend_language_scanner.c"
+#line 6787 "Zend/zend_language_scanner.c"
 yy744:
                YYDEBUG(744, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6809,11 +6807,11 @@ yy747:
                }
                YYDEBUG(748, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1191 "Zend/zend_language_scanner.l"
+#line 1189 "Zend/zend_language_scanner.l"
                {
        return T_ENDFOREACH;
 }
-#line 6817 "Zend/zend_language_scanner.c"
+#line 6815 "Zend/zend_language_scanner.c"
 yy749:
                YYDEBUG(749, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6847,11 +6845,11 @@ yy754:
                }
                YYDEBUG(755, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1199 "Zend/zend_language_scanner.l"
+#line 1197 "Zend/zend_language_scanner.l"
                {
        return T_ENDDECLARE;
 }
-#line 6855 "Zend/zend_language_scanner.c"
+#line 6853 "Zend/zend_language_scanner.c"
 yy756:
                YYDEBUG(756, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6870,11 +6868,11 @@ yy758:
                }
                YYDEBUG(759, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1389 "Zend/zend_language_scanner.l"
+#line 1387 "Zend/zend_language_scanner.l"
                {
        return T_EMPTY;
 }
-#line 6878 "Zend/zend_language_scanner.c"
+#line 6876 "Zend/zend_language_scanner.c"
 yy760:
                YYDEBUG(760, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6903,11 +6901,11 @@ yy761:
 yy762:
                YYDEBUG(762, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1163 "Zend/zend_language_scanner.l"
+#line 1161 "Zend/zend_language_scanner.l"
                {
        return T_ELSE;
 }
-#line 6911 "Zend/zend_language_scanner.c"
+#line 6909 "Zend/zend_language_scanner.c"
 yy763:
                YYDEBUG(763, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6921,11 +6919,11 @@ yy764:
                }
                YYDEBUG(765, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1155 "Zend/zend_language_scanner.l"
+#line 1153 "Zend/zend_language_scanner.l"
                {
        return T_ELSEIF;
 }
-#line 6929 "Zend/zend_language_scanner.c"
+#line 6927 "Zend/zend_language_scanner.c"
 yy766:
                YYDEBUG(766, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6939,11 +6937,11 @@ yy767:
                }
                YYDEBUG(768, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1239 "Zend/zend_language_scanner.l"
+#line 1237 "Zend/zend_language_scanner.l"
                {
        return T_ECHO;
 }
-#line 6947 "Zend/zend_language_scanner.c"
+#line 6945 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_LOOKING_FOR_PROPERTY:
@@ -7016,12 +7014,12 @@ yy771:
 yy772:
                YYDEBUG(772, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1272 "Zend/zend_language_scanner.l"
+#line 1270 "Zend/zend_language_scanner.l"
                {
        HANDLE_NEWLINES(yytext, yyleng);
        return T_WHITESPACE;
 }
-#line 7025 "Zend/zend_language_scanner.c"
+#line 7023 "Zend/zend_language_scanner.c"
 yy773:
                YYDEBUG(773, *YYCURSOR);
                ++YYCURSOR;
@@ -7029,13 +7027,13 @@ yy773:
 yy774:
                YYDEBUG(774, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1287 "Zend/zend_language_scanner.l"
+#line 1285 "Zend/zend_language_scanner.l"
                {
        yyless(0);
        yy_pop_state();
        goto restart;
 }
-#line 7039 "Zend/zend_language_scanner.c"
+#line 7037 "Zend/zend_language_scanner.c"
 yy775:
                YYDEBUG(775, *YYCURSOR);
                ++YYCURSOR;
@@ -7044,13 +7042,13 @@ yy775:
 yy776:
                YYDEBUG(776, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1281 "Zend/zend_language_scanner.l"
+#line 1279 "Zend/zend_language_scanner.l"
                {
        yy_pop_state();
        zend_copy_value(zendlval, yytext, yyleng);
        return T_STRING;
 }
-#line 7054 "Zend/zend_language_scanner.c"
+#line 7052 "Zend/zend_language_scanner.c"
 yy777:
                YYDEBUG(777, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7071,11 +7069,11 @@ yy780:
                ++YYCURSOR;
                YYDEBUG(781, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1277 "Zend/zend_language_scanner.l"
+#line 1275 "Zend/zend_language_scanner.l"
                {
        return T_OBJECT_OPERATOR;
 }
-#line 7079 "Zend/zend_language_scanner.c"
+#line 7077 "Zend/zend_language_scanner.c"
 yy782:
                YYDEBUG(782, *YYCURSOR);
                ++YYCURSOR;
@@ -7160,14 +7158,14 @@ yy786:
 yy787:
                YYDEBUG(787, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1592 "Zend/zend_language_scanner.l"
+#line 1590 "Zend/zend_language_scanner.l"
                {
        yyless(0);
        yy_pop_state();
        yy_push_state(ST_IN_SCRIPTING);
        goto restart;
 }
-#line 7171 "Zend/zend_language_scanner.c"
+#line 7169 "Zend/zend_language_scanner.c"
 yy788:
                YYDEBUG(788, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7192,7 +7190,7 @@ yy792:
                ++YYCURSOR;
                YYDEBUG(793, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1583 "Zend/zend_language_scanner.l"
+#line 1581 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        zend_copy_value(zendlval, yytext, yyleng);
@@ -7200,7 +7198,7 @@ yy792:
        yy_push_state(ST_IN_SCRIPTING);
        return T_STRING_VARNAME;
 }
-#line 7204 "Zend/zend_language_scanner.c"
+#line 7202 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_NOWDOC:
@@ -7211,7 +7209,7 @@ yyc_ST_NOWDOC:
        ++YYCURSOR;
        YYDEBUG(797, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 2316 "Zend/zend_language_scanner.l"
+#line 2314 "Zend/zend_language_scanner.l"
        {
        int newline = 0;
 
@@ -7267,7 +7265,7 @@ nowdoc_scan_done:
        HANDLE_NEWLINES(yytext, yyleng - newline);
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 7271 "Zend/zend_language_scanner.c"
+#line 7269 "Zend/zend_language_scanner.c"
 /* *********************************** */
 yyc_ST_VAR_OFFSET:
        {
@@ -7374,7 +7372,7 @@ yy800:
 yy801:
                YYDEBUG(801, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1697 "Zend/zend_language_scanner.l"
+#line 1695 "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;
@@ -7390,7 +7388,7 @@ string:
        }
        return T_NUM_STRING;
 }
-#line 7394 "Zend/zend_language_scanner.c"
+#line 7392 "Zend/zend_language_scanner.c"
 yy802:
                YYDEBUG(802, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7410,23 +7408,23 @@ yy803:
 yy804:
                YYDEBUG(804, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1857 "Zend/zend_language_scanner.l"
+#line 1855 "Zend/zend_language_scanner.l"
                {
        /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */
        return yytext[0];
 }
-#line 7419 "Zend/zend_language_scanner.c"
+#line 7417 "Zend/zend_language_scanner.c"
 yy805:
                YYDEBUG(805, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(806, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1852 "Zend/zend_language_scanner.l"
+#line 1850 "Zend/zend_language_scanner.l"
                {
        yy_pop_state();
        return ']';
 }
-#line 7430 "Zend/zend_language_scanner.c"
+#line 7428 "Zend/zend_language_scanner.c"
 yy807:
                YYDEBUG(807, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7436,7 +7434,7 @@ yy808:
                ++YYCURSOR;
                YYDEBUG(809, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1862 "Zend/zend_language_scanner.l"
+#line 1860 "Zend/zend_language_scanner.l"
                {
        /* Invalid rule to return a more explicit parse error with proper line number */
        yyless(0);
@@ -7444,7 +7442,7 @@ yy808:
        ZVAL_NULL(zendlval);
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 7448 "Zend/zend_language_scanner.c"
+#line 7446 "Zend/zend_language_scanner.c"
 yy810:
                YYDEBUG(810, *YYCURSOR);
                ++YYCURSOR;
@@ -7453,18 +7451,18 @@ yy810:
 yy811:
                YYDEBUG(811, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1870 "Zend/zend_language_scanner.l"
+#line 1868 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        return T_STRING;
 }
-#line 7462 "Zend/zend_language_scanner.c"
+#line 7460 "Zend/zend_language_scanner.c"
 yy812:
                YYDEBUG(812, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(813, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2373 "Zend/zend_language_scanner.l"
+#line 2371 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -7473,7 +7471,7 @@ yy812:
        zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
        goto restart;
 }
-#line 7477 "Zend/zend_language_scanner.c"
+#line 7475 "Zend/zend_language_scanner.c"
 yy814:
                YYDEBUG(814, *YYCURSOR);
                ++YYCURSOR;
@@ -7509,12 +7507,12 @@ yy816:
 yy818:
                YYDEBUG(818, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1847 "Zend/zend_language_scanner.l"
+#line 1845 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 7518 "Zend/zend_language_scanner.c"
+#line 7516 "Zend/zend_language_scanner.c"
 yy819:
                YYDEBUG(819, *YYCURSOR);
                ++YYCURSOR;
@@ -7554,12 +7552,12 @@ yy824:
 yy826:
                YYDEBUG(826, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1713 "Zend/zend_language_scanner.l"
+#line 1711 "Zend/zend_language_scanner.l"
                { /* Offset must be treated as a string */
        ZVAL_STRINGL(zendlval, yytext, yyleng);
        return T_NUM_STRING;
 }
-#line 7563 "Zend/zend_language_scanner.c"
+#line 7561 "Zend/zend_language_scanner.c"
 yy827:
                YYDEBUG(827, *YYCURSOR);
                ++YYCURSOR;
@@ -7582,6 +7580,6 @@ yy829:
                goto yy826;
        }
 }
-#line 2382 "Zend/zend_language_scanner.l"
+#line 2380 "Zend/zend_language_scanner.l"
 
 }
index c94792a3583b4bdb709c6b9573c93433221c63f3..c778a9a4c3d74dfbae5239962e1506a81fb4756d 100644 (file)
@@ -593,7 +593,6 @@ ZEND_API zend_op_array *compile_file(zend_file_handle *file_handle, int type)
                        zend_file_context_begin(&original_file_context);
                        zend_oparray_context_begin(&original_oparray_context);
                        zend_compile_top_stmt(CG(ast));
-                       zend_do_end_compilation();
                        zend_emit_final_return(&retval_zv);
                        pass_two(op_array);
                        zend_oparray_context_end(&original_oparray_context);
@@ -757,7 +756,6 @@ zend_op_array *compile_string(zval *source_string, char *filename)
                        zend_file_context_begin(&original_file_context);
                        zend_oparray_context_begin(&original_oparray_context);
                        zend_compile_top_stmt(CG(ast));
-                       zend_do_end_compilation();
                        zend_emit_final_return(NULL);
                        pass_two(op_array);
                        zend_oparray_context_end(&original_oparray_context);