diff --git a/Zend/tests/attributes_001.phpt b/Zend/tests/attributes_001.phpt new file mode 100644 index 0000000000000..e3d0236b6368c --- /dev/null +++ b/Zend/tests/attributes_001.phpt @@ -0,0 +1,203 @@ +--TEST-- +Basic attributes usage +--FILE-- +getAttributes()); + +// Function attributes +<> +function foo() { +} +$r = new ReflectionFunction("foo"); +var_dump($r->getAttributes()); + +// Class attributes +<> +class Bar { + <> + const C = 2; + <> + public $x = 3; + +} +$r = new ReflectionClass("Bar"); +var_dump($r->getAttributes()); +$r1 = $r->getReflectionConstant("C"); +var_dump($r1->getAttributes()); +$r2 = $r->getProperty("x"); +var_dump($r2->getAttributes()); + +// Multiple attributes with multiple values +<> +function f1() {} +$r = new ReflectionFunction("f1"); +var_dump($r->getAttributes()); + +// Attributes with AST +<1,"b"=>2])>> +function f2() {} +$r = new ReflectionFunction("f2"); +var_dump($r->getAttributes()); + +// Attributes with namespaces +<> +function f4() { +} +$r = new ReflectionFunction("f4"); +var_dump($r->getAttributes()); +?> +--EXPECT-- +array(0) { +} +array(1) { + ["TestFunction"]=> + array(0) { + } +} +array(1) { + ["TestClass"]=> + array(0) { + } +} +array(1) { + ["TestConst"]=> + array(0) { + } +} +array(1) { + ["TestProp"]=> + array(0) { + } +} +array(3) { + ["a1"]=> + array(0) { + } + ["a2"]=> + array(1) { + [0]=> + int(1) + } + ["a3"]=> + array(2) { + [0]=> + int(1) + [1]=> + int(2) + } +} +array(4) { + ["a1"]=> + array(0) { + } + ["a2"]=> + array(1) { + [0]=> + object(ast\Node)#4 (4) { + ["kind"]=> + int(520) + ["flags"]=> + int(1) + ["lineno"]=> + NULL + ["children"]=> + array(2) { + [0]=> + int(1) + [1]=> + string(1) "a" + } + } + } + ["a3"]=> + array(2) { + [0]=> + object(ast\Node)#5 (4) { + ["kind"]=> + int(520) + ["flags"]=> + int(1) + ["lineno"]=> + NULL + ["children"]=> + array(2) { + [0]=> + int(1) + [1]=> + string(1) "b" + } + } + [1]=> + object(ast\Node)#6 (4) { + ["kind"]=> + int(520) + ["flags"]=> + int(1) + ["lineno"]=> + NULL + ["children"]=> + array(2) { + [0]=> + int(2) + [1]=> + string(1) "c" + } + } + } + ["a4"]=> + array(1) { + [0]=> + object(ast\Node)#7 (4) { + ["kind"]=> + int(130) + ["flags"]=> + int(0) + ["lineno"]=> + NULL + ["children"]=> + array(2) { + [0]=> + object(ast\Node)#8 (4) { + ["kind"]=> + int(525) + ["flags"]=> + int(0) + ["lineno"]=> + NULL + ["children"]=> + array(2) { + [0]=> + int(1) + [1]=> + string(1) "a" + } + } + [1]=> + object(ast\Node)#9 (4) { + ["kind"]=> + int(525) + ["flags"]=> + int(0) + ["lineno"]=> + NULL + ["children"]=> + array(2) { + [0]=> + int(2) + [1]=> + string(1) "b" + } + } + } + } + } +} +array(1) { + ["Foo\Bar"]=> + array(0) { + } +} diff --git a/Zend/tests/attributes_002.phpt b/Zend/tests/attributes_002.phpt new file mode 100644 index 0000000000000..83d64bf0b70f1 --- /dev/null +++ b/Zend/tests/attributes_002.phpt @@ -0,0 +1,39 @@ +--TEST-- +Doctrine-like attributes usage +--FILE-- +name = $name; + } + } + + function GetClassAttributes($class_name) { + $reflClass = new \ReflectionClass($class_name); + $attrs = $reflClass->getAttributes(); + foreach ($attrs as $name => &$values) { + $name = "Doctrine\\" . $name; + $values = new $name(...$values); + } + return $attrs; + } +} + +namespace { + <> + class User {} + + var_dump(Doctrine\ORM\GetClassAttributes("User")); +} +?> +--EXPECT-- +array(1) { + ["ORM\Entity"]=> + object(Doctrine\ORM\Entity)#2 (1) { + ["name":"Doctrine\ORM\Entity":private]=> + string(4) "user" + } +} diff --git a/Zend/zend.h b/Zend/zend.h index e886ba20d374c..ecad67fec520f 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -179,6 +179,7 @@ struct _zend_class_entry { uint32_t line_start; uint32_t line_end; zend_string *doc_comment; + HashTable *attributes; } user; struct { const struct _zend_function_entry *builtin_functions; diff --git a/Zend/zend_API.c b/Zend/zend_API.c index f6468834352dd..ee570bee1205b 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -3598,7 +3598,7 @@ ZEND_API const char *zend_get_module_version(const char *module_name) /* {{{ */ } /* }}} */ -ZEND_API int zend_declare_property_ex(zend_class_entry *ce, zend_string *name, zval *property, int access_type, zend_string *doc_comment) /* {{{ */ +ZEND_API int zend_declare_property_ex(zend_class_entry *ce, zend_string *name, zval *property, int access_type, zend_string *doc_comment, HashTable *attributes) /* {{{ */ { zend_property_info *property_info, *property_info_ptr; @@ -3667,6 +3667,7 @@ ZEND_API int zend_declare_property_ex(zend_class_entry *ce, zend_string *name, z property_info->name = zend_new_interned_string(property_info->name); property_info->flags = access_type; property_info->doc_comment = doc_comment; + property_info->attributes = attributes; property_info->ce = ce; zend_hash_update_ptr(&ce->properties_info, name, property_info); @@ -3677,7 +3678,7 @@ ZEND_API int zend_declare_property_ex(zend_class_entry *ce, zend_string *name, z ZEND_API int zend_declare_property(zend_class_entry *ce, const char *name, size_t name_length, zval *property, int access_type) /* {{{ */ { zend_string *key = zend_string_init(name, name_length, ce->type & ZEND_INTERNAL_CLASS); - int ret = zend_declare_property_ex(ce, key, property, access_type, NULL); + int ret = zend_declare_property_ex(ce, key, property, access_type, NULL, NULL); zend_string_release(key); return ret; } @@ -3737,7 +3738,7 @@ ZEND_API int zend_declare_property_stringl(zend_class_entry *ce, const char *nam } /* }}} */ -ZEND_API int zend_declare_class_constant_ex(zend_class_entry *ce, zend_string *name, zval *value, int access_type, zend_string *doc_comment) /* {{{ */ +ZEND_API int zend_declare_class_constant_ex(zend_class_entry *ce, zend_string *name, zval *value, int access_type, zend_string *doc_comment, HashTable *attributes) /* {{{ */ { zend_class_constant *c; @@ -3760,6 +3761,7 @@ ZEND_API int zend_declare_class_constant_ex(zend_class_entry *ce, zend_string *n ZVAL_COPY_VALUE(&c->value, value); Z_ACCESS_FLAGS(c->value) = access_type; c->doc_comment = doc_comment; + c->attributes = attributes; c->ce = ce; if (Z_CONSTANT_P(value)) { ce->ce_flags &= ~ZEND_ACC_CONSTANTS_UPDATED; @@ -3779,7 +3781,7 @@ ZEND_API int zend_declare_class_constant(zend_class_entry *ce, const char *name, int ret; zend_string *key = zend_string_init(name, name_length, ce->type & ZEND_INTERNAL_CLASS); - ret = zend_declare_class_constant_ex(ce, key, value, ZEND_ACC_PUBLIC, NULL); + ret = zend_declare_class_constant_ex(ce, key, value, ZEND_ACC_PUBLIC, NULL, NULL); zend_string_release(key); return ret; } diff --git a/Zend/zend_API.h b/Zend/zend_API.h index 1078b257eb447..b2202eefa51e3 100644 --- a/Zend/zend_API.h +++ b/Zend/zend_API.h @@ -313,7 +313,7 @@ ZEND_API zend_bool zend_is_callable(zval *callable, uint check_flags, zend_strin ZEND_API zend_bool zend_make_callable(zval *callable, zend_string **callable_name); ZEND_API const char *zend_get_module_version(const char *module_name); ZEND_API int zend_get_module_started(const char *module_name); -ZEND_API int zend_declare_property_ex(zend_class_entry *ce, zend_string *name, zval *property, int access_type, zend_string *doc_comment); +ZEND_API int zend_declare_property_ex(zend_class_entry *ce, zend_string *name, zval *property, int access_type, zend_string *doc_comment, HashTable *attributes); ZEND_API int zend_declare_property(zend_class_entry *ce, const char *name, size_t name_length, zval *property, int access_type); ZEND_API int zend_declare_property_null(zend_class_entry *ce, const char *name, size_t name_length, int access_type); ZEND_API int zend_declare_property_bool(zend_class_entry *ce, const char *name, size_t name_length, zend_long value, int access_type); @@ -322,7 +322,7 @@ ZEND_API int zend_declare_property_double(zend_class_entry *ce, const char *name ZEND_API int zend_declare_property_string(zend_class_entry *ce, const char *name, size_t name_length, const char *value, int access_type); ZEND_API int zend_declare_property_stringl(zend_class_entry *ce, const char *name, size_t name_length, const char *value, size_t value_len, int access_type); -ZEND_API int zend_declare_class_constant_ex(zend_class_entry *ce, zend_string *name, zval *value, int access_type, zend_string *doc_comment); +ZEND_API int zend_declare_class_constant_ex(zend_class_entry *ce, zend_string *name, zval *value, int access_type, zend_string *doc_comment, HashTable *attributes); ZEND_API int zend_declare_class_constant(zend_class_entry *ce, const char *name, size_t name_length, zval *value); ZEND_API int zend_declare_class_constant_null(zend_class_entry *ce, const char *name, size_t name_length); ZEND_API int zend_declare_class_constant_long(zend_class_entry *ce, const char *name, size_t name_length, zend_long value); @@ -623,6 +623,7 @@ END_EXTERN_C() #define RETVAL_EMPTY_STRING() ZVAL_EMPTY_STRING(return_value) #define RETVAL_RES(r) ZVAL_RES(return_value, r) #define RETVAL_ARR(r) ZVAL_ARR(return_value, r) +#define RETVAL_IMMUTABLE_ARR(r) ZVAL_IMMUTABLE_ARR(return_value, r) #define RETVAL_OBJ(r) ZVAL_OBJ(return_value, r) #define RETVAL_ZVAL(zv, copy, dtor) ZVAL_ZVAL(return_value, zv, copy, dtor) #define RETVAL_FALSE ZVAL_FALSE(return_value) @@ -641,6 +642,7 @@ END_EXTERN_C() #define RETURN_EMPTY_STRING() { RETVAL_EMPTY_STRING(); return; } #define RETURN_RES(r) { RETVAL_RES(r); return; } #define RETURN_ARR(r) { RETVAL_ARR(r); return; } +#define RETURN_IMMUTABLE_ARR(r) { RETVAL_IMMUTABLE_ARR(r); return; } #define RETURN_OBJ(r) { RETVAL_OBJ(r); return; } #define RETURN_ZVAL(zv, copy, dtor) { RETVAL_ZVAL(zv, copy, dtor); return; } #define RETURN_FALSE { RETVAL_FALSE; return; } diff --git a/Zend/zend_ast.c b/Zend/zend_ast.c index 2636d2d561750..5b086883e4449 100644 --- a/Zend/zend_ast.c +++ b/Zend/zend_ast.c @@ -69,7 +69,7 @@ ZEND_API zend_ast *zend_ast_create_zval_ex(zval *zv, zend_ast_attr attr) { } ZEND_API zend_ast *zend_ast_create_decl( - zend_ast_kind kind, uint32_t flags, uint32_t start_lineno, zend_string *doc_comment, + zend_ast_kind kind, uint32_t flags, uint32_t start_lineno, zend_string *doc_comment, HashTable *attributes, zend_string *name, zend_ast *child0, zend_ast *child1, zend_ast *child2, zend_ast *child3 ) { zend_ast_decl *ast; @@ -82,6 +82,7 @@ ZEND_API zend_ast *zend_ast_create_decl( ast->flags = flags; ast->lex_pos = LANG_SCNG(yy_text); ast->doc_comment = doc_comment; + ast->attributes = attributes; ast->name = name; ast->child[0] = child0; ast->child[1] = child1; @@ -493,6 +494,9 @@ static void zend_ast_destroy_ex(zend_ast *ast, zend_bool free) { if (decl->doc_comment) { zend_string_release(decl->doc_comment); } + if (decl->attributes) { + zend_array_ptr_dtor(decl->attributes); + } zend_ast_destroy_ex(decl->child[0], free); zend_ast_destroy_ex(decl->child[1], free); zend_ast_destroy_ex(decl->child[2], free); @@ -1707,3 +1711,159 @@ ZEND_API zend_string *zend_ast_export(const char *prefix, zend_ast *ast, const c smart_str_0(&str); return str.s; } + +ZEND_API zend_class_entry *zend_ast_node_ce = NULL; +ZEND_API zend_class_entry *zend_ast_decl_ce = NULL; + +ZEND_API void zend_ast_convert_attributes(zval *ret, HashTable *attributes) +{ + zval *val, tmp; + HashTable *ht, *ht2, *res_ht; + zend_string *key; + int convert_ast = 0; + + ZEND_HASH_FOREACH_VAL(attributes, val) { + if (Z_TYPE_P(val) == IS_CONSTANT_AST) { + convert_ast = 1; + break; + } else if (Z_TYPE_P(val) == IS_ARRAY) { + ht = Z_ARR_P(val); + ZEND_HASH_FOREACH_VAL(ht, val) { + if (Z_TYPE_P(val) == IS_CONSTANT_AST) { + convert_ast = 1; + break; + } + } ZEND_HASH_FOREACH_END(); + if (convert_ast) { + break; + } + } + } ZEND_HASH_FOREACH_END(); + + if (convert_ast) { + array_init_size(ret, zend_hash_num_elements(attributes)); + res_ht = Z_ARR_P(ret); + ZEND_HASH_FOREACH_STR_KEY_VAL(attributes, key, val) { + if (Z_TYPE_P(val) == IS_CONSTANT_AST) { + zend_ast_convert_to_object(&tmp, Z_ASTVAL_P(val)); + zend_hash_add_new(res_ht, key, &tmp); + } else if (Z_TYPE_P(val) == IS_ARRAY) { + ht = Z_ARR_P(val); + array_init_size(&tmp, zend_hash_num_elements(ht)); + val = zend_hash_add_new(res_ht, key, &tmp); + ht2 = Z_ARR_P(val); + ZEND_HASH_FOREACH_VAL(ht, val) { + if (Z_TYPE_P(val) == IS_CONSTANT_AST) { + zend_ast_convert_to_object(&tmp, Z_ASTVAL_P(val)); + zend_hash_next_index_insert_new(ht2, &tmp); + } else { + if (Z_REFCOUNTED_P(val)) { + Z_ADDREF_P(val); + } + zend_hash_next_index_insert_new(ht2, val); + } + } ZEND_HASH_FOREACH_END(); + } else { + if (Z_REFCOUNTED_P(val)) { + Z_ADDREF_P(val); + } + zend_hash_add_new(res_ht, key, val); + } + } ZEND_HASH_FOREACH_END(); + } else if (GC_FLAGS(attributes) & IS_ARRAY_IMMUTABLE) { + ZVAL_IMMUTABLE_ARR(ret, attributes); + } else { + GC_REFCOUNT(attributes)++; + ZVAL_ARR(ret, attributes); + } +} + +ZEND_API void zend_ast_convert_to_object(zval *ret, zend_ast *ast) +{ + uint32_t i, children; + zend_object *obj; + HashTable *ht; + zval tmp; + + if (ast->kind == ZEND_AST_ZVAL) { + ZVAL_COPY(ret, zend_ast_get_zval(ast)); + } else if ((ast->kind >> ZEND_AST_SPECIAL_SHIFT) & 1) { + zend_ast_decl *decl = (zend_ast_decl *)ast; + + ZEND_ASSERT(ast->kind != ZEND_AST_ZNODE); + + object_init_ex(ret, zend_ast_decl_ce); + obj = Z_OBJ_P(ret); + ZVAL_LONG(OBJ_PROP_NUM(obj, 0), decl->kind); + ZVAL_LONG(OBJ_PROP_NUM(obj, 1), decl->attr); + ZVAL_LONG(OBJ_PROP_NUM(obj, 2), decl->start_lineno); + children = 4; + array_init_size(OBJ_PROP_NUM(obj, 3), children); + ht = Z_ARR_P(OBJ_PROP_NUM(obj, 3)); + for (i = 0; i < children; i++) { + zend_ast_convert_to_object(&tmp, decl->child[i]); + zend_hash_index_add_new(ht, i, &tmp); + } + ZVAL_LONG(OBJ_PROP_NUM(obj, 4), decl->end_lineno); + if (decl->name) { + ZVAL_STR_COPY(OBJ_PROP_NUM(obj, 5), decl->name); + } + if (decl->doc_comment) { + ZVAL_STR_COPY(OBJ_PROP_NUM(obj, 6), decl->doc_comment); + } + if (decl->attributes) { + zend_ast_convert_attributes(OBJ_PROP_NUM(obj, 7), decl->attributes); + } + } else if (zend_ast_is_list(ast)) { + zend_ast_list *list = zend_ast_get_list(ast); + + object_init_ex(ret, zend_ast_node_ce); + obj = Z_OBJ_P(ret); + ZVAL_LONG(OBJ_PROP_NUM(obj, 0), list->kind); + ZVAL_LONG(OBJ_PROP_NUM(obj, 1), list->attr); + /* PHP parser doesn't capture positions of all AST nodes */ + /* ZVAL_LONG(OBJ_PROP_NUM(obj, 2), list->lineno); */ + ZVAL_NULL(OBJ_PROP_NUM(obj, 2)); + children = list->children; + array_init_size(OBJ_PROP_NUM(obj, 3), children); + ht = Z_ARR_P(OBJ_PROP_NUM(obj, 3)); + for (i = 0; i < children; i++) { + zend_ast_convert_to_object(&tmp, list->child[i]); + zend_hash_index_add_new(ht, i, &tmp); + } + } else { + object_init_ex(ret, zend_ast_node_ce); + obj = Z_OBJ_P(ret); + ZVAL_LONG(OBJ_PROP_NUM(obj, 0), ast->kind); + ZVAL_LONG(OBJ_PROP_NUM(obj, 1), ast->attr); + /* PHP parser doesn't capture positions of all AST nodes */ + /* ZVAL_LONG(OBJ_PROP_NUM(obj, 2), ast->lineno); */ + ZVAL_NULL(OBJ_PROP_NUM(obj, 2)); + children = zend_ast_get_num_children(ast); + array_init_size(OBJ_PROP_NUM(obj, 3), children); + ht = Z_ARR_P(OBJ_PROP_NUM(obj, 3)); + for (i = 0; i < children; i++) { + zend_ast_convert_to_object(&tmp, ast->child[i]); + zend_hash_index_add_new(ht, i, &tmp); + } + } +} + +void zend_register_ast_classes(void) +{ + zend_class_entry tmp_ce; + + INIT_CLASS_ENTRY(tmp_ce, "ast\\Node", NULL); + zend_ast_node_ce = zend_register_internal_class(&tmp_ce); + zend_declare_property_null(zend_ast_node_ce, "kind", sizeof("kind")-1, ZEND_ACC_PUBLIC); + zend_declare_property_null(zend_ast_node_ce, "flags", sizeof("flags")-1, ZEND_ACC_PUBLIC); + zend_declare_property_null(zend_ast_node_ce, "lineno", sizeof("lineno")-1, ZEND_ACC_PUBLIC); + zend_declare_property_null(zend_ast_node_ce, "children", sizeof("children")-1, ZEND_ACC_PUBLIC); + + INIT_CLASS_ENTRY(tmp_ce, "ast\\Node\\Decl", NULL); + zend_ast_decl_ce = zend_register_internal_class_ex(&tmp_ce, zend_ast_node_ce); + zend_declare_property_null(zend_ast_decl_ce, "endLineno", sizeof("endLineno")-1, ZEND_ACC_PUBLIC); + zend_declare_property_null(zend_ast_decl_ce, "name", sizeof("name")-1, ZEND_ACC_PUBLIC); + zend_declare_property_null(zend_ast_decl_ce, "docComment", sizeof("docComment")-1, ZEND_ACC_PUBLIC); + zend_declare_property_null(zend_ast_decl_ce, "attributes", sizeof("attributes")-1, ZEND_ACC_PUBLIC); +} diff --git a/Zend/zend_ast.h b/Zend/zend_ast.h index ec771003c0c9d..9fd2a298d4738 100644 --- a/Zend/zend_ast.h +++ b/Zend/zend_ast.h @@ -140,12 +140,12 @@ enum _zend_ast_kind { ZEND_AST_TRY, ZEND_AST_CATCH, ZEND_AST_PARAM, - ZEND_AST_PROP_ELEM, - ZEND_AST_CONST_ELEM, /* 4 child nodes */ ZEND_AST_FOR = 4 << ZEND_AST_NUM_CHILDREN_SHIFT, ZEND_AST_FOREACH, + ZEND_AST_PROP_ELEM, + ZEND_AST_CONST_ELEM, }; typedef uint16_t zend_ast_kind; @@ -183,6 +183,7 @@ typedef struct _zend_ast_decl { uint32_t flags; unsigned char *lex_pos; zend_string *doc_comment; + HashTable *attributes; zend_string *name; zend_ast *child[4]; } zend_ast_decl; @@ -196,7 +197,7 @@ ZEND_API zend_ast *zend_ast_create_ex(zend_ast_kind kind, zend_ast_attr attr, .. ZEND_API zend_ast *zend_ast_create(zend_ast_kind kind, ...); ZEND_API zend_ast *zend_ast_create_decl( - zend_ast_kind kind, uint32_t flags, uint32_t start_lineno, zend_string *doc_comment, + zend_ast_kind kind, uint32_t flags, uint32_t start_lineno, zend_string *doc_comment, HashTable *attributes, zend_string *name, zend_ast *child0, zend_ast *child1, zend_ast *child2, zend_ast *child3 ); @@ -231,6 +232,12 @@ static zend_always_inline zend_string *zend_ast_get_str(zend_ast *ast) { return Z_STR_P(zv); } +static zend_always_inline HashTable *zend_ast_get_hash(zend_ast *ast) { + zval *zv = zend_ast_get_zval(ast); + ZEND_ASSERT(Z_TYPE_P(zv) == IS_ARRAY); + return Z_ARR_P(zv); +} + static zend_always_inline uint32_t zend_ast_get_num_children(zend_ast *ast) { ZEND_ASSERT(!zend_ast_is_list(ast)); return ast->kind >> ZEND_AST_NUM_CHILDREN_SHIFT; @@ -258,6 +265,12 @@ static zend_always_inline zend_ast *zend_ast_create_zval_from_long(zend_long lva return zend_ast_create_zval(&zv); } +static zend_always_inline zend_ast *zend_ast_create_zval_from_hash(HashTable *hash) { + zval zv; + ZVAL_ARR(&zv, hash); + return zend_ast_create_zval(&zv); +} + static zend_always_inline zend_ast *zend_ast_create_binary_op(uint32_t opcode, zend_ast *op0, zend_ast *op1) { return zend_ast_create_ex(ZEND_AST_BINARY_OP, opcode, op0, op1); } @@ -268,4 +281,12 @@ static zend_always_inline zend_ast *zend_ast_create_cast(uint32_t type, zend_ast return zend_ast_create_ex(ZEND_AST_CAST, type, op0); } +extern ZEND_API zend_class_entry *zend_ast_node_ce; +extern ZEND_API zend_class_entry *zend_ast_decl_ce; + +void zend_register_ast_classes(void); + +ZEND_API void zend_ast_convert_attributes(zval *ret, HashTable *attributes); +ZEND_API void zend_ast_convert_to_object(zval *ret, zend_ast *ast); + #endif diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 50bcb3b7ad469..82f12eb47090e 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -1753,6 +1753,7 @@ ZEND_API void zend_initialize_class_data(zend_class_entry *ce, zend_bool nullify } else { ce->static_members_table = ce->default_static_members_table; ce->info.user.doc_comment = NULL; + ce->info.user.attributes = NULL; } ce->default_properties_count = 0; @@ -1821,6 +1822,100 @@ zend_ast *zend_ast_append_str(zend_ast *left_ast, zend_ast *right_ast) /* {{{ */ } /* }}} */ +void zend_add_attribute(zend_ast *name, zend_ast *value) /* {{{ */ +{ + zval *val, tmp; + zend_string *key = zend_ast_get_str(name); + +#if 1 /* SPECIAL_ATTRIBUTE */ + if (ZSTR_LEN(key) >= 2 && ZSTR_VAL(key)[0] == '_' && ZSTR_VAL(key)[1] == '_') { + zend_error_noreturn(E_COMPILE_ERROR, "Unknown special attribute %s", ZSTR_VAL(key)); + } +#endif + if (!CG(attributes)) { + ALLOC_HASHTABLE(CG(attributes)); + zend_hash_init(CG(attributes), 8, NULL, ZVAL_PTR_DTOR, 0); + } +#if 0 /* ATTRIBUTE_VALUES_ARRAYS */ + if (value) { + if (value->kind == ZEND_AST_ZVAL) { + val = zend_ast_get_zval(value); + } else { + ZVAL_NEW_AST(&tmp, zend_ast_copy(value)); + zend_ast_destroy(value); + val = &tmp; + } + } else { + ZVAL_TRUE(&tmp); + val = &tmp; + } + + if (!zend_hash_add(CG(attributes), key, val)) { + zend_error_noreturn(E_COMPILE_ERROR, "Redeclared attribute %s", ZSTR_VAL(key)); + } +#else + ZVAL_NULL(&tmp); + val = zend_hash_add(CG(attributes), key, &tmp); + if (!val) { + zend_error_noreturn(E_COMPILE_ERROR, "Redeclared attribute %s", ZSTR_VAL(key)); + } + if (value) { + if (value->kind == ZEND_AST_ZVAL) { + zval *zv = zend_ast_get_zval(value); + + if (Z_TYPE_P(zv) == IS_ARRAY) { + ZVAL_COPY_VALUE(val, zv); + } else { + array_init(val); + zend_hash_next_index_insert_new(Z_ARRVAL_P(val), zv); + } + } else { + ZVAL_NEW_AST(&tmp, zend_ast_copy(value)); + zend_ast_destroy(value); + array_init(val); + zend_hash_next_index_insert_new(Z_ARRVAL_P(val), &tmp); + } + } else { + array_init(val); + } +#endif + zend_string_release(key); +} +/* }}} */ + +zend_ast *zend_add_attribute_value(zend_ast *list_ast, zend_ast *val_ast) /* {{{ */ +{ + zval *list, *val, arr, tmp; + + if (list_ast->kind == ZEND_AST_ZVAL) { + list = zend_ast_get_zval(list_ast); + if (Z_TYPE_P(list) != IS_ARRAY) { + array_init(&arr); + zend_hash_next_index_insert_new(Z_ARRVAL(arr), list); + ZVAL_ARR(list, Z_ARR(arr)); + } + } else { + array_init(&arr); + ZVAL_NEW_AST(&tmp, zend_ast_copy(list_ast)); + zend_ast_destroy(list_ast); + zend_hash_next_index_insert_new(Z_ARRVAL(arr), &tmp); + list_ast = zend_ast_create_zval(&arr); + list = zend_ast_get_zval(list_ast); + } + + if (val_ast->kind == ZEND_AST_ZVAL) { + val = zend_ast_get_zval(val_ast); + } else { + ZVAL_NEW_AST(&tmp, zend_ast_copy(val_ast)); + zend_ast_destroy(val_ast); + val = &tmp; + } + zend_hash_next_index_insert_new(Z_ARRVAL_P(list), val); + + return list_ast; +} +/* }}} */ + void zend_verify_namespace(void) /* {{{ */ { if (FC(has_bracketed_namespaces) && !FC(in_namespace)) { @@ -5377,7 +5472,12 @@ void zend_compile_func_decl(znode *result, zend_ast *ast) /* {{{ */ op_array->line_start = decl->start_lineno; op_array->line_end = decl->end_lineno; if (decl->doc_comment) { - op_array->doc_comment = zend_string_copy(decl->doc_comment); + op_array->doc_comment = decl->doc_comment; + decl->doc_comment = NULL; + } + if (decl->attributes) { + op_array->attributes = decl->attributes; + decl->attributes = NULL; } if (decl->kind == ZEND_AST_CLOSURE) { op_array->fn_flags |= ZEND_ACC_CLOSURE; @@ -5457,13 +5557,20 @@ void zend_compile_prop_decl(zend_ast *ast) /* {{{ */ zend_ast *name_ast = prop_ast->child[0]; zend_ast *value_ast = prop_ast->child[1]; zend_ast *doc_comment_ast = prop_ast->child[2]; + zend_ast *attributes_ast = prop_ast->child[3]; zend_string *name = zend_ast_get_str(name_ast); zend_string *doc_comment = NULL; + HashTable *attributes = NULL; zval value_zv; /* Doc comment has been appended as last element in ZEND_AST_PROP_ELEM ast */ if (doc_comment_ast) { - doc_comment = zend_string_copy(zend_ast_get_str(doc_comment_ast)); + doc_comment = zend_ast_get_str(doc_comment_ast); + prop_ast->child[2] = NULL; + } + if (attributes_ast) { + attributes = zend_ast_get_hash(attributes_ast); + prop_ast->child[3] = NULL; } if (flags & ZEND_ACC_FINAL) { @@ -5484,7 +5591,7 @@ void zend_compile_prop_decl(zend_ast *ast) /* {{{ */ } name = zend_new_interned_string_safe(name); - zend_declare_property_ex(ce, name, &value_zv, flags, doc_comment); + zend_declare_property_ex(ce, name, &value_zv, flags, doc_comment, attributes); } } /* }}} */ @@ -5505,10 +5612,20 @@ void zend_compile_class_const_decl(zend_ast *ast) /* {{{ */ zend_ast *name_ast = const_ast->child[0]; zend_ast *value_ast = const_ast->child[1]; zend_ast *doc_comment_ast = const_ast->child[2]; + zend_ast *attributes_ast = const_ast->child[3]; zend_string *name = zend_ast_get_str(name_ast); - zend_string *doc_comment = doc_comment_ast ? zend_string_copy(zend_ast_get_str(doc_comment_ast)) : NULL; + zend_string *doc_comment = NULL; + HashTable *attributes = NULL; zval value_zv; + if (doc_comment_ast) { + doc_comment = zend_ast_get_str(doc_comment_ast); + const_ast->child[2] = NULL; + } + if (attributes_ast) { + attributes = zend_ast_get_hash(attributes_ast); + const_ast->child[3] = NULL; + } if (UNEXPECTED(ast->attr & (ZEND_ACC_STATIC|ZEND_ACC_ABSTRACT|ZEND_ACC_FINAL))) { if (ast->attr & ZEND_ACC_STATIC) { zend_error_noreturn(E_COMPILE_ERROR, "Cannot use 'static' as constant modifier"); @@ -5522,7 +5639,7 @@ void zend_compile_class_const_decl(zend_ast *ast) /* {{{ */ zend_const_expr_to_zval(&value_zv, value_ast); name = zend_new_interned_string_safe(name); - zend_declare_class_constant_ex(ce, name, &value_zv, ast->attr, doc_comment); + zend_declare_class_constant_ex(ce, name, &value_zv, ast->attr, doc_comment, attributes); } } /* }}} */ @@ -5751,7 +5868,12 @@ void zend_compile_class_decl(zend_ast *ast) /* {{{ */ ce->info.user.line_end = decl->end_lineno; if (decl->doc_comment) { - ce->info.user.doc_comment = zend_string_copy(decl->doc_comment); + ce->info.user.doc_comment = decl->doc_comment; + decl->doc_comment = NULL; + } + if (decl->attributes) { + ce->info.user.attributes = decl->attributes; + decl->attributes = NULL; } if (UNEXPECTED((decl->flags & ZEND_ACC_ANON_CLASS))) { diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h index f52d22a384608..c16f3079cecfa 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -48,6 +48,10 @@ zend_string_release(CG(doc_comment)); \ CG(doc_comment) = NULL; \ } \ + if (CG(attributes)) { \ + zend_array_ptr_dtor(CG(attributes)); \ + CG(attributes) = NULL; \ + } \ } while (0) typedef struct _zend_op_array zend_op_array; @@ -126,6 +130,7 @@ typedef struct _zend_file_context { typedef union _zend_parser_stack_elem { zend_ast *ast; zend_string *str; + HashTable *hash; zend_ulong num; } zend_parser_stack_elem; @@ -296,6 +301,7 @@ typedef struct _zend_property_info { uint32_t flags; zend_string *name; zend_string *doc_comment; + HashTable *attributes; zend_class_entry *ce; } zend_property_info; @@ -311,6 +317,7 @@ typedef struct _zend_property_info { typedef struct _zend_class_constant { zval value; /* access flags are stored in reserved: zval.u2.access_flags */ zend_string *doc_comment; + HashTable *attributes; zend_class_entry *ce; } zend_class_constant; @@ -384,6 +391,7 @@ struct _zend_op_array { uint32_t line_start; uint32_t line_end; zend_string *doc_comment; + HashTable *attributes; uint32_t early_binding; /* the linked list of delayed declarations */ int last_literal; @@ -726,6 +734,8 @@ zend_ast *zend_ast_append_str(zend_ast *left, zend_ast *right); uint32_t zend_add_class_modifier(uint32_t flags, uint32_t new_flag); uint32_t zend_add_member_modifier(uint32_t flags, uint32_t new_flag); void zend_handle_encoding_declaration(zend_ast *ast); +void zend_add_attribute(zend_ast *name, zend_ast *value); +zend_ast *zend_add_attribute_value(zend_ast *list_ast, zend_ast *val_ast); /* parser-driven code generators */ void zend_do_free(znode *op1); diff --git a/Zend/zend_default_classes.c b/Zend/zend_default_classes.c index 638d337ac17de..7f1dfacf31811 100644 --- a/Zend/zend_default_classes.c +++ b/Zend/zend_default_classes.c @@ -26,6 +26,7 @@ #include "zend_exceptions.h" #include "zend_closures.h" #include "zend_generators.h" +#include "zend_ast.h" ZEND_API void zend_register_default_classes(void) @@ -35,6 +36,7 @@ ZEND_API void zend_register_default_classes(void) zend_register_iterator_wrapper(); zend_register_closure_ce(); zend_register_generator_ce(); + zend_register_ast_classes(); } /* diff --git a/Zend/zend_globals.h b/Zend/zend_globals.h index 14f47554d137a..ab9db60c8ac87 100644 --- a/Zend/zend_globals.h +++ b/Zend/zend_globals.h @@ -101,6 +101,7 @@ struct _zend_compiler_globals { zend_bool increment_lineno; zend_string *doc_comment; + HashTable *attributes; uint32_t compiler_options; /* set of ZEND_COMPILE_* constants */ diff --git a/Zend/zend_inheritance.c b/Zend/zend_inheritance.c index edb2bbe5afad9..d8d68537be5c6 100644 --- a/Zend/zend_inheritance.c +++ b/Zend/zend_inheritance.c @@ -1508,6 +1508,7 @@ static void zend_do_traits_property_binding(zend_class_entry *ce) /* {{{ */ zval* prop_value; uint32_t flags; zend_string *doc_comment; + HashTable *attributes = NULL; /* In the following steps the properties are inserted into the property table * for that, a very strict approach is applied: @@ -1584,9 +1585,13 @@ static void zend_do_traits_property_binding(zend_class_entry *ce) /* {{{ */ if (Z_REFCOUNTED_P(prop_value)) Z_ADDREF_P(prop_value); doc_comment = property_info->doc_comment ? zend_string_copy(property_info->doc_comment) : NULL; + if (property_info->attributes) { + attributes = property_info->attributes; + GC_REFCOUNT(attributes)++; + } zend_declare_property_ex(ce, prop_name, prop_value, flags, - doc_comment); + doc_comment, attributes); zend_string_release(prop_name); } ZEND_HASH_FOREACH_END(); } diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index 4722846ce7f5b..0381de269ee5f 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -51,6 +51,7 @@ static YYSIZE_T zend_yytnamerr(char*, const char*); %destructor { zend_ast_destroy($$); } %destructor { if ($$) zend_string_release($$); } +%destructor { if ($$) zend_array_ptr_dtor($$); } %left T_INCLUDE T_INCLUDE_ONCE T_EVAL T_REQUIRE T_REQUIRE_ONCE %left ',' @@ -225,16 +226,16 @@ static YYSIZE_T zend_yytnamerr(char*, const char*); /* Token used to force a parse error from the lexer */ %token T_ERROR -%type top_statement namespace_name name statement function_declaration_statement +%type top_statement namespace_name name statement annotated_statement function_declaration_statement %type class_declaration_statement trait_declaration_statement %type interface_declaration_statement interface_extends_list %type group_use_declaration inline_use_declarations inline_use_declaration %type mixed_group_use_declaration use_declaration unprefixed_use_declaration %type unprefixed_use_declarations const_decl inner_statement -%type expr optional_expr while_statement for_statement foreach_variable +%type attribute_values expr optional_expr while_statement for_statement foreach_variable %type foreach_statement declare_statement finally_statement unset_variable variable %type extends_from parameter optional_type argument expr_without_variable global_var -%type static_var class_statement trait_adaptation trait_precedence trait_alias +%type static_var class_statement annotated_class_statement trait_adaptation trait_precedence trait_alias %type absolute_trait_method_reference trait_method_reference property echo_expr %type new_expr anonymous_class class_name class_name_reference simple_variable %type internal_functions_in_yacc @@ -261,6 +262,8 @@ static YYSIZE_T zend_yytnamerr(char*, const char*); %type backup_doc_comment +%type backup_attributes + %% /* Rules */ start: @@ -307,12 +310,37 @@ name: | T_NS_SEPARATOR namespace_name { $$ = $2; $$->attr = ZEND_NAME_FQ; } ; -top_statement: - statement { $$ = $1; } - | function_declaration_statement { $$ = $1; } +attribute_values: + expr { $$ = $1; } + | attribute_values ',' expr { $$ = zend_add_attribute_value($1, $3); } + +attribute_list: + namespace_name { zend_add_attribute($1, NULL); } + | namespace_name '(' attribute_values ')' { zend_add_attribute($1, $3); } + | attribute_list ',' namespace_name { zend_add_attribute($3, NULL); } + | attribute_list ',' namespace_name '(' attribute_values ')' { zend_add_attribute($3, $5); } +; + +attribute: + T_SL attribute_list T_SR +; + +attributes: + attributes attribute + | attribute +; + +annotated_statement: + function_declaration_statement { $$ = $1; } | class_declaration_statement { $$ = $1; } | trait_declaration_statement { $$ = $1; } | interface_declaration_statement { $$ = $1; } +; + +top_statement: + statement { $$ = $1; } + | annotated_statement { $$ = $1; } + | attributes annotated_statement { $$ = $2; } | T_HALT_COMPILER '(' ')' ';' { $$ = zend_ast_create(ZEND_AST_HALT_COMPILER, zend_ast_create_zval_from_long(zend_get_scanned_file_offset())); @@ -404,11 +432,9 @@ inner_statement_list: inner_statement: - statement { $$ = $1; } - | function_declaration_statement { $$ = $1; } - | class_declaration_statement { $$ = $1; } - | trait_declaration_statement { $$ = $1; } - | interface_declaration_statement { $$ = $1; } + statement { $$ = $1; } + | annotated_statement { $$ = $1; } + | attributes annotated_statement { $$ = $2; } | T_HALT_COMPILER '(' ')' ';' { $$ = NULL; zend_error_noreturn(E_COMPILE_ERROR, "__HALT_COMPILER() can only be used from the outermost scope"); } @@ -480,10 +506,10 @@ unset_variable: ; function_declaration_statement: - function returns_ref T_STRING backup_doc_comment '(' parameter_list ')' return_type + function returns_ref T_STRING backup_doc_comment backup_attributes '(' parameter_list ')' return_type '{' inner_statement_list '}' - { $$ = zend_ast_create_decl(ZEND_AST_FUNC_DECL, $2, $1, $4, - zend_ast_get_str($3), $6, NULL, $10, $8); } + { $$ = zend_ast_create_decl(ZEND_AST_FUNC_DECL, $2, $1, $4, $5, + zend_ast_get_str($3), $7, NULL, $11, $9); } ; is_reference: @@ -498,11 +524,11 @@ is_variadic: class_declaration_statement: class_modifiers T_CLASS { $$ = CG(zend_lineno); } - T_STRING extends_from implements_list backup_doc_comment '{' class_statement_list '}' - { $$ = zend_ast_create_decl(ZEND_AST_CLASS, $1, $3, $7, zend_ast_get_str($4), $5, $6, $9, NULL); } + T_STRING extends_from implements_list backup_doc_comment backup_attributes '{' class_statement_list '}' + { $$ = zend_ast_create_decl(ZEND_AST_CLASS, $1, $3, $7, $8, zend_ast_get_str($4), $5, $6, $10, NULL); } | T_CLASS { $$ = CG(zend_lineno); } - T_STRING extends_from implements_list backup_doc_comment '{' class_statement_list '}' - { $$ = zend_ast_create_decl(ZEND_AST_CLASS, 0, $2, $6, zend_ast_get_str($3), $4, $5, $8, NULL); } + T_STRING extends_from implements_list backup_doc_comment backup_attributes '{' class_statement_list '}' + { $$ = zend_ast_create_decl(ZEND_AST_CLASS, 0, $2, $6, $7, zend_ast_get_str($3), $4, $5, $9, NULL); } ; class_modifiers: @@ -517,14 +543,14 @@ class_modifier: trait_declaration_statement: T_TRAIT { $$ = CG(zend_lineno); } - T_STRING backup_doc_comment '{' class_statement_list '}' - { $$ = zend_ast_create_decl(ZEND_AST_CLASS, ZEND_ACC_TRAIT, $2, $4, zend_ast_get_str($3), NULL, NULL, $6, NULL); } + T_STRING backup_doc_comment backup_attributes '{' class_statement_list '}' + { $$ = zend_ast_create_decl(ZEND_AST_CLASS, ZEND_ACC_TRAIT, $2, $4, $5, zend_ast_get_str($3), NULL, NULL, $7, NULL); } ; interface_declaration_statement: T_INTERFACE { $$ = CG(zend_lineno); } - T_STRING interface_extends_list backup_doc_comment '{' class_statement_list '}' - { $$ = zend_ast_create_decl(ZEND_AST_CLASS, ZEND_ACC_INTERFACE, $2, $5, zend_ast_get_str($3), NULL, $4, $7, NULL); } + T_STRING interface_extends_list backup_doc_comment backup_attributes '{' class_statement_list '}' + { $$ = zend_ast_create_decl(ZEND_AST_CLASS, ZEND_ACC_INTERFACE, $2, $5, $6, zend_ast_get_str($3), NULL, $4, $8, NULL); } ; extends_from: @@ -704,18 +730,22 @@ class_statement_list: { $$ = zend_ast_create_list(0, ZEND_AST_STMT_LIST); } ; - -class_statement: +annotated_class_statement: variable_modifiers property_list ';' { $$ = $2; $$->attr = $1; } | method_modifiers T_CONST class_const_list ';' { $$ = $3; $$->attr = $1; } + | method_modifiers function returns_ref identifier backup_doc_comment backup_attributes '(' parameter_list ')' + return_type method_body + { $$ = zend_ast_create_decl(ZEND_AST_METHOD, $3 | $1, $2, $5, $6, + zend_ast_get_str($4), $8, NULL, $11, $10); } +; + +class_statement: + annotated_class_statement { $$ = $1; } + | attributes annotated_class_statement { $$ = $2; } | T_USE name_list trait_adaptations { $$ = zend_ast_create(ZEND_AST_USE_TRAIT, $2, $3); } - | method_modifiers function returns_ref identifier backup_doc_comment '(' parameter_list ')' - return_type method_body - { $$ = zend_ast_create_decl(ZEND_AST_METHOD, $3 | $1, $2, $5, - zend_ast_get_str($4), $7, NULL, $10, $9); } ; name_list: @@ -805,10 +835,10 @@ property_list: ; property: - T_VARIABLE backup_doc_comment - { $$ = zend_ast_create(ZEND_AST_PROP_ELEM, $1, NULL, ($2 ? zend_ast_create_zval_from_str($2) : NULL)); } - | T_VARIABLE '=' expr backup_doc_comment - { $$ = zend_ast_create(ZEND_AST_PROP_ELEM, $1, $3, ($4 ? zend_ast_create_zval_from_str($4) : NULL)); } + T_VARIABLE backup_doc_comment backup_attributes + { $$ = zend_ast_create(ZEND_AST_PROP_ELEM, $1, NULL, ($2 ? zend_ast_create_zval_from_str($2) : NULL), ($3 ? zend_ast_create_zval_from_hash($3) : NULL)); } + | T_VARIABLE '=' expr backup_doc_comment backup_attributes + { $$ = zend_ast_create(ZEND_AST_PROP_ELEM, $1, $3, ($4 ? zend_ast_create_zval_from_str($4) : NULL), ($5 ? zend_ast_create_zval_from_hash($5) : NULL)); } ; class_const_list: @@ -817,11 +847,11 @@ class_const_list: ; class_const_decl: - identifier '=' expr backup_doc_comment { $$ = zend_ast_create(ZEND_AST_CONST_ELEM, $1, $3, ($4 ? zend_ast_create_zval_from_str($4) : NULL)); } + identifier '=' expr backup_doc_comment backup_attributes { $$ = zend_ast_create(ZEND_AST_CONST_ELEM, $1, $3, ($4 ? zend_ast_create_zval_from_str($4) : NULL), ($5 ? zend_ast_create_zval_from_hash($5) : NULL)); } ; const_decl: - T_STRING '=' expr backup_doc_comment { $$ = zend_ast_create(ZEND_AST_CONST_ELEM, $1, $3, ($4 ? zend_ast_create_zval_from_str($4) : NULL)); } + T_STRING '=' expr backup_doc_comment backup_attributes { $$ = zend_ast_create(ZEND_AST_CONST_ELEM, $1, $3, ($4 ? zend_ast_create_zval_from_str($4) : NULL), ($5 ? zend_ast_create_zval_from_hash($5) : NULL)); } ; echo_expr_list: @@ -844,10 +874,10 @@ non_empty_for_exprs: anonymous_class: T_CLASS { $$ = CG(zend_lineno); } ctor_arguments - extends_from implements_list backup_doc_comment '{' class_statement_list '}' { + extends_from implements_list backup_doc_comment backup_attributes '{' class_statement_list '}' { zend_ast *decl = zend_ast_create_decl( - ZEND_AST_CLASS, ZEND_ACC_ANON_CLASS, $2, $6, NULL, - $4, $5, $8, NULL); + ZEND_AST_CLASS, ZEND_ACC_ANON_CLASS, $2, $6, $7, NULL, + $4, $5, $9, NULL); $$ = zend_ast_create(ZEND_AST_NEW, decl, $3); } ; @@ -966,16 +996,16 @@ expr_without_variable: | T_YIELD expr { $$ = zend_ast_create(ZEND_AST_YIELD, $2, NULL); } | T_YIELD expr T_DOUBLE_ARROW expr { $$ = zend_ast_create(ZEND_AST_YIELD, $4, $2); } | T_YIELD_FROM expr { $$ = zend_ast_create(ZEND_AST_YIELD_FROM, $2); } - | function returns_ref backup_doc_comment '(' parameter_list ')' lexical_vars return_type + | function returns_ref backup_doc_comment backup_attributes '(' parameter_list ')' lexical_vars return_type '{' inner_statement_list '}' - { $$ = zend_ast_create_decl(ZEND_AST_CLOSURE, $2, $1, $3, + { $$ = zend_ast_create_decl(ZEND_AST_CLOSURE, $2, $1, $3, $4, zend_string_init("{closure}", sizeof("{closure}") - 1, 0), - $5, $7, $10, $8); } - | T_STATIC function returns_ref backup_doc_comment '(' parameter_list ')' lexical_vars + $6, $8, $11, $9); } + | T_STATIC function returns_ref backup_doc_comment backup_attributes '(' parameter_list ')' lexical_vars return_type '{' inner_statement_list '}' - { $$ = zend_ast_create_decl(ZEND_AST_CLOSURE, $3 | ZEND_ACC_STATIC, $2, $4, + { $$ = zend_ast_create_decl(ZEND_AST_CLOSURE, $3 | ZEND_ACC_STATIC, $2, $4, $5, zend_string_init("{closure}", sizeof("{closure}") - 1, 0), - $6, $8, $11, $9); } + $7, $9, $12, $10); } ; function: @@ -986,6 +1016,10 @@ backup_doc_comment: /* empty */ { $$ = CG(doc_comment); CG(doc_comment) = NULL; } ; +backup_attributes: + /* empty */ { $$ = CG(attributes); CG(attributes) = NULL; } +; + returns_ref: /* empty */ { $$ = 0; } | '&' { $$ = ZEND_ACC_RETURN_REFERENCE; } diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 02b1334844c57..9d9c16c05a84d 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.15.3 */ +/* Generated by re2c 0.13.5 */ #line 1 "Zend/zend_language_scanner.l" /* +----------------------------------------------------------------------+ @@ -180,6 +180,7 @@ void startup_scanner(void) { CG(parse_error) = 0; CG(doc_comment) = NULL; + CG(attributes) = NULL; zend_stack_init(&SCNG(state_stack), sizeof(int)); zend_ptr_stack_init(&SCNG(heredoc_label_stack)); } @@ -1093,7 +1094,7 @@ int start_line = CG(zend_lineno); SCNG(yy_text) = YYCURSOR; -#line 1097 "Zend/zend_language_scanner.c" +#line 1098 "Zend/zend_language_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1136,17 +1137,18 @@ int start_line = CG(zend_lineno); } /* *********************************** */ yyc_INITIAL: - YYDEBUG(1, *YYCURSOR); + + YYDEBUG(0, *YYCURSOR); YYFILL(7); yych = *YYCURSOR; - if (yych != '<') goto yy5; - YYDEBUG(3, *YYCURSOR); + if (yych != '<') goto yy4; + YYDEBUG(2, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '?') goto yy6; -yy4: - YYDEBUG(4, *YYCURSOR); + if ((yych = *YYCURSOR) == '?') goto yy5; +yy3: + YYDEBUG(3, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1789 "Zend/zend_language_scanner.l" +#line 1790 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1191,24 +1193,25 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_INLINE_HTML); } -#line 1195 "Zend/zend_language_scanner.c" +#line 1197 "Zend/zend_language_scanner.c" +yy4: + YYDEBUG(4, *YYCURSOR); + yych = *++YYCURSOR; + goto yy3; yy5: YYDEBUG(5, *YYCURSOR); - yych = *++YYCURSOR; - goto yy4; -yy6: - YYDEBUG(6, *YYCURSOR); + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'O') { - if (yych == '=') goto yy8; + if (yych == '=') goto yy7; } else { - if (yych <= 'P') goto yy10; - if (yych == 'p') goto yy10; + if (yych <= 'P') goto yy9; + if (yych == 'p') goto yy9; } -yy7: - YYDEBUG(7, *YYCURSOR); +yy6: + YYDEBUG(6, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1780 "Zend/zend_language_scanner.l" +#line 1781 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { BEGIN(ST_IN_SCRIPTING); @@ -1217,60 +1220,60 @@ int start_line = CG(zend_lineno); goto inline_char_handler; } } -#line 1221 "Zend/zend_language_scanner.c" -yy8: - YYDEBUG(8, *YYCURSOR); +#line 1224 "Zend/zend_language_scanner.c" +yy7: + YYDEBUG(7, *YYCURSOR); ++YYCURSOR; - YYDEBUG(9, *YYCURSOR); + YYDEBUG(8, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1767 "Zend/zend_language_scanner.l" +#line 1768 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO); } -#line 1232 "Zend/zend_language_scanner.c" +#line 1235 "Zend/zend_language_scanner.c" +yy9: + YYDEBUG(9, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy11; + if (yych == 'h') goto yy11; yy10: YYDEBUG(10, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy12; - if (yych == 'h') goto yy12; + YYCURSOR = YYMARKER; + goto yy6; yy11: YYDEBUG(11, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy7; + yych = *++YYCURSOR; + if (yych == 'P') goto yy12; + if (yych != 'p') goto yy10; yy12: YYDEBUG(12, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy13; - if (yych != 'p') goto yy11; -yy13: - YYDEBUG(13, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= '\f') { - if (yych <= 0x08) goto yy11; - if (yych >= '\v') goto yy11; + if (yych <= 0x08) goto yy10; + if (yych >= '\v') goto yy10; } else { - if (yych <= '\r') goto yy16; - if (yych != ' ') goto yy11; + if (yych <= '\r') goto yy15; + if (yych != ' ') goto yy10; } +yy13: + YYDEBUG(13, *YYCURSOR); + ++YYCURSOR; yy14: YYDEBUG(14, *YYCURSOR); - ++YYCURSOR; -yy15: - YYDEBUG(15, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1773 "Zend/zend_language_scanner.l" +#line 1774 "Zend/zend_language_scanner.l" { HANDLE_NEWLINE(yytext[yyleng-1]); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_OPEN_TAG); } -#line 1269 "Zend/zend_language_scanner.c" -yy16: - YYDEBUG(16, *YYCURSOR); +#line 1272 "Zend/zend_language_scanner.c" +yy15: + YYDEBUG(15, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '\n') goto yy14; - goto yy15; + if ((yych = *YYCURSOR) == '\n') goto yy13; + goto yy14; /* *********************************** */ yyc_ST_BACKQUOTE: { @@ -1308,34 +1311,34 @@ int start_line = CG(zend_lineno); 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(17, *YYCURSOR); + YYDEBUG(16, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yych <= '_') { - if (yych != '$') goto yy24; + if (yych != '$') goto yy23; } else { - if (yych <= '`') goto yy22; - if (yych == '{') goto yy21; - goto yy24; + if (yych <= '`') goto yy21; + if (yych == '{') goto yy20; + goto yy23; } - YYDEBUG(19, *YYCURSOR); + YYDEBUG(18, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '_') { - if (yych <= '@') goto yy20; - if (yych <= 'Z') goto yy27; - if (yych >= '_') goto yy27; + if (yych <= '@') goto yy19; + if (yych <= 'Z') goto yy26; + if (yych >= '_') goto yy26; } else { if (yych <= 'z') { - if (yych >= 'a') goto yy27; + if (yych >= 'a') goto yy26; } else { - if (yych <= '{') goto yy30; - if (yych >= 0x80) goto yy27; + if (yych <= '{') goto yy29; + if (yych >= 0x80) goto yy26; } } -yy20: - YYDEBUG(20, *YYCURSOR); +yy19: + YYDEBUG(19, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2199 "Zend/zend_language_scanner.l" +#line 2200 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -1376,118 +1379,118 @@ int start_line = CG(zend_lineno); zend_scan_escape_string(zendlval, yytext, yyleng, '`'); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 1380 "Zend/zend_language_scanner.c" +#line 1383 "Zend/zend_language_scanner.c" +yy20: + YYDEBUG(20, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '$') goto yy24; + goto yy19; yy21: YYDEBUG(21, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '$') goto yy25; - goto yy20; -yy22: - YYDEBUG(22, *YYCURSOR); ++YYCURSOR; - YYDEBUG(23, *YYCURSOR); + YYDEBUG(22, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2143 "Zend/zend_language_scanner.l" +#line 2144 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('`'); } -#line 1396 "Zend/zend_language_scanner.c" +#line 1399 "Zend/zend_language_scanner.c" +yy23: + YYDEBUG(23, *YYCURSOR); + yych = *++YYCURSOR; + goto yy19; yy24: YYDEBUG(24, *YYCURSOR); - yych = *++YYCURSOR; - goto yy20; -yy25: - YYDEBUG(25, *YYCURSOR); ++YYCURSOR; - YYDEBUG(26, *YYCURSOR); + YYDEBUG(25, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2130 "Zend/zend_language_scanner.l" +#line 2131 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (zend_long) '{'; yy_push_state(ST_IN_SCRIPTING); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 1413 "Zend/zend_language_scanner.c" -yy27: - YYDEBUG(27, *YYCURSOR); +#line 1416 "Zend/zend_language_scanner.c" +yy26: + YYDEBUG(26, *YYCURSOR); + yyaccept = 0; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(28, *YYCURSOR); + YYDEBUG(27, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy27; + goto yy26; } - if (yych == '-') goto yy32; - if (yych <= '@') goto yy29; - if (yych <= '[') goto yy34; -yy29: - YYDEBUG(29, *YYCURSOR); + if (yych == '-') goto yy31; + if (yych == '[') goto yy33; +yy28: + YYDEBUG(28, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1854 "Zend/zend_language_scanner.l" +#line 1855 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 1434 "Zend/zend_language_scanner.c" -yy30: - YYDEBUG(30, *YYCURSOR); +#line 1437 "Zend/zend_language_scanner.c" +yy29: + YYDEBUG(29, *YYCURSOR); ++YYCURSOR; - YYDEBUG(31, *YYCURSOR); + YYDEBUG(30, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1572 "Zend/zend_language_scanner.l" +#line 1573 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 1445 "Zend/zend_language_scanner.c" +#line 1448 "Zend/zend_language_scanner.c" +yy31: + YYDEBUG(31, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '>') goto yy35; yy32: YYDEBUG(32, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '>') goto yy36; + YYCURSOR = YYMARKER; + goto yy28; yy33: YYDEBUG(33, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy29; -yy34: - YYDEBUG(34, *YYCURSOR); ++YYCURSOR; - YYDEBUG(35, *YYCURSOR); + YYDEBUG(34, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1847 "Zend/zend_language_scanner.l" +#line 1848 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 1466 "Zend/zend_language_scanner.c" -yy36: - YYDEBUG(36, *YYCURSOR); +#line 1469 "Zend/zend_language_scanner.c" +yy35: + YYDEBUG(35, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '_') { - if (yych <= '@') goto yy33; - if (yych <= 'Z') goto yy37; - if (yych <= '^') goto yy33; + if (yych <= '@') goto yy32; + if (yych <= 'Z') goto yy36; + if (yych <= '^') goto yy32; } else { - if (yych <= '`') goto yy33; - if (yych <= 'z') goto yy37; - if (yych <= 0x7F) goto yy33; + if (yych <= '`') goto yy32; + if (yych <= 'z') goto yy36; + if (yych <= 0x7F) goto yy32; } -yy37: - YYDEBUG(37, *YYCURSOR); +yy36: + YYDEBUG(36, *YYCURSOR); ++YYCURSOR; - YYDEBUG(38, *YYCURSOR); + YYDEBUG(37, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1838 "Zend/zend_language_scanner.l" +#line 1839 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 1491 "Zend/zend_language_scanner.c" +#line 1494 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -1526,36 +1529,36 @@ int start_line = CG(zend_lineno); 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(39, *YYCURSOR); + YYDEBUG(38, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yych <= '#') { - if (yych == '"') goto yy44; - goto yy46; + if (yych == '"') goto yy43; + goto yy45; } else { - if (yych <= '$') goto yy41; - if (yych == '{') goto yy43; - goto yy46; + if (yych <= '$') goto yy40; + if (yych == '{') goto yy42; + goto yy45; } -yy41: - YYDEBUG(41, *YYCURSOR); +yy40: + YYDEBUG(40, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '_') { - if (yych <= '@') goto yy42; - if (yych <= 'Z') goto yy49; - if (yych >= '_') goto yy49; + if (yych <= '@') goto yy41; + if (yych <= 'Z') goto yy48; + if (yych >= '_') goto yy48; } else { if (yych <= 'z') { - if (yych >= 'a') goto yy49; + if (yych >= 'a') goto yy48; } else { - if (yych <= '{') goto yy52; - if (yych >= 0x80) goto yy49; + if (yych <= '{') goto yy51; + if (yych >= 0x80) goto yy48; } } -yy42: - YYDEBUG(42, *YYCURSOR); +yy41: + YYDEBUG(41, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2149 "Zend/zend_language_scanner.l" +#line 2150 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -1604,129 +1607,129 @@ int start_line = CG(zend_lineno); zend_scan_escape_string(zendlval, yytext, yyleng, '"'); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 1608 "Zend/zend_language_scanner.c" +#line 1611 "Zend/zend_language_scanner.c" +yy42: + YYDEBUG(42, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '$') goto yy46; + goto yy41; yy43: YYDEBUG(43, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '$') goto yy47; - goto yy42; -yy44: - YYDEBUG(44, *YYCURSOR); ++YYCURSOR; - YYDEBUG(45, *YYCURSOR); + YYDEBUG(44, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2138 "Zend/zend_language_scanner.l" +#line 2139 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN('"'); } -#line 1624 "Zend/zend_language_scanner.c" +#line 1627 "Zend/zend_language_scanner.c" +yy45: + YYDEBUG(45, *YYCURSOR); + yych = *++YYCURSOR; + goto yy41; yy46: YYDEBUG(46, *YYCURSOR); - yych = *++YYCURSOR; - goto yy42; -yy47: - YYDEBUG(47, *YYCURSOR); ++YYCURSOR; - YYDEBUG(48, *YYCURSOR); + YYDEBUG(47, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2130 "Zend/zend_language_scanner.l" +#line 2131 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (zend_long) '{'; yy_push_state(ST_IN_SCRIPTING); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 1641 "Zend/zend_language_scanner.c" -yy49: - YYDEBUG(49, *YYCURSOR); +#line 1644 "Zend/zend_language_scanner.c" +yy48: + YYDEBUG(48, *YYCURSOR); + yyaccept = 0; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(50, *YYCURSOR); + YYDEBUG(49, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy49; + goto yy48; } - if (yych == '-') goto yy54; - if (yych <= '@') goto yy51; - if (yych <= '[') goto yy56; -yy51: - YYDEBUG(51, *YYCURSOR); + if (yych == '-') goto yy53; + if (yych == '[') goto yy55; +yy50: + YYDEBUG(50, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1854 "Zend/zend_language_scanner.l" +#line 1855 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 1662 "Zend/zend_language_scanner.c" -yy52: - YYDEBUG(52, *YYCURSOR); +#line 1665 "Zend/zend_language_scanner.c" +yy51: + YYDEBUG(51, *YYCURSOR); ++YYCURSOR; - YYDEBUG(53, *YYCURSOR); + YYDEBUG(52, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1572 "Zend/zend_language_scanner.l" +#line 1573 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 1673 "Zend/zend_language_scanner.c" +#line 1676 "Zend/zend_language_scanner.c" +yy53: + YYDEBUG(53, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '>') goto yy57; yy54: YYDEBUG(54, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '>') goto yy58; + YYCURSOR = YYMARKER; + goto yy50; yy55: YYDEBUG(55, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy51; -yy56: - YYDEBUG(56, *YYCURSOR); ++YYCURSOR; - YYDEBUG(57, *YYCURSOR); + YYDEBUG(56, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1847 "Zend/zend_language_scanner.l" +#line 1848 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 1694 "Zend/zend_language_scanner.c" -yy58: - YYDEBUG(58, *YYCURSOR); +#line 1697 "Zend/zend_language_scanner.c" +yy57: + YYDEBUG(57, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '_') { - if (yych <= '@') goto yy55; - if (yych <= 'Z') goto yy59; - if (yych <= '^') goto yy55; + if (yych <= '@') goto yy54; + if (yych <= 'Z') goto yy58; + if (yych <= '^') goto yy54; } else { - if (yych <= '`') goto yy55; - if (yych <= 'z') goto yy59; - if (yych <= 0x7F) goto yy55; + if (yych <= '`') goto yy54; + if (yych <= 'z') goto yy58; + if (yych <= 0x7F) goto yy54; } -yy59: - YYDEBUG(59, *YYCURSOR); +yy58: + YYDEBUG(58, *YYCURSOR); ++YYCURSOR; - YYDEBUG(60, *YYCURSOR); + YYDEBUG(59, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1838 "Zend/zend_language_scanner.l" +#line 1839 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 1719 "Zend/zend_language_scanner.c" +#line 1722 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_END_HEREDOC: - YYDEBUG(61, *YYCURSOR); + YYDEBUG(60, *YYCURSOR); YYFILL(1); yych = *YYCURSOR; - YYDEBUG(63, *YYCURSOR); + YYDEBUG(62, *YYCURSOR); ++YYCURSOR; - YYDEBUG(64, *YYCURSOR); + YYDEBUG(63, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2116 "Zend/zend_language_scanner.l" +#line 2117 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -1739,7 +1742,7 @@ int start_line = CG(zend_lineno); BEGIN(ST_IN_SCRIPTING); RETURN_TOKEN(T_END_HEREDOC); } -#line 1743 "Zend/zend_language_scanner.c" +#line 1746 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_HEREDOC: { @@ -1777,31 +1780,31 @@ int start_line = CG(zend_lineno); 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(65, *YYCURSOR); + YYDEBUG(64, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; - if (yych == '$') goto yy67; - if (yych == '{') goto yy69; - goto yy70; -yy67: - YYDEBUG(67, *YYCURSOR); + if (yych == '$') goto yy66; + if (yych == '{') goto yy68; + goto yy69; +yy66: + YYDEBUG(66, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '_') { - if (yych <= '@') goto yy68; - if (yych <= 'Z') goto yy73; - if (yych >= '_') goto yy73; + if (yych <= '@') goto yy67; + if (yych <= 'Z') goto yy72; + if (yych >= '_') goto yy72; } else { if (yych <= 'z') { - if (yych >= 'a') goto yy73; + if (yych >= 'a') goto yy72; } else { - if (yych <= '{') goto yy76; - if (yych >= 0x80) goto yy73; + if (yych <= '{') goto yy75; + if (yych >= 0x80) goto yy72; } } -yy68: - YYDEBUG(68, *YYCURSOR); +yy67: + YYDEBUG(67, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2241 "Zend/zend_language_scanner.l" +#line 2242 "Zend/zend_language_scanner.l" { int newline = 0; @@ -1874,107 +1877,107 @@ int start_line = CG(zend_lineno); zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 1878 "Zend/zend_language_scanner.c" +#line 1881 "Zend/zend_language_scanner.c" +yy68: + YYDEBUG(68, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '$') goto yy70; + goto yy67; yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '$') goto yy71; - goto yy68; + goto yy67; yy70: YYDEBUG(70, *YYCURSOR); - yych = *++YYCURSOR; - goto yy68; -yy71: - YYDEBUG(71, *YYCURSOR); ++YYCURSOR; - YYDEBUG(72, *YYCURSOR); + YYDEBUG(71, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2130 "Zend/zend_language_scanner.l" +#line 2131 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (zend_long) '{'; yy_push_state(ST_IN_SCRIPTING); yyless(1); RETURN_TOKEN(T_CURLY_OPEN); } -#line 1900 "Zend/zend_language_scanner.c" -yy73: - YYDEBUG(73, *YYCURSOR); +#line 1903 "Zend/zend_language_scanner.c" +yy72: + YYDEBUG(72, *YYCURSOR); + yyaccept = 0; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(74, *YYCURSOR); + YYDEBUG(73, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy73; + goto yy72; } - if (yych == '-') goto yy78; - if (yych <= '@') goto yy75; - if (yych <= '[') goto yy80; -yy75: - YYDEBUG(75, *YYCURSOR); + if (yych == '-') goto yy77; + if (yych == '[') goto yy79; +yy74: + YYDEBUG(74, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1854 "Zend/zend_language_scanner.l" +#line 1855 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 1921 "Zend/zend_language_scanner.c" -yy76: - YYDEBUG(76, *YYCURSOR); +#line 1924 "Zend/zend_language_scanner.c" +yy75: + YYDEBUG(75, *YYCURSOR); ++YYCURSOR; - YYDEBUG(77, *YYCURSOR); + YYDEBUG(76, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1572 "Zend/zend_language_scanner.l" +#line 1573 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES); } -#line 1932 "Zend/zend_language_scanner.c" +#line 1935 "Zend/zend_language_scanner.c" +yy77: + YYDEBUG(77, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '>') goto yy81; yy78: YYDEBUG(78, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '>') goto yy82; + YYCURSOR = YYMARKER; + goto yy74; yy79: YYDEBUG(79, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy75; -yy80: - YYDEBUG(80, *YYCURSOR); ++YYCURSOR; - YYDEBUG(81, *YYCURSOR); + YYDEBUG(80, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1847 "Zend/zend_language_scanner.l" +#line 1848 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 1953 "Zend/zend_language_scanner.c" -yy82: - YYDEBUG(82, *YYCURSOR); +#line 1956 "Zend/zend_language_scanner.c" +yy81: + YYDEBUG(81, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '_') { - if (yych <= '@') goto yy79; - if (yych <= 'Z') goto yy83; - if (yych <= '^') goto yy79; + if (yych <= '@') goto yy78; + if (yych <= 'Z') goto yy82; + if (yych <= '^') goto yy78; } else { - if (yych <= '`') goto yy79; - if (yych <= 'z') goto yy83; - if (yych <= 0x7F) goto yy79; + if (yych <= '`') goto yy78; + if (yych <= 'z') goto yy82; + if (yych <= 0x7F) goto yy78; } -yy83: - YYDEBUG(83, *YYCURSOR); +yy82: + YYDEBUG(82, *YYCURSOR); ++YYCURSOR; - YYDEBUG(84, *YYCURSOR); + YYDEBUG(83, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1838 "Zend/zend_language_scanner.l" +#line 1839 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY); zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 1978 "Zend/zend_language_scanner.c" +#line 1981 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2013,9 +2016,10 @@ int start_line = CG(zend_lineno); 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, }; - YYDEBUG(85, *YYCURSOR); + YYDEBUG(84, *YYCURSOR); YYFILL(16); yych = *YYCURSOR; + YYDEBUG(-1, yych); switch (yych) { case 0x00: case 0x01: @@ -2046,32 +2050,32 @@ int start_line = CG(zend_lineno); case 0x1D: case 0x1E: case 0x1F: - case 0x7F: goto yy148; + case 0x7F: goto yy147; case '\t': case '\n': case '\r': - case ' ': goto yy104; - case '!': goto yy119; - case '"': goto yy144; - case '#': goto yy140; - case '$': goto yy130; - case '%': goto yy124; - case '&': goto yy125; - case '\'': goto yy142; - case '(': goto yy113; + case ' ': goto yy103; + case '!': goto yy118; + case '"': goto yy143; + case '#': goto yy139; + case '$': goto yy129; + case '%': goto yy123; + case '&': goto yy124; + case '\'': goto yy141; + case '(': goto yy112; case ')': case ',': case ';': case '@': case '[': case ']': - case '~': goto yy131; - case '*': goto yy122; - case '+': goto yy118; - case '-': goto yy102; - case '.': goto yy109; - case '/': goto yy123; - case '0': goto yy136; + case '~': goto yy130; + case '*': goto yy121; + case '+': goto yy117; + case '-': goto yy101; + case '.': goto yy108; + case '/': goto yy122; + case '0': goto yy135; case '1': case '2': case '3': @@ -2080,593 +2084,594 @@ int start_line = CG(zend_lineno); case '6': case '7': case '8': - case '9': goto yy138; - case ':': goto yy106; - case '<': goto yy120; - case '=': goto yy116; - case '>': goto yy121; - case '?': goto yy110; + case '9': goto yy137; + case ':': goto yy105; + case '<': goto yy119; + case '=': goto yy115; + case '>': goto yy120; + case '?': goto yy109; case 'A': - case 'a': goto yy97; + case 'a': goto yy96; case 'B': - case 'b': goto yy99; + case 'b': goto yy98; case 'C': - case 'c': goto yy91; + case 'c': goto yy90; case 'D': - case 'd': goto yy89; + case 'd': goto yy88; case 'E': - case 'e': goto yy87; + case 'e': goto yy86; case 'F': - case 'f': goto yy90; + case 'f': goto yy89; case 'G': - case 'g': goto yy100; + case 'g': goto yy99; case 'I': - case 'i': goto yy95; + case 'i': goto yy94; case 'L': - case 'l': goto yy117; + case 'l': goto yy116; case 'N': - case 'n': goto yy111; + case 'n': goto yy110; case 'O': - case 'o': goto yy128; + case 'o': goto yy127; case 'P': - case 'p': goto yy101; + case 'p': goto yy100; case 'R': - case 'r': goto yy92; + case 'r': goto yy91; case 'S': - case 's': goto yy98; + case 's': goto yy97; case 'T': - case 't': goto yy94; + case 't': goto yy93; case 'U': - case 'u': goto yy114; + case 'u': goto yy113; case 'V': - case 'v': goto yy112; + case 'v': goto yy111; case 'W': - case 'w': goto yy96; + case 'w': goto yy95; case 'X': - case 'x': goto yy129; + case 'x': goto yy128; case 'Y': - case 'y': goto yy93; - case '\\': goto yy107; - case '^': goto yy127; - case '_': goto yy115; - case '`': goto yy146; - case '{': goto yy132; - case '|': goto yy126; - case '}': goto yy134; - default: goto yy139; - } -yy87: - YYDEBUG(87, *YYCURSOR); - ++YYCURSOR; + case 'y': goto yy92; + case '\\': goto yy106; + case '^': goto yy126; + case '_': goto yy114; + case '`': goto yy145; + case '{': goto yy131; + case '|': goto yy125; + case '}': goto yy133; + default: goto yy138; + } +yy86: + YYDEBUG(86, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(-1, yych); switch ((yych = *YYCURSOR)) { case 'C': - case 'c': goto yy705; + case 'c': goto yy704; case 'L': - case 'l': goto yy706; + case 'l': goto yy705; case 'M': - case 'm': goto yy707; + case 'm': goto yy706; case 'N': - case 'n': goto yy708; + case 'n': goto yy707; case 'V': - case 'v': goto yy709; + case 'v': goto yy708; case 'X': - case 'x': goto yy710; - default: goto yy151; + case 'x': goto yy709; + default: goto yy150; } -yy88: - YYDEBUG(88, *YYCURSOR); +yy87: + YYDEBUG(87, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1877 "Zend/zend_language_scanner.l" +#line 1878 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 2165 "Zend/zend_language_scanner.c" -yy89: - YYDEBUG(89, *YYCURSOR); +#line 2170 "Zend/zend_language_scanner.c" +yy88: + YYDEBUG(88, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= 'H') { - if (yych == 'E') goto yy687; - goto yy151; + if (yych == 'E') goto yy686; + goto yy150; } else { - if (yych <= 'I') goto yy688; - if (yych <= 'N') goto yy151; - goto yy689; + if (yych <= 'I') goto yy687; + if (yych <= 'N') goto yy150; + goto yy688; } } else { if (yych <= 'h') { - if (yych == 'e') goto yy687; - goto yy151; + if (yych == 'e') goto yy686; + goto yy150; } else { - if (yych <= 'i') goto yy688; - if (yych == 'o') goto yy689; - goto yy151; + if (yych <= 'i') goto yy687; + if (yych == 'o') goto yy688; + goto yy150; } } -yy90: - YYDEBUG(90, *YYCURSOR); +yy89: + YYDEBUG(89, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= 'N') { - if (yych == 'I') goto yy663; - goto yy151; + if (yych == 'I') goto yy662; + goto yy150; } else { - if (yych <= 'O') goto yy664; - if (yych <= 'T') goto yy151; - goto yy665; + if (yych <= 'O') goto yy663; + if (yych <= 'T') goto yy150; + goto yy664; } } else { if (yych <= 'n') { - if (yych == 'i') goto yy663; - goto yy151; + if (yych == 'i') goto yy662; + goto yy150; } else { - if (yych <= 'o') goto yy664; - if (yych == 'u') goto yy665; - goto yy151; + if (yych <= 'o') goto yy663; + if (yych == 'u') goto yy664; + goto yy150; } } -yy91: - YYDEBUG(91, *YYCURSOR); +yy90: + YYDEBUG(90, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= 'K') { - if (yych == 'A') goto yy628; - goto yy151; + if (yych == 'A') goto yy627; + goto yy150; } else { - if (yych <= 'L') goto yy629; - if (yych <= 'N') goto yy151; - goto yy630; + if (yych <= 'L') goto yy628; + if (yych <= 'N') goto yy150; + goto yy629; } } else { if (yych <= 'k') { - if (yych == 'a') goto yy628; - goto yy151; + if (yych == 'a') goto yy627; + goto yy150; } else { - if (yych <= 'l') goto yy629; - if (yych == 'o') goto yy630; - goto yy151; + if (yych <= 'l') goto yy628; + if (yych == 'o') goto yy629; + goto yy150; } } +yy91: + YYDEBUG(91, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy609; + if (yych == 'e') goto yy609; + goto yy150; yy92: YYDEBUG(92, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy610; - if (yych == 'e') goto yy610; - goto yy151; + if (yych == 'I') goto yy597; + if (yych == 'i') goto yy597; + goto yy150; yy93: YYDEBUG(93, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy598; - if (yych == 'i') goto yy598; - goto yy151; -yy94: - YYDEBUG(94, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'R') { - if (yych == 'H') goto yy586; - if (yych <= 'Q') goto yy151; - goto yy587; + if (yych == 'H') goto yy585; + if (yych <= 'Q') goto yy150; + goto yy586; } else { if (yych <= 'h') { - if (yych <= 'g') goto yy151; - goto yy586; + if (yych <= 'g') goto yy150; + goto yy585; } else { - if (yych == 'r') goto yy587; - goto yy151; + if (yych == 'r') goto yy586; + goto yy150; } } -yy95: - YYDEBUG(95, *YYCURSOR); +yy94: + YYDEBUG(94, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= 'L') { - if (yych == 'F') goto yy533; - goto yy151; + if (yych == 'F') goto yy532; + goto yy150; } else { - if (yych <= 'M') goto yy535; - if (yych <= 'N') goto yy536; - if (yych <= 'R') goto yy151; - goto yy537; + if (yych <= 'M') goto yy534; + if (yych <= 'N') goto yy535; + if (yych <= 'R') goto yy150; + goto yy536; } } else { if (yych <= 'm') { - if (yych == 'f') goto yy533; - if (yych <= 'l') goto yy151; - goto yy535; + if (yych == 'f') goto yy532; + if (yych <= 'l') goto yy150; + goto yy534; } else { - if (yych <= 'n') goto yy536; - if (yych == 's') goto yy537; - goto yy151; + if (yych <= 'n') goto yy535; + if (yych == 's') goto yy536; + goto yy150; } } +yy95: + YYDEBUG(95, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy527; + if (yych == 'h') goto yy527; + goto yy150; yy96: YYDEBUG(96, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy528; - if (yych == 'h') goto yy528; - goto yy151; -yy97: - YYDEBUG(97, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= 'M') { - if (yych == 'B') goto yy510; - goto yy151; + if (yych == 'B') goto yy509; + goto yy150; } else { - if (yych <= 'N') goto yy511; - if (yych <= 'Q') goto yy151; - if (yych <= 'R') goto yy512; - goto yy513; + if (yych <= 'N') goto yy510; + if (yych <= 'Q') goto yy150; + if (yych <= 'R') goto yy511; + goto yy512; } } else { if (yych <= 'n') { - if (yych == 'b') goto yy510; - if (yych <= 'm') goto yy151; - goto yy511; + if (yych == 'b') goto yy509; + if (yych <= 'm') goto yy150; + goto yy510; } else { - if (yych <= 'q') goto yy151; - if (yych <= 'r') goto yy512; - if (yych <= 's') goto yy513; - goto yy151; + if (yych <= 'q') goto yy150; + if (yych <= 'r') goto yy511; + if (yych <= 's') goto yy512; + goto yy150; } } -yy98: - YYDEBUG(98, *YYCURSOR); +yy97: + YYDEBUG(97, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'W') { - if (yych == 'T') goto yy498; - if (yych <= 'V') goto yy151; - goto yy499; + if (yych == 'T') goto yy497; + if (yych <= 'V') goto yy150; + goto yy498; } else { if (yych <= 't') { - if (yych <= 's') goto yy151; - goto yy498; + if (yych <= 's') goto yy150; + goto yy497; } else { - if (yych == 'w') goto yy499; - goto yy151; + if (yych == 'w') goto yy498; + goto yy150; } } -yy99: - YYDEBUG(99, *YYCURSOR); +yy98: + YYDEBUG(98, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ';') { if (yych <= '"') { - if (yych <= '!') goto yy151; - goto yy490; + if (yych <= '!') goto yy150; + goto yy489; } else { - if (yych == '\'') goto yy491; - goto yy151; + if (yych == '\'') goto yy490; + goto yy150; } } else { if (yych <= 'R') { - if (yych <= '<') goto yy489; - if (yych <= 'Q') goto yy151; - goto yy492; + if (yych <= '<') goto yy488; + if (yych <= 'Q') goto yy150; + goto yy491; } else { - if (yych == 'r') goto yy492; - goto yy151; + if (yych == 'r') goto yy491; + goto yy150; } } -yy100: - YYDEBUG(100, *YYCURSOR); +yy99: + YYDEBUG(99, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'L') goto yy479; - if (yych <= 'N') goto yy151; - goto yy480; + if (yych == 'L') goto yy478; + if (yych <= 'N') goto yy150; + goto yy479; } else { if (yych <= 'l') { - if (yych <= 'k') goto yy151; - goto yy479; + if (yych <= 'k') goto yy150; + goto yy478; } else { - if (yych == 'o') goto yy480; - goto yy151; + if (yych == 'o') goto yy479; + goto yy150; } } -yy101: - YYDEBUG(101, *YYCURSOR); +yy100: + YYDEBUG(100, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'R') goto yy455; - if (yych <= 'T') goto yy151; - goto yy456; + if (yych == 'R') goto yy454; + if (yych <= 'T') goto yy150; + goto yy455; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy151; - goto yy455; + if (yych <= 'q') goto yy150; + goto yy454; } else { - if (yych == 'u') goto yy456; - goto yy151; + if (yych == 'u') goto yy455; + goto yy150; } } -yy102: - YYDEBUG(102, *YYCURSOR); +yy101: + YYDEBUG(101, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '<') { - if (yych == '-') goto yy451; + if (yych == '-') goto yy450; } else { - if (yych <= '=') goto yy449; - if (yych <= '>') goto yy453; + if (yych <= '=') goto yy448; + if (yych <= '>') goto yy452; } -yy103: - YYDEBUG(103, *YYCURSOR); +yy102: + YYDEBUG(102, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1561 "Zend/zend_language_scanner.l" +#line 1562 "Zend/zend_language_scanner.l" { RETURN_TOKEN(yytext[0]); } -#line 2401 "Zend/zend_language_scanner.c" -yy104: - YYDEBUG(104, *YYCURSOR); +#line 2406 "Zend/zend_language_scanner.c" +yy103: + YYDEBUG(103, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy448; -yy105: - YYDEBUG(105, *YYCURSOR); + goto yy447; +yy104: + YYDEBUG(104, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1276 "Zend/zend_language_scanner.l" +#line 1277 "Zend/zend_language_scanner.l" { HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_WHITESPACE); } -#line 2415 "Zend/zend_language_scanner.c" +#line 2420 "Zend/zend_language_scanner.c" +yy105: + YYDEBUG(105, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == ':') goto yy444; + goto yy102; yy106: YYDEBUG(106, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == ':') goto yy445; - goto yy103; -yy107: - YYDEBUG(107, *YYCURSOR); ++YYCURSOR; - YYDEBUG(108, *YYCURSOR); + YYDEBUG(107, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1301 "Zend/zend_language_scanner.l" +#line 1302 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NS_SEPARATOR); } -#line 2430 "Zend/zend_language_scanner.c" -yy109: - YYDEBUG(109, *YYCURSOR); +#line 2435 "Zend/zend_language_scanner.c" +yy108: + YYDEBUG(108, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy442; - goto yy103; + if (yych == '.') goto yy441; + goto yy102; } else { - if (yych <= '9') goto yy438; - if (yych == '=') goto yy440; - goto yy103; + if (yych <= '9') goto yy437; + if (yych == '=') goto yy439; + goto yy102; } -yy110: - YYDEBUG(110, *YYCURSOR); +yy109: + YYDEBUG(109, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '=') goto yy103; - if (yych <= '>') goto yy432; - if (yych <= '?') goto yy434; - goto yy103; -yy111: - YYDEBUG(111, *YYCURSOR); + if (yych <= '=') goto yy102; + if (yych <= '>') goto yy431; + if (yych <= '?') goto yy433; + goto yy102; +yy110: + YYDEBUG(110, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'E') { - if (yych == 'A') goto yy420; - if (yych <= 'D') goto yy151; - goto yy421; + if (yych == 'A') goto yy419; + if (yych <= 'D') goto yy150; + goto yy420; } else { if (yych <= 'a') { - if (yych <= '`') goto yy151; - goto yy420; + if (yych <= '`') goto yy150; + goto yy419; } else { - if (yych == 'e') goto yy421; - goto yy151; + if (yych == 'e') goto yy420; + goto yy150; } } +yy111: + YYDEBUG(111, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy416; + if (yych == 'a') goto yy416; + goto yy150; yy112: YYDEBUG(112, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy417; - if (yych == 'a') goto yy417; - goto yy151; -yy113: - YYDEBUG(113, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { if (yych <= 'D') { if (yych <= ' ') { - if (yych == '\t') goto yy342; - if (yych <= 0x1F) goto yy103; - goto yy342; + if (yych == '\t') goto yy341; + if (yych <= 0x1F) goto yy102; + goto yy341; } else { - if (yych <= '@') goto yy103; - if (yych == 'C') goto yy103; - goto yy342; + if (yych <= '@') goto yy102; + if (yych == 'C') goto yy102; + goto yy341; } } else { if (yych <= 'I') { - if (yych == 'F') goto yy342; - if (yych <= 'H') goto yy103; - goto yy342; + if (yych == 'F') goto yy341; + if (yych <= 'H') goto yy102; + goto yy341; } else { - if (yych == 'O') goto yy342; - if (yych <= 'Q') goto yy103; - goto yy342; + if (yych == 'O') goto yy341; + if (yych <= 'Q') goto yy102; + goto yy341; } } } else { if (yych <= 'f') { if (yych <= 'b') { - if (yych == 'U') goto yy342; - if (yych <= '`') goto yy103; - goto yy342; + if (yych == 'U') goto yy341; + if (yych <= '`') goto yy102; + goto yy341; } else { - if (yych == 'd') goto yy342; - if (yych <= 'e') goto yy103; - goto yy342; + if (yych == 'd') goto yy341; + if (yych <= 'e') goto yy102; + goto yy341; } } else { if (yych <= 'o') { - if (yych == 'i') goto yy342; - if (yych <= 'n') goto yy103; - goto yy342; + if (yych == 'i') goto yy341; + if (yych <= 'n') goto yy102; + goto yy341; } else { if (yych <= 's') { - if (yych <= 'q') goto yy103; - goto yy342; + if (yych <= 'q') goto yy102; + goto yy341; } else { - if (yych == 'u') goto yy342; - goto yy103; + if (yych == 'u') goto yy341; + goto yy102; } } } } -yy114: - YYDEBUG(114, *YYCURSOR); +yy113: + YYDEBUG(113, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'S') { - if (yych == 'N') goto yy333; - if (yych <= 'R') goto yy151; - goto yy334; + if (yych == 'N') goto yy332; + if (yych <= 'R') goto yy150; + goto yy333; } else { if (yych <= 'n') { - if (yych <= 'm') goto yy151; - goto yy333; + if (yych <= 'm') goto yy150; + goto yy332; } else { - if (yych == 's') goto yy334; - goto yy151; + if (yych == 's') goto yy333; + goto yy150; } } +yy114: + YYDEBUG(114, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '_') goto yy250; + goto yy150; yy115: YYDEBUG(115, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy251; - goto yy151; + if (yych <= '<') goto yy102; + if (yych <= '=') goto yy244; + if (yych <= '>') goto yy246; + goto yy102; yy116: YYDEBUG(116, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '<') goto yy103; - if (yych <= '=') goto yy245; - if (yych <= '>') goto yy247; - goto yy103; + if (yych == 'I') goto yy240; + if (yych == 'i') goto yy240; + goto yy150; yy117: YYDEBUG(117, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy241; - if (yych == 'i') goto yy241; - goto yy151; + if (yych == '+') goto yy238; + if (yych == '=') goto yy236; + goto yy102; yy118: YYDEBUG(118, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '+') goto yy239; - if (yych == '=') goto yy237; - goto yy103; + if (yych == '=') goto yy233; + goto yy102; yy119: YYDEBUG(119, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy234; - goto yy103; + if (yych <= ';') goto yy102; + if (yych <= '<') goto yy209; + if (yych <= '=') goto yy211; + if (yych <= '>') goto yy213; + goto yy102; yy120: YYDEBUG(120, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= ';') goto yy103; - if (yych <= '<') goto yy210; - if (yych <= '=') goto yy212; - if (yych <= '>') goto yy214; - goto yy103; + if (yych <= '<') goto yy102; + if (yych <= '=') goto yy205; + if (yych <= '>') goto yy203; + goto yy102; yy121: YYDEBUG(121, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '<') goto yy103; - if (yych <= '=') goto yy206; - if (yych <= '>') goto yy204; - goto yy103; + if (yych == '*') goto yy197; + if (yych == '=') goto yy199; + goto yy102; yy122: YYDEBUG(122, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '*') goto yy198; - if (yych == '=') goto yy200; - goto yy103; -yy123: - YYDEBUG(123, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= '.') { - if (yych == '*') goto yy190; - goto yy103; + if (yych == '*') goto yy189; + goto yy102; } else { - if (yych <= '/') goto yy192; - if (yych == '=') goto yy193; - goto yy103; + if (yych <= '/') goto yy191; + if (yych == '=') goto yy192; + goto yy102; } +yy123: + YYDEBUG(123, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '=') goto yy187; + goto yy102; yy124: YYDEBUG(124, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy188; - goto yy103; + if (yych == '&') goto yy183; + if (yych == '=') goto yy185; + goto yy102; yy125: YYDEBUG(125, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '&') goto yy184; - if (yych == '=') goto yy186; - goto yy103; + if (yych == '=') goto yy181; + if (yych == '|') goto yy179; + goto yy102; yy126: YYDEBUG(126, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy182; - if (yych == '|') goto yy180; - goto yy103; + if (yych == '=') goto yy177; + goto yy102; yy127: YYDEBUG(127, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy178; - goto yy103; + if (yych == 'R') goto yy175; + if (yych == 'r') goto yy175; + goto yy150; yy128: YYDEBUG(128, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy176; - if (yych == 'r') goto yy176; - goto yy151; + if (yych == 'O') goto yy172; + if (yych == 'o') goto yy172; + goto yy150; yy129: YYDEBUG(129, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy173; - if (yych == 'o') goto yy173; - goto yy151; -yy130: - YYDEBUG(130, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= '_') { - if (yych <= '@') goto yy103; - if (yych <= 'Z') goto yy170; - if (yych <= '^') goto yy103; - goto yy170; + if (yych <= '@') goto yy102; + if (yych <= 'Z') goto yy169; + if (yych <= '^') goto yy102; + goto yy169; } else { - if (yych <= '`') goto yy103; - if (yych <= 'z') goto yy170; - if (yych <= 0x7F) goto yy103; - goto yy170; + if (yych <= '`') goto yy102; + if (yych <= 'z') goto yy169; + if (yych <= 0x7F) goto yy102; + goto yy169; } +yy130: + YYDEBUG(130, *YYCURSOR); + yych = *++YYCURSOR; + goto yy102; yy131: YYDEBUG(131, *YYCURSOR); - yych = *++YYCURSOR; - goto yy103; -yy132: - YYDEBUG(132, *YYCURSOR); ++YYCURSOR; - YYDEBUG(133, *YYCURSOR); + YYDEBUG(132, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1566 "Zend/zend_language_scanner.l" +#line 1567 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN('{'); } -#line 2664 "Zend/zend_language_scanner.c" -yy134: - YYDEBUG(134, *YYCURSOR); +#line 2669 "Zend/zend_language_scanner.c" +yy133: + YYDEBUG(133, *YYCURSOR); ++YYCURSOR; - YYDEBUG(135, *YYCURSOR); + YYDEBUG(134, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1578 "Zend/zend_language_scanner.l" +#line 1579 "Zend/zend_language_scanner.l" { RESET_DOC_COMMENT(); if (!zend_stack_is_empty(&SCNG(state_stack))) { @@ -2674,35 +2679,35 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN('}'); } -#line 2678 "Zend/zend_language_scanner.c" -yy136: - YYDEBUG(136, *YYCURSOR); +#line 2683 "Zend/zend_language_scanner.c" +yy135: + YYDEBUG(135, *YYCURSOR); yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'E') { if (yych <= '9') { - if (yych == '.') goto yy152; - if (yych >= '0') goto yy155; + if (yych == '.') goto yy151; + if (yych >= '0') goto yy154; } else { - if (yych == 'B') goto yy163; - if (yych >= 'E') goto yy157; + if (yych == 'B') goto yy162; + if (yych >= 'E') goto yy156; } } else { if (yych <= 'b') { - if (yych == 'X') goto yy162; - if (yych >= 'b') goto yy163; + if (yych == 'X') goto yy161; + if (yych >= 'b') goto yy162; } else { if (yych <= 'e') { - if (yych >= 'e') goto yy157; + if (yych >= 'e') goto yy156; } else { - if (yych == 'x') goto yy162; + if (yych == 'x') goto yy161; } } } -yy137: - YYDEBUG(137, *YYCURSOR); +yy136: + YYDEBUG(136, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1631 "Zend/zend_language_scanner.l" +#line 1632 "Zend/zend_language_scanner.l" { char *end; if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ @@ -2747,35 +2752,35 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(!errno); RETURN_TOKEN(T_LNUMBER); } -#line 2751 "Zend/zend_language_scanner.c" -yy138: - YYDEBUG(138, *YYCURSOR); +#line 2756 "Zend/zend_language_scanner.c" +yy137: + YYDEBUG(137, *YYCURSOR); yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { - if (yych == '.') goto yy152; - if (yych <= '/') goto yy137; - goto yy155; + if (yych == '.') goto yy151; + if (yych <= '/') goto yy136; + goto yy154; } else { if (yych <= 'E') { - if (yych <= 'D') goto yy137; - goto yy157; + if (yych <= 'D') goto yy136; + goto yy156; } else { - if (yych == 'e') goto yy157; - goto yy137; + if (yych == 'e') goto yy156; + goto yy136; } } +yy138: + YYDEBUG(138, *YYCURSOR); + yych = *++YYCURSOR; + goto yy150; yy139: YYDEBUG(139, *YYCURSOR); - yych = *++YYCURSOR; - goto yy151; + ++YYCURSOR; yy140: YYDEBUG(140, *YYCURSOR); - ++YYCURSOR; -yy141: - YYDEBUG(141, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1883 "Zend/zend_language_scanner.l" +#line 1884 "Zend/zend_language_scanner.l" { while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -2804,14 +2809,14 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_COMMENT); } -#line 2808 "Zend/zend_language_scanner.c" +#line 2813 "Zend/zend_language_scanner.c" +yy141: + YYDEBUG(141, *YYCURSOR); + ++YYCURSOR; yy142: YYDEBUG(142, *YYCURSOR); - ++YYCURSOR; -yy143: - YYDEBUG(143, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1951 "Zend/zend_language_scanner.l" +#line 1952 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -2879,14 +2884,14 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING); } -#line 2883 "Zend/zend_language_scanner.c" +#line 2888 "Zend/zend_language_scanner.c" +yy143: + YYDEBUG(143, *YYCURSOR); + ++YYCURSOR; yy144: YYDEBUG(144, *YYCURSOR); - ++YYCURSOR; -yy145: - YYDEBUG(145, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2020 "Zend/zend_language_scanner.l" +#line 2021 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; @@ -2927,24 +2932,24 @@ int start_line = CG(zend_lineno); BEGIN(ST_DOUBLE_QUOTES); RETURN_TOKEN('"'); } -#line 2931 "Zend/zend_language_scanner.c" -yy146: - YYDEBUG(146, *YYCURSOR); +#line 2936 "Zend/zend_language_scanner.c" +yy145: + YYDEBUG(145, *YYCURSOR); ++YYCURSOR; - YYDEBUG(147, *YYCURSOR); + YYDEBUG(146, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2110 "Zend/zend_language_scanner.l" +#line 2111 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); RETURN_TOKEN('`'); } -#line 2942 "Zend/zend_language_scanner.c" -yy148: - YYDEBUG(148, *YYCURSOR); +#line 2947 "Zend/zend_language_scanner.c" +yy147: + YYDEBUG(147, *YYCURSOR); ++YYCURSOR; - YYDEBUG(149, *YYCURSOR); + YYDEBUG(148, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2372 "Zend/zend_language_scanner.l" +#line 2373 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -2953,34 +2958,34 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 2957 "Zend/zend_language_scanner.c" -yy150: - YYDEBUG(150, *YYCURSOR); +#line 2962 "Zend/zend_language_scanner.c" +yy149: + YYDEBUG(149, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy151: - YYDEBUG(151, *YYCURSOR); +yy150: + YYDEBUG(150, *YYCURSOR); if (yybm[0+yych] & 4) { - goto yy150; + goto yy149; } - goto yy88; -yy152: - YYDEBUG(152, *YYCURSOR); + goto yy87; +yy151: + YYDEBUG(151, *YYCURSOR); yyaccept = 3; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(153, *YYCURSOR); + YYDEBUG(152, *YYCURSOR); if (yybm[0+yych] & 8) { - goto yy152; + goto yy151; } - if (yych == 'E') goto yy157; - if (yych == 'e') goto yy157; -yy154: - YYDEBUG(154, *YYCURSOR); + if (yych == 'E') goto yy156; + if (yych == 'e') goto yy156; +yy153: + YYDEBUG(153, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1725 "Zend/zend_language_scanner.l" +#line 1726 "Zend/zend_language_scanner.l" { const char *end; @@ -2989,103 +2994,103 @@ int start_line = CG(zend_lineno); ZEND_ASSERT(end == yytext + yyleng); RETURN_TOKEN(T_DNUMBER); } -#line 2993 "Zend/zend_language_scanner.c" -yy155: - YYDEBUG(155, *YYCURSOR); +#line 2998 "Zend/zend_language_scanner.c" +yy154: + YYDEBUG(154, *YYCURSOR); yyaccept = 2; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(156, *YYCURSOR); + YYDEBUG(155, *YYCURSOR); if (yych <= '9') { - if (yych == '.') goto yy152; - if (yych <= '/') goto yy137; - goto yy155; + if (yych == '.') goto yy151; + if (yych <= '/') goto yy136; + goto yy154; } else { if (yych <= 'E') { - if (yych <= 'D') goto yy137; + if (yych <= 'D') goto yy136; } else { - if (yych != 'e') goto yy137; + if (yych != 'e') goto yy136; } } -yy157: - YYDEBUG(157, *YYCURSOR); +yy156: + YYDEBUG(156, *YYCURSOR); yych = *++YYCURSOR; if (yych <= ',') { - if (yych == '+') goto yy159; + if (yych == '+') goto yy158; } else { - if (yych <= '-') goto yy159; - if (yych <= '/') goto yy158; - if (yych <= '9') goto yy160; + if (yych <= '-') goto yy158; + if (yych <= '/') goto yy157; + if (yych <= '9') goto yy159; } -yy158: - YYDEBUG(158, *YYCURSOR); +yy157: + YYDEBUG(157, *YYCURSOR); YYCURSOR = YYMARKER; if (yyaccept <= 3) { if (yyaccept <= 1) { - if (yyaccept == 0) { - goto yy88; + if (yyaccept <= 0) { + goto yy87; } else { - goto yy103; + goto yy102; } } else { - if (yyaccept == 2) { - goto yy137; + if (yyaccept <= 2) { + goto yy136; } else { - goto yy154; + goto yy153; } } } else { if (yyaccept <= 5) { - if (yyaccept == 4) { - goto yy191; + if (yyaccept <= 4) { + goto yy190; } else { - goto yy211; + goto yy210; } } else { - goto yy602; + goto yy601; } } +yy158: + YYDEBUG(158, *YYCURSOR); + yych = *++YYCURSOR; + if (yych <= '/') goto yy157; + if (yych >= ':') goto yy157; yy159: YYDEBUG(159, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy158; - if (yych >= ':') goto yy158; -yy160: - YYDEBUG(160, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; + YYDEBUG(160, *YYCURSOR); + if (yych <= '/') goto yy153; + if (yych <= '9') goto yy159; + goto yy153; +yy161: YYDEBUG(161, *YYCURSOR); - if (yych <= '/') goto yy154; - if (yych <= '9') goto yy160; - goto yy154; -yy162: - YYDEBUG(162, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 32) { - goto yy167; + goto yy166; } - goto yy158; -yy163: - YYDEBUG(163, *YYCURSOR); + goto yy157; +yy162: + YYDEBUG(162, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 16) { - goto yy164; + goto yy163; } - goto yy158; -yy164: - YYDEBUG(164, *YYCURSOR); + goto yy157; +yy163: + YYDEBUG(163, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(165, *YYCURSOR); + YYDEBUG(164, *YYCURSOR); if (yybm[0+yych] & 16) { - goto yy164; + goto yy163; } - YYDEBUG(166, *YYCURSOR); + YYDEBUG(165, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1603 "Zend/zend_language_scanner.l" +#line 1604 "Zend/zend_language_scanner.l" { char *bin = yytext + 2; /* Skip "0b" */ int len = yyleng - 2; @@ -3113,19 +3118,19 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3117 "Zend/zend_language_scanner.c" -yy167: - YYDEBUG(167, *YYCURSOR); +#line 3122 "Zend/zend_language_scanner.c" +yy166: + YYDEBUG(166, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(168, *YYCURSOR); + YYDEBUG(167, *YYCURSOR); if (yybm[0+yych] & 32) { - goto yy167; + goto yy166; } - YYDEBUG(169, *YYCURSOR); + YYDEBUG(168, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1676 "Zend/zend_language_scanner.l" +#line 1677 "Zend/zend_language_scanner.l" { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; @@ -3153,137 +3158,137 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_DNUMBER); } } -#line 3157 "Zend/zend_language_scanner.c" -yy170: - YYDEBUG(170, *YYCURSOR); +#line 3162 "Zend/zend_language_scanner.c" +yy169: + YYDEBUG(169, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(171, *YYCURSOR); + YYDEBUG(170, *YYCURSOR); if (yych <= '^') { if (yych <= '9') { - if (yych >= '0') goto yy170; + if (yych >= '0') goto yy169; } else { - if (yych <= '@') goto yy172; - if (yych <= 'Z') goto yy170; + if (yych <= '@') goto yy171; + if (yych <= 'Z') goto yy169; } } else { if (yych <= '`') { - if (yych <= '_') goto yy170; + if (yych <= '_') goto yy169; } else { - if (yych <= 'z') goto yy170; - if (yych >= 0x80) goto yy170; + if (yych <= 'z') goto yy169; + if (yych >= 0x80) goto yy169; } } -yy172: - YYDEBUG(172, *YYCURSOR); +yy171: + YYDEBUG(171, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1854 "Zend/zend_language_scanner.l" +#line 1855 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 3187 "Zend/zend_language_scanner.c" +#line 3192 "Zend/zend_language_scanner.c" +yy172: + YYDEBUG(172, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy173; + if (yych != 'r') goto yy150; yy173: YYDEBUG(173, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy174; - if (yych != 'r') goto yy151; -yy174: - YYDEBUG(174, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(175, *YYCURSOR); + YYDEBUG(174, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1549 "Zend/zend_language_scanner.l" +#line 1550 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_XOR); } -#line 3205 "Zend/zend_language_scanner.c" -yy176: - YYDEBUG(176, *YYCURSOR); +#line 3210 "Zend/zend_language_scanner.c" +yy175: + YYDEBUG(175, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(177, *YYCURSOR); + YYDEBUG(176, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1541 "Zend/zend_language_scanner.l" +#line 1542 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_OR); } -#line 3218 "Zend/zend_language_scanner.c" -yy178: - YYDEBUG(178, *YYCURSOR); +#line 3223 "Zend/zend_language_scanner.c" +yy177: + YYDEBUG(177, *YYCURSOR); ++YYCURSOR; - YYDEBUG(179, *YYCURSOR); + YYDEBUG(178, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1529 "Zend/zend_language_scanner.l" +#line 1530 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_XOR_EQUAL); } -#line 3228 "Zend/zend_language_scanner.c" -yy180: - YYDEBUG(180, *YYCURSOR); +#line 3233 "Zend/zend_language_scanner.c" +yy179: + YYDEBUG(179, *YYCURSOR); ++YYCURSOR; - YYDEBUG(181, *YYCURSOR); + YYDEBUG(180, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1533 "Zend/zend_language_scanner.l" +#line 1534 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOLEAN_OR); } -#line 3238 "Zend/zend_language_scanner.c" -yy182: - YYDEBUG(182, *YYCURSOR); +#line 3243 "Zend/zend_language_scanner.c" +yy181: + YYDEBUG(181, *YYCURSOR); ++YYCURSOR; - YYDEBUG(183, *YYCURSOR); + YYDEBUG(182, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1525 "Zend/zend_language_scanner.l" +#line 1526 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OR_EQUAL); } -#line 3248 "Zend/zend_language_scanner.c" -yy184: - YYDEBUG(184, *YYCURSOR); +#line 3253 "Zend/zend_language_scanner.c" +yy183: + YYDEBUG(183, *YYCURSOR); ++YYCURSOR; - YYDEBUG(185, *YYCURSOR); + YYDEBUG(184, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1537 "Zend/zend_language_scanner.l" +#line 1538 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOLEAN_AND); } -#line 3258 "Zend/zend_language_scanner.c" -yy186: - YYDEBUG(186, *YYCURSOR); +#line 3263 "Zend/zend_language_scanner.c" +yy185: + YYDEBUG(185, *YYCURSOR); ++YYCURSOR; - YYDEBUG(187, *YYCURSOR); + YYDEBUG(186, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1521 "Zend/zend_language_scanner.l" +#line 1522 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_AND_EQUAL); } -#line 3268 "Zend/zend_language_scanner.c" -yy188: - YYDEBUG(188, *YYCURSOR); +#line 3273 "Zend/zend_language_scanner.c" +yy187: + YYDEBUG(187, *YYCURSOR); ++YYCURSOR; - YYDEBUG(189, *YYCURSOR); + YYDEBUG(188, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1509 "Zend/zend_language_scanner.l" +#line 1510 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MOD_EQUAL); } -#line 3278 "Zend/zend_language_scanner.c" -yy190: - YYDEBUG(190, *YYCURSOR); +#line 3283 "Zend/zend_language_scanner.c" +yy189: + YYDEBUG(189, *YYCURSOR); yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '*') goto yy195; -yy191: - YYDEBUG(191, *YYCURSOR); + if (yych == '*') goto yy194; +yy190: + YYDEBUG(190, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1912 "Zend/zend_language_scanner.l" +#line 1913 "Zend/zend_language_scanner.l" { int doc_com; @@ -3316,262 +3321,262 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_COMMENT); } -#line 3320 "Zend/zend_language_scanner.c" +#line 3325 "Zend/zend_language_scanner.c" +yy191: + YYDEBUG(191, *YYCURSOR); + yych = *++YYCURSOR; + goto yy140; yy192: YYDEBUG(192, *YYCURSOR); - yych = *++YYCURSOR; - goto yy141; -yy193: - YYDEBUG(193, *YYCURSOR); ++YYCURSOR; - YYDEBUG(194, *YYCURSOR); + YYDEBUG(193, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1501 "Zend/zend_language_scanner.l" +#line 1502 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DIV_EQUAL); } -#line 3334 "Zend/zend_language_scanner.c" -yy195: - YYDEBUG(195, *YYCURSOR); +#line 3339 "Zend/zend_language_scanner.c" +yy194: + YYDEBUG(194, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 64) { - goto yy196; + goto yy195; } - goto yy158; -yy196: - YYDEBUG(196, *YYCURSOR); + goto yy157; +yy195: + YYDEBUG(195, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(197, *YYCURSOR); + YYDEBUG(196, *YYCURSOR); if (yybm[0+yych] & 64) { - goto yy196; + goto yy195; } - goto yy191; -yy198: - YYDEBUG(198, *YYCURSOR); + goto yy190; +yy197: + YYDEBUG(197, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy202; - YYDEBUG(199, *YYCURSOR); + if ((yych = *YYCURSOR) == '=') goto yy201; + YYDEBUG(198, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1493 "Zend/zend_language_scanner.l" +#line 1494 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_POW); } -#line 3362 "Zend/zend_language_scanner.c" -yy200: - YYDEBUG(200, *YYCURSOR); +#line 3367 "Zend/zend_language_scanner.c" +yy199: + YYDEBUG(199, *YYCURSOR); ++YYCURSOR; - YYDEBUG(201, *YYCURSOR); + YYDEBUG(200, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1489 "Zend/zend_language_scanner.l" +#line 1490 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MUL_EQUAL); } -#line 3372 "Zend/zend_language_scanner.c" -yy202: - YYDEBUG(202, *YYCURSOR); +#line 3377 "Zend/zend_language_scanner.c" +yy201: + YYDEBUG(201, *YYCURSOR); ++YYCURSOR; - YYDEBUG(203, *YYCURSOR); + YYDEBUG(202, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1497 "Zend/zend_language_scanner.l" +#line 1498 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_POW_EQUAL); } -#line 3382 "Zend/zend_language_scanner.c" -yy204: - YYDEBUG(204, *YYCURSOR); +#line 3387 "Zend/zend_language_scanner.c" +yy203: + YYDEBUG(203, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy208; - YYDEBUG(205, *YYCURSOR); + if ((yych = *YYCURSOR) == '=') goto yy207; + YYDEBUG(204, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1557 "Zend/zend_language_scanner.l" +#line 1558 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SR); } -#line 3393 "Zend/zend_language_scanner.c" -yy206: - YYDEBUG(206, *YYCURSOR); +#line 3398 "Zend/zend_language_scanner.c" +yy205: + YYDEBUG(205, *YYCURSOR); ++YYCURSOR; - YYDEBUG(207, *YYCURSOR); + YYDEBUG(206, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1477 "Zend/zend_language_scanner.l" +#line 1478 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_GREATER_OR_EQUAL); } -#line 3403 "Zend/zend_language_scanner.c" -yy208: - YYDEBUG(208, *YYCURSOR); +#line 3408 "Zend/zend_language_scanner.c" +yy207: + YYDEBUG(207, *YYCURSOR); ++YYCURSOR; - YYDEBUG(209, *YYCURSOR); + YYDEBUG(208, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1517 "Zend/zend_language_scanner.l" +#line 1518 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SR_EQUAL); } -#line 3413 "Zend/zend_language_scanner.c" -yy210: - YYDEBUG(210, *YYCURSOR); +#line 3418 "Zend/zend_language_scanner.c" +yy209: + YYDEBUG(209, *YYCURSOR); yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ';') goto yy211; - if (yych <= '<') goto yy220; - if (yych <= '=') goto yy218; -yy211: - YYDEBUG(211, *YYCURSOR); + if (yych <= ';') goto yy210; + if (yych <= '<') goto yy219; + if (yych <= '=') goto yy217; +yy210: + YYDEBUG(210, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1553 "Zend/zend_language_scanner.l" +#line 1554 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SL); } -#line 3428 "Zend/zend_language_scanner.c" -yy212: - YYDEBUG(212, *YYCURSOR); +#line 3433 "Zend/zend_language_scanner.c" +yy211: + YYDEBUG(211, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '>') goto yy216; - YYDEBUG(213, *YYCURSOR); + if ((yych = *YYCURSOR) == '>') goto yy215; + YYDEBUG(212, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1473 "Zend/zend_language_scanner.l" +#line 1474 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL); } -#line 3439 "Zend/zend_language_scanner.c" +#line 3444 "Zend/zend_language_scanner.c" +yy213: + YYDEBUG(213, *YYCURSOR); + ++YYCURSOR; yy214: YYDEBUG(214, *YYCURSOR); - ++YYCURSOR; -yy215: - YYDEBUG(215, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1465 "Zend/zend_language_scanner.l" +#line 1466 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_NOT_EQUAL); } -#line 3450 "Zend/zend_language_scanner.c" -yy216: - YYDEBUG(216, *YYCURSOR); +#line 3455 "Zend/zend_language_scanner.c" +yy215: + YYDEBUG(215, *YYCURSOR); ++YYCURSOR; - YYDEBUG(217, *YYCURSOR); + YYDEBUG(216, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1469 "Zend/zend_language_scanner.l" +#line 1470 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SPACESHIP); } -#line 3460 "Zend/zend_language_scanner.c" -yy218: - YYDEBUG(218, *YYCURSOR); +#line 3465 "Zend/zend_language_scanner.c" +yy217: + YYDEBUG(217, *YYCURSOR); ++YYCURSOR; - YYDEBUG(219, *YYCURSOR); + YYDEBUG(218, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1513 "Zend/zend_language_scanner.l" +#line 1514 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SL_EQUAL); } -#line 3470 "Zend/zend_language_scanner.c" -yy220: - YYDEBUG(220, *YYCURSOR); +#line 3475 "Zend/zend_language_scanner.c" +yy219: + YYDEBUG(219, *YYCURSOR); ++YYCURSOR; YYFILL(2); yych = *YYCURSOR; - YYDEBUG(221, *YYCURSOR); + YYDEBUG(220, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy220; + goto yy219; } if (yych <= 'Z') { if (yych <= '&') { - if (yych == '"') goto yy225; - goto yy158; + if (yych == '"') goto yy224; + goto yy157; } else { - if (yych <= '\'') goto yy224; - if (yych <= '@') goto yy158; + if (yych <= '\'') goto yy223; + if (yych <= '@') goto yy157; } } else { if (yych <= '`') { - if (yych != '_') goto yy158; + if (yych != '_') goto yy157; } else { - if (yych <= 'z') goto yy222; - if (yych <= 0x7F) goto yy158; + if (yych <= 'z') goto yy221; + if (yych <= 0x7F) goto yy157; } } -yy222: - YYDEBUG(222, *YYCURSOR); +yy221: + YYDEBUG(221, *YYCURSOR); ++YYCURSOR; YYFILL(2); yych = *YYCURSOR; - YYDEBUG(223, *YYCURSOR); + YYDEBUG(222, *YYCURSOR); if (yych <= '@') { if (yych <= '\f') { - if (yych == '\n') goto yy229; - goto yy158; + if (yych == '\n') goto yy228; + goto yy157; } else { - if (yych <= '\r') goto yy231; - if (yych <= '/') goto yy158; - if (yych <= '9') goto yy222; - goto yy158; + if (yych <= '\r') goto yy230; + if (yych <= '/') goto yy157; + if (yych <= '9') goto yy221; + goto yy157; } } else { if (yych <= '_') { - if (yych <= 'Z') goto yy222; - if (yych <= '^') goto yy158; - goto yy222; + if (yych <= 'Z') goto yy221; + if (yych <= '^') goto yy157; + goto yy221; } else { - if (yych <= '`') goto yy158; - if (yych <= 'z') goto yy222; - if (yych <= 0x7F) goto yy158; - goto yy222; + if (yych <= '`') goto yy157; + if (yych <= 'z') goto yy221; + if (yych <= 0x7F) goto yy157; + goto yy221; } } +yy223: + YYDEBUG(223, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\'') goto yy157; + if (yych <= '/') goto yy232; + if (yych <= '9') goto yy157; + goto yy232; yy224: YYDEBUG(224, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\'') goto yy158; - if (yych <= '/') goto yy233; - if (yych <= '9') goto yy158; - goto yy233; + if (yych == '"') goto yy157; + if (yych <= '/') goto yy226; + if (yych <= '9') goto yy157; + goto yy226; yy225: YYDEBUG(225, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '"') goto yy158; - if (yych <= '/') goto yy227; - if (yych <= '9') goto yy158; - goto yy227; -yy226: - YYDEBUG(226, *YYCURSOR); ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; -yy227: - YYDEBUG(227, *YYCURSOR); +yy226: + YYDEBUG(226, *YYCURSOR); if (yych <= 'Z') { if (yych <= '/') { - if (yych != '"') goto yy158; + if (yych != '"') goto yy157; } else { - if (yych <= '9') goto yy226; - if (yych <= '@') goto yy158; - goto yy226; + if (yych <= '9') goto yy225; + if (yych <= '@') goto yy157; + goto yy225; } } else { if (yych <= '`') { - if (yych == '_') goto yy226; - goto yy158; + if (yych == '_') goto yy225; + goto yy157; } else { - if (yych <= 'z') goto yy226; - if (yych <= 0x7F) goto yy158; - goto yy226; + if (yych <= 'z') goto yy225; + if (yych <= 0x7F) goto yy157; + goto yy225; } } +yy227: + YYDEBUG(227, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\n') goto yy228; + if (yych == '\r') goto yy230; + goto yy157; yy228: YYDEBUG(228, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy229; - if (yych == '\r') goto yy231; - goto yy158; + ++YYCURSOR; yy229: YYDEBUG(229, *YYCURSOR); - ++YYCURSOR; -yy230: - YYDEBUG(230, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2062 "Zend/zend_language_scanner.l" +#line 2063 "Zend/zend_language_scanner.l" { char *s; int bprefix = (yytext[0] != '<') ? 1 : 0; @@ -3618,3326 +3623,3328 @@ int start_line = CG(zend_lineno); RETURN_TOKEN(T_START_HEREDOC); } -#line 3622 "Zend/zend_language_scanner.c" +#line 3627 "Zend/zend_language_scanner.c" +yy230: + YYDEBUG(230, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\n') goto yy228; + goto yy229; yy231: YYDEBUG(231, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy229; - goto yy230; -yy232: - YYDEBUG(232, *YYCURSOR); ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; -yy233: - YYDEBUG(233, *YYCURSOR); +yy232: + YYDEBUG(232, *YYCURSOR); if (yych <= 'Z') { if (yych <= '/') { - if (yych == '\'') goto yy228; - goto yy158; + if (yych == '\'') goto yy227; + goto yy157; } else { - if (yych <= '9') goto yy232; - if (yych <= '@') goto yy158; - goto yy232; + if (yych <= '9') goto yy231; + if (yych <= '@') goto yy157; + goto yy231; } } else { if (yych <= '`') { - if (yych == '_') goto yy232; - goto yy158; + if (yych == '_') goto yy231; + goto yy157; } else { - if (yych <= 'z') goto yy232; - if (yych <= 0x7F) goto yy158; - goto yy232; + if (yych <= 'z') goto yy231; + if (yych <= 0x7F) goto yy157; + goto yy231; } } -yy234: - YYDEBUG(234, *YYCURSOR); +yy233: + YYDEBUG(233, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '=') goto yy215; - YYDEBUG(235, *YYCURSOR); + if (yych != '=') goto yy214; + YYDEBUG(234, *YYCURSOR); ++YYCURSOR; - YYDEBUG(236, *YYCURSOR); + YYDEBUG(235, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1457 "Zend/zend_language_scanner.l" +#line 1458 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_NOT_IDENTICAL); } -#line 3666 "Zend/zend_language_scanner.c" -yy237: - YYDEBUG(237, *YYCURSOR); +#line 3671 "Zend/zend_language_scanner.c" +yy236: + YYDEBUG(236, *YYCURSOR); ++YYCURSOR; - YYDEBUG(238, *YYCURSOR); + YYDEBUG(237, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1481 "Zend/zend_language_scanner.l" +#line 1482 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PLUS_EQUAL); } -#line 3676 "Zend/zend_language_scanner.c" -yy239: - YYDEBUG(239, *YYCURSOR); +#line 3681 "Zend/zend_language_scanner.c" +yy238: + YYDEBUG(238, *YYCURSOR); ++YYCURSOR; - YYDEBUG(240, *YYCURSOR); + YYDEBUG(239, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1445 "Zend/zend_language_scanner.l" +#line 1446 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INC); } -#line 3686 "Zend/zend_language_scanner.c" +#line 3691 "Zend/zend_language_scanner.c" +yy240: + YYDEBUG(240, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy241; + if (yych != 's') goto yy150; yy241: YYDEBUG(241, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy242; - if (yych != 's') goto yy151; + if (yych == 'T') goto yy242; + if (yych != 't') goto yy150; yy242: YYDEBUG(242, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy243; - if (yych != 't') goto yy151; -yy243: - YYDEBUG(243, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(244, *YYCURSOR); + YYDEBUG(243, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1433 "Zend/zend_language_scanner.l" +#line 1434 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LIST); } -#line 3709 "Zend/zend_language_scanner.c" -yy245: - YYDEBUG(245, *YYCURSOR); +#line 3714 "Zend/zend_language_scanner.c" +yy244: + YYDEBUG(244, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy249; - YYDEBUG(246, *YYCURSOR); + if ((yych = *YYCURSOR) == '=') goto yy248; + YYDEBUG(245, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1461 "Zend/zend_language_scanner.l" +#line 1462 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_EQUAL); } -#line 3720 "Zend/zend_language_scanner.c" -yy247: - YYDEBUG(247, *YYCURSOR); +#line 3725 "Zend/zend_language_scanner.c" +yy246: + YYDEBUG(246, *YYCURSOR); ++YYCURSOR; - YYDEBUG(248, *YYCURSOR); + YYDEBUG(247, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1429 "Zend/zend_language_scanner.l" +#line 1430 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DOUBLE_ARROW); } -#line 3730 "Zend/zend_language_scanner.c" -yy249: - YYDEBUG(249, *YYCURSOR); +#line 3735 "Zend/zend_language_scanner.c" +yy248: + YYDEBUG(248, *YYCURSOR); ++YYCURSOR; - YYDEBUG(250, *YYCURSOR); + YYDEBUG(249, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1453 "Zend/zend_language_scanner.l" +#line 1454 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IS_IDENTICAL); } -#line 3740 "Zend/zend_language_scanner.c" -yy251: - YYDEBUG(251, *YYCURSOR); +#line 3745 "Zend/zend_language_scanner.c" +yy250: + YYDEBUG(250, *YYCURSOR); yych = *++YYCURSOR; + YYDEBUG(-1, yych); switch (yych) { case 'C': - case 'c': goto yy253; + case 'c': goto yy252; case 'D': - case 'd': goto yy258; + case 'd': goto yy257; case 'F': - case 'f': goto yy255; + case 'f': goto yy254; case 'H': - case 'h': goto yy252; + case 'h': goto yy251; case 'L': - case 'l': goto yy257; + case 'l': goto yy256; case 'M': - case 'm': goto yy256; + case 'm': goto yy255; case 'N': - case 'n': goto yy259; + case 'n': goto yy258; case 'T': - case 't': goto yy254; - default: goto yy151; + case 't': goto yy253; + default: goto yy150; } +yy251: + YYDEBUG(251, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy319; + if (yych == 'a') goto yy319; + goto yy150; yy252: YYDEBUG(252, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy320; - if (yych == 'a') goto yy320; - goto yy151; + if (yych == 'L') goto yy312; + if (yych == 'l') goto yy312; + goto yy150; yy253: YYDEBUG(253, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy313; - if (yych == 'l') goto yy313; - goto yy151; + if (yych == 'R') goto yy305; + if (yych == 'r') goto yy305; + goto yy150; yy254: YYDEBUG(254, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy306; - if (yych == 'r') goto yy306; - goto yy151; -yy255: - YYDEBUG(255, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'I') goto yy290; - if (yych <= 'T') goto yy151; - goto yy291; + if (yych == 'I') goto yy289; + if (yych <= 'T') goto yy150; + goto yy290; } else { if (yych <= 'i') { - if (yych <= 'h') goto yy151; - goto yy290; + if (yych <= 'h') goto yy150; + goto yy289; } else { - if (yych == 'u') goto yy291; - goto yy151; + if (yych == 'u') goto yy290; + goto yy150; } } +yy255: + YYDEBUG(255, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy281; + if (yych == 'e') goto yy281; + goto yy150; yy256: YYDEBUG(256, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy282; - if (yych == 'e') goto yy282; - goto yy151; + if (yych == 'I') goto yy275; + if (yych == 'i') goto yy275; + goto yy150; yy257: YYDEBUG(257, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy276; - if (yych == 'i') goto yy276; - goto yy151; + if (yych == 'I') goto yy270; + if (yych == 'i') goto yy270; + goto yy150; yy258: YYDEBUG(258, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy271; - if (yych == 'i') goto yy271; - goto yy151; + if (yych == 'A') goto yy259; + if (yych != 'a') goto yy150; yy259: YYDEBUG(259, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy260; - if (yych != 'a') goto yy151; + if (yych == 'M') goto yy260; + if (yych != 'm') goto yy150; yy260: YYDEBUG(260, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy261; - if (yych != 'm') goto yy151; + if (yych == 'E') goto yy261; + if (yych != 'e') goto yy150; yy261: YYDEBUG(261, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy262; - if (yych != 'e') goto yy151; + if (yych == 'S') goto yy262; + if (yych != 's') goto yy150; yy262: YYDEBUG(262, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy263; - if (yych != 's') goto yy151; + if (yych == 'P') goto yy263; + if (yych != 'p') goto yy150; yy263: YYDEBUG(263, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy264; - if (yych != 'p') goto yy151; + if (yych == 'A') goto yy264; + if (yych != 'a') goto yy150; yy264: YYDEBUG(264, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy265; - if (yych != 'a') goto yy151; + if (yych == 'C') goto yy265; + if (yych != 'c') goto yy150; yy265: YYDEBUG(265, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy266; - if (yych != 'c') goto yy151; + if (yych == 'E') goto yy266; + if (yych != 'e') goto yy150; yy266: YYDEBUG(266, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy267; - if (yych != 'e') goto yy151; -yy267: + if (yych != '_') goto yy150; YYDEBUG(267, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy151; + if (yych != '_') goto yy150; YYDEBUG(268, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy151; - YYDEBUG(269, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(270, *YYCURSOR); + YYDEBUG(269, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1762 "Zend/zend_language_scanner.l" +#line 1763 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NS_C); } -#line 3873 "Zend/zend_language_scanner.c" +#line 3879 "Zend/zend_language_scanner.c" +yy270: + YYDEBUG(270, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy271; + if (yych != 'r') goto yy150; yy271: YYDEBUG(271, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy272; - if (yych != 'r') goto yy151; -yy272: + if (yych != '_') goto yy150; YYDEBUG(272, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy151; + if (yych != '_') goto yy150; YYDEBUG(273, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy151; - YYDEBUG(274, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(275, *YYCURSOR); + YYDEBUG(274, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1758 "Zend/zend_language_scanner.l" +#line 1759 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DIR); } -#line 3897 "Zend/zend_language_scanner.c" +#line 3903 "Zend/zend_language_scanner.c" +yy275: + YYDEBUG(275, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy276; + if (yych != 'n') goto yy150; yy276: YYDEBUG(276, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy277; - if (yych != 'n') goto yy151; + if (yych == 'E') goto yy277; + if (yych != 'e') goto yy150; yy277: YYDEBUG(277, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy278; - if (yych != 'e') goto yy151; -yy278: + if (yych != '_') goto yy150; YYDEBUG(278, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy151; + if (yych != '_') goto yy150; YYDEBUG(279, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy151; - YYDEBUG(280, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(281, *YYCURSOR); + YYDEBUG(280, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1750 "Zend/zend_language_scanner.l" +#line 1751 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LINE); } -#line 3926 "Zend/zend_language_scanner.c" +#line 3932 "Zend/zend_language_scanner.c" +yy281: + YYDEBUG(281, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy282; + if (yych != 't') goto yy150; yy282: YYDEBUG(282, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy283; - if (yych != 't') goto yy151; + if (yych == 'H') goto yy283; + if (yych != 'h') goto yy150; yy283: YYDEBUG(283, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy284; - if (yych != 'h') goto yy151; + if (yych == 'O') goto yy284; + if (yych != 'o') goto yy150; yy284: YYDEBUG(284, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy285; - if (yych != 'o') goto yy151; + if (yych == 'D') goto yy285; + if (yych != 'd') goto yy150; yy285: YYDEBUG(285, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy286; - if (yych != 'd') goto yy151; -yy286: + if (yych != '_') goto yy150; YYDEBUG(286, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy151; + if (yych != '_') goto yy150; YYDEBUG(287, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy151; - YYDEBUG(288, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(289, *YYCURSOR); + YYDEBUG(288, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1746 "Zend/zend_language_scanner.l" +#line 1747 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_METHOD_C); } -#line 3965 "Zend/zend_language_scanner.c" +#line 3971 "Zend/zend_language_scanner.c" +yy289: + YYDEBUG(289, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy300; + if (yych == 'l') goto yy300; + goto yy150; yy290: YYDEBUG(290, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy301; - if (yych == 'l') goto yy301; - goto yy151; + if (yych == 'N') goto yy291; + if (yych != 'n') goto yy150; yy291: YYDEBUG(291, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy292; - if (yych != 'n') goto yy151; + if (yych == 'C') goto yy292; + if (yych != 'c') goto yy150; yy292: YYDEBUG(292, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy293; - if (yych != 'c') goto yy151; + if (yych == 'T') goto yy293; + if (yych != 't') goto yy150; yy293: YYDEBUG(293, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy294; - if (yych != 't') goto yy151; + if (yych == 'I') goto yy294; + if (yych != 'i') goto yy150; yy294: YYDEBUG(294, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy295; - if (yych != 'i') goto yy151; + if (yych == 'O') goto yy295; + if (yych != 'o') goto yy150; yy295: YYDEBUG(295, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy296; - if (yych != 'o') goto yy151; + if (yych == 'N') goto yy296; + if (yych != 'n') goto yy150; yy296: YYDEBUG(296, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy297; - if (yych != 'n') goto yy151; -yy297: + if (yych != '_') goto yy150; YYDEBUG(297, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy151; + if (yych != '_') goto yy150; YYDEBUG(298, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy151; - YYDEBUG(299, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(300, *YYCURSOR); + YYDEBUG(299, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1742 "Zend/zend_language_scanner.l" +#line 1743 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FUNC_C); } -#line 4020 "Zend/zend_language_scanner.c" +#line 4026 "Zend/zend_language_scanner.c" +yy300: + YYDEBUG(300, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy301; + if (yych != 'e') goto yy150; yy301: YYDEBUG(301, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy302; - if (yych != 'e') goto yy151; -yy302: + if (yych != '_') goto yy150; YYDEBUG(302, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy151; + if (yych != '_') goto yy150; YYDEBUG(303, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy151; - YYDEBUG(304, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(305, *YYCURSOR); + YYDEBUG(304, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1754 "Zend/zend_language_scanner.l" +#line 1755 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FILE); } -#line 4044 "Zend/zend_language_scanner.c" +#line 4050 "Zend/zend_language_scanner.c" +yy305: + YYDEBUG(305, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy306; + if (yych != 'a') goto yy150; yy306: YYDEBUG(306, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy307; - if (yych != 'a') goto yy151; + if (yych == 'I') goto yy307; + if (yych != 'i') goto yy150; yy307: YYDEBUG(307, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy308; - if (yych != 'i') goto yy151; + if (yych == 'T') goto yy308; + if (yych != 't') goto yy150; yy308: YYDEBUG(308, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy309; - if (yych != 't') goto yy151; -yy309: + if (yych != '_') goto yy150; YYDEBUG(309, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy151; + if (yych != '_') goto yy150; YYDEBUG(310, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy151; - YYDEBUG(311, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(312, *YYCURSOR); + YYDEBUG(311, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1738 "Zend/zend_language_scanner.l" +#line 1739 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRAIT_C); } -#line 4078 "Zend/zend_language_scanner.c" +#line 4084 "Zend/zend_language_scanner.c" +yy312: + YYDEBUG(312, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy313; + if (yych != 'a') goto yy150; yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy314; - if (yych != 'a') goto yy151; + if (yych == 'S') goto yy314; + if (yych != 's') goto yy150; yy314: YYDEBUG(314, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'S') goto yy315; - if (yych != 's') goto yy151; + if (yych != 's') goto yy150; yy315: YYDEBUG(315, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy316; - if (yych != 's') goto yy151; -yy316: + if (yych != '_') goto yy150; YYDEBUG(316, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy151; + if (yych != '_') goto yy150; YYDEBUG(317, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy151; - YYDEBUG(318, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(319, *YYCURSOR); + YYDEBUG(318, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1734 "Zend/zend_language_scanner.l" +#line 1735 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLASS_C); } -#line 4112 "Zend/zend_language_scanner.c" +#line 4118 "Zend/zend_language_scanner.c" +yy319: + YYDEBUG(319, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy320; + if (yych != 'l') goto yy150; yy320: YYDEBUG(320, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy321; - if (yych != 'l') goto yy151; + if (yych == 'T') goto yy321; + if (yych != 't') goto yy150; yy321: YYDEBUG(321, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy322; - if (yych != 't') goto yy151; -yy322: + if (yych != '_') goto yy150; YYDEBUG(322, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy151; + if (yych == 'C') goto yy323; + if (yych != 'c') goto yy150; +yy323: YYDEBUG(323, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy324; - if (yych != 'c') goto yy151; + if (yych == 'O') goto yy324; + if (yych != 'o') goto yy150; yy324: YYDEBUG(324, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy325; - if (yych != 'o') goto yy151; + if (yych == 'M') goto yy325; + if (yych != 'm') goto yy150; yy325: YYDEBUG(325, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy326; - if (yych != 'm') goto yy151; + if (yych == 'P') goto yy326; + if (yych != 'p') goto yy150; yy326: YYDEBUG(326, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy327; - if (yych != 'p') goto yy151; + if (yych == 'I') goto yy327; + if (yych != 'i') goto yy150; yy327: YYDEBUG(327, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy328; - if (yych != 'i') goto yy151; + if (yych == 'L') goto yy328; + if (yych != 'l') goto yy150; yy328: YYDEBUG(328, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy329; - if (yych != 'l') goto yy151; + if (yych == 'E') goto yy329; + if (yych != 'e') goto yy150; yy329: YYDEBUG(329, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy330; - if (yych != 'e') goto yy151; + if (yych == 'R') goto yy330; + if (yych != 'r') goto yy150; yy330: YYDEBUG(330, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy331; - if (yych != 'r') goto yy151; -yy331: - YYDEBUG(331, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(332, *YYCURSOR); + YYDEBUG(331, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1397 "Zend/zend_language_scanner.l" +#line 1398 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_HALT_COMPILER); } -#line 4178 "Zend/zend_language_scanner.c" +#line 4184 "Zend/zend_language_scanner.c" +yy332: + YYDEBUG(332, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy336; + if (yych == 's') goto yy336; + goto yy150; yy333: YYDEBUG(333, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy337; - if (yych == 's') goto yy337; - goto yy151; + if (yych == 'E') goto yy334; + if (yych != 'e') goto yy150; yy334: YYDEBUG(334, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy335; - if (yych != 'e') goto yy151; -yy335: - YYDEBUG(335, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(336, *YYCURSOR); + YYDEBUG(335, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1377 "Zend/zend_language_scanner.l" +#line 1378 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_USE); } -#line 4202 "Zend/zend_language_scanner.c" +#line 4208 "Zend/zend_language_scanner.c" +yy336: + YYDEBUG(336, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy337; + if (yych != 'e') goto yy150; yy337: YYDEBUG(337, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy338; - if (yych != 'e') goto yy151; + if (yych == 'T') goto yy338; + if (yych != 't') goto yy150; yy338: YYDEBUG(338, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy339; - if (yych != 't') goto yy151; -yy339: - YYDEBUG(339, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(340, *YYCURSOR); + YYDEBUG(339, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1425 "Zend/zend_language_scanner.l" +#line 1426 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_UNSET); } -#line 4225 "Zend/zend_language_scanner.c" -yy341: - YYDEBUG(341, *YYCURSOR); +#line 4231 "Zend/zend_language_scanner.c" +yy340: + YYDEBUG(340, *YYCURSOR); ++YYCURSOR; YYFILL(7); yych = *YYCURSOR; -yy342: - YYDEBUG(342, *YYCURSOR); +yy341: + YYDEBUG(341, *YYCURSOR); if (yych <= 'S') { if (yych <= 'D') { if (yych <= ' ') { - if (yych == '\t') goto yy341; - if (yych <= 0x1F) goto yy158; - goto yy341; + if (yych == '\t') goto yy340; + if (yych <= 0x1F) goto yy157; + goto yy340; } else { if (yych <= 'A') { - if (yych <= '@') goto yy158; - goto yy346; + if (yych <= '@') goto yy157; + goto yy345; } else { - if (yych <= 'B') goto yy344; - if (yych <= 'C') goto yy158; - goto yy349; + if (yych <= 'B') goto yy343; + if (yych <= 'C') goto yy157; + goto yy348; } } } else { if (yych <= 'I') { - if (yych == 'F') goto yy350; - if (yych <= 'H') goto yy158; - goto yy351; + if (yych == 'F') goto yy349; + if (yych <= 'H') goto yy157; + goto yy350; } else { if (yych <= 'O') { - if (yych <= 'N') goto yy158; - goto yy345; + if (yych <= 'N') goto yy157; + goto yy344; } else { - if (yych <= 'Q') goto yy158; - if (yych <= 'R') goto yy348; - goto yy347; + if (yych <= 'Q') goto yy157; + if (yych <= 'R') goto yy347; + goto yy346; } } } } else { if (yych <= 'f') { if (yych <= 'a') { - if (yych == 'U') goto yy343; - if (yych <= '`') goto yy158; - goto yy346; + if (yych == 'U') goto yy342; + if (yych <= '`') goto yy157; + goto yy345; } else { if (yych <= 'c') { - if (yych <= 'b') goto yy344; - goto yy158; + if (yych <= 'b') goto yy343; + goto yy157; } else { - if (yych <= 'd') goto yy349; - if (yych <= 'e') goto yy158; - goto yy350; + if (yych <= 'd') goto yy348; + if (yych <= 'e') goto yy157; + goto yy349; } } } else { if (yych <= 'q') { if (yych <= 'i') { - if (yych <= 'h') goto yy158; - goto yy351; + if (yych <= 'h') goto yy157; + goto yy350; } else { - if (yych == 'o') goto yy345; - goto yy158; + if (yych == 'o') goto yy344; + goto yy157; } } else { if (yych <= 's') { - if (yych <= 'r') goto yy348; - goto yy347; + if (yych <= 'r') goto yy347; + goto yy346; } else { - if (yych != 'u') goto yy158; + if (yych != 'u') goto yy157; } } } } +yy342: + YYDEBUG(342, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy409; + if (yych == 'n') goto yy409; + goto yy157; yy343: YYDEBUG(343, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy410; - if (yych == 'n') goto yy410; - goto yy158; -yy344: - YYDEBUG(344, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'I') goto yy397; - if (yych <= 'N') goto yy158; - goto yy398; + if (yych == 'I') goto yy396; + if (yych <= 'N') goto yy157; + goto yy397; } else { if (yych <= 'i') { - if (yych <= 'h') goto yy158; - goto yy397; + if (yych <= 'h') goto yy157; + goto yy396; } else { - if (yych == 'o') goto yy398; - goto yy158; + if (yych == 'o') goto yy397; + goto yy157; } } +yy344: + YYDEBUG(344, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy388; + if (yych == 'b') goto yy388; + goto yy157; yy345: YYDEBUG(345, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy389; - if (yych == 'b') goto yy389; - goto yy158; + if (yych == 'R') goto yy381; + if (yych == 'r') goto yy381; + goto yy157; yy346: YYDEBUG(346, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy382; - if (yych == 'r') goto yy382; - goto yy158; + if (yych == 'T') goto yy373; + if (yych == 't') goto yy373; + goto yy157; yy347: YYDEBUG(347, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy374; - if (yych == 't') goto yy374; - goto yy158; + if (yych == 'E') goto yy371; + if (yych == 'e') goto yy371; + goto yy157; yy348: YYDEBUG(348, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy372; - if (yych == 'e') goto yy372; - goto yy158; + if (yych == 'O') goto yy367; + if (yych == 'o') goto yy367; + goto yy157; yy349: YYDEBUG(349, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy368; - if (yych == 'o') goto yy368; - goto yy158; + if (yych == 'L') goto yy360; + if (yych == 'l') goto yy360; + goto yy157; yy350: YYDEBUG(350, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy361; - if (yych == 'l') goto yy361; - goto yy158; + if (yych == 'N') goto yy351; + if (yych != 'n') goto yy157; yy351: YYDEBUG(351, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy352; - if (yych != 'n') goto yy158; + if (yych == 'T') goto yy352; + if (yych != 't') goto yy157; yy352: YYDEBUG(352, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy353; - if (yych != 't') goto yy158; + if (yych == 'E') goto yy353; + if (yych != 'e') goto yy355; yy353: YYDEBUG(353, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy354; - if (yych != 'e') goto yy356; + if (yych == 'G') goto yy358; + if (yych == 'g') goto yy358; + goto yy157; yy354: YYDEBUG(354, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'G') goto yy359; - if (yych == 'g') goto yy359; - goto yy158; -yy355: - YYDEBUG(355, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy356: - YYDEBUG(356, *YYCURSOR); +yy355: + YYDEBUG(355, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy355; - goto yy158; + if (yych == '\t') goto yy354; + goto yy157; } else { - if (yych <= ' ') goto yy355; - if (yych != ')') goto yy158; + if (yych <= ' ') goto yy354; + if (yych != ')') goto yy157; } - YYDEBUG(357, *YYCURSOR); + YYDEBUG(356, *YYCURSOR); ++YYCURSOR; - YYDEBUG(358, *YYCURSOR); + YYDEBUG(357, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1325 "Zend/zend_language_scanner.l" +#line 1326 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INT_CAST); } -#line 4401 "Zend/zend_language_scanner.c" +#line 4407 "Zend/zend_language_scanner.c" +yy358: + YYDEBUG(358, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy359; + if (yych != 'e') goto yy157; yy359: YYDEBUG(359, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy360; - if (yych != 'e') goto yy158; + if (yych == 'R') goto yy354; + if (yych == 'r') goto yy354; + goto yy157; yy360: YYDEBUG(360, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy355; - if (yych == 'r') goto yy355; - goto yy158; + if (yych == 'O') goto yy361; + if (yych != 'o') goto yy157; yy361: YYDEBUG(361, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy362; - if (yych != 'o') goto yy158; + if (yych == 'A') goto yy362; + if (yych != 'a') goto yy157; yy362: YYDEBUG(362, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy363; - if (yych != 'a') goto yy158; + if (yych == 'T') goto yy363; + if (yych != 't') goto yy157; yy363: YYDEBUG(363, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy364; - if (yych != 't') goto yy158; -yy364: - YYDEBUG(364, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(365, *YYCURSOR); + YYDEBUG(364, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy364; - goto yy158; + if (yych == '\t') goto yy363; + goto yy157; } else { - if (yych <= ' ') goto yy364; - if (yych != ')') goto yy158; + if (yych <= ' ') goto yy363; + if (yych != ')') goto yy157; } - YYDEBUG(366, *YYCURSOR); + YYDEBUG(365, *YYCURSOR); ++YYCURSOR; - YYDEBUG(367, *YYCURSOR); + YYDEBUG(366, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1329 "Zend/zend_language_scanner.l" +#line 1330 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DOUBLE_CAST); } -#line 4449 "Zend/zend_language_scanner.c" +#line 4455 "Zend/zend_language_scanner.c" +yy367: + YYDEBUG(367, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy368; + if (yych != 'u') goto yy157; yy368: YYDEBUG(368, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy369; - if (yych != 'u') goto yy158; + if (yych == 'B') goto yy369; + if (yych != 'b') goto yy157; yy369: YYDEBUG(369, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy370; - if (yych != 'b') goto yy158; + if (yych == 'L') goto yy370; + if (yych != 'l') goto yy157; yy370: YYDEBUG(370, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy371; - if (yych != 'l') goto yy158; + if (yych == 'E') goto yy363; + if (yych == 'e') goto yy363; + goto yy157; yy371: YYDEBUG(371, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy364; - if (yych == 'e') goto yy364; - goto yy158; + if (yych == 'A') goto yy372; + if (yych != 'a') goto yy157; yy372: YYDEBUG(372, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy373; - if (yych != 'a') goto yy158; + if (yych == 'L') goto yy363; + if (yych == 'l') goto yy363; + goto yy157; yy373: YYDEBUG(373, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy364; - if (yych == 'l') goto yy364; - goto yy158; + if (yych == 'R') goto yy374; + if (yych != 'r') goto yy157; yy374: YYDEBUG(374, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy375; - if (yych != 'r') goto yy158; + if (yych == 'I') goto yy375; + if (yych != 'i') goto yy157; yy375: YYDEBUG(375, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy376; - if (yych != 'i') goto yy158; + if (yych == 'N') goto yy376; + if (yych != 'n') goto yy157; yy376: YYDEBUG(376, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy377; - if (yych != 'n') goto yy158; + if (yych == 'G') goto yy377; + if (yych != 'g') goto yy157; yy377: YYDEBUG(377, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'G') goto yy378; - if (yych != 'g') goto yy158; -yy378: - YYDEBUG(378, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(379, *YYCURSOR); + YYDEBUG(378, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy378; - goto yy158; + if (yych == '\t') goto yy377; + goto yy157; } else { - if (yych <= ' ') goto yy378; - if (yych != ')') goto yy158; + if (yych <= ' ') goto yy377; + if (yych != ')') goto yy157; } - YYDEBUG(380, *YYCURSOR); + YYDEBUG(379, *YYCURSOR); ++YYCURSOR; - YYDEBUG(381, *YYCURSOR); + YYDEBUG(380, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1333 "Zend/zend_language_scanner.l" +#line 1334 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_STRING_CAST); } -#line 4523 "Zend/zend_language_scanner.c" +#line 4529 "Zend/zend_language_scanner.c" +yy381: + YYDEBUG(381, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy382; + if (yych != 'r') goto yy157; yy382: YYDEBUG(382, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy383; - if (yych != 'r') goto yy158; + if (yych == 'A') goto yy383; + if (yych != 'a') goto yy157; yy383: YYDEBUG(383, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy384; - if (yych != 'a') goto yy158; + if (yych == 'Y') goto yy384; + if (yych != 'y') goto yy157; yy384: YYDEBUG(384, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy385; - if (yych != 'y') goto yy158; -yy385: - YYDEBUG(385, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(386, *YYCURSOR); + YYDEBUG(385, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy385; - goto yy158; + if (yych == '\t') goto yy384; + goto yy157; } else { - if (yych <= ' ') goto yy385; - if (yych != ')') goto yy158; + if (yych <= ' ') goto yy384; + if (yych != ')') goto yy157; } - YYDEBUG(387, *YYCURSOR); + YYDEBUG(386, *YYCURSOR); ++YYCURSOR; - YYDEBUG(388, *YYCURSOR); + YYDEBUG(387, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1337 "Zend/zend_language_scanner.l" +#line 1338 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ARRAY_CAST); } -#line 4560 "Zend/zend_language_scanner.c" +#line 4566 "Zend/zend_language_scanner.c" +yy388: + YYDEBUG(388, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'J') goto yy389; + if (yych != 'j') goto yy157; yy389: YYDEBUG(389, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'J') goto yy390; - if (yych != 'j') goto yy158; + if (yych == 'E') goto yy390; + if (yych != 'e') goto yy157; yy390: YYDEBUG(390, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy391; - if (yych != 'e') goto yy158; + if (yych == 'C') goto yy391; + if (yych != 'c') goto yy157; yy391: YYDEBUG(391, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy392; - if (yych != 'c') goto yy158; + if (yych == 'T') goto yy392; + if (yych != 't') goto yy157; yy392: YYDEBUG(392, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy393; - if (yych != 't') goto yy158; -yy393: - YYDEBUG(393, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(394, *YYCURSOR); + YYDEBUG(393, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy393; - goto yy158; + if (yych == '\t') goto yy392; + goto yy157; } else { - if (yych <= ' ') goto yy393; - if (yych != ')') goto yy158; + if (yych <= ' ') goto yy392; + if (yych != ')') goto yy157; } - YYDEBUG(395, *YYCURSOR); + YYDEBUG(394, *YYCURSOR); ++YYCURSOR; - YYDEBUG(396, *YYCURSOR); + YYDEBUG(395, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1341 "Zend/zend_language_scanner.l" +#line 1342 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OBJECT_CAST); } -#line 4602 "Zend/zend_language_scanner.c" +#line 4608 "Zend/zend_language_scanner.c" +yy396: + YYDEBUG(396, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy406; + if (yych == 'n') goto yy406; + goto yy157; yy397: YYDEBUG(397, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy407; - if (yych == 'n') goto yy407; - goto yy158; + if (yych == 'O') goto yy398; + if (yych != 'o') goto yy157; yy398: YYDEBUG(398, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy399; - if (yych != 'o') goto yy158; + if (yych == 'L') goto yy399; + if (yych != 'l') goto yy157; yy399: YYDEBUG(399, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy400; - if (yych != 'l') goto yy158; + if (yych == 'E') goto yy404; + if (yych == 'e') goto yy404; + goto yy401; yy400: YYDEBUG(400, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy405; - if (yych == 'e') goto yy405; - goto yy402; -yy401: - YYDEBUG(401, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy402: - YYDEBUG(402, *YYCURSOR); - if (yych <= 0x1F) { - if (yych == '\t') goto yy401; - goto yy158; +yy401: + YYDEBUG(401, *YYCURSOR); + if (yych <= 0x1F) { + if (yych == '\t') goto yy400; + goto yy157; } else { - if (yych <= ' ') goto yy401; - if (yych != ')') goto yy158; + if (yych <= ' ') goto yy400; + if (yych != ')') goto yy157; } - YYDEBUG(403, *YYCURSOR); + YYDEBUG(402, *YYCURSOR); ++YYCURSOR; - YYDEBUG(404, *YYCURSOR); + YYDEBUG(403, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1345 "Zend/zend_language_scanner.l" +#line 1346 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BOOL_CAST); } -#line 4647 "Zend/zend_language_scanner.c" +#line 4653 "Zend/zend_language_scanner.c" +yy404: + YYDEBUG(404, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy405; + if (yych != 'a') goto yy157; yy405: YYDEBUG(405, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy406; - if (yych != 'a') goto yy158; + if (yych == 'N') goto yy400; + if (yych == 'n') goto yy400; + goto yy157; yy406: YYDEBUG(406, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy401; - if (yych == 'n') goto yy401; - goto yy158; + if (yych == 'A') goto yy407; + if (yych != 'a') goto yy157; yy407: YYDEBUG(407, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy408; - if (yych != 'a') goto yy158; + if (yych == 'R') goto yy408; + if (yych != 'r') goto yy157; yy408: YYDEBUG(408, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy409; - if (yych != 'r') goto yy158; + if (yych == 'Y') goto yy377; + if (yych == 'y') goto yy377; + goto yy157; yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy378; - if (yych == 'y') goto yy378; - goto yy158; + if (yych == 'S') goto yy410; + if (yych != 's') goto yy157; yy410: YYDEBUG(410, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy411; - if (yych != 's') goto yy158; + if (yych == 'E') goto yy411; + if (yych != 'e') goto yy157; yy411: YYDEBUG(411, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy412; - if (yych != 'e') goto yy158; + if (yych == 'T') goto yy412; + if (yych != 't') goto yy157; yy412: YYDEBUG(412, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy413; - if (yych != 't') goto yy158; -yy413: - YYDEBUG(413, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(414, *YYCURSOR); + YYDEBUG(413, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy413; - goto yy158; + if (yych == '\t') goto yy412; + goto yy157; } else { - if (yych <= ' ') goto yy413; - if (yych != ')') goto yy158; + if (yych <= ' ') goto yy412; + if (yych != ')') goto yy157; } - YYDEBUG(415, *YYCURSOR); + YYDEBUG(414, *YYCURSOR); ++YYCURSOR; - YYDEBUG(416, *YYCURSOR); + YYDEBUG(415, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1349 "Zend/zend_language_scanner.l" +#line 1350 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_UNSET_CAST); } -#line 4711 "Zend/zend_language_scanner.c" +#line 4717 "Zend/zend_language_scanner.c" +yy416: + YYDEBUG(416, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy417; + if (yych != 'r') goto yy150; yy417: YYDEBUG(417, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy418; - if (yych != 'r') goto yy151; -yy418: - YYDEBUG(418, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(419, *YYCURSOR); + YYDEBUG(418, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1321 "Zend/zend_language_scanner.l" +#line 1322 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_VAR); } -#line 4729 "Zend/zend_language_scanner.c" +#line 4735 "Zend/zend_language_scanner.c" +yy419: + YYDEBUG(419, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy423; + if (yych == 'm') goto yy423; + goto yy150; yy420: YYDEBUG(420, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy424; - if (yych == 'm') goto yy424; - goto yy151; + if (yych == 'W') goto yy421; + if (yych != 'w') goto yy150; yy421: YYDEBUG(421, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'W') goto yy422; - if (yych != 'w') goto yy151; -yy422: - YYDEBUG(422, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(423, *YYCURSOR); + YYDEBUG(422, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1313 "Zend/zend_language_scanner.l" +#line 1314 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NEW); } -#line 4753 "Zend/zend_language_scanner.c" +#line 4759 "Zend/zend_language_scanner.c" +yy423: + YYDEBUG(423, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy424; + if (yych != 'e') goto yy150; yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy425; - if (yych != 'e') goto yy151; + if (yych == 'S') goto yy425; + if (yych != 's') goto yy150; yy425: YYDEBUG(425, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy426; - if (yych != 's') goto yy151; + if (yych == 'P') goto yy426; + if (yych != 'p') goto yy150; yy426: YYDEBUG(426, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy427; - if (yych != 'p') goto yy151; + if (yych == 'A') goto yy427; + if (yych != 'a') goto yy150; yy427: YYDEBUG(427, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy428; - if (yych != 'a') goto yy151; + if (yych == 'C') goto yy428; + if (yych != 'c') goto yy150; yy428: YYDEBUG(428, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy429; - if (yych != 'c') goto yy151; + if (yych == 'E') goto yy429; + if (yych != 'e') goto yy150; yy429: YYDEBUG(429, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy430; - if (yych != 'e') goto yy151; -yy430: - YYDEBUG(430, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(431, *YYCURSOR); + YYDEBUG(430, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1373 "Zend/zend_language_scanner.l" +#line 1374 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_NAMESPACE); } -#line 4796 "Zend/zend_language_scanner.c" +#line 4802 "Zend/zend_language_scanner.c" +yy431: + YYDEBUG(431, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) == '\n') goto yy435; + if (yych == '\r') goto yy436; yy432: YYDEBUG(432, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '\n') goto yy436; - if (yych == '\r') goto yy437; -yy433: - YYDEBUG(433, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1945 "Zend/zend_language_scanner.l" +#line 1946 "Zend/zend_language_scanner.l" { BEGIN(INITIAL); RETURN_TOKEN(T_CLOSE_TAG); /* implicit ';' at php-end tag */ } -#line 4810 "Zend/zend_language_scanner.c" -yy434: - YYDEBUG(434, *YYCURSOR); +#line 4816 "Zend/zend_language_scanner.c" +yy433: + YYDEBUG(433, *YYCURSOR); ++YYCURSOR; - YYDEBUG(435, *YYCURSOR); + YYDEBUG(434, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1309 "Zend/zend_language_scanner.l" +#line 1310 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_COALESCE); } -#line 4820 "Zend/zend_language_scanner.c" +#line 4826 "Zend/zend_language_scanner.c" +yy435: + YYDEBUG(435, *YYCURSOR); + yych = *++YYCURSOR; + goto yy432; yy436: YYDEBUG(436, *YYCURSOR); yych = *++YYCURSOR; - goto yy433; + if (yych == '\n') goto yy435; + goto yy432; yy437: YYDEBUG(437, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy436; - goto yy433; -yy438: - YYDEBUG(438, *YYCURSOR); yyaccept = 3; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(439, *YYCURSOR); + YYDEBUG(438, *YYCURSOR); if (yych <= 'D') { - if (yych <= '/') goto yy154; - if (yych <= '9') goto yy438; - goto yy154; + if (yych <= '/') goto yy153; + if (yych <= '9') goto yy437; + goto yy153; } else { - if (yych <= 'E') goto yy157; - if (yych == 'e') goto yy157; - goto yy154; + if (yych <= 'E') goto yy156; + if (yych == 'e') goto yy156; + goto yy153; } -yy440: - YYDEBUG(440, *YYCURSOR); +yy439: + YYDEBUG(439, *YYCURSOR); ++YYCURSOR; - YYDEBUG(441, *YYCURSOR); + YYDEBUG(440, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1505 "Zend/zend_language_scanner.l" +#line 1506 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONCAT_EQUAL); } -#line 4855 "Zend/zend_language_scanner.c" -yy442: - YYDEBUG(442, *YYCURSOR); +#line 4861 "Zend/zend_language_scanner.c" +yy441: + YYDEBUG(441, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '.') goto yy158; - YYDEBUG(443, *YYCURSOR); + if (yych != '.') goto yy157; + YYDEBUG(442, *YYCURSOR); ++YYCURSOR; - YYDEBUG(444, *YYCURSOR); + YYDEBUG(443, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1305 "Zend/zend_language_scanner.l" +#line 1306 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELLIPSIS); } -#line 4868 "Zend/zend_language_scanner.c" -yy445: - YYDEBUG(445, *YYCURSOR); +#line 4874 "Zend/zend_language_scanner.c" +yy444: + YYDEBUG(444, *YYCURSOR); ++YYCURSOR; - YYDEBUG(446, *YYCURSOR); + YYDEBUG(445, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1297 "Zend/zend_language_scanner.l" +#line 1298 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM); } -#line 4878 "Zend/zend_language_scanner.c" -yy447: - YYDEBUG(447, *YYCURSOR); +#line 4884 "Zend/zend_language_scanner.c" +yy446: + YYDEBUG(446, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy448: - YYDEBUG(448, *YYCURSOR); +yy447: + YYDEBUG(447, *YYCURSOR); if (yych <= '\f') { - if (yych <= 0x08) goto yy105; - if (yych <= '\n') goto yy447; - goto yy105; + if (yych <= 0x08) goto yy104; + if (yych <= '\n') goto yy446; + goto yy104; } else { - if (yych <= '\r') goto yy447; - if (yych == ' ') goto yy447; - goto yy105; + if (yych <= '\r') goto yy446; + if (yych == ' ') goto yy446; + goto yy104; } -yy449: - YYDEBUG(449, *YYCURSOR); +yy448: + YYDEBUG(448, *YYCURSOR); ++YYCURSOR; - YYDEBUG(450, *YYCURSOR); + YYDEBUG(449, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1485 "Zend/zend_language_scanner.l" +#line 1486 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_MINUS_EQUAL); } -#line 4904 "Zend/zend_language_scanner.c" -yy451: - YYDEBUG(451, *YYCURSOR); +#line 4910 "Zend/zend_language_scanner.c" +yy450: + YYDEBUG(450, *YYCURSOR); ++YYCURSOR; - YYDEBUG(452, *YYCURSOR); + YYDEBUG(451, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1449 "Zend/zend_language_scanner.l" +#line 1450 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DEC); } -#line 4914 "Zend/zend_language_scanner.c" -yy453: - YYDEBUG(453, *YYCURSOR); +#line 4920 "Zend/zend_language_scanner.c" +yy452: + YYDEBUG(452, *YYCURSOR); ++YYCURSOR; - YYDEBUG(454, *YYCURSOR); + YYDEBUG(453, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1271 "Zend/zend_language_scanner.l" +#line 1272 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_PROPERTY); RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 4925 "Zend/zend_language_scanner.c" -yy455: - YYDEBUG(455, *YYCURSOR); +#line 4931 "Zend/zend_language_scanner.c" +yy454: + YYDEBUG(454, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'I') goto yy462; - if (yych <= 'N') goto yy151; - goto yy463; + if (yych == 'I') goto yy461; + if (yych <= 'N') goto yy150; + goto yy462; } else { if (yych <= 'i') { - if (yych <= 'h') goto yy151; - goto yy462; + if (yych <= 'h') goto yy150; + goto yy461; } else { - if (yych == 'o') goto yy463; - goto yy151; + if (yych == 'o') goto yy462; + goto yy150; } } +yy455: + YYDEBUG(455, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy456; + if (yych != 'b') goto yy150; yy456: YYDEBUG(456, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy457; - if (yych != 'b') goto yy151; + if (yych == 'L') goto yy457; + if (yych != 'l') goto yy150; yy457: YYDEBUG(457, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy458; - if (yych != 'l') goto yy151; + if (yych == 'I') goto yy458; + if (yych != 'i') goto yy150; yy458: YYDEBUG(458, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy459; - if (yych != 'i') goto yy151; + if (yych == 'C') goto yy459; + if (yych != 'c') goto yy150; yy459: YYDEBUG(459, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy460; - if (yych != 'c') goto yy151; -yy460: - YYDEBUG(460, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(461, *YYCURSOR); + YYDEBUG(460, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1421 "Zend/zend_language_scanner.l" +#line 1422 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PUBLIC); } -#line 4974 "Zend/zend_language_scanner.c" -yy462: - YYDEBUG(462, *YYCURSOR); +#line 4980 "Zend/zend_language_scanner.c" +yy461: + YYDEBUG(461, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'V') { - if (yych == 'N') goto yy471; - if (yych <= 'U') goto yy151; - goto yy472; + if (yych == 'N') goto yy470; + if (yych <= 'U') goto yy150; + goto yy471; } else { if (yych <= 'n') { - if (yych <= 'm') goto yy151; - goto yy471; + if (yych <= 'm') goto yy150; + goto yy470; } else { - if (yych == 'v') goto yy472; - goto yy151; + if (yych == 'v') goto yy471; + goto yy150; } } +yy462: + YYDEBUG(462, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy463; + if (yych != 't') goto yy150; yy463: YYDEBUG(463, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy464; - if (yych != 't') goto yy151; + if (yych == 'E') goto yy464; + if (yych != 'e') goto yy150; yy464: YYDEBUG(464, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy465; - if (yych != 'e') goto yy151; + if (yych == 'C') goto yy465; + if (yych != 'c') goto yy150; yy465: YYDEBUG(465, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy466; - if (yych != 'c') goto yy151; + if (yych == 'T') goto yy466; + if (yych != 't') goto yy150; yy466: YYDEBUG(466, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy467; - if (yych != 't') goto yy151; + if (yych == 'E') goto yy467; + if (yych != 'e') goto yy150; yy467: YYDEBUG(467, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy468; - if (yych != 'e') goto yy151; + if (yych == 'D') goto yy468; + if (yych != 'd') goto yy150; yy468: YYDEBUG(468, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy469; - if (yych != 'd') goto yy151; -yy469: - YYDEBUG(469, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(470, *YYCURSOR); + YYDEBUG(469, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1417 "Zend/zend_language_scanner.l" +#line 1418 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PROTECTED); } -#line 5033 "Zend/zend_language_scanner.c" +#line 5039 "Zend/zend_language_scanner.c" +yy470: + YYDEBUG(470, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy476; + if (yych == 't') goto yy476; + goto yy150; yy471: YYDEBUG(471, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy477; - if (yych == 't') goto yy477; - goto yy151; + if (yych == 'A') goto yy472; + if (yych != 'a') goto yy150; yy472: YYDEBUG(472, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy473; - if (yych != 'a') goto yy151; + if (yych == 'T') goto yy473; + if (yych != 't') goto yy150; yy473: YYDEBUG(473, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy474; - if (yych != 't') goto yy151; + if (yych == 'E') goto yy474; + if (yych != 'e') goto yy150; yy474: YYDEBUG(474, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy475; - if (yych != 'e') goto yy151; -yy475: - YYDEBUG(475, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(476, *YYCURSOR); + YYDEBUG(475, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1413 "Zend/zend_language_scanner.l" +#line 1414 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PRIVATE); } -#line 5067 "Zend/zend_language_scanner.c" -yy477: - YYDEBUG(477, *YYCURSOR); +#line 5073 "Zend/zend_language_scanner.c" +yy476: + YYDEBUG(476, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(478, *YYCURSOR); + YYDEBUG(477, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1247 "Zend/zend_language_scanner.l" +#line 1248 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_PRINT); } -#line 5080 "Zend/zend_language_scanner.c" +#line 5086 "Zend/zend_language_scanner.c" +yy478: + YYDEBUG(478, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy483; + if (yych == 'o') goto yy483; + goto yy150; yy479: YYDEBUG(479, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy484; - if (yych == 'o') goto yy484; - goto yy151; + if (yych == 'T') goto yy480; + if (yych != 't') goto yy150; yy480: YYDEBUG(480, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy481; - if (yych != 't') goto yy151; + if (yych == 'O') goto yy481; + if (yych != 'o') goto yy150; yy481: YYDEBUG(481, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy482; - if (yych != 'o') goto yy151; -yy482: - YYDEBUG(482, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(483, *YYCURSOR); + YYDEBUG(482, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1239 "Zend/zend_language_scanner.l" +#line 1240 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_GOTO); } -#line 5109 "Zend/zend_language_scanner.c" +#line 5115 "Zend/zend_language_scanner.c" +yy483: + YYDEBUG(483, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'B') goto yy484; + if (yych != 'b') goto yy150; yy484: YYDEBUG(484, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy485; - if (yych != 'b') goto yy151; + if (yych == 'A') goto yy485; + if (yych != 'a') goto yy150; yy485: YYDEBUG(485, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy486; - if (yych != 'a') goto yy151; + if (yych == 'L') goto yy486; + if (yych != 'l') goto yy150; yy486: YYDEBUG(486, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy487; - if (yych != 'l') goto yy151; -yy487: - YYDEBUG(487, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(488, *YYCURSOR); + YYDEBUG(487, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1385 "Zend/zend_language_scanner.l" +#line 1386 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_GLOBAL); } -#line 5137 "Zend/zend_language_scanner.c" +#line 5143 "Zend/zend_language_scanner.c" +yy488: + YYDEBUG(488, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '<') goto yy496; + goto yy157; yy489: YYDEBUG(489, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '<') goto yy497; - goto yy158; + goto yy144; yy490: YYDEBUG(490, *YYCURSOR); yych = *++YYCURSOR; - goto yy145; + goto yy142; yy491: YYDEBUG(491, *YYCURSOR); yych = *++YYCURSOR; - goto yy143; + if (yych == 'E') goto yy492; + if (yych != 'e') goto yy150; yy492: YYDEBUG(492, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy493; - if (yych != 'e') goto yy151; + if (yych == 'A') goto yy493; + if (yych != 'a') goto yy150; yy493: YYDEBUG(493, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy494; - if (yych != 'a') goto yy151; + if (yych == 'K') goto yy494; + if (yych != 'k') goto yy150; yy494: YYDEBUG(494, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'K') goto yy495; - if (yych != 'k') goto yy151; -yy495: - YYDEBUG(495, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(496, *YYCURSOR); + YYDEBUG(495, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1231 "Zend/zend_language_scanner.l" +#line 1232 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_BREAK); } -#line 5178 "Zend/zend_language_scanner.c" +#line 5184 "Zend/zend_language_scanner.c" +yy496: + YYDEBUG(496, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '<') goto yy219; + goto yy157; yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '<') goto yy220; - goto yy158; + if (yych == 'A') goto yy504; + if (yych == 'a') goto yy504; + goto yy150; yy498: YYDEBUG(498, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy505; - if (yych == 'a') goto yy505; - goto yy151; + if (yych == 'I') goto yy499; + if (yych != 'i') goto yy150; yy499: YYDEBUG(499, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy500; - if (yych != 'i') goto yy151; + if (yych == 'T') goto yy500; + if (yych != 't') goto yy150; yy500: YYDEBUG(500, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy501; - if (yych != 't') goto yy151; + if (yych == 'C') goto yy501; + if (yych != 'c') goto yy150; yy501: YYDEBUG(501, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy502; - if (yych != 'c') goto yy151; + if (yych == 'H') goto yy502; + if (yych != 'h') goto yy150; yy502: YYDEBUG(502, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy503; - if (yych != 'h') goto yy151; -yy503: - YYDEBUG(503, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(504, *YYCURSOR); + YYDEBUG(503, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1215 "Zend/zend_language_scanner.l" +#line 1216 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_SWITCH); } -#line 5222 "Zend/zend_language_scanner.c" +#line 5228 "Zend/zend_language_scanner.c" +yy504: + YYDEBUG(504, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy505; + if (yych != 't') goto yy150; yy505: YYDEBUG(505, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy506; - if (yych != 't') goto yy151; + if (yych == 'I') goto yy506; + if (yych != 'i') goto yy150; yy506: YYDEBUG(506, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy507; - if (yych != 'i') goto yy151; + if (yych == 'C') goto yy507; + if (yych != 'c') goto yy150; yy507: YYDEBUG(507, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy508; - if (yych != 'c') goto yy151; -yy508: - YYDEBUG(508, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(509, *YYCURSOR); + YYDEBUG(508, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1401 "Zend/zend_language_scanner.l" +#line 1402 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_STATIC); } -#line 5250 "Zend/zend_language_scanner.c" +#line 5256 "Zend/zend_language_scanner.c" +yy509: + YYDEBUG(509, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy520; + if (yych == 's') goto yy520; + goto yy150; yy510: YYDEBUG(510, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy521; - if (yych == 's') goto yy521; - goto yy151; + if (yych == 'D') goto yy518; + if (yych == 'd') goto yy518; + goto yy150; yy511: YYDEBUG(511, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy519; - if (yych == 'd') goto yy519; - goto yy151; + if (yych == 'R') goto yy514; + if (yych == 'r') goto yy514; + goto yy150; yy512: YYDEBUG(512, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy515; - if (yych == 'r') goto yy515; - goto yy151; -yy513: - YYDEBUG(513, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(514, *YYCURSOR); + YYDEBUG(513, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1211 "Zend/zend_language_scanner.l" +#line 1212 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_AS); } -#line 5281 "Zend/zend_language_scanner.c" +#line 5287 "Zend/zend_language_scanner.c" +yy514: + YYDEBUG(514, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy515; + if (yych != 'a') goto yy150; yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy516; - if (yych != 'a') goto yy151; + if (yych == 'Y') goto yy516; + if (yych != 'y') goto yy150; yy516: YYDEBUG(516, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy517; - if (yych != 'y') goto yy151; -yy517: - YYDEBUG(517, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(518, *YYCURSOR); + YYDEBUG(517, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1437 "Zend/zend_language_scanner.l" +#line 1438 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ARRAY); } -#line 5304 "Zend/zend_language_scanner.c" -yy519: - YYDEBUG(519, *YYCURSOR); +#line 5310 "Zend/zend_language_scanner.c" +yy518: + YYDEBUG(518, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(520, *YYCURSOR); + YYDEBUG(519, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1545 "Zend/zend_language_scanner.l" +#line 1546 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_LOGICAL_AND); } -#line 5317 "Zend/zend_language_scanner.c" +#line 5323 "Zend/zend_language_scanner.c" +yy520: + YYDEBUG(520, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy521; + if (yych != 't') goto yy150; yy521: YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy522; - if (yych != 't') goto yy151; + if (yych == 'R') goto yy522; + if (yych != 'r') goto yy150; yy522: YYDEBUG(522, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy523; - if (yych != 'r') goto yy151; + if (yych == 'A') goto yy523; + if (yych != 'a') goto yy150; yy523: YYDEBUG(523, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy524; - if (yych != 'a') goto yy151; + if (yych == 'C') goto yy524; + if (yych != 'c') goto yy150; yy524: YYDEBUG(524, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy525; - if (yych != 'c') goto yy151; + if (yych == 'T') goto yy525; + if (yych != 't') goto yy150; yy525: YYDEBUG(525, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy526; - if (yych != 't') goto yy151; -yy526: - YYDEBUG(526, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(527, *YYCURSOR); + YYDEBUG(526, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1405 "Zend/zend_language_scanner.l" +#line 1406 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ABSTRACT); } -#line 5355 "Zend/zend_language_scanner.c" +#line 5361 "Zend/zend_language_scanner.c" +yy527: + YYDEBUG(527, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy528; + if (yych != 'i') goto yy150; yy528: YYDEBUG(528, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy529; - if (yych != 'i') goto yy151; + if (yych == 'L') goto yy529; + if (yych != 'l') goto yy150; yy529: YYDEBUG(529, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy530; - if (yych != 'l') goto yy151; + if (yych == 'E') goto yy530; + if (yych != 'e') goto yy150; yy530: YYDEBUG(530, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy531; - if (yych != 'e') goto yy151; -yy531: - YYDEBUG(531, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(532, *YYCURSOR); + YYDEBUG(531, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1171 "Zend/zend_language_scanner.l" +#line 1172 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_WHILE); } -#line 5383 "Zend/zend_language_scanner.c" -yy533: - YYDEBUG(533, *YYCURSOR); +#line 5389 "Zend/zend_language_scanner.c" +yy532: + YYDEBUG(532, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(534, *YYCURSOR); + YYDEBUG(533, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1155 "Zend/zend_language_scanner.l" +#line 1156 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IF); } -#line 5396 "Zend/zend_language_scanner.c" +#line 5402 "Zend/zend_language_scanner.c" +yy534: + YYDEBUG(534, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy576; + if (yych == 'p') goto yy576; + goto yy150; yy535: YYDEBUG(535, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy577; - if (yych == 'p') goto yy577; - goto yy151; -yy536: - YYDEBUG(536, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= 'C') { - if (yych <= 'B') goto yy151; - goto yy544; - } else { - if (yych <= 'R') goto yy151; - if (yych <= 'S') goto yy542; + if (yych <= 'B') goto yy150; goto yy543; + } else { + if (yych <= 'R') goto yy150; + if (yych <= 'S') goto yy541; + goto yy542; } } else { if (yych <= 'r') { - if (yych == 'c') goto yy544; - goto yy151; + if (yych == 'c') goto yy543; + goto yy150; } else { - if (yych <= 's') goto yy542; - if (yych <= 't') goto yy543; - goto yy151; + if (yych <= 's') goto yy541; + if (yych <= 't') goto yy542; + goto yy150; } } +yy536: + YYDEBUG(536, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy537; + if (yych != 's') goto yy150; yy537: YYDEBUG(537, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy538; - if (yych != 's') goto yy151; + if (yych == 'E') goto yy538; + if (yych != 'e') goto yy150; yy538: YYDEBUG(538, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy539; - if (yych != 'e') goto yy151; + if (yych == 'T') goto yy539; + if (yych != 't') goto yy150; yy539: YYDEBUG(539, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy540; - if (yych != 't') goto yy151; -yy540: - YYDEBUG(540, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(541, *YYCURSOR); + YYDEBUG(540, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1389 "Zend/zend_language_scanner.l" +#line 1390 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ISSET); } -#line 5452 "Zend/zend_language_scanner.c" +#line 5458 "Zend/zend_language_scanner.c" +yy541: + YYDEBUG(541, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy562; + if (yych == 't') goto yy562; + goto yy150; yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy563; - if (yych == 't') goto yy563; - goto yy151; + if (yych == 'E') goto yy555; + if (yych == 'e') goto yy555; + goto yy150; yy543: YYDEBUG(543, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy556; - if (yych == 'e') goto yy556; - goto yy151; + if (yych == 'L') goto yy544; + if (yych != 'l') goto yy150; yy544: YYDEBUG(544, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy545; - if (yych != 'l') goto yy151; + if (yych == 'U') goto yy545; + if (yych != 'u') goto yy150; yy545: YYDEBUG(545, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy546; - if (yych != 'u') goto yy151; + if (yych == 'D') goto yy546; + if (yych != 'd') goto yy150; yy546: YYDEBUG(546, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy547; - if (yych != 'd') goto yy151; + if (yych == 'E') goto yy547; + if (yych != 'e') goto yy150; yy547: YYDEBUG(547, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy548; - if (yych != 'e') goto yy151; -yy548: - YYDEBUG(548, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '9') { - if (yych >= '0') goto yy150; + if (yych >= '0') goto yy149; } else { - if (yych <= '@') goto yy549; - if (yych <= 'Z') goto yy150; + if (yych <= '@') goto yy548; + if (yych <= 'Z') goto yy149; } } else { if (yych <= '`') { - if (yych <= '_') goto yy550; + if (yych <= '_') goto yy549; } else { - if (yych <= 'z') goto yy150; - if (yych >= 0x80) goto yy150; + if (yych <= 'z') goto yy149; + if (yych >= 0x80) goto yy149; } } -yy549: - YYDEBUG(549, *YYCURSOR); +yy548: + YYDEBUG(548, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1357 "Zend/zend_language_scanner.l" +#line 1358 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INCLUDE); } -#line 5510 "Zend/zend_language_scanner.c" +#line 5516 "Zend/zend_language_scanner.c" +yy549: + YYDEBUG(549, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy550; + if (yych != 'o') goto yy150; yy550: YYDEBUG(550, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy551; - if (yych != 'o') goto yy151; + if (yych == 'N') goto yy551; + if (yych != 'n') goto yy150; yy551: YYDEBUG(551, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy552; - if (yych != 'n') goto yy151; + if (yych == 'C') goto yy552; + if (yych != 'c') goto yy150; yy552: YYDEBUG(552, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy553; - if (yych != 'c') goto yy151; + if (yych == 'E') goto yy553; + if (yych != 'e') goto yy150; yy553: YYDEBUG(553, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy554; - if (yych != 'e') goto yy151; -yy554: - YYDEBUG(554, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(555, *YYCURSOR); + YYDEBUG(554, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1361 "Zend/zend_language_scanner.l" +#line 1362 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INCLUDE_ONCE); } -#line 5543 "Zend/zend_language_scanner.c" +#line 5549 "Zend/zend_language_scanner.c" +yy555: + YYDEBUG(555, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy556; + if (yych != 'r') goto yy150; yy556: YYDEBUG(556, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy557; - if (yych != 'r') goto yy151; + if (yych == 'F') goto yy557; + if (yych != 'f') goto yy150; yy557: YYDEBUG(557, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy558; - if (yych != 'f') goto yy151; + if (yych == 'A') goto yy558; + if (yych != 'a') goto yy150; yy558: YYDEBUG(558, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy559; - if (yych != 'a') goto yy151; + if (yych == 'C') goto yy559; + if (yych != 'c') goto yy150; yy559: YYDEBUG(559, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy560; - if (yych != 'c') goto yy151; + if (yych == 'E') goto yy560; + if (yych != 'e') goto yy150; yy560: YYDEBUG(560, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy561; - if (yych != 'e') goto yy151; -yy561: - YYDEBUG(561, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(562, *YYCURSOR); + YYDEBUG(561, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1255 "Zend/zend_language_scanner.l" +#line 1256 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INTERFACE); } -#line 5581 "Zend/zend_language_scanner.c" -yy563: - YYDEBUG(563, *YYCURSOR); +#line 5587 "Zend/zend_language_scanner.c" +yy562: + YYDEBUG(562, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'E') { - if (yych == 'A') goto yy564; - if (yych <= 'D') goto yy151; - goto yy565; + if (yych == 'A') goto yy563; + if (yych <= 'D') goto yy150; + goto yy564; } else { if (yych <= 'a') { - if (yych <= '`') goto yy151; + if (yych <= '`') goto yy150; } else { - if (yych == 'e') goto yy565; - goto yy151; + if (yych == 'e') goto yy564; + goto yy150; } } +yy563: + YYDEBUG(563, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy570; + if (yych == 'n') goto yy570; + goto yy150; yy564: YYDEBUG(564, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy571; - if (yych == 'n') goto yy571; - goto yy151; + if (yych == 'A') goto yy565; + if (yych != 'a') goto yy150; yy565: YYDEBUG(565, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy566; - if (yych != 'a') goto yy151; + if (yych == 'D') goto yy566; + if (yych != 'd') goto yy150; yy566: YYDEBUG(566, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy567; - if (yych != 'd') goto yy151; + if (yych == 'O') goto yy567; + if (yych != 'o') goto yy150; yy567: YYDEBUG(567, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy568; - if (yych != 'o') goto yy151; + if (yych == 'F') goto yy568; + if (yych != 'f') goto yy150; yy568: YYDEBUG(568, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy569; - if (yych != 'f') goto yy151; -yy569: - YYDEBUG(569, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(570, *YYCURSOR); + YYDEBUG(569, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1381 "Zend/zend_language_scanner.l" +#line 1382 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INSTEADOF); } -#line 5635 "Zend/zend_language_scanner.c" +#line 5641 "Zend/zend_language_scanner.c" +yy570: + YYDEBUG(570, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy571; + if (yych != 'c') goto yy150; yy571: YYDEBUG(571, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy572; - if (yych != 'c') goto yy151; + if (yych == 'E') goto yy572; + if (yych != 'e') goto yy150; yy572: YYDEBUG(572, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy573; - if (yych != 'e') goto yy151; + if (yych == 'O') goto yy573; + if (yych != 'o') goto yy150; yy573: YYDEBUG(573, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy574; - if (yych != 'o') goto yy151; + if (yych == 'F') goto yy574; + if (yych != 'f') goto yy150; yy574: YYDEBUG(574, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy575; - if (yych != 'f') goto yy151; -yy575: - YYDEBUG(575, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(576, *YYCURSOR); + YYDEBUG(575, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1207 "Zend/zend_language_scanner.l" +#line 1208 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_INSTANCEOF); } -#line 5668 "Zend/zend_language_scanner.c" +#line 5674 "Zend/zend_language_scanner.c" +yy576: + YYDEBUG(576, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy577; + if (yych != 'l') goto yy150; yy577: YYDEBUG(577, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy578; - if (yych != 'l') goto yy151; + if (yych == 'E') goto yy578; + if (yych != 'e') goto yy150; yy578: YYDEBUG(578, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy579; - if (yych != 'e') goto yy151; + if (yych == 'M') goto yy579; + if (yych != 'm') goto yy150; yy579: YYDEBUG(579, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy580; - if (yych != 'm') goto yy151; + if (yych == 'E') goto yy580; + if (yych != 'e') goto yy150; yy580: YYDEBUG(580, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy581; - if (yych != 'e') goto yy151; + if (yych == 'N') goto yy581; + if (yych != 'n') goto yy150; yy581: YYDEBUG(581, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy582; - if (yych != 'n') goto yy151; + if (yych == 'T') goto yy582; + if (yych != 't') goto yy150; yy582: YYDEBUG(582, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy583; - if (yych != 't') goto yy151; + if (yych == 'S') goto yy583; + if (yych != 's') goto yy150; yy583: YYDEBUG(583, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy584; - if (yych != 's') goto yy151; -yy584: - YYDEBUG(584, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(585, *YYCURSOR); + YYDEBUG(584, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1267 "Zend/zend_language_scanner.l" +#line 1268 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_IMPLEMENTS); } -#line 5716 "Zend/zend_language_scanner.c" +#line 5722 "Zend/zend_language_scanner.c" +yy585: + YYDEBUG(585, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy593; + if (yych == 'r') goto yy593; + goto yy150; yy586: YYDEBUG(586, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy594; - if (yych == 'r') goto yy594; - goto yy151; -yy587: - YYDEBUG(587, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'Y') { - if (yych == 'A') goto yy590; - if (yych <= 'X') goto yy151; + if (yych == 'A') goto yy589; + if (yych <= 'X') goto yy150; } else { if (yych <= 'a') { - if (yych <= '`') goto yy151; - goto yy590; + if (yych <= '`') goto yy150; + goto yy589; } else { - if (yych != 'y') goto yy151; + if (yych != 'y') goto yy150; } } - YYDEBUG(588, *YYCURSOR); + YYDEBUG(587, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(589, *YYCURSOR); + YYDEBUG(588, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1139 "Zend/zend_language_scanner.l" +#line 1140 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRY); } -#line 5748 "Zend/zend_language_scanner.c" +#line 5754 "Zend/zend_language_scanner.c" +yy589: + YYDEBUG(589, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy590; + if (yych != 'i') goto yy150; yy590: YYDEBUG(590, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy591; - if (yych != 'i') goto yy151; + if (yych == 'T') goto yy591; + if (yych != 't') goto yy150; yy591: YYDEBUG(591, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy592; - if (yych != 't') goto yy151; -yy592: - YYDEBUG(592, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(593, *YYCURSOR); + YYDEBUG(592, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1259 "Zend/zend_language_scanner.l" +#line 1260 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_TRAIT); } -#line 5771 "Zend/zend_language_scanner.c" +#line 5777 "Zend/zend_language_scanner.c" +yy593: + YYDEBUG(593, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy594; + if (yych != 'o') goto yy150; yy594: YYDEBUG(594, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy595; - if (yych != 'o') goto yy151; + if (yych == 'W') goto yy595; + if (yych != 'w') goto yy150; yy595: YYDEBUG(595, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'W') goto yy596; - if (yych != 'w') goto yy151; -yy596: - YYDEBUG(596, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(597, *YYCURSOR); + YYDEBUG(596, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1151 "Zend/zend_language_scanner.l" +#line 1152 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_THROW); } -#line 5794 "Zend/zend_language_scanner.c" +#line 5800 "Zend/zend_language_scanner.c" +yy597: + YYDEBUG(597, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy598; + if (yych != 'e') goto yy150; yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy599; - if (yych != 'e') goto yy151; + if (yych == 'L') goto yy599; + if (yych != 'l') goto yy150; yy599: YYDEBUG(599, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy600; - if (yych != 'l') goto yy151; + if (yych == 'D') goto yy600; + if (yych != 'd') goto yy150; yy600: YYDEBUG(600, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy601; - if (yych != 'd') goto yy151; -yy601: - YYDEBUG(601, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 4) { - goto yy150; + goto yy149; } if (yych <= '\f') { - if (yych <= 0x08) goto yy602; - if (yych <= '\n') goto yy603; + if (yych <= 0x08) goto yy601; + if (yych <= '\n') goto yy602; } else { - if (yych <= '\r') goto yy603; - if (yych == ' ') goto yy603; + if (yych <= '\r') goto yy602; + if (yych == ' ') goto yy602; } -yy602: - YYDEBUG(602, *YYCURSOR); +yy601: + YYDEBUG(601, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1135 "Zend/zend_language_scanner.l" +#line 1136 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_YIELD); } -#line 5831 "Zend/zend_language_scanner.c" -yy603: - YYDEBUG(603, *YYCURSOR); +#line 5837 "Zend/zend_language_scanner.c" +yy602: + YYDEBUG(602, *YYCURSOR); ++YYCURSOR; YYFILL(4); yych = *YYCURSOR; - YYDEBUG(604, *YYCURSOR); + YYDEBUG(603, *YYCURSOR); if (yych <= 0x1F) { if (yych <= '\n') { - if (yych <= 0x08) goto yy158; - goto yy603; + if (yych <= 0x08) goto yy157; + goto yy602; } else { - if (yych == '\r') goto yy603; - goto yy158; + if (yych == '\r') goto yy602; + goto yy157; } } else { if (yych <= 'F') { - if (yych <= ' ') goto yy603; - if (yych <= 'E') goto yy158; + if (yych <= ' ') goto yy602; + if (yych <= 'E') goto yy157; } else { - if (yych != 'f') goto yy158; + if (yych != 'f') goto yy157; } } + YYDEBUG(604, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy605; + if (yych != 'r') goto yy157; +yy605: YYDEBUG(605, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy606; - if (yych != 'r') goto yy158; + if (yych == 'O') goto yy606; + if (yych != 'o') goto yy157; yy606: YYDEBUG(606, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy607; - if (yych != 'o') goto yy158; + if (yych == 'M') goto yy607; + if (yych != 'm') goto yy157; yy607: YYDEBUG(607, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy608; - if (yych != 'm') goto yy158; -yy608: - YYDEBUG(608, *YYCURSOR); ++YYCURSOR; - YYDEBUG(609, *YYCURSOR); + YYDEBUG(608, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1130 "Zend/zend_language_scanner.l" +#line 1131 "Zend/zend_language_scanner.l" { HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_YIELD_FROM); } -#line 5878 "Zend/zend_language_scanner.c" -yy610: - YYDEBUG(610, *YYCURSOR); +#line 5884 "Zend/zend_language_scanner.c" +yy609: + YYDEBUG(609, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'T') { - if (yych == 'Q') goto yy612; - if (yych <= 'S') goto yy151; + if (yych == 'Q') goto yy611; + if (yych <= 'S') goto yy150; } else { if (yych <= 'q') { - if (yych <= 'p') goto yy151; - goto yy612; + if (yych <= 'p') goto yy150; + goto yy611; } else { - if (yych != 't') goto yy151; + if (yych != 't') goto yy150; } } + YYDEBUG(610, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy623; + if (yych == 'u') goto yy623; + goto yy150; +yy611: YYDEBUG(611, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy624; - if (yych == 'u') goto yy624; - goto yy151; + if (yych == 'U') goto yy612; + if (yych != 'u') goto yy150; yy612: YYDEBUG(612, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy613; - if (yych != 'u') goto yy151; + if (yych == 'I') goto yy613; + if (yych != 'i') goto yy150; yy613: YYDEBUG(613, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy614; - if (yych != 'i') goto yy151; + if (yych == 'R') goto yy614; + if (yych != 'r') goto yy150; yy614: YYDEBUG(614, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy615; - if (yych != 'r') goto yy151; + if (yych == 'E') goto yy615; + if (yych != 'e') goto yy150; yy615: YYDEBUG(615, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy616; - if (yych != 'e') goto yy151; -yy616: - YYDEBUG(616, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '9') { - if (yych >= '0') goto yy150; + if (yych >= '0') goto yy149; } else { - if (yych <= '@') goto yy617; - if (yych <= 'Z') goto yy150; + if (yych <= '@') goto yy616; + if (yych <= 'Z') goto yy149; } } else { if (yych <= '`') { - if (yych <= '_') goto yy618; + if (yych <= '_') goto yy617; } else { - if (yych <= 'z') goto yy150; - if (yych >= 0x80) goto yy150; + if (yych <= 'z') goto yy149; + if (yych >= 0x80) goto yy149; } } -yy617: - YYDEBUG(617, *YYCURSOR); +yy616: + YYDEBUG(616, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1365 "Zend/zend_language_scanner.l" +#line 1366 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_REQUIRE); } -#line 5943 "Zend/zend_language_scanner.c" +#line 5949 "Zend/zend_language_scanner.c" +yy617: + YYDEBUG(617, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy618; + if (yych != 'o') goto yy150; yy618: YYDEBUG(618, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy619; - if (yych != 'o') goto yy151; + if (yych == 'N') goto yy619; + if (yych != 'n') goto yy150; yy619: YYDEBUG(619, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy620; - if (yych != 'n') goto yy151; + if (yych == 'C') goto yy620; + if (yych != 'c') goto yy150; yy620: YYDEBUG(620, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy621; - if (yych != 'c') goto yy151; + if (yych == 'E') goto yy621; + if (yych != 'e') goto yy150; yy621: YYDEBUG(621, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy622; - if (yych != 'e') goto yy151; -yy622: - YYDEBUG(622, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(623, *YYCURSOR); + YYDEBUG(622, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1369 "Zend/zend_language_scanner.l" +#line 1370 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_REQUIRE_ONCE); } -#line 5976 "Zend/zend_language_scanner.c" +#line 5982 "Zend/zend_language_scanner.c" +yy623: + YYDEBUG(623, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy624; + if (yych != 'r') goto yy150; yy624: YYDEBUG(624, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy625; - if (yych != 'r') goto yy151; + if (yych == 'N') goto yy625; + if (yych != 'n') goto yy150; yy625: YYDEBUG(625, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy626; - if (yych != 'n') goto yy151; -yy626: - YYDEBUG(626, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(627, *YYCURSOR); + YYDEBUG(626, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1126 "Zend/zend_language_scanner.l" +#line 1127 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_RETURN); } -#line 5999 "Zend/zend_language_scanner.c" -yy628: - YYDEBUG(628, *YYCURSOR); +#line 6005 "Zend/zend_language_scanner.c" +yy627: + YYDEBUG(627, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= 'L') { - if (yych <= 'K') goto yy151; - goto yy651; + if (yych <= 'K') goto yy150; + goto yy650; } else { - if (yych <= 'R') goto yy151; - if (yych <= 'S') goto yy650; - goto yy649; + if (yych <= 'R') goto yy150; + if (yych <= 'S') goto yy649; + goto yy648; } } else { if (yych <= 'r') { - if (yych == 'l') goto yy651; - goto yy151; + if (yych == 'l') goto yy650; + goto yy150; } else { - if (yych <= 's') goto yy650; - if (yych <= 't') goto yy649; - goto yy151; + if (yych <= 's') goto yy649; + if (yych <= 't') goto yy648; + goto yy150; } } -yy629: - YYDEBUG(629, *YYCURSOR); +yy628: + YYDEBUG(628, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'A') goto yy641; - if (yych <= 'N') goto yy151; - goto yy642; + if (yych == 'A') goto yy640; + if (yych <= 'N') goto yy150; + goto yy641; } else { if (yych <= 'a') { - if (yych <= '`') goto yy151; - goto yy641; + if (yych <= '`') goto yy150; + goto yy640; } else { - if (yych == 'o') goto yy642; - goto yy151; + if (yych == 'o') goto yy641; + goto yy150; } } +yy629: + YYDEBUG(629, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy630; + if (yych != 'n') goto yy150; yy630: YYDEBUG(630, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy631; - if (yych != 'n') goto yy151; -yy631: - YYDEBUG(631, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'T') { - if (yych <= 'R') goto yy151; - if (yych >= 'T') goto yy633; + if (yych <= 'R') goto yy150; + if (yych >= 'T') goto yy632; } else { - if (yych <= 'r') goto yy151; - if (yych <= 's') goto yy632; - if (yych <= 't') goto yy633; - goto yy151; + if (yych <= 'r') goto yy150; + if (yych <= 's') goto yy631; + if (yych <= 't') goto yy632; + goto yy150; } +yy631: + YYDEBUG(631, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy638; + if (yych == 't') goto yy638; + goto yy150; yy632: YYDEBUG(632, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy639; - if (yych == 't') goto yy639; - goto yy151; + if (yych == 'I') goto yy633; + if (yych != 'i') goto yy150; yy633: YYDEBUG(633, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy634; - if (yych != 'i') goto yy151; + if (yych == 'N') goto yy634; + if (yych != 'n') goto yy150; yy634: YYDEBUG(634, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy635; - if (yych != 'n') goto yy151; + if (yych == 'U') goto yy635; + if (yych != 'u') goto yy150; yy635: YYDEBUG(635, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy636; - if (yych != 'u') goto yy151; + if (yych == 'E') goto yy636; + if (yych != 'e') goto yy150; yy636: YYDEBUG(636, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy637; - if (yych != 'e') goto yy151; -yy637: - YYDEBUG(637, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(638, *YYCURSOR); + YYDEBUG(637, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1235 "Zend/zend_language_scanner.l" +#line 1236 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONTINUE); } -#line 6093 "Zend/zend_language_scanner.c" -yy639: - YYDEBUG(639, *YYCURSOR); +#line 6099 "Zend/zend_language_scanner.c" +yy638: + YYDEBUG(638, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(640, *YYCURSOR); + YYDEBUG(639, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1122 "Zend/zend_language_scanner.l" +#line 1123 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CONST); } -#line 6106 "Zend/zend_language_scanner.c" +#line 6112 "Zend/zend_language_scanner.c" +yy640: + YYDEBUG(640, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy645; + if (yych == 's') goto yy645; + goto yy150; yy641: YYDEBUG(641, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy646; - if (yych == 's') goto yy646; - goto yy151; + if (yych == 'N') goto yy642; + if (yych != 'n') goto yy150; yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy643; - if (yych != 'n') goto yy151; + if (yych == 'E') goto yy643; + if (yych != 'e') goto yy150; yy643: YYDEBUG(643, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy644; - if (yych != 'e') goto yy151; -yy644: - YYDEBUG(644, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(645, *YYCURSOR); + YYDEBUG(644, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1317 "Zend/zend_language_scanner.l" +#line 1318 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLONE); } -#line 6135 "Zend/zend_language_scanner.c" +#line 6141 "Zend/zend_language_scanner.c" +yy645: + YYDEBUG(645, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy646; + if (yych != 's') goto yy150; yy646: YYDEBUG(646, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy647; - if (yych != 's') goto yy151; -yy647: - YYDEBUG(647, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(648, *YYCURSOR); + YYDEBUG(647, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1251 "Zend/zend_language_scanner.l" +#line 1252 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CLASS); } -#line 6153 "Zend/zend_language_scanner.c" +#line 6159 "Zend/zend_language_scanner.c" +yy648: + YYDEBUG(648, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy659; + if (yych == 'c') goto yy659; + goto yy150; yy649: YYDEBUG(649, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy660; - if (yych == 'c') goto yy660; - goto yy151; + if (yych == 'E') goto yy657; + if (yych == 'e') goto yy657; + goto yy150; yy650: YYDEBUG(650, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy658; - if (yych == 'e') goto yy658; - goto yy151; + if (yych == 'L') goto yy651; + if (yych != 'l') goto yy150; yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy652; - if (yych != 'l') goto yy151; + if (yych == 'A') goto yy652; + if (yych != 'a') goto yy150; yy652: YYDEBUG(652, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy653; - if (yych != 'a') goto yy151; + if (yych == 'B') goto yy653; + if (yych != 'b') goto yy150; yy653: YYDEBUG(653, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy654; - if (yych != 'b') goto yy151; + if (yych == 'L') goto yy654; + if (yych != 'l') goto yy150; yy654: YYDEBUG(654, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy655; - if (yych != 'l') goto yy151; + if (yych == 'E') goto yy655; + if (yych != 'e') goto yy150; yy655: YYDEBUG(655, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy656; - if (yych != 'e') goto yy151; -yy656: - YYDEBUG(656, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(657, *YYCURSOR); + YYDEBUG(656, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1441 "Zend/zend_language_scanner.l" +#line 1442 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CALLABLE); } -#line 6203 "Zend/zend_language_scanner.c" -yy658: - YYDEBUG(658, *YYCURSOR); +#line 6209 "Zend/zend_language_scanner.c" +yy657: + YYDEBUG(657, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(659, *YYCURSOR); + YYDEBUG(658, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1223 "Zend/zend_language_scanner.l" +#line 1224 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CASE); } -#line 6216 "Zend/zend_language_scanner.c" +#line 6222 "Zend/zend_language_scanner.c" +yy659: + YYDEBUG(659, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy660; + if (yych != 'h') goto yy150; yy660: YYDEBUG(660, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy661; - if (yych != 'h') goto yy151; -yy661: - YYDEBUG(661, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(662, *YYCURSOR); + YYDEBUG(661, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1143 "Zend/zend_language_scanner.l" +#line 1144 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_CATCH); } -#line 6234 "Zend/zend_language_scanner.c" +#line 6240 "Zend/zend_language_scanner.c" +yy662: + YYDEBUG(662, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy679; + if (yych == 'n') goto yy679; + goto yy150; yy663: YYDEBUG(663, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy680; - if (yych == 'n') goto yy680; - goto yy151; + if (yych == 'R') goto yy672; + if (yych == 'r') goto yy672; + goto yy150; yy664: YYDEBUG(664, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy673; - if (yych == 'r') goto yy673; - goto yy151; + if (yych == 'N') goto yy665; + if (yych != 'n') goto yy150; yy665: YYDEBUG(665, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy666; - if (yych != 'n') goto yy151; + if (yych == 'C') goto yy666; + if (yych != 'c') goto yy150; yy666: YYDEBUG(666, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy667; - if (yych != 'c') goto yy151; + if (yych == 'T') goto yy667; + if (yych != 't') goto yy150; yy667: YYDEBUG(667, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy668; - if (yych != 't') goto yy151; + if (yych == 'I') goto yy668; + if (yych != 'i') goto yy150; yy668: YYDEBUG(668, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy669; - if (yych != 'i') goto yy151; + if (yych == 'O') goto yy669; + if (yych != 'o') goto yy150; yy669: YYDEBUG(669, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy670; - if (yych != 'o') goto yy151; + if (yych == 'N') goto yy670; + if (yych != 'n') goto yy150; yy670: YYDEBUG(670, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy671; - if (yych != 'n') goto yy151; -yy671: - YYDEBUG(671, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(672, *YYCURSOR); + YYDEBUG(671, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1118 "Zend/zend_language_scanner.l" +#line 1119 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FUNCTION); } -#line 6289 "Zend/zend_language_scanner.c" -yy673: - YYDEBUG(673, *YYCURSOR); +#line 6295 "Zend/zend_language_scanner.c" +yy672: + YYDEBUG(672, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '@') { - if (yych <= '/') goto yy674; - if (yych <= '9') goto yy150; + if (yych <= '/') goto yy673; + if (yych <= '9') goto yy149; } else { - if (yych == 'E') goto yy675; - if (yych <= 'Z') goto yy150; + if (yych == 'E') goto yy674; + if (yych <= 'Z') goto yy149; } } else { if (yych <= 'd') { - if (yych != '`') goto yy150; + if (yych != '`') goto yy149; } else { - if (yych <= 'e') goto yy675; - if (yych <= 'z') goto yy150; - if (yych >= 0x80) goto yy150; + if (yych <= 'e') goto yy674; + if (yych <= 'z') goto yy149; + if (yych >= 0x80) goto yy149; } } -yy674: - YYDEBUG(674, *YYCURSOR); +yy673: + YYDEBUG(673, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1183 "Zend/zend_language_scanner.l" +#line 1184 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FOR); } -#line 6317 "Zend/zend_language_scanner.c" +#line 6323 "Zend/zend_language_scanner.c" +yy674: + YYDEBUG(674, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy675; + if (yych != 'a') goto yy150; yy675: YYDEBUG(675, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy676; - if (yych != 'a') goto yy151; + if (yych == 'C') goto yy676; + if (yych != 'c') goto yy150; yy676: YYDEBUG(676, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy677; - if (yych != 'c') goto yy151; + if (yych == 'H') goto yy677; + if (yych != 'h') goto yy150; yy677: YYDEBUG(677, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy678; - if (yych != 'h') goto yy151; -yy678: - YYDEBUG(678, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(679, *YYCURSOR); + YYDEBUG(678, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1191 "Zend/zend_language_scanner.l" +#line 1192 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FOREACH); } -#line 6345 "Zend/zend_language_scanner.c" +#line 6351 "Zend/zend_language_scanner.c" +yy679: + YYDEBUG(679, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy680; + if (yych != 'a') goto yy150; yy680: YYDEBUG(680, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy681; - if (yych != 'a') goto yy151; + if (yych == 'L') goto yy681; + if (yych != 'l') goto yy150; yy681: YYDEBUG(681, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy682; - if (yych != 'l') goto yy151; -yy682: - YYDEBUG(682, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '@') { - if (yych <= '/') goto yy683; - if (yych <= '9') goto yy150; + if (yych <= '/') goto yy682; + if (yych <= '9') goto yy149; } else { - if (yych == 'L') goto yy684; - if (yych <= 'Z') goto yy150; + if (yych == 'L') goto yy683; + if (yych <= 'Z') goto yy149; } } else { if (yych <= 'k') { - if (yych != '`') goto yy150; + if (yych != '`') goto yy149; } else { - if (yych <= 'l') goto yy684; - if (yych <= 'z') goto yy150; - if (yych >= 0x80) goto yy150; + if (yych <= 'l') goto yy683; + if (yych <= 'z') goto yy149; + if (yych >= 0x80) goto yy149; } } -yy683: - YYDEBUG(683, *YYCURSOR); +yy682: + YYDEBUG(682, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1409 "Zend/zend_language_scanner.l" +#line 1410 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FINAL); } -#line 6383 "Zend/zend_language_scanner.c" +#line 6389 "Zend/zend_language_scanner.c" +yy683: + YYDEBUG(683, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy684; + if (yych != 'y') goto yy150; yy684: YYDEBUG(684, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy685; - if (yych != 'y') goto yy151; -yy685: - YYDEBUG(685, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(686, *YYCURSOR); + YYDEBUG(685, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1147 "Zend/zend_language_scanner.l" +#line 1148 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_FINALLY); } -#line 6401 "Zend/zend_language_scanner.c" -yy687: - YYDEBUG(687, *YYCURSOR); +#line 6407 "Zend/zend_language_scanner.c" +yy686: + YYDEBUG(686, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'F') { - if (yych == 'C') goto yy693; - if (yych <= 'E') goto yy151; - goto yy694; + if (yych == 'C') goto yy692; + if (yych <= 'E') goto yy150; + goto yy693; } else { if (yych <= 'c') { - if (yych <= 'b') goto yy151; - goto yy693; + if (yych <= 'b') goto yy150; + goto yy692; } else { - if (yych == 'f') goto yy694; - goto yy151; + if (yych == 'f') goto yy693; + goto yy150; } } +yy687: + YYDEBUG(687, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy690; + if (yych == 'e') goto yy690; + goto yy150; yy688: YYDEBUG(688, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy691; - if (yych == 'e') goto yy691; - goto yy151; -yy689: - YYDEBUG(689, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(690, *YYCURSOR); + YYDEBUG(689, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1179 "Zend/zend_language_scanner.l" +#line 1180 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DO); } -#line 6436 "Zend/zend_language_scanner.c" -yy691: - YYDEBUG(691, *YYCURSOR); +#line 6442 "Zend/zend_language_scanner.c" +yy690: + YYDEBUG(690, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(692, *YYCURSOR); + YYDEBUG(691, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1114 "Zend/zend_language_scanner.l" +#line 1115 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXIT); } -#line 6449 "Zend/zend_language_scanner.c" +#line 6455 "Zend/zend_language_scanner.c" +yy692: + YYDEBUG(692, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy699; + if (yych == 'l') goto yy699; + goto yy150; yy693: YYDEBUG(693, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy700; - if (yych == 'l') goto yy700; - goto yy151; + if (yych == 'A') goto yy694; + if (yych != 'a') goto yy150; yy694: YYDEBUG(694, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy695; - if (yych != 'a') goto yy151; + if (yych == 'U') goto yy695; + if (yych != 'u') goto yy150; yy695: YYDEBUG(695, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy696; - if (yych != 'u') goto yy151; + if (yych == 'L') goto yy696; + if (yych != 'l') goto yy150; yy696: YYDEBUG(696, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy697; - if (yych != 'l') goto yy151; + if (yych == 'T') goto yy697; + if (yych != 't') goto yy150; yy697: YYDEBUG(697, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy698; - if (yych != 't') goto yy151; -yy698: - YYDEBUG(698, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(699, *YYCURSOR); + YYDEBUG(698, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1227 "Zend/zend_language_scanner.l" +#line 1228 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DEFAULT); } -#line 6488 "Zend/zend_language_scanner.c" +#line 6494 "Zend/zend_language_scanner.c" +yy699: + YYDEBUG(699, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy700; + if (yych != 'a') goto yy150; yy700: YYDEBUG(700, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy701; - if (yych != 'a') goto yy151; + if (yych == 'R') goto yy701; + if (yych != 'r') goto yy150; yy701: YYDEBUG(701, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy702; - if (yych != 'r') goto yy151; + if (yych == 'E') goto yy702; + if (yych != 'e') goto yy150; yy702: YYDEBUG(702, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy703; - if (yych != 'e') goto yy151; -yy703: - YYDEBUG(703, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(704, *YYCURSOR); + YYDEBUG(703, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1199 "Zend/zend_language_scanner.l" +#line 1200 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_DECLARE); } -#line 6516 "Zend/zend_language_scanner.c" +#line 6522 "Zend/zend_language_scanner.c" +yy704: + YYDEBUG(704, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy766; + if (yych == 'h') goto yy766; + goto yy150; yy705: YYDEBUG(705, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy767; - if (yych == 'h') goto yy767; - goto yy151; + if (yych == 'S') goto yy760; + if (yych == 's') goto yy760; + goto yy150; yy706: YYDEBUG(706, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy761; - if (yych == 's') goto yy761; - goto yy151; + if (yych == 'P') goto yy756; + if (yych == 'p') goto yy756; + goto yy150; yy707: YYDEBUG(707, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy757; - if (yych == 'p') goto yy757; - goto yy151; + if (yych == 'D') goto yy722; + if (yych == 'd') goto yy722; + goto yy150; yy708: YYDEBUG(708, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy723; - if (yych == 'd') goto yy723; - goto yy151; + if (yych == 'A') goto yy719; + if (yych == 'a') goto yy719; + goto yy150; yy709: YYDEBUG(709, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy720; - if (yych == 'a') goto yy720; - goto yy151; -yy710: - YYDEBUG(710, *YYCURSOR); - yych = *++YYCURSOR; if (yych <= 'T') { - if (yych == 'I') goto yy711; - if (yych <= 'S') goto yy151; - goto yy712; + if (yych == 'I') goto yy710; + if (yych <= 'S') goto yy150; + goto yy711; } else { if (yych <= 'i') { - if (yych <= 'h') goto yy151; + if (yych <= 'h') goto yy150; } else { - if (yych == 't') goto yy712; - goto yy151; + if (yych == 't') goto yy711; + goto yy150; } } +yy710: + YYDEBUG(710, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy717; + if (yych == 't') goto yy717; + goto yy150; yy711: YYDEBUG(711, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy718; - if (yych == 't') goto yy718; - goto yy151; + if (yych == 'E') goto yy712; + if (yych != 'e') goto yy150; yy712: YYDEBUG(712, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy713; - if (yych != 'e') goto yy151; + if (yych == 'N') goto yy713; + if (yych != 'n') goto yy150; yy713: YYDEBUG(713, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy714; - if (yych != 'n') goto yy151; + if (yych == 'D') goto yy714; + if (yych != 'd') goto yy150; yy714: YYDEBUG(714, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy715; - if (yych != 'd') goto yy151; + if (yych == 'S') goto yy715; + if (yych != 's') goto yy150; yy715: YYDEBUG(715, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy716; - if (yych != 's') goto yy151; -yy716: - YYDEBUG(716, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(717, *YYCURSOR); + YYDEBUG(716, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1263 "Zend/zend_language_scanner.l" +#line 1264 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXTENDS); } -#line 6600 "Zend/zend_language_scanner.c" -yy718: - YYDEBUG(718, *YYCURSOR); +#line 6606 "Zend/zend_language_scanner.c" +yy717: + YYDEBUG(717, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(719, *YYCURSOR); + YYDEBUG(718, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1110 "Zend/zend_language_scanner.l" +#line 1111 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EXIT); } -#line 6613 "Zend/zend_language_scanner.c" +#line 6619 "Zend/zend_language_scanner.c" +yy719: + YYDEBUG(719, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy720; + if (yych != 'l') goto yy150; yy720: YYDEBUG(720, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy721; - if (yych != 'l') goto yy151; -yy721: - YYDEBUG(721, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(722, *YYCURSOR); + YYDEBUG(721, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1353 "Zend/zend_language_scanner.l" +#line 1354 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EVAL); } -#line 6631 "Zend/zend_language_scanner.c" -yy723: - YYDEBUG(723, *YYCURSOR); +#line 6637 "Zend/zend_language_scanner.c" +yy722: + YYDEBUG(722, *YYCURSOR); yych = *++YYCURSOR; + YYDEBUG(-1, yych); switch (yych) { case 'D': - case 'd': goto yy724; + case 'd': goto yy723; case 'F': - case 'f': goto yy725; + case 'f': goto yy724; case 'I': - case 'i': goto yy726; + case 'i': goto yy725; case 'S': - case 's': goto yy727; + case 's': goto yy726; case 'W': - case 'w': goto yy728; - default: goto yy151; + case 'w': goto yy727; + default: goto yy150; } +yy723: + YYDEBUG(723, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy749; + if (yych == 'e') goto yy749; + goto yy150; yy724: YYDEBUG(724, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy750; - if (yych == 'e') goto yy750; - goto yy151; + if (yych == 'O') goto yy741; + if (yych == 'o') goto yy741; + goto yy150; yy725: YYDEBUG(725, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy742; - if (yych == 'o') goto yy742; - goto yy151; + if (yych == 'F') goto yy739; + if (yych == 'f') goto yy739; + goto yy150; yy726: YYDEBUG(726, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy740; - if (yych == 'f') goto yy740; - goto yy151; + if (yych == 'W') goto yy733; + if (yych == 'w') goto yy733; + goto yy150; yy727: YYDEBUG(727, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'W') goto yy734; - if (yych == 'w') goto yy734; - goto yy151; + if (yych == 'H') goto yy728; + if (yych != 'h') goto yy150; yy728: YYDEBUG(728, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy729; - if (yych != 'h') goto yy151; + if (yych == 'I') goto yy729; + if (yych != 'i') goto yy150; yy729: YYDEBUG(729, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy730; - if (yych != 'i') goto yy151; + if (yych == 'L') goto yy730; + if (yych != 'l') goto yy150; yy730: YYDEBUG(730, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy731; - if (yych != 'l') goto yy151; + if (yych == 'E') goto yy731; + if (yych != 'e') goto yy150; yy731: YYDEBUG(731, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy732; - if (yych != 'e') goto yy151; -yy732: - YYDEBUG(732, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(733, *YYCURSOR); + YYDEBUG(732, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1175 "Zend/zend_language_scanner.l" +#line 1176 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDWHILE); } -#line 6704 "Zend/zend_language_scanner.c" +#line 6711 "Zend/zend_language_scanner.c" +yy733: + YYDEBUG(733, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy734; + if (yych != 'i') goto yy150; yy734: YYDEBUG(734, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy735; - if (yych != 'i') goto yy151; + if (yych == 'T') goto yy735; + if (yych != 't') goto yy150; yy735: YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy736; - if (yych != 't') goto yy151; + if (yych == 'C') goto yy736; + if (yych != 'c') goto yy150; yy736: YYDEBUG(736, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy737; - if (yych != 'c') goto yy151; + if (yych == 'H') goto yy737; + if (yych != 'h') goto yy150; yy737: YYDEBUG(737, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy738; - if (yych != 'h') goto yy151; -yy738: - YYDEBUG(738, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(739, *YYCURSOR); + YYDEBUG(738, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1219 "Zend/zend_language_scanner.l" +#line 1220 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDSWITCH); } -#line 6737 "Zend/zend_language_scanner.c" -yy740: - YYDEBUG(740, *YYCURSOR); +#line 6744 "Zend/zend_language_scanner.c" +yy739: + YYDEBUG(739, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(741, *YYCURSOR); + YYDEBUG(740, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1163 "Zend/zend_language_scanner.l" +#line 1164 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDIF); } -#line 6750 "Zend/zend_language_scanner.c" +#line 6757 "Zend/zend_language_scanner.c" +yy741: + YYDEBUG(741, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy742; + if (yych != 'r') goto yy150; yy742: YYDEBUG(742, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy743; - if (yych != 'r') goto yy151; -yy743: - YYDEBUG(743, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '@') { - if (yych <= '/') goto yy744; - if (yych <= '9') goto yy150; + if (yych <= '/') goto yy743; + if (yych <= '9') goto yy149; } else { - if (yych == 'E') goto yy745; - if (yych <= 'Z') goto yy150; + if (yych == 'E') goto yy744; + if (yych <= 'Z') goto yy149; } } else { if (yych <= 'd') { - if (yych != '`') goto yy150; + if (yych != '`') goto yy149; } else { - if (yych <= 'e') goto yy745; - if (yych <= 'z') goto yy150; - if (yych >= 0x80) goto yy150; + if (yych <= 'e') goto yy744; + if (yych <= 'z') goto yy149; + if (yych >= 0x80) goto yy149; } } -yy744: - YYDEBUG(744, *YYCURSOR); +yy743: + YYDEBUG(743, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1187 "Zend/zend_language_scanner.l" +#line 1188 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDFOR); } -#line 6783 "Zend/zend_language_scanner.c" +#line 6790 "Zend/zend_language_scanner.c" +yy744: + YYDEBUG(744, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy745; + if (yych != 'a') goto yy150; yy745: YYDEBUG(745, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy746; - if (yych != 'a') goto yy151; + if (yych == 'C') goto yy746; + if (yych != 'c') goto yy150; yy746: YYDEBUG(746, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy747; - if (yych != 'c') goto yy151; + if (yych == 'H') goto yy747; + if (yych != 'h') goto yy150; yy747: YYDEBUG(747, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy748; - if (yych != 'h') goto yy151; -yy748: - YYDEBUG(748, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(749, *YYCURSOR); + YYDEBUG(748, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1195 "Zend/zend_language_scanner.l" +#line 1196 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDFOREACH); } -#line 6811 "Zend/zend_language_scanner.c" +#line 6818 "Zend/zend_language_scanner.c" +yy749: + YYDEBUG(749, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy750; + if (yych != 'c') goto yy150; yy750: YYDEBUG(750, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy751; - if (yych != 'c') goto yy151; + if (yych == 'L') goto yy751; + if (yych != 'l') goto yy150; yy751: YYDEBUG(751, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy752; - if (yych != 'l') goto yy151; + if (yych == 'A') goto yy752; + if (yych != 'a') goto yy150; yy752: YYDEBUG(752, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy753; - if (yych != 'a') goto yy151; + if (yych == 'R') goto yy753; + if (yych != 'r') goto yy150; yy753: YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy754; - if (yych != 'r') goto yy151; + if (yych == 'E') goto yy754; + if (yych != 'e') goto yy150; yy754: YYDEBUG(754, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy755; - if (yych != 'e') goto yy151; -yy755: - YYDEBUG(755, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(756, *YYCURSOR); + YYDEBUG(755, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1203 "Zend/zend_language_scanner.l" +#line 1204 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ENDDECLARE); } -#line 6849 "Zend/zend_language_scanner.c" +#line 6856 "Zend/zend_language_scanner.c" +yy756: + YYDEBUG(756, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy757; + if (yych != 't') goto yy150; yy757: YYDEBUG(757, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy758; - if (yych != 't') goto yy151; + if (yych == 'Y') goto yy758; + if (yych != 'y') goto yy150; yy758: YYDEBUG(758, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy759; - if (yych != 'y') goto yy151; -yy759: - YYDEBUG(759, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(760, *YYCURSOR); + YYDEBUG(759, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1393 "Zend/zend_language_scanner.l" +#line 1394 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_EMPTY); } -#line 6872 "Zend/zend_language_scanner.c" +#line 6879 "Zend/zend_language_scanner.c" +yy760: + YYDEBUG(760, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy761; + if (yych != 'e') goto yy150; yy761: YYDEBUG(761, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy762; - if (yych != 'e') goto yy151; -yy762: - YYDEBUG(762, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '@') { - if (yych <= '/') goto yy763; - if (yych <= '9') goto yy150; + if (yych <= '/') goto yy762; + if (yych <= '9') goto yy149; } else { - if (yych == 'I') goto yy764; - if (yych <= 'Z') goto yy150; + if (yych == 'I') goto yy763; + if (yych <= 'Z') goto yy149; } } else { if (yych <= 'h') { - if (yych != '`') goto yy150; + if (yych != '`') goto yy149; } else { - if (yych <= 'i') goto yy764; - if (yych <= 'z') goto yy150; - if (yych >= 0x80) goto yy150; + if (yych <= 'i') goto yy763; + if (yych <= 'z') goto yy149; + if (yych >= 0x80) goto yy149; } } -yy763: - YYDEBUG(763, *YYCURSOR); +yy762: + YYDEBUG(762, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1167 "Zend/zend_language_scanner.l" +#line 1168 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELSE); } -#line 6905 "Zend/zend_language_scanner.c" +#line 6912 "Zend/zend_language_scanner.c" +yy763: + YYDEBUG(763, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'F') goto yy764; + if (yych != 'f') goto yy150; yy764: YYDEBUG(764, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy765; - if (yych != 'f') goto yy151; -yy765: - YYDEBUG(765, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(766, *YYCURSOR); + YYDEBUG(765, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1159 "Zend/zend_language_scanner.l" +#line 1160 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ELSEIF); } -#line 6923 "Zend/zend_language_scanner.c" +#line 6930 "Zend/zend_language_scanner.c" +yy766: + YYDEBUG(766, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy767; + if (yych != 'o') goto yy150; yy767: YYDEBUG(767, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy768; - if (yych != 'o') goto yy151; -yy768: - YYDEBUG(768, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy150; + goto yy149; } - YYDEBUG(769, *YYCURSOR); + YYDEBUG(768, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1243 "Zend/zend_language_scanner.l" +#line 1244 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_ECHO); } -#line 6941 "Zend/zend_language_scanner.c" +#line 6948 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -6976,111 +6983,111 @@ int start_line = CG(zend_lineno); 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, }; - YYDEBUG(770, *YYCURSOR); + YYDEBUG(769, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yych <= '-') { if (yych <= '\r') { - if (yych <= 0x08) goto yy778; - if (yych <= '\n') goto yy772; - if (yych <= '\f') goto yy778; + if (yych <= 0x08) goto yy777; + if (yych <= '\n') goto yy771; + if (yych <= '\f') goto yy777; } else { - if (yych == ' ') goto yy772; - if (yych <= ',') goto yy778; - goto yy774; + if (yych == ' ') goto yy771; + if (yych <= ',') goto yy777; + goto yy773; } } else { if (yych <= '_') { - if (yych <= '@') goto yy778; - if (yych <= 'Z') goto yy776; - if (yych <= '^') goto yy778; - goto yy776; + if (yych <= '@') goto yy777; + if (yych <= 'Z') goto yy775; + if (yych <= '^') goto yy777; + goto yy775; } else { - if (yych <= '`') goto yy778; - if (yych <= 'z') goto yy776; - if (yych <= 0x7F) goto yy778; - goto yy776; + if (yych <= '`') goto yy777; + if (yych <= 'z') goto yy775; + if (yych <= 0x7F) goto yy777; + goto yy775; } } -yy772: - YYDEBUG(772, *YYCURSOR); +yy771: + YYDEBUG(771, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy784; -yy773: - YYDEBUG(773, *YYCURSOR); + goto yy783; +yy772: + YYDEBUG(772, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1276 "Zend/zend_language_scanner.l" +#line 1277 "Zend/zend_language_scanner.l" { HANDLE_NEWLINES(yytext, yyleng); RETURN_TOKEN(T_WHITESPACE); } -#line 7019 "Zend/zend_language_scanner.c" +#line 7026 "Zend/zend_language_scanner.c" +yy773: + YYDEBUG(773, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) == '>') goto yy780; yy774: YYDEBUG(774, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '>') goto yy781; -yy775: - YYDEBUG(775, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1291 "Zend/zend_language_scanner.l" +#line 1292 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(); goto restart; } -#line 7033 "Zend/zend_language_scanner.c" -yy776: - YYDEBUG(776, *YYCURSOR); +#line 7040 "Zend/zend_language_scanner.c" +yy775: + YYDEBUG(775, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy780; -yy777: - YYDEBUG(777, *YYCURSOR); + goto yy779; +yy776: + YYDEBUG(776, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1285 "Zend/zend_language_scanner.l" +#line 1286 "Zend/zend_language_scanner.l" { yy_pop_state(); zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 7048 "Zend/zend_language_scanner.c" +#line 7055 "Zend/zend_language_scanner.c" +yy777: + YYDEBUG(777, *YYCURSOR); + yych = *++YYCURSOR; + goto yy774; yy778: YYDEBUG(778, *YYCURSOR); - yych = *++YYCURSOR; - goto yy775; -yy779: - YYDEBUG(779, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy780: - YYDEBUG(780, *YYCURSOR); +yy779: + YYDEBUG(779, *YYCURSOR); if (yybm[0+yych] & 64) { - goto yy779; + goto yy778; } - goto yy777; -yy781: - YYDEBUG(781, *YYCURSOR); + goto yy776; +yy780: + YYDEBUG(780, *YYCURSOR); ++YYCURSOR; - YYDEBUG(782, *YYCURSOR); + YYDEBUG(781, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1281 "Zend/zend_language_scanner.l" +#line 1282 "Zend/zend_language_scanner.l" { RETURN_TOKEN(T_OBJECT_OPERATOR); } -#line 7073 "Zend/zend_language_scanner.c" -yy783: - YYDEBUG(783, *YYCURSOR); +#line 7080 "Zend/zend_language_scanner.c" +yy782: + YYDEBUG(782, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy784: - YYDEBUG(784, *YYCURSOR); +yy783: + YYDEBUG(783, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy783; + goto yy782; } - goto yy773; + goto yy772; } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7119,76 +7126,75 @@ int start_line = CG(zend_lineno); 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(785, *YYCURSOR); + YYDEBUG(784, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yych <= '_') { - if (yych <= '@') goto yy789; - if (yych <= 'Z') goto yy787; - if (yych <= '^') goto yy789; + if (yych <= '@') goto yy788; + if (yych <= 'Z') goto yy786; + if (yych <= '^') goto yy788; } else { - if (yych <= '`') goto yy789; - if (yych <= 'z') goto yy787; - if (yych <= 0x7F) goto yy789; + if (yych <= '`') goto yy788; + if (yych <= 'z') goto yy786; + if (yych <= 0x7F) goto yy788; } -yy787: - YYDEBUG(787, *YYCURSOR); +yy786: + YYDEBUG(786, *YYCURSOR); + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '_') { if (yych <= '@') { - if (yych <= '/') goto yy788; - if (yych <= '9') goto yy791; + if (yych <= '/') goto yy787; + if (yych <= '9') goto yy790; } else { - if (yych <= '[') goto yy791; - if (yych >= '_') goto yy791; + if (yych <= '[') goto yy790; + if (yych >= '_') goto yy790; } } else { if (yych <= '|') { - if (yych <= '`') goto yy788; - if (yych <= 'z') goto yy791; + if (yych <= '`') goto yy787; + if (yych <= 'z') goto yy790; } else { - if (yych <= '}') goto yy791; - if (yych >= 0x80) goto yy791; + if (yych <= '}') goto yy790; + if (yych >= 0x80) goto yy790; } } -yy788: - YYDEBUG(788, *YYCURSOR); +yy787: + YYDEBUG(787, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1596 "Zend/zend_language_scanner.l" +#line 1597 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(); yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7165 "Zend/zend_language_scanner.c" +#line 7173 "Zend/zend_language_scanner.c" +yy788: + YYDEBUG(788, *YYCURSOR); + yych = *++YYCURSOR; + goto yy787; yy789: YYDEBUG(789, *YYCURSOR); - yych = *++YYCURSOR; - goto yy788; -yy790: - YYDEBUG(790, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy791: - YYDEBUG(791, *YYCURSOR); +yy790: + YYDEBUG(790, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy790; + goto yy789; } - if (yych <= '@') goto yy792; - if (yych <= '[') goto yy793; - if (yych == '}') goto yy793; + if (yych == '[') goto yy792; + if (yych == '}') goto yy792; + YYDEBUG(791, *YYCURSOR); + YYCURSOR = YYMARKER; + goto yy787; yy792: YYDEBUG(792, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy788; -yy793: - YYDEBUG(793, *YYCURSOR); ++YYCURSOR; - YYDEBUG(794, *YYCURSOR); + YYDEBUG(793, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1587 "Zend/zend_language_scanner.l" +#line 1588 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); zend_copy_value(zendlval, yytext, yyleng); @@ -7196,18 +7202,18 @@ int start_line = CG(zend_lineno); yy_push_state(ST_IN_SCRIPTING); RETURN_TOKEN(T_STRING_VARNAME); } -#line 7200 "Zend/zend_language_scanner.c" +#line 7206 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: - YYDEBUG(795, *YYCURSOR); + YYDEBUG(794, *YYCURSOR); YYFILL(1); yych = *YYCURSOR; - YYDEBUG(797, *YYCURSOR); + YYDEBUG(796, *YYCURSOR); ++YYCURSOR; - YYDEBUG(798, *YYCURSOR); + YYDEBUG(797, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2315 "Zend/zend_language_scanner.l" +#line 2316 "Zend/zend_language_scanner.l" { int newline = 0; @@ -7263,7 +7269,7 @@ int start_line = CG(zend_lineno); HANDLE_NEWLINES(yytext, yyleng - newline); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7267 "Zend/zend_language_scanner.c" +#line 7273 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7301,73 +7307,74 @@ int start_line = CG(zend_lineno); 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, }; - YYDEBUG(799, *YYCURSOR); + YYDEBUG(798, *YYCURSOR); YYFILL(3); yych = *YYCURSOR; if (yych <= '0') { if (yych <= ' ') { if (yych <= '\f') { - if (yych <= 0x08) goto yy813; - if (yych <= '\n') goto yy809; - goto yy813; + if (yych <= 0x08) goto yy812; + if (yych <= '\n') goto yy808; + goto yy812; } else { - if (yych <= '\r') goto yy809; - if (yych <= 0x1F) goto yy813; - goto yy809; + if (yych <= '\r') goto yy808; + if (yych <= 0x1F) goto yy812; + goto yy808; } } else { if (yych <= '$') { - if (yych <= '"') goto yy808; - if (yych <= '#') goto yy809; - goto yy804; + if (yych <= '"') goto yy807; + if (yych <= '#') goto yy808; + goto yy803; } else { - if (yych == '\'') goto yy809; - if (yych <= '/') goto yy808; + if (yych == '\'') goto yy808; + if (yych <= '/') goto yy807; } } } else { if (yych <= ']') { if (yych <= 'Z') { - if (yych <= '9') goto yy803; - if (yych <= '@') goto yy808; - goto yy811; + if (yych <= '9') goto yy802; + if (yych <= '@') goto yy807; + goto yy810; } else { - if (yych <= '[') goto yy808; - if (yych <= '\\') goto yy809; - goto yy806; + if (yych <= '[') goto yy807; + if (yych <= '\\') goto yy808; + goto yy805; } } else { if (yych <= '`') { - if (yych == '_') goto yy811; - goto yy808; + if (yych == '_') goto yy810; + goto yy807; } else { - if (yych <= 'z') goto yy811; - if (yych <= '~') goto yy808; - if (yych <= 0x7F) goto yy813; - goto yy811; + if (yych <= 'z') goto yy810; + if (yych <= '~') goto yy807; + if (yych <= 0x7F) goto yy812; + goto yy810; } } } - YYDEBUG(801, *YYCURSOR); + YYDEBUG(800, *YYCURSOR); + yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'W') { if (yych <= '9') { - if (yych >= '0') goto yy825; + if (yych >= '0') goto yy824; } else { - if (yych == 'B') goto yy822; + if (yych == 'B') goto yy821; } } else { if (yych <= 'b') { - if (yych <= 'X') goto yy824; - if (yych >= 'b') goto yy822; + if (yych <= 'X') goto yy823; + if (yych >= 'b') goto yy821; } else { - if (yych == 'x') goto yy824; + if (yych == 'x') goto yy823; } } -yy802: - YYDEBUG(802, *YYCURSOR); +yy801: + YYDEBUG(801, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1704 "Zend/zend_language_scanner.l" +#line 1705 "Zend/zend_language_scanner.l" { /* Offset could be treated as a long */ if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) { char *end; @@ -7383,53 +7390,53 @@ int start_line = CG(zend_lineno); } RETURN_TOKEN(T_NUM_STRING); } -#line 7387 "Zend/zend_language_scanner.c" +#line 7394 "Zend/zend_language_scanner.c" +yy802: + YYDEBUG(802, *YYCURSOR); + yych = *++YYCURSOR; + goto yy820; yy803: YYDEBUG(803, *YYCURSOR); - yych = *++YYCURSOR; - goto yy821; -yy804: - YYDEBUG(804, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '_') { - if (yych <= '@') goto yy805; - if (yych <= 'Z') goto yy817; - if (yych >= '_') goto yy817; + if (yych <= '@') goto yy804; + if (yych <= 'Z') goto yy816; + if (yych >= '_') goto yy816; } else { - if (yych <= '`') goto yy805; - if (yych <= 'z') goto yy817; - if (yych >= 0x80) goto yy817; + if (yych <= '`') goto yy804; + if (yych <= 'z') goto yy816; + if (yych >= 0x80) goto yy816; } -yy805: - YYDEBUG(805, *YYCURSOR); +yy804: + YYDEBUG(804, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1864 "Zend/zend_language_scanner.l" +#line 1865 "Zend/zend_language_scanner.l" { /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */ RETURN_TOKEN(yytext[0]); } -#line 7412 "Zend/zend_language_scanner.c" -yy806: - YYDEBUG(806, *YYCURSOR); +#line 7419 "Zend/zend_language_scanner.c" +yy805: + YYDEBUG(805, *YYCURSOR); ++YYCURSOR; - YYDEBUG(807, *YYCURSOR); + YYDEBUG(806, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1859 "Zend/zend_language_scanner.l" +#line 1860 "Zend/zend_language_scanner.l" { yy_pop_state(); RETURN_TOKEN(']'); } -#line 7423 "Zend/zend_language_scanner.c" +#line 7430 "Zend/zend_language_scanner.c" +yy807: + YYDEBUG(807, *YYCURSOR); + yych = *++YYCURSOR; + goto yy804; yy808: YYDEBUG(808, *YYCURSOR); - yych = *++YYCURSOR; - goto yy805; -yy809: - YYDEBUG(809, *YYCURSOR); ++YYCURSOR; - YYDEBUG(810, *YYCURSOR); + YYDEBUG(809, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1869 "Zend/zend_language_scanner.l" +#line 1870 "Zend/zend_language_scanner.l" { /* Invalid rule to return a more explicit parse error with proper line number */ yyless(0); @@ -7437,27 +7444,27 @@ int start_line = CG(zend_lineno); ZVAL_NULL(zendlval); RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE); } -#line 7441 "Zend/zend_language_scanner.c" -yy811: - YYDEBUG(811, *YYCURSOR); +#line 7448 "Zend/zend_language_scanner.c" +yy810: + YYDEBUG(810, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy816; -yy812: - YYDEBUG(812, *YYCURSOR); + goto yy815; +yy811: + YYDEBUG(811, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1877 "Zend/zend_language_scanner.l" +#line 1878 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); RETURN_TOKEN(T_STRING); } -#line 7455 "Zend/zend_language_scanner.c" -yy813: - YYDEBUG(813, *YYCURSOR); +#line 7462 "Zend/zend_language_scanner.c" +yy812: + YYDEBUG(812, *YYCURSOR); ++YYCURSOR; - YYDEBUG(814, *YYCURSOR); + YYDEBUG(813, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2372 "Zend/zend_language_scanner.l" +#line 2373 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { RETURN_TOKEN(END); @@ -7466,115 +7473,115 @@ int start_line = CG(zend_lineno); zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7470 "Zend/zend_language_scanner.c" -yy815: - YYDEBUG(815, *YYCURSOR); +#line 7477 "Zend/zend_language_scanner.c" +yy814: + YYDEBUG(814, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy816: - YYDEBUG(816, *YYCURSOR); +yy815: + YYDEBUG(815, *YYCURSOR); if (yybm[0+yych] & 16) { - goto yy815; + goto yy814; } - goto yy812; -yy817: - YYDEBUG(817, *YYCURSOR); + goto yy811; +yy816: + YYDEBUG(816, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(818, *YYCURSOR); + YYDEBUG(817, *YYCURSOR); if (yych <= '^') { if (yych <= '9') { - if (yych >= '0') goto yy817; + if (yych >= '0') goto yy816; } else { - if (yych <= '@') goto yy819; - if (yych <= 'Z') goto yy817; + if (yych <= '@') goto yy818; + if (yych <= 'Z') goto yy816; } } else { if (yych <= '`') { - if (yych <= '_') goto yy817; + if (yych <= '_') goto yy816; } else { - if (yych <= 'z') goto yy817; - if (yych >= 0x80) goto yy817; + if (yych <= 'z') goto yy816; + if (yych >= 0x80) goto yy816; } } -yy819: - YYDEBUG(819, *YYCURSOR); +yy818: + YYDEBUG(818, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1854 "Zend/zend_language_scanner.l" +#line 1855 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); RETURN_TOKEN(T_VARIABLE); } -#line 7511 "Zend/zend_language_scanner.c" -yy820: - YYDEBUG(820, *YYCURSOR); +#line 7518 "Zend/zend_language_scanner.c" +yy819: + YYDEBUG(819, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy821: - YYDEBUG(821, *YYCURSOR); +yy820: + YYDEBUG(820, *YYCURSOR); if (yybm[0+yych] & 32) { - goto yy820; + goto yy819; } - goto yy802; -yy822: - YYDEBUG(822, *YYCURSOR); + goto yy801; +yy821: + YYDEBUG(821, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 128) { - goto yy830; + goto yy829; } +yy822: + YYDEBUG(822, *YYCURSOR); + YYCURSOR = YYMARKER; + goto yy801; yy823: YYDEBUG(823, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy802; -yy824: - YYDEBUG(824, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 64) { - goto yy828; + goto yy827; } - goto yy823; -yy825: - YYDEBUG(825, *YYCURSOR); + goto yy822; +yy824: + YYDEBUG(824, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; + YYDEBUG(825, *YYCURSOR); + if (yych <= '/') goto yy826; + if (yych <= '9') goto yy824; +yy826: YYDEBUG(826, *YYCURSOR); - if (yych <= '/') goto yy827; - if (yych <= '9') goto yy825; -yy827: - YYDEBUG(827, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1720 "Zend/zend_language_scanner.l" +#line 1721 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ ZVAL_STRINGL(zendlval, yytext, yyleng); RETURN_TOKEN(T_NUM_STRING); } -#line 7556 "Zend/zend_language_scanner.c" -yy828: - YYDEBUG(828, *YYCURSOR); +#line 7563 "Zend/zend_language_scanner.c" +yy827: + YYDEBUG(827, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(829, *YYCURSOR); + YYDEBUG(828, *YYCURSOR); if (yybm[0+yych] & 64) { - goto yy828; + goto yy827; } - goto yy827; -yy830: - YYDEBUG(830, *YYCURSOR); + goto yy826; +yy829: + YYDEBUG(829, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(831, *YYCURSOR); + YYDEBUG(830, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy830; + goto yy829; } - goto yy827; + goto yy826; } } -#line 2381 "Zend/zend_language_scanner.l" +#line 2382 "Zend/zend_language_scanner.l" } diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 201445da01840..66f8584c42c6a 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -178,6 +178,7 @@ void startup_scanner(void) { CG(parse_error) = 0; CG(doc_comment) = NULL; + CG(attributes) = NULL; zend_stack_init(&SCNG(state_stack), sizeof(int)); zend_ptr_stack_init(&SCNG(heredoc_label_stack)); } diff --git a/Zend/zend_language_scanner_defs.h b/Zend/zend_language_scanner_defs.h index 09bcf92f4fe82..5926e3c61d971 100644 --- a/Zend/zend_language_scanner_defs.h +++ b/Zend/zend_language_scanner_defs.h @@ -1,4 +1,4 @@ -/* Generated by re2c 0.15.3 */ +/* Generated by re2c 0.13.5 */ #line 3 "Zend/zend_language_scanner_defs.h" enum YYCONDTYPE { diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c index 27c04e3a76df0..4d24827ee191c 100644 --- a/Zend/zend_opcode.c +++ b/Zend/zend_opcode.c @@ -70,6 +70,7 @@ void init_op_array(zend_op_array *op_array, zend_uchar type, int initial_ops_siz op_array->function_name = NULL; op_array->filename = zend_get_compiled_filename(); op_array->doc_comment = NULL; + op_array->attributes = NULL; op_array->arg_info = NULL; op_array->num_args = 0; @@ -282,6 +283,9 @@ ZEND_API void destroy_zend_class(zval *zv) if (prop_info->doc_comment) { zend_string_release(prop_info->doc_comment); } + if (prop_info->attributes) { + zend_array_ptr_dtor(prop_info->attributes); + } } } ZEND_HASH_FOREACH_END(); zend_hash_destroy(&ce->properties_info); @@ -296,6 +300,9 @@ ZEND_API void destroy_zend_class(zval *zv) if (c->doc_comment) { zend_string_release(c->doc_comment); } + if (c->attributes) { + zend_array_ptr_dtor(c->attributes); + } } } ZEND_HASH_FOREACH_END(); zend_hash_destroy(&ce->constants_table); @@ -306,6 +313,9 @@ ZEND_API void destroy_zend_class(zval *zv) if (ce->info.user.doc_comment) { zend_string_release(ce->info.user.doc_comment); } + if (ce->info.user.attributes) { + zend_array_ptr_dtor(ce->info.user.attributes); + } _destroy_zend_class_traits_info(ce); @@ -342,6 +352,9 @@ ZEND_API void destroy_zend_class(zval *zv) if (c->doc_comment && c->ce == ce) { zend_string_release(c->doc_comment); } + if (c->attributes) { + zend_array_ptr_dtor(c->attributes); + } } ZEND_HASH_FOREACH_END(); zend_hash_destroy(&ce->constants_table); } @@ -409,6 +422,9 @@ ZEND_API void destroy_op_array(zend_op_array *op_array) if (op_array->doc_comment) { zend_string_release(op_array->doc_comment); } + if (op_array->attributes) { + zend_array_ptr_dtor(op_array->attributes); + } if (op_array->live_range) { efree(op_array->live_range); } diff --git a/Zend/zend_types.h b/Zend/zend_types.h index 45c2ebdf70a69..039f6b55b1de7 100644 --- a/Zend/zend_types.h +++ b/Zend/zend_types.h @@ -405,6 +405,8 @@ static zend_always_inline zend_uchar zval_get_type(const zval* pz) { #define IS_RESOURCE_EX (IS_RESOURCE | (( IS_TYPE_REFCOUNTED ) << Z_TYPE_FLAGS_SHIFT)) #define IS_REFERENCE_EX (IS_REFERENCE | (( IS_TYPE_REFCOUNTED ) << Z_TYPE_FLAGS_SHIFT)) +#define IS_IMMUTABLE_ARRAY_EX (IS_ARRAY | (IS_TYPE_IMMUTABLE << Z_TYPE_FLAGS_SHIFT)) + #define IS_CONSTANT_EX (IS_CONSTANT | ((IS_TYPE_CONSTANT | IS_TYPE_REFCOUNTED | IS_TYPE_COPYABLE) << Z_TYPE_FLAGS_SHIFT)) #define IS_CONSTANT_AST_EX (IS_CONSTANT_AST | ((IS_TYPE_CONSTANT | IS_TYPE_REFCOUNTED | IS_TYPE_COPYABLE) << Z_TYPE_FLAGS_SHIFT)) @@ -662,6 +664,12 @@ static zend_always_inline zend_uchar zval_get_type(const zval* pz) { Z_TYPE_INFO_P(__z) = IS_ARRAY_EX; \ } while (0) +#define ZVAL_IMMUTABLE_ARR(z, a) do { \ + zval *__z = (z); \ + Z_ARR_P(__z) = (a); \ + Z_TYPE_INFO_P(__z) = IS_IMMUTABLE_ARRAY_EX; \ + } while (0) + #define ZVAL_NEW_ARR(z) do { \ zval *__z = (z); \ zend_array *_arr = \ diff --git a/Zend/zend_variables.h b/Zend/zend_variables.h index 0afe68760d47a..c4e65a5541d7e 100644 --- a/Zend/zend_variables.h +++ b/Zend/zend_variables.h @@ -52,6 +52,15 @@ static zend_always_inline void i_zval_ptr_dtor(zval *zval_ptr ZEND_FILE_LINE_DC) } } +static zend_always_inline void zend_array_ptr_dtor(zend_array *array) +{ + if (!(GC_FLAGS(array) & IS_ARRAY_IMMUTABLE)) { + if (--GC_REFCOUNT(array) == 0) { + zend_array_destroy(array); + } + } +} + static zend_always_inline void _zval_copy_ctor(zval *zvalue ZEND_FILE_LINE_DC) { if (Z_REFCOUNTED_P(zvalue) || Z_IMMUTABLE_P(zvalue)) { diff --git a/ext/opcache/zend_file_cache.c b/ext/opcache/zend_file_cache.c index 6ac4f0e35f645..88f70e1161d85 100644 --- a/ext/opcache/zend_file_cache.c +++ b/ext/opcache/zend_file_cache.c @@ -463,6 +463,14 @@ static void zend_file_cache_serialize_op_array(zend_op_array *op_arra SERIALIZE_PTR(op_array->live_range); SERIALIZE_PTR(op_array->scope); SERIALIZE_STR(op_array->doc_comment); + if (op_array->attributes && !IS_SERIALIZED(op_array->attributes)) { + HashTable *ht; + + SERIALIZE_PTR(op_array->attributes); + ht = op_array->attributes; + UNSERIALIZE_PTR(ht); + zend_file_cache_serialize_hash(ht, script, info, buf, zend_file_cache_serialize_zval); + } SERIALIZE_PTR(op_array->try_catch_array); SERIALIZE_PTR(op_array->prototype); } @@ -502,6 +510,14 @@ static void zend_file_cache_serialize_prop_info(zval *zv, if (prop->doc_comment && !IS_SERIALIZED(prop->doc_comment)) { SERIALIZE_STR(prop->doc_comment); } + if (prop->attributes && !IS_SERIALIZED(prop->attributes)) { + HashTable *ht; + + SERIALIZE_PTR(prop->attributes); + ht = prop->attributes; + UNSERIALIZE_PTR(ht); + zend_file_cache_serialize_hash(ht, script, info, buf, zend_file_cache_serialize_zval); + } } } @@ -524,6 +540,14 @@ static void zend_file_cache_serialize_class_constant(zval *z if (c->doc_comment && !IS_SERIALIZED(c->doc_comment)) { SERIALIZE_STR(c->doc_comment); } + if (c->attributes && !IS_SERIALIZED(c->attributes)) { + HashTable *ht; + + SERIALIZE_PTR(c->attributes); + ht = c->attributes; + UNSERIALIZE_PTR(ht); + zend_file_cache_serialize_hash(ht, script, info, buf, zend_file_cache_serialize_zval); + } } } @@ -567,6 +591,14 @@ static void zend_file_cache_serialize_class(zval *zv, zend_file_cache_serialize_hash(&ce->constants_table, script, info, buf, zend_file_cache_serialize_class_constant); SERIALIZE_STR(ce->info.user.filename); SERIALIZE_STR(ce->info.user.doc_comment); + if (ce->info.user.attributes && !IS_SERIALIZED(ce->info.user.attributes)) { + HashTable *ht; + + SERIALIZE_PTR(ce->info.user.attributes); + ht = ce->info.user.attributes; + UNSERIALIZE_PTR(ht); + zend_file_cache_serialize_hash(ht, script, info, buf, zend_file_cache_serialize_zval); + } zend_file_cache_serialize_hash(&ce->properties_info, script, info, buf, zend_file_cache_serialize_prop_info); if (ce->trait_aliases) { @@ -1035,6 +1067,14 @@ static void zend_file_cache_unserialize_op_array(zend_op_array *op_arr UNSERIALIZE_PTR(op_array->live_range); UNSERIALIZE_PTR(op_array->scope); UNSERIALIZE_STR(op_array->doc_comment); + if (op_array->attributes && !IS_UNSERIALIZED(op_array->attributes)) { + HashTable *ht; + + UNSERIALIZE_PTR(op_array->attributes); + ht = op_array->attributes; + zend_file_cache_unserialize_hash(ht, + script, buf, zend_file_cache_unserialize_zval, ZVAL_PTR_DTOR); + } UNSERIALIZE_PTR(op_array->try_catch_array); UNSERIALIZE_PTR(op_array->prototype); } @@ -1070,6 +1110,14 @@ static void zend_file_cache_unserialize_prop_info(zval *zv, if (prop->doc_comment && !IS_UNSERIALIZED(prop->doc_comment)) { UNSERIALIZE_STR(prop->doc_comment); } + if (prop->attributes && !IS_UNSERIALIZED(prop->attributes)) { + HashTable *ht; + + UNSERIALIZE_PTR(prop->attributes); + ht = prop->attributes; + zend_file_cache_unserialize_hash(ht, + script, buf, zend_file_cache_unserialize_zval, ZVAL_PTR_DTOR); + } } } @@ -1090,6 +1138,14 @@ static void zend_file_cache_unserialize_class_constant(zval * if (c->doc_comment && !IS_UNSERIALIZED(c->doc_comment)) { UNSERIALIZE_STR(c->doc_comment); } + if (c->attributes && !IS_UNSERIALIZED(c->attributes)) { + HashTable *ht; + + UNSERIALIZE_PTR(c->attributes); + ht = c->attributes; + zend_file_cache_unserialize_hash(ht, + script, buf, zend_file_cache_unserialize_zval, ZVAL_PTR_DTOR); + } } } @@ -1131,6 +1187,14 @@ static void zend_file_cache_unserialize_class(zval *zv, script, buf, zend_file_cache_unserialize_class_constant, NULL); UNSERIALIZE_STR(ce->info.user.filename); UNSERIALIZE_STR(ce->info.user.doc_comment); + if (ce->info.user.attributes && !IS_UNSERIALIZED(ce->info.user.attributes)) { + HashTable *ht; + + UNSERIALIZE_PTR(ce->info.user.attributes); + ht = ce->info.user.attributes; + zend_file_cache_unserialize_hash(ht, + script, buf, zend_file_cache_unserialize_zval, ZVAL_PTR_DTOR); + } zend_file_cache_unserialize_hash(&ce->properties_info, script, buf, zend_file_cache_unserialize_prop_info, ZVAL_PTR_DTOR); diff --git a/ext/opcache/zend_persist.c b/ext/opcache/zend_persist.c index 25a504575d264..05c12bfccaf7b 100644 --- a/ext/opcache/zend_persist.c +++ b/ext/opcache/zend_persist.c @@ -530,6 +530,21 @@ static void zend_persist_op_array_ex(zend_op_array *op_array, zend_persistent_sc } } + if (op_array->attributes) { + if (already_stored) { + op_array->attributes = zend_shared_alloc_get_xlat_entry(op_array->attributes); + ZEND_ASSERT(op_array->attributes != NULL); + } else { + zend_hash_persist(op_array->attributes, zend_persist_zval); + zend_accel_store(op_array->attributes, sizeof(HashTable)); + /* make immutable array */ + GC_REFCOUNT(op_array->attributes) = 2; + GC_TYPE_INFO(op_array->attributes) = IS_ARRAY | (IS_ARRAY_IMMUTABLE << 8); + op_array->attributes->u.flags |= HASH_FLAG_STATIC_KEYS; + op_array->attributes->u.flags &= ~HASH_FLAG_APPLY_PROTECTION; + } + } + if (op_array->try_catch_array) { zend_accel_store(op_array->try_catch_array, sizeof(zend_try_catch_element) * op_array->last_try_catch); } @@ -603,6 +618,15 @@ static void zend_persist_property_info(zval *zv) prop->doc_comment = NULL; } } + if (prop->attributes) { + zend_hash_persist(prop->attributes, zend_persist_zval); + zend_accel_store(prop->attributes, sizeof(HashTable)); + /* make immutable array */ + GC_REFCOUNT(prop->attributes) = 2; + GC_TYPE_INFO(prop->attributes) = IS_ARRAY | (IS_ARRAY_IMMUTABLE << 8); + prop->attributes->u.flags |= HASH_FLAG_STATIC_KEYS; + prop->attributes->u.flags &= ~HASH_FLAG_APPLY_PROTECTION; + } } static void zend_persist_class_constant(zval *zv) @@ -636,6 +660,15 @@ static void zend_persist_class_constant(zval *zv) c->doc_comment = NULL; } } + if (c->attributes) { + zend_hash_persist(c->attributes, zend_persist_zval); + zend_accel_store(c->attributes, sizeof(HashTable)); + /* make immutable array */ + GC_REFCOUNT(c->attributes) = 2; + GC_TYPE_INFO(c->attributes) = IS_ARRAY | (IS_ARRAY_IMMUTABLE << 8); + c->attributes->u.flags |= HASH_FLAG_STATIC_KEYS; + c->attributes->u.flags &= ~HASH_FLAG_APPLY_PROTECTION; + } } static void zend_persist_class_entry(zval *zv) @@ -684,6 +717,15 @@ static void zend_persist_class_entry(zval *zv) ce->info.user.doc_comment = NULL; } } + if (ce->info.user.attributes) { + zend_hash_persist(ce->info.user.attributes, zend_persist_zval); + zend_accel_store(ce->info.user.attributes, sizeof(HashTable)); + /* make immutable array */ + GC_REFCOUNT(ce->info.user.attributes) = 2; + GC_TYPE_INFO(ce->info.user.attributes) = IS_ARRAY | (IS_ARRAY_IMMUTABLE << 8); + ce->info.user.attributes->u.flags |= HASH_FLAG_STATIC_KEYS; + ce->info.user.attributes->u.flags &= ~HASH_FLAG_APPLY_PROTECTION; + } zend_hash_persist(&ce->properties_info, zend_persist_property_info); if (ce->num_interfaces && ce->interfaces) { efree(ce->interfaces); diff --git a/ext/opcache/zend_persist_calc.c b/ext/opcache/zend_persist_calc.c index 22e74d6b36f12..21b4abab1af9a 100644 --- a/ext/opcache/zend_persist_calc.c +++ b/ext/opcache/zend_persist_calc.c @@ -244,6 +244,11 @@ static void zend_persist_op_array_calc_ex(zend_op_array *op_array) ADD_STRING(op_array->doc_comment); } + if (op_array->attributes) { + ADD_DUP_SIZE(op_array->attributes, sizeof(HashTable)); + zend_hash_persist_calc(op_array->attributes, zend_persist_zval_calc); + } + if (op_array->try_catch_array) { ADD_DUP_SIZE(op_array->try_catch_array, sizeof(zend_try_catch_element) * op_array->last_try_catch); } @@ -291,6 +296,10 @@ static void zend_persist_property_info_calc(zval *zv) if (ZCG(accel_directives).save_comments && prop->doc_comment) { ADD_STRING(prop->doc_comment); } + if (prop->attributes) { + ADD_DUP_SIZE(prop->attributes, sizeof(HashTable)); + zend_hash_persist_calc(prop->attributes, zend_persist_zval_calc); + } } } @@ -305,6 +314,10 @@ static void zend_persist_class_constant_calc(zval *zv) if (ZCG(accel_directives).save_comments && c->doc_comment) { ADD_STRING(c->doc_comment); } + if (c->attributes) { + ADD_DUP_SIZE(c->attributes, sizeof(HashTable)); + zend_hash_persist_calc(c->attributes, zend_persist_zval_calc); + } } } @@ -341,6 +354,10 @@ static void zend_persist_class_entry_calc(zval *zv) if (ZCG(accel_directives).save_comments && ce->info.user.doc_comment) { ADD_STRING(ce->info.user.doc_comment); } + if (ce->info.user.attributes) { + ADD_DUP_SIZE(ce->info.user.attributes, sizeof(HashTable)); + zend_hash_persist_calc(ce->info.user.attributes, zend_persist_zval_calc); + } zend_hash_persist_calc(&ce->properties_info, zend_persist_property_info_calc); diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index 2a7ff61957c86..7242a37de4914 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -1908,6 +1908,25 @@ ZEND_METHOD(reflection_function, getDocComment) } /* }}} */ +/* {{{ proto public array ReflectionFunction::getAttributes() + Returns the attributes of this function */ +ZEND_METHOD(reflection_function, getAttributes) +{ + reflection_object *intern; + zend_function *fptr; + + if (zend_parse_parameters_none() == FAILURE) { + return; + } + GET_REFLECTION_OBJECT_PTR(fptr); + if (fptr->type == ZEND_USER_FUNCTION && fptr->op_array.attributes) { + zend_ast_convert_attributes(return_value, fptr->op_array.attributes); + } else { + array_init(return_value); + } +} +/* }}} */ + /* {{{ proto public array ReflectionFunction::getStaticVariables() Returns an associative array containing this function's static variables and their values */ ZEND_METHOD(reflection_function, getStaticVariables) @@ -3865,6 +3884,25 @@ ZEND_METHOD(reflection_class_constant, getDocComment) } /* }}} */ +/* {{{ proto public array ReflectionClassConstant::getAttributes() + Returns the attributes of this constant */ +ZEND_METHOD(reflection_class_constant, getAttributes) +{ + reflection_object *intern; + zend_class_constant *ref; + + if (zend_parse_parameters_none() == FAILURE) { + return; + } + GET_REFLECTION_OBJECT_PTR(ref); + if (ref->attributes) { + zend_ast_convert_attributes(return_value, ref->attributes); + } else { + array_init(return_value); + } +} +/* }}} */ + /* {{{ proto public static mixed ReflectionClass::export(mixed argument [, bool return]) throws ReflectionException Exports a reflection object. Returns the output if TRUE is specified for return, printing it otherwise. */ ZEND_METHOD(reflection_class, export) @@ -4224,6 +4262,25 @@ ZEND_METHOD(reflection_class, getDocComment) } /* }}} */ +/* {{{ proto public array ReflectionClass::getAttributes() + Returns the attributes for this class */ +ZEND_METHOD(reflection_class, getAttributes) +{ + reflection_object *intern; + zend_class_entry *ce; + + if (zend_parse_parameters_none() == FAILURE) { + return; + } + GET_REFLECTION_OBJECT_PTR(ce); + if (ce->type == ZEND_USER_CLASS && ce->info.user.attributes) { + zend_ast_convert_attributes(return_value, ce->info.user.attributes); + } else { + array_init(return_value); + } +} +/* }}} */ + /* {{{ proto public ReflectionMethod ReflectionClass::getConstructor() Returns the class' constructor if there is one, NULL otherwise */ ZEND_METHOD(reflection_class, getConstructor) @@ -5774,6 +5831,25 @@ ZEND_METHOD(reflection_property, getDocComment) } /* }}} */ +/* {{{ proto public array ReflectionProperty::getAttributes() + Returns the attributes of this property */ +ZEND_METHOD(reflection_property, getAttributes) +{ + reflection_object *intern; + property_reference *ref; + + if (zend_parse_parameters_none() == FAILURE) { + return; + } + GET_REFLECTION_OBJECT_PTR(ref); + if (ref->prop.attributes) { + zend_ast_convert_attributes(return_value, ref->prop.attributes); + } else { + array_init(return_value); + } +} +/* }}} */ + /* {{{ proto public int ReflectionProperty::setAccessible(bool visible) Sets whether non-public properties can be requested */ ZEND_METHOD(reflection_property, setAccessible) @@ -6371,6 +6447,7 @@ static const zend_function_entry reflection_function_abstract_functions[] = { ZEND_ME(reflection_function, getClosureThis, arginfo_reflection__void, 0) ZEND_ME(reflection_function, getClosureScopeClass, arginfo_reflection__void, 0) ZEND_ME(reflection_function, getDocComment, arginfo_reflection__void, 0) + ZEND_ME(reflection_function, getAttributes, arginfo_reflection__void, 0) ZEND_ME(reflection_function, getEndLine, arginfo_reflection__void, 0) ZEND_ME(reflection_function, getExtension, arginfo_reflection__void, 0) ZEND_ME(reflection_function, getExtensionName, arginfo_reflection__void, 0) @@ -6560,6 +6637,7 @@ static const zend_function_entry reflection_class_functions[] = { ZEND_ME(reflection_class, getStartLine, arginfo_reflection__void, 0) ZEND_ME(reflection_class, getEndLine, arginfo_reflection__void, 0) ZEND_ME(reflection_class, getDocComment, arginfo_reflection__void, 0) + ZEND_ME(reflection_class, getAttributes, arginfo_reflection__void, 0) ZEND_ME(reflection_class, getConstructor, arginfo_reflection__void, 0) ZEND_ME(reflection_class, hasMethod, arginfo_reflection_class_hasMethod, 0) ZEND_ME(reflection_class, getMethod, arginfo_reflection_class_getMethod, 0) @@ -6659,6 +6737,7 @@ static const zend_function_entry reflection_property_functions[] = { ZEND_ME(reflection_property, getModifiers, arginfo_reflection__void, 0) ZEND_ME(reflection_property, getDeclaringClass, arginfo_reflection__void, 0) ZEND_ME(reflection_property, getDocComment, arginfo_reflection__void, 0) + ZEND_ME(reflection_property, getAttributes, arginfo_reflection__void, 0) ZEND_ME(reflection_property, setAccessible, arginfo_reflection_property_setAccessible, 0) PHP_FE_END }; @@ -6687,6 +6766,7 @@ static const zend_function_entry reflection_class_constant_functions[] = { ZEND_ME(reflection_class_constant, getModifiers, arginfo_reflection__void, 0) ZEND_ME(reflection_class_constant, getDeclaringClass, arginfo_reflection__void, 0) ZEND_ME(reflection_class_constant, getDocComment, arginfo_reflection__void, 0) + ZEND_ME(reflection_class_constant, getAttributes, arginfo_reflection__void, 0) PHP_FE_END }; diff --git a/ext/reflection/tests/ReflectionClass_toString_001.phpt b/ext/reflection/tests/ReflectionClass_toString_001.phpt index 29d58420e375c..96dc6cf2ef48c 100644 --- a/ext/reflection/tests/ReflectionClass_toString_001.phpt +++ b/ext/reflection/tests/ReflectionClass_toString_001.phpt @@ -34,7 +34,7 @@ Class [ class ReflectionClass implements Reflector ] { Property [ public $name ] } - - Methods [52] { + - Methods [53] { Method [ final private method __clone ] { - Parameters [0] { @@ -114,6 +114,12 @@ Class [ class ReflectionClass implements Reflector ] { } } + Method [ public method getAttributes ] { + + - Parameters [0] { + } + } + Method [ public method getConstructor ] { - Parameters [0] {