diff --git a/Zend/tests/is_a.phpt b/Zend/tests/is_a.phpt index 0a01eb756e119..f4161f2390996 100644 --- a/Zend/tests/is_a.phpt +++ b/Zend/tests/is_a.phpt @@ -12,21 +12,21 @@ function __autoload($name) { class BASE { } -interface INT { +interface I { } -class A extends BASE implements INT { +class A extends BASE implements I { } $a = new A; var_dump(is_a($a, "B1")); var_dump(is_a($a, "A")); var_dump(is_a($a, "BASE")); -var_dump(is_a($a, "INT")); +var_dump(is_a($a, "I")); var_dump(is_subclass_of($a, "B2")); var_dump(is_subclass_of($a, "A")); var_dump(is_subclass_of($a, "BASE")); -var_dump(is_subclass_of($a, "INT")); +var_dump(is_subclass_of($a, "I")); var_dump(is_subclass_of("X1", "X2")); ?> diff --git a/Zend/tests/typehints/scalar_aliases.phpt b/Zend/tests/typehints/scalar_aliases.phpt new file mode 100644 index 0000000000000..500e5da399bf4 --- /dev/null +++ b/Zend/tests/typehints/scalar_aliases.phpt @@ -0,0 +1,20 @@ +--TEST-- +Scalar type hint aliases +--FILE-- + 'E_NOTICE', + E_WARNING => 'E_WARNING', + E_RECOVERABLE_ERROR => 'E_RECOVERABLE_ERROR' +]; +set_error_handler(function (int $errno, string $errmsg, string $file, int $line) use ($errnames) { + echo "$errnames[$errno]: $errmsg on line $line\n"; + return true; +}); + +$functions = [ + 'int' => function (int $i) { return $i; }, + 'float' => function (float $f) { return $f; }, + 'string' => function (string $s) { return $s; }, + 'bool' => function (bool $b) { return $b; } +]; + +class Stringable { + public function __toString() { + return "foobar"; + } +} + +$values = [ + 1, + "1", + 1.0, + 1.5, + "1a", + "a", + "", + PHP_INT_MAX, + NAN, + TRUE, + FALSE, + NULL, + [], + new StdClass, + new Stringable, + fopen("data:text/plain,foobar", "r") +]; + +foreach ($functions as $type => $function) { + echo PHP_EOL, "Testing '$type' typehint:", PHP_EOL; + foreach ($values as $value) { + echo "*** Trying "; + var_dump($value); + var_dump($function($value)); + } +} +--EXPECTF-- + +Testing 'int' typehint: +*** Trying int(1) +int(1) +*** Trying string(1) "1" +int(1) +*** Trying float(1) +int(1) +*** Trying float(1.5) +int(1) +*** Trying string(2) "1a" +E_NOTICE: A non well formed numeric value encountered on line %d +int(1) +*** Trying string(1) "a" +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type integer, string given, called in %s on line %d and defined on line %d +string(1) "a" +*** Trying string(0) "" +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type integer, string given, called in %s on line %d and defined on line %d +string(0) "" +*** Trying int(%d) +int(%d) +*** Trying float(NAN) +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type integer, float given, called in %s on line %d and defined on line %d +float(NAN) +*** Trying bool(true) +int(1) +*** Trying bool(false) +int(0) +*** Trying NULL +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type integer, null given, called in %s on line %d and defined on line %d +NULL +*** Trying array(0) { +} +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type integer, array given, called in %s on line %d and defined on line %d +array(0) { +} +*** Trying object(stdClass)#%s (0) { +} +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type integer, object given, called in %s on line %d and defined on line %d +object(stdClass)#%s (0) { +} +*** Trying object(Stringable)#%s (0) { +} +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type integer, object given, called in %s on line %d and defined on line %d +object(Stringable)#%s (0) { +} +*** Trying resource(%d) of type (stream) +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type integer, resource given, called in %s on line %d and defined on line %d +resource(%d) of type (stream) + +Testing 'float' typehint: +*** Trying int(1) +float(1) +*** Trying string(1) "1" +float(1) +*** Trying float(1) +float(1) +*** Trying float(1.5) +float(1.5) +*** Trying string(2) "1a" +E_NOTICE: A non well formed numeric value encountered on line %d +float(1) +*** Trying string(1) "a" +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type float, string given, called in %s on line %d and defined on line %d +string(1) "a" +*** Trying string(0) "" +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type float, string given, called in %s on line %d and defined on line %d +string(0) "" +*** Trying int(%d) +float(%s) +*** Trying float(NAN) +float(NAN) +*** Trying bool(true) +float(1) +*** Trying bool(false) +float(0) +*** Trying NULL +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type float, null given, called in %s on line %d and defined on line %d +NULL +*** Trying array(0) { +} +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type float, array given, called in %s on line %d and defined on line %d +array(0) { +} +*** Trying object(stdClass)#%s (0) { +} +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type float, object given, called in %s on line %d and defined on line %d +object(stdClass)#%s (0) { +} +*** Trying object(Stringable)#%s (0) { +} +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type float, object given, called in %s on line %d and defined on line %d +object(Stringable)#%s (0) { +} +*** Trying resource(%d) of type (stream) +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type float, resource given, called in %s on line %d and defined on line %d +resource(%d) of type (stream) + +Testing 'string' typehint: +*** Trying int(1) +string(1) "1" +*** Trying string(1) "1" +string(1) "1" +*** Trying float(1) +string(1) "1" +*** Trying float(1.5) +string(3) "1.5" +*** Trying string(2) "1a" +string(2) "1a" +*** Trying string(1) "a" +string(1) "a" +*** Trying string(0) "" +string(0) "" +*** Trying int(%d) +string(%d) "%d" +*** Trying float(NAN) +string(3) "NAN" +*** Trying bool(true) +string(1) "1" +*** Trying bool(false) +string(0) "" +*** Trying NULL +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type string, null given, called in %s on line %d and defined on line %d +NULL +*** Trying array(0) { +} +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type string, array given, called in %s on line %d and defined on line %d +array(0) { +} +*** Trying object(stdClass)#%s (0) { +} +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type string, object given, called in %s on line %d and defined on line %d +object(stdClass)#%s (0) { +} +*** Trying object(Stringable)#%s (0) { +} +string(6) "foobar" +*** Trying resource(%d) of type (stream) +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type string, resource given, called in %s on line %d and defined on line %d +resource(%d) of type (stream) + +Testing 'bool' typehint: +*** Trying int(1) +bool(true) +*** Trying string(1) "1" +bool(true) +*** Trying float(1) +bool(true) +*** Trying float(1.5) +bool(true) +*** Trying string(2) "1a" +bool(true) +*** Trying string(1) "a" +bool(true) +*** Trying string(0) "" +bool(false) +*** Trying int(%d) +bool(true) +*** Trying float(NAN) +bool(true) +*** Trying bool(true) +bool(true) +*** Trying bool(false) +bool(false) +*** Trying NULL +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type boolean, null given, called in %s on line %d and defined on line %d +NULL +*** Trying array(0) { +} +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type boolean, array given, called in %s on line %d and defined on line %d +array(0) { +} +*** Trying object(stdClass)#%s (0) { +} +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type boolean, object given, called in %s on line %d and defined on line %d +object(stdClass)#%s (0) { +} +*** Trying object(Stringable)#%s (0) { +} +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type boolean, object given, called in %s on line %d and defined on line %d +object(Stringable)#%s (0) { +} +*** Trying resource(%d) of type (stream) +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type boolean, resource given, called in %s on line %d and defined on line %d +resource(%d) of type (stream) diff --git a/Zend/tests/typehints/scalar_none.phpt b/Zend/tests/typehints/scalar_none.phpt new file mode 100644 index 0000000000000..0b7f7ec9a202f --- /dev/null +++ b/Zend/tests/typehints/scalar_none.phpt @@ -0,0 +1,55 @@ +--TEST-- +Scalar type hint missing parameters +--FILE-- + 'E_NOTICE', + E_WARNING => 'E_WARNING', + E_RECOVERABLE_ERROR => 'E_RECOVERABLE_ERROR' +]; +set_error_handler(function (int $errno, string $errmsg, string $file, int $line) use ($errnames) { + echo "$errnames[$errno]: $errmsg on line $line\n"; + return true; +}); + +$functions = [ + 'int' => function (int $i) { return $i; }, + 'float' => function (float $f) { return $f; }, + 'string' => function (string $s) { return $s; }, + 'bool' => function (bool $b) { return $b; }, + 'int nullable' => function (int $i = NULL) { return $i; }, + 'float nullable' => function (float $f = NULL) { return $f; }, + 'string nullable' => function (string $s = NULL) { return $s; }, + 'bool nullable' => function (bool $b = NULL) { return $b; } +]; + +foreach ($functions as $type => $function) { + echo "Testing $type:", PHP_EOL; + var_dump($function()); +} +--EXPECTF-- +Testing int: +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type integer, none given, called in %s on line %d and defined on line %d +E_NOTICE: Undefined variable: i on line %d +NULL +Testing float: +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type float, none given, called in %s on line %d and defined on line %d +E_NOTICE: Undefined variable: f on line %d +NULL +Testing string: +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type string, none given, called in %s on line %d and defined on line %d +E_NOTICE: Undefined variable: s on line %d +NULL +Testing bool: +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type boolean, none given, called in %s on line %d and defined on line %d +E_NOTICE: Undefined variable: b on line %d +NULL +Testing int nullable: +NULL +Testing float nullable: +NULL +Testing string nullable: +NULL +Testing bool nullable: +NULL diff --git a/Zend/tests/typehints/scalar_null.phpt b/Zend/tests/typehints/scalar_null.phpt new file mode 100644 index 0000000000000..c5aa1ce986c36 --- /dev/null +++ b/Zend/tests/typehints/scalar_null.phpt @@ -0,0 +1,51 @@ +--TEST-- +Scalar type hint nullability +--FILE-- + 'E_NOTICE', + E_WARNING => 'E_WARNING', + E_RECOVERABLE_ERROR => 'E_RECOVERABLE_ERROR' +]; +set_error_handler(function (int $errno, string $errmsg, string $file, int $line) use ($errnames) { + echo "$errnames[$errno]: $errmsg on line $line\n"; + return true; +}); + +$functions = [ + 'int' => function (int $i) { return $i; }, + 'float' => function (float $f) { return $f; }, + 'string' => function (string $s) { return $s; }, + 'bool' => function (bool $b) { return $b; }, + 'int nullable' => function (int $i = NULL) { return $i; }, + 'float nullable' => function (float $f = NULL) { return $f; }, + 'string nullable' => function (string $s = NULL) { return $s; }, + 'bool nullable' => function (bool $b = NULL) { return $b; } +]; + +foreach ($functions as $type => $function) { + echo "Testing $type:", PHP_EOL; + var_dump($function(NULL)); +} +--EXPECTF-- +Testing int: +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type integer, null given, called in %s on line %d and defined on line %d +NULL +Testing float: +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type float, null given, called in %s on line %d and defined on line %d +NULL +Testing string: +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type string, null given, called in %s on line %d and defined on line %d +NULL +Testing bool: +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type boolean, null given, called in %s on line %d and defined on line %d +NULL +Testing int nullable: +NULL +Testing float nullable: +NULL +Testing string nullable: +NULL +Testing bool nullable: +NULL diff --git a/Zend/tests/typehints/scalar_reserved1.phpt b/Zend/tests/typehints/scalar_reserved1.phpt new file mode 100644 index 0000000000000..00a7482e216c3 --- /dev/null +++ b/Zend/tests/typehints/scalar_reserved1.phpt @@ -0,0 +1,8 @@ +--TEST-- +Scalar type hint names cannot be used as class, trait or interface names (1) +--FILE-- +val, name, name_len); } + + zend_assert_valid_class_name(lcname); + ce = zend_hash_add_ptr(CG(class_table), lcname, ce); zend_string_release(lcname); if (ce) { diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 654c539d27820..2e988ca9df264 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -3882,7 +3882,17 @@ void zend_compile_params(zend_ast *ast) /* {{{ */ } } else { zend_string *class_name = zend_ast_get_str(type_ast); + const struct _scalar_typehint_info *info = &scalar_typehints[0]; + while (info->name) { + if (class_name->len == info->name_len + && zend_binary_strcasecmp(class_name->val, info->name_len, info->name, info->name_len) == 0) { + arg_info->type_hint = info->type; + goto done; + } + info++; + } + if (zend_is_const_default_class_ref(type_ast)) { class_name = zend_resolve_class_name_ast(type_ast); } else { @@ -3892,9 +3902,15 @@ void zend_compile_params(zend_ast *ast) /* {{{ */ arg_info->type_hint = IS_OBJECT; arg_info->class_name = class_name; +done: if (default_ast && !has_null_default && !Z_CONSTANT(default_node.u.constant)) { + if (arg_info->class_name) { zend_error_noreturn(E_COMPILE_ERROR, "Default value for parameters " "with a class type hint can only be NULL"); + } else if (Z_TYPE(default_node.u.constant) != arg_info->type_hint) { + zend_error_noreturn(E_COMPILE_ERROR, "Default value for parameters " + "with a %s type hint can only be %s or NULL", class_name->val, class_name->val); + } } } } @@ -4503,6 +4519,8 @@ void zend_compile_class_decl(zend_ast *ast) /* {{{ */ import_name = zend_hash_find_ptr(CG(current_import), lcname); } + zend_assert_valid_class_name(name); + if (CG(current_namespace)) { name = zend_prefix_with_ns(name); @@ -4725,6 +4743,10 @@ void zend_compile_use(zend_ast *ast) /* {{{ */ } } + if (type == T_CLASS) { + zend_assert_valid_class_name(new_name); + } + if (case_sensitive) { lookup_name = zend_string_copy(new_name); } else { diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h index 966347fd3cfa1..1efab06050154 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -31,6 +31,45 @@ #include "zend_llist.h" +struct _scalar_typehint_info { + const char* name; + const size_t name_len; + const zend_uchar type; +}; + +static const struct _scalar_typehint_info scalar_typehints[] = { + {"int", sizeof("int") - 1, IS_LONG}, + {"integer", sizeof("integer") - 1, IS_LONG}, + {"float", sizeof("float") - 1, IS_DOUBLE}, + {"string", sizeof("string") - 1, IS_STRING}, + {"bool", sizeof("bool") - 1, _IS_BOOL}, + {"boolean", sizeof("boolean") - 1, _IS_BOOL}, + {NULL, 0, IS_UNDEF} +}; + +static zend_always_inline void zend_assert_valid_class_name(const zend_string *const_name) +{ + const struct _scalar_typehint_info *info = &scalar_typehints[0]; + const char *end_slash = strrchr(const_name->val, '\\'); + zend_string *name = (zend_string*)const_name; + + if (end_slash) { + end_slash++; + name = zend_string_init(end_slash, strlen(end_slash), 0); + } + + while (info->name) { + if (name->len == info->name_len && zend_binary_strcasecmp(name->val, name->len, info->name, info->name_len) == 0) { + zend_error_noreturn(E_COMPILE_ERROR, "\"%s\" cannot be used as a class name", name->val); + } + info++; + } + + if (end_slash) { + zend_string_release(name); + } +} + #define DEBUG_ZEND 0 #define SET_UNUSED(op) op ## _type = IS_UNUSED diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 3c01b28c48850..6652c963fbd81 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -609,6 +609,54 @@ static int is_null_constant(zval *default_value) return 0; } +static zend_bool zend_verify_scalar_type_hint(zend_uchar type_hint, zval *arg) +{ + switch (type_hint) { + case _IS_BOOL: { + zend_bool dest; + + if (!zend_parse_arg_bool(arg, &dest, NULL, 0)) { + return 0; + } + zval_ptr_dtor(arg); + ZVAL_BOOL(arg, dest); + return 1; + } + case IS_LONG: { + zend_long dest; + + if (!zend_parse_arg_long(arg, &dest, NULL, 0, 0)) { + return 0; + } + zval_ptr_dtor(arg); + ZVAL_LONG(arg, dest); + return 1; + } + case IS_DOUBLE: { + double dest; + + if (!zend_parse_arg_double(arg, &dest, NULL, 0)) { + return 0; + } + zval_ptr_dtor(arg); + ZVAL_DOUBLE(arg, dest); + return 1; + } + case IS_STRING: { + zend_string *dest; + + if (!zend_parse_arg_str(arg, &dest, 0)) { + return 0; + } + zval_ptr_dtor(arg); + ZVAL_STR(arg, dest); + return 1; + } + default: + return 0; + } +} + static void zend_verify_internal_arg_type(zend_function *zf, uint32_t arg_num, zval *arg) { zend_internal_arg_info *cur_arg_info; @@ -637,8 +685,8 @@ static void zend_verify_internal_arg_type(zend_function *zf, uint32_t arg_num, z zend_verify_arg_error(E_RECOVERABLE_ERROR, zf, arg_num, need_msg, class_name, zend_zval_type_name(arg), "", arg); } } else if (cur_arg_info->type_hint) { + ZVAL_DEREF(arg); if (cur_arg_info->type_hint == IS_ARRAY) { - ZVAL_DEREF(arg); if (Z_TYPE_P(arg) != IS_ARRAY && (Z_TYPE_P(arg) != IS_NULL || !cur_arg_info->allow_null)) { zend_verify_arg_error(E_RECOVERABLE_ERROR, zf, arg_num, "be of the type array", "", zend_zval_type_name(arg), "", arg); } @@ -646,10 +694,17 @@ static void zend_verify_internal_arg_type(zend_function *zf, uint32_t arg_num, z if (!zend_is_callable(arg, IS_CALLABLE_CHECK_SILENT, NULL) && (Z_TYPE_P(arg) != IS_NULL || !cur_arg_info->allow_null)) { zend_verify_arg_error(E_RECOVERABLE_ERROR, zf, arg_num, "be callable", "", zend_zval_type_name(arg), "", arg); } -#if ZEND_DEBUG - } else { - zend_error(E_ERROR, "Unknown typehint"); -#endif + } else if (UNEXPECTED(cur_arg_info->type_hint != Z_TYPE_P(arg))) { + if (Z_TYPE_P(arg) == IS_NULL) { + if (!cur_arg_info->allow_null) { +failure: + zend_verify_arg_error(E_RECOVERABLE_ERROR, zf, arg_num, "be of the type ", zend_get_type_by_const(cur_arg_info->type_hint), zend_zval_type_name(arg), "", arg); + } + return; + } + if (!zend_verify_scalar_type_hint(cur_arg_info->type_hint, arg)) { + goto failure; + } } } } @@ -682,8 +737,8 @@ static void zend_verify_arg_type(zend_function *zf, uint32_t arg_num, zval *arg, zend_verify_arg_error(E_RECOVERABLE_ERROR, zf, arg_num, need_msg, class_name, zend_zval_type_name(arg), "", arg); } } else if (cur_arg_info->type_hint) { + ZVAL_DEREF(arg); if (cur_arg_info->type_hint == IS_ARRAY) { - ZVAL_DEREF(arg); if (Z_TYPE_P(arg) != IS_ARRAY && (Z_TYPE_P(arg) != IS_NULL || !(cur_arg_info->allow_null || (default_value && is_null_constant(default_value))))) { zend_verify_arg_error(E_RECOVERABLE_ERROR, zf, arg_num, "be of the type array", "", zend_zval_type_name(arg), "", arg); } @@ -691,10 +746,17 @@ static void zend_verify_arg_type(zend_function *zf, uint32_t arg_num, zval *arg, if (!zend_is_callable(arg, IS_CALLABLE_CHECK_SILENT, NULL) && (Z_TYPE_P(arg) != IS_NULL || !(cur_arg_info->allow_null || (default_value && is_null_constant(default_value))))) { zend_verify_arg_error(E_RECOVERABLE_ERROR, zf, arg_num, "be callable", "", zend_zval_type_name(arg), "", arg); } -#if ZEND_DEBUG - } else { - zend_error(E_ERROR, "Unknown typehint"); -#endif + } else if (UNEXPECTED(cur_arg_info->type_hint != Z_TYPE_P(arg))) { + if (Z_TYPE_P(arg) == IS_NULL) { + if (!cur_arg_info->allow_null) { +failure: + zend_verify_arg_error(E_RECOVERABLE_ERROR, zf, arg_num, "be of the type ", zend_get_type_by_const(cur_arg_info->type_hint), zend_zval_type_name(arg), "", arg); + } + return; + } + if (!zend_verify_scalar_type_hint(cur_arg_info->type_hint, arg)) { + goto failure; + } } } } @@ -724,10 +786,8 @@ static inline int zend_verify_missing_arg_type(zend_function *zf, uint32_t arg_n zend_verify_arg_error(E_RECOVERABLE_ERROR, zf, arg_num, "be of the type array", "", "none", "", NULL); } else if (cur_arg_info->type_hint == IS_CALLABLE) { zend_verify_arg_error(E_RECOVERABLE_ERROR, zf, arg_num, "be callable", "", "none", "", NULL); -#if ZEND_DEBUG } else { - zend_error(E_ERROR, "Unknown typehint"); -#endif + zend_verify_arg_error(E_RECOVERABLE_ERROR, zf, arg_num, "be of the type ", zend_get_type_by_const(cur_arg_info->type_hint), "none", "", NULL); } return 0; } diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 5ad5297e8fdaf..13fda6d48da27 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.6 */ +/* Generated by re2c 0.13.7.5 */ #line 1 "Zend/zend_language_scanner.l" /* +----------------------------------------------------------------------+ @@ -1402,7 +1402,8 @@ int lex_scan(zval *zendlval) goto yy27; } if (yych == '-') goto yy32; - if (yych == '[') goto yy34; + if (yych <= '@') goto yy29; + if (yych <= '[') goto yy34; yy29: YYDEBUG(29, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); @@ -1411,7 +1412,7 @@ int lex_scan(zval *zendlval) zend_copy_value(zendlval, (yytext+1), (yyleng-1)); return T_VARIABLE; } -#line 1415 "Zend/zend_language_scanner.c" +#line 1416 "Zend/zend_language_scanner.c" yy30: YYDEBUG(30, *YYCURSOR); ++YYCURSOR; @@ -1422,7 +1423,7 @@ int lex_scan(zval *zendlval) yy_push_state(ST_LOOKING_FOR_VARNAME); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 1426 "Zend/zend_language_scanner.c" +#line 1427 "Zend/zend_language_scanner.c" yy32: YYDEBUG(32, *YYCURSOR); yych = *++YYCURSOR; @@ -1443,7 +1444,7 @@ int lex_scan(zval *zendlval) zend_copy_value(zendlval, (yytext+1), (yyleng-1)); return T_VARIABLE; } -#line 1447 "Zend/zend_language_scanner.c" +#line 1448 "Zend/zend_language_scanner.c" yy36: YYDEBUG(36, *YYCURSOR); yych = *++YYCURSOR; @@ -1468,7 +1469,7 @@ int lex_scan(zval *zendlval) zend_copy_value(zendlval, (yytext+1), (yyleng-1)); return T_VARIABLE; } -#line 1472 "Zend/zend_language_scanner.c" +#line 1473 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -1585,7 +1586,7 @@ int lex_scan(zval *zendlval) zend_scan_escape_string(zendlval, yytext, yyleng, '"'); return T_ENCAPSED_AND_WHITESPACE; } -#line 1589 "Zend/zend_language_scanner.c" +#line 1590 "Zend/zend_language_scanner.c" yy43: YYDEBUG(43, *YYCURSOR); yych = *++YYCURSOR; @@ -1601,7 +1602,7 @@ int lex_scan(zval *zendlval) BEGIN(ST_IN_SCRIPTING); return '"'; } -#line 1605 "Zend/zend_language_scanner.c" +#line 1606 "Zend/zend_language_scanner.c" yy46: YYDEBUG(46, *YYCURSOR); yych = *++YYCURSOR; @@ -1618,7 +1619,7 @@ int lex_scan(zval *zendlval) yyless(1); return T_CURLY_OPEN; } -#line 1622 "Zend/zend_language_scanner.c" +#line 1623 "Zend/zend_language_scanner.c" yy49: YYDEBUG(49, *YYCURSOR); yyaccept = 0; @@ -1630,7 +1631,8 @@ int lex_scan(zval *zendlval) goto yy49; } if (yych == '-') goto yy54; - if (yych == '[') goto yy56; + if (yych <= '@') goto yy51; + if (yych <= '[') goto yy56; yy51: YYDEBUG(51, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); @@ -1639,7 +1641,7 @@ int lex_scan(zval *zendlval) zend_copy_value(zendlval, (yytext+1), (yyleng-1)); return T_VARIABLE; } -#line 1643 "Zend/zend_language_scanner.c" +#line 1645 "Zend/zend_language_scanner.c" yy52: YYDEBUG(52, *YYCURSOR); ++YYCURSOR; @@ -1650,7 +1652,7 @@ int lex_scan(zval *zendlval) yy_push_state(ST_LOOKING_FOR_VARNAME); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 1654 "Zend/zend_language_scanner.c" +#line 1656 "Zend/zend_language_scanner.c" yy54: YYDEBUG(54, *YYCURSOR); yych = *++YYCURSOR; @@ -1671,7 +1673,7 @@ int lex_scan(zval *zendlval) zend_copy_value(zendlval, (yytext+1), (yyleng-1)); return T_VARIABLE; } -#line 1675 "Zend/zend_language_scanner.c" +#line 1677 "Zend/zend_language_scanner.c" yy58: YYDEBUG(58, *YYCURSOR); yych = *++YYCURSOR; @@ -1696,7 +1698,7 @@ int lex_scan(zval *zendlval) zend_copy_value(zendlval, (yytext+1), (yyleng-1)); return T_VARIABLE; } -#line 1700 "Zend/zend_language_scanner.c" +#line 1702 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_END_HEREDOC: @@ -1720,7 +1722,7 @@ int lex_scan(zval *zendlval) BEGIN(ST_IN_SCRIPTING); return T_END_HEREDOC; } -#line 1724 "Zend/zend_language_scanner.c" +#line 1726 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_HEREDOC: { @@ -1855,7 +1857,7 @@ int lex_scan(zval *zendlval) zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0); return T_ENCAPSED_AND_WHITESPACE; } -#line 1859 "Zend/zend_language_scanner.c" +#line 1861 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; @@ -1877,7 +1879,7 @@ int lex_scan(zval *zendlval) yyless(1); return T_CURLY_OPEN; } -#line 1881 "Zend/zend_language_scanner.c" +#line 1883 "Zend/zend_language_scanner.c" yy73: YYDEBUG(73, *YYCURSOR); yyaccept = 0; @@ -1889,7 +1891,8 @@ int lex_scan(zval *zendlval) goto yy73; } if (yych == '-') goto yy78; - if (yych == '[') goto yy80; + if (yych <= '@') goto yy75; + if (yych <= '[') goto yy80; yy75: YYDEBUG(75, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); @@ -1898,7 +1901,7 @@ int lex_scan(zval *zendlval) zend_copy_value(zendlval, (yytext+1), (yyleng-1)); return T_VARIABLE; } -#line 1902 "Zend/zend_language_scanner.c" +#line 1905 "Zend/zend_language_scanner.c" yy76: YYDEBUG(76, *YYCURSOR); ++YYCURSOR; @@ -1909,7 +1912,7 @@ int lex_scan(zval *zendlval) yy_push_state(ST_LOOKING_FOR_VARNAME); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 1913 "Zend/zend_language_scanner.c" +#line 1916 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); yych = *++YYCURSOR; @@ -1930,7 +1933,7 @@ int lex_scan(zval *zendlval) zend_copy_value(zendlval, (yytext+1), (yyleng-1)); return T_VARIABLE; } -#line 1934 "Zend/zend_language_scanner.c" +#line 1937 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -1955,7 +1958,7 @@ int lex_scan(zval *zendlval) zend_copy_value(zendlval, (yytext+1), (yyleng-1)); return T_VARIABLE; } -#line 1959 "Zend/zend_language_scanner.c" +#line 1962 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2143,7 +2146,7 @@ int lex_scan(zval *zendlval) zend_copy_value(zendlval, yytext, yyleng); return T_STRING; } -#line 2147 "Zend/zend_language_scanner.c" +#line 2150 "Zend/zend_language_scanner.c" yy89: YYDEBUG(89, *YYCURSOR); yych = *++YYCURSOR; @@ -2379,7 +2382,7 @@ int lex_scan(zval *zendlval) { return yytext[0]; } -#line 2383 "Zend/zend_language_scanner.c" +#line 2386 "Zend/zend_language_scanner.c" yy104: YYDEBUG(104, *YYCURSOR); ++YYCURSOR; @@ -2393,7 +2396,7 @@ int lex_scan(zval *zendlval) HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 2397 "Zend/zend_language_scanner.c" +#line 2400 "Zend/zend_language_scanner.c" yy106: YYDEBUG(106, *YYCURSOR); yych = *++YYCURSOR; @@ -2408,7 +2411,7 @@ int lex_scan(zval *zendlval) { return T_NS_SEPARATOR; } -#line 2412 "Zend/zend_language_scanner.c" +#line 2415 "Zend/zend_language_scanner.c" yy109: YYDEBUG(109, *YYCURSOR); yyaccept = 1; @@ -2642,7 +2645,7 @@ int lex_scan(zval *zendlval) yy_push_state(ST_IN_SCRIPTING); return '{'; } -#line 2646 "Zend/zend_language_scanner.c" +#line 2649 "Zend/zend_language_scanner.c" yy134: YYDEBUG(134, *YYCURSOR); ++YYCURSOR; @@ -2656,7 +2659,7 @@ int lex_scan(zval *zendlval) } return '}'; } -#line 2660 "Zend/zend_language_scanner.c" +#line 2663 "Zend/zend_language_scanner.c" yy136: YYDEBUG(136, *YYCURSOR); yyaccept = 2; @@ -2702,7 +2705,7 @@ int lex_scan(zval *zendlval) } return T_LNUMBER; } -#line 2706 "Zend/zend_language_scanner.c" +#line 2709 "Zend/zend_language_scanner.c" yy138: YYDEBUG(138, *YYCURSOR); yyaccept = 2; @@ -2759,7 +2762,7 @@ int lex_scan(zval *zendlval) return T_COMMENT; } -#line 2763 "Zend/zend_language_scanner.c" +#line 2766 "Zend/zend_language_scanner.c" yy142: YYDEBUG(142, *YYCURSOR); ++YYCURSOR; @@ -2834,7 +2837,7 @@ int lex_scan(zval *zendlval) } return T_CONSTANT_ENCAPSED_STRING; } -#line 2838 "Zend/zend_language_scanner.c" +#line 2841 "Zend/zend_language_scanner.c" yy144: YYDEBUG(144, *YYCURSOR); ++YYCURSOR; @@ -2882,7 +2885,7 @@ int lex_scan(zval *zendlval) BEGIN(ST_DOUBLE_QUOTES); return '"'; } -#line 2886 "Zend/zend_language_scanner.c" +#line 2889 "Zend/zend_language_scanner.c" yy146: YYDEBUG(146, *YYCURSOR); ++YYCURSOR; @@ -2893,7 +2896,7 @@ int lex_scan(zval *zendlval) BEGIN(ST_BACKQUOTE); return '`'; } -#line 2897 "Zend/zend_language_scanner.c" +#line 2900 "Zend/zend_language_scanner.c" yy148: YYDEBUG(148, *YYCURSOR); ++YYCURSOR; @@ -2908,7 +2911,7 @@ int lex_scan(zval *zendlval) zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 2912 "Zend/zend_language_scanner.c" +#line 2915 "Zend/zend_language_scanner.c" yy150: YYDEBUG(150, *YYCURSOR); ++YYCURSOR; @@ -2940,7 +2943,7 @@ int lex_scan(zval *zendlval) ZVAL_DOUBLE(zendlval, zend_strtod(yytext, NULL)); return T_DNUMBER; } -#line 2944 "Zend/zend_language_scanner.c" +#line 2947 "Zend/zend_language_scanner.c" yy155: YYDEBUG(155, *YYCURSOR); yyaccept = 2; @@ -3055,7 +3058,7 @@ int lex_scan(zval *zendlval) return T_DNUMBER; } } -#line 3059 "Zend/zend_language_scanner.c" +#line 3062 "Zend/zend_language_scanner.c" yy167: YYDEBUG(167, *YYCURSOR); ++YYCURSOR; @@ -3090,7 +3093,7 @@ int lex_scan(zval *zendlval) return T_DNUMBER; } } -#line 3094 "Zend/zend_language_scanner.c" +#line 3097 "Zend/zend_language_scanner.c" yy170: YYDEBUG(170, *YYCURSOR); ++YYCURSOR; @@ -3120,7 +3123,7 @@ int lex_scan(zval *zendlval) zend_copy_value(zendlval, (yytext+1), (yyleng-1)); return T_VARIABLE; } -#line 3124 "Zend/zend_language_scanner.c" +#line 3127 "Zend/zend_language_scanner.c" yy173: YYDEBUG(173, *YYCURSOR); yych = *++YYCURSOR; @@ -3138,7 +3141,7 @@ int lex_scan(zval *zendlval) { return T_LOGICAL_XOR; } -#line 3142 "Zend/zend_language_scanner.c" +#line 3145 "Zend/zend_language_scanner.c" yy176: YYDEBUG(176, *YYCURSOR); ++YYCURSOR; @@ -3151,7 +3154,7 @@ int lex_scan(zval *zendlval) { return T_LOGICAL_OR; } -#line 3155 "Zend/zend_language_scanner.c" +#line 3158 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; @@ -3161,7 +3164,7 @@ int lex_scan(zval *zendlval) { return T_XOR_EQUAL; } -#line 3165 "Zend/zend_language_scanner.c" +#line 3168 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; @@ -3171,7 +3174,7 @@ int lex_scan(zval *zendlval) { return T_BOOLEAN_OR; } -#line 3175 "Zend/zend_language_scanner.c" +#line 3178 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; @@ -3181,7 +3184,7 @@ int lex_scan(zval *zendlval) { return T_OR_EQUAL; } -#line 3185 "Zend/zend_language_scanner.c" +#line 3188 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; @@ -3191,7 +3194,7 @@ int lex_scan(zval *zendlval) { return T_BOOLEAN_AND; } -#line 3195 "Zend/zend_language_scanner.c" +#line 3198 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; @@ -3201,7 +3204,7 @@ int lex_scan(zval *zendlval) { return T_AND_EQUAL; } -#line 3205 "Zend/zend_language_scanner.c" +#line 3208 "Zend/zend_language_scanner.c" yy188: YYDEBUG(188, *YYCURSOR); ++YYCURSOR; @@ -3211,7 +3214,7 @@ int lex_scan(zval *zendlval) { return T_MOD_EQUAL; } -#line 3215 "Zend/zend_language_scanner.c" +#line 3218 "Zend/zend_language_scanner.c" yy190: YYDEBUG(190, *YYCURSOR); yyaccept = 4; @@ -3253,7 +3256,7 @@ int lex_scan(zval *zendlval) return T_COMMENT; } -#line 3257 "Zend/zend_language_scanner.c" +#line 3260 "Zend/zend_language_scanner.c" yy192: YYDEBUG(192, *YYCURSOR); yych = *++YYCURSOR; @@ -3267,7 +3270,7 @@ int lex_scan(zval *zendlval) { return T_DIV_EQUAL; } -#line 3271 "Zend/zend_language_scanner.c" +#line 3274 "Zend/zend_language_scanner.c" yy195: YYDEBUG(195, *YYCURSOR); yych = *++YYCURSOR; @@ -3295,7 +3298,7 @@ int lex_scan(zval *zendlval) { return T_POW; } -#line 3299 "Zend/zend_language_scanner.c" +#line 3302 "Zend/zend_language_scanner.c" yy200: YYDEBUG(200, *YYCURSOR); ++YYCURSOR; @@ -3305,7 +3308,7 @@ int lex_scan(zval *zendlval) { return T_MUL_EQUAL; } -#line 3309 "Zend/zend_language_scanner.c" +#line 3312 "Zend/zend_language_scanner.c" yy202: YYDEBUG(202, *YYCURSOR); ++YYCURSOR; @@ -3315,7 +3318,7 @@ int lex_scan(zval *zendlval) { return T_POW_EQUAL; } -#line 3319 "Zend/zend_language_scanner.c" +#line 3322 "Zend/zend_language_scanner.c" yy204: YYDEBUG(204, *YYCURSOR); ++YYCURSOR; @@ -3326,7 +3329,7 @@ int lex_scan(zval *zendlval) { return T_SR; } -#line 3330 "Zend/zend_language_scanner.c" +#line 3333 "Zend/zend_language_scanner.c" yy206: YYDEBUG(206, *YYCURSOR); ++YYCURSOR; @@ -3336,7 +3339,7 @@ int lex_scan(zval *zendlval) { return T_IS_GREATER_OR_EQUAL; } -#line 3340 "Zend/zend_language_scanner.c" +#line 3343 "Zend/zend_language_scanner.c" yy208: YYDEBUG(208, *YYCURSOR); ++YYCURSOR; @@ -3346,7 +3349,7 @@ int lex_scan(zval *zendlval) { return T_SR_EQUAL; } -#line 3350 "Zend/zend_language_scanner.c" +#line 3353 "Zend/zend_language_scanner.c" yy210: YYDEBUG(210, *YYCURSOR); yyaccept = 5; @@ -3361,7 +3364,7 @@ int lex_scan(zval *zendlval) { return T_SL; } -#line 3365 "Zend/zend_language_scanner.c" +#line 3368 "Zend/zend_language_scanner.c" yy212: YYDEBUG(212, *YYCURSOR); ++YYCURSOR; @@ -3371,7 +3374,7 @@ int lex_scan(zval *zendlval) { return T_IS_SMALLER_OR_EQUAL; } -#line 3375 "Zend/zend_language_scanner.c" +#line 3378 "Zend/zend_language_scanner.c" yy214: YYDEBUG(214, *YYCURSOR); ++YYCURSOR; @@ -3382,7 +3385,7 @@ int lex_scan(zval *zendlval) { return T_IS_NOT_EQUAL; } -#line 3386 "Zend/zend_language_scanner.c" +#line 3389 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; @@ -3392,7 +3395,7 @@ int lex_scan(zval *zendlval) { return T_SL_EQUAL; } -#line 3396 "Zend/zend_language_scanner.c" +#line 3399 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; @@ -3544,7 +3547,7 @@ int lex_scan(zval *zendlval) return T_START_HEREDOC; } -#line 3548 "Zend/zend_language_scanner.c" +#line 3551 "Zend/zend_language_scanner.c" yy229: YYDEBUG(229, *YYCURSOR); yych = *++YYCURSOR; @@ -3588,7 +3591,7 @@ int lex_scan(zval *zendlval) { return T_IS_NOT_IDENTICAL; } -#line 3592 "Zend/zend_language_scanner.c" +#line 3595 "Zend/zend_language_scanner.c" yy235: YYDEBUG(235, *YYCURSOR); ++YYCURSOR; @@ -3598,7 +3601,7 @@ int lex_scan(zval *zendlval) { return T_PLUS_EQUAL; } -#line 3602 "Zend/zend_language_scanner.c" +#line 3605 "Zend/zend_language_scanner.c" yy237: YYDEBUG(237, *YYCURSOR); ++YYCURSOR; @@ -3608,7 +3611,7 @@ int lex_scan(zval *zendlval) { return T_INC; } -#line 3612 "Zend/zend_language_scanner.c" +#line 3615 "Zend/zend_language_scanner.c" yy239: YYDEBUG(239, *YYCURSOR); yych = *++YYCURSOR; @@ -3631,7 +3634,7 @@ int lex_scan(zval *zendlval) { return T_LIST; } -#line 3635 "Zend/zend_language_scanner.c" +#line 3638 "Zend/zend_language_scanner.c" yy243: YYDEBUG(243, *YYCURSOR); ++YYCURSOR; @@ -3642,7 +3645,7 @@ int lex_scan(zval *zendlval) { return T_IS_EQUAL; } -#line 3646 "Zend/zend_language_scanner.c" +#line 3649 "Zend/zend_language_scanner.c" yy245: YYDEBUG(245, *YYCURSOR); ++YYCURSOR; @@ -3652,7 +3655,7 @@ int lex_scan(zval *zendlval) { return T_DOUBLE_ARROW; } -#line 3656 "Zend/zend_language_scanner.c" +#line 3659 "Zend/zend_language_scanner.c" yy247: YYDEBUG(247, *YYCURSOR); ++YYCURSOR; @@ -3662,7 +3665,7 @@ int lex_scan(zval *zendlval) { return T_IS_IDENTICAL; } -#line 3666 "Zend/zend_language_scanner.c" +#line 3669 "Zend/zend_language_scanner.c" yy249: YYDEBUG(249, *YYCURSOR); yych = *++YYCURSOR; @@ -3796,7 +3799,7 @@ int lex_scan(zval *zendlval) { return T_NS_C; } -#line 3800 "Zend/zend_language_scanner.c" +#line 3803 "Zend/zend_language_scanner.c" yy269: YYDEBUG(269, *YYCURSOR); yych = *++YYCURSOR; @@ -3820,7 +3823,7 @@ int lex_scan(zval *zendlval) { return T_DIR; } -#line 3824 "Zend/zend_language_scanner.c" +#line 3827 "Zend/zend_language_scanner.c" yy274: YYDEBUG(274, *YYCURSOR); yych = *++YYCURSOR; @@ -3849,7 +3852,7 @@ int lex_scan(zval *zendlval) { return T_LINE; } -#line 3853 "Zend/zend_language_scanner.c" +#line 3856 "Zend/zend_language_scanner.c" yy280: YYDEBUG(280, *YYCURSOR); yych = *++YYCURSOR; @@ -3888,7 +3891,7 @@ int lex_scan(zval *zendlval) { return T_METHOD_C; } -#line 3892 "Zend/zend_language_scanner.c" +#line 3895 "Zend/zend_language_scanner.c" yy288: YYDEBUG(288, *YYCURSOR); yych = *++YYCURSOR; @@ -3943,7 +3946,7 @@ int lex_scan(zval *zendlval) { return T_FUNC_C; } -#line 3947 "Zend/zend_language_scanner.c" +#line 3950 "Zend/zend_language_scanner.c" yy299: YYDEBUG(299, *YYCURSOR); yych = *++YYCURSOR; @@ -3967,7 +3970,7 @@ int lex_scan(zval *zendlval) { return T_FILE; } -#line 3971 "Zend/zend_language_scanner.c" +#line 3974 "Zend/zend_language_scanner.c" yy304: YYDEBUG(304, *YYCURSOR); yych = *++YYCURSOR; @@ -4001,7 +4004,7 @@ int lex_scan(zval *zendlval) { return T_TRAIT_C; } -#line 4005 "Zend/zend_language_scanner.c" +#line 4008 "Zend/zend_language_scanner.c" yy311: YYDEBUG(311, *YYCURSOR); yych = *++YYCURSOR; @@ -4035,7 +4038,7 @@ int lex_scan(zval *zendlval) { return T_CLASS_C; } -#line 4039 "Zend/zend_language_scanner.c" +#line 4042 "Zend/zend_language_scanner.c" yy318: YYDEBUG(318, *YYCURSOR); yych = *++YYCURSOR; @@ -4101,7 +4104,7 @@ int lex_scan(zval *zendlval) { return T_HALT_COMPILER; } -#line 4105 "Zend/zend_language_scanner.c" +#line 4108 "Zend/zend_language_scanner.c" yy331: YYDEBUG(331, *YYCURSOR); yych = *++YYCURSOR; @@ -4125,7 +4128,7 @@ int lex_scan(zval *zendlval) { return T_USE; } -#line 4129 "Zend/zend_language_scanner.c" +#line 4132 "Zend/zend_language_scanner.c" yy335: YYDEBUG(335, *YYCURSOR); yych = *++YYCURSOR; @@ -4148,7 +4151,7 @@ int lex_scan(zval *zendlval) { return T_UNSET; } -#line 4152 "Zend/zend_language_scanner.c" +#line 4155 "Zend/zend_language_scanner.c" yy339: YYDEBUG(339, *YYCURSOR); ++YYCURSOR; @@ -4324,7 +4327,7 @@ int lex_scan(zval *zendlval) { return T_INT_CAST; } -#line 4328 "Zend/zend_language_scanner.c" +#line 4331 "Zend/zend_language_scanner.c" yy357: YYDEBUG(357, *YYCURSOR); yych = *++YYCURSOR; @@ -4372,7 +4375,7 @@ int lex_scan(zval *zendlval) { return T_DOUBLE_CAST; } -#line 4376 "Zend/zend_language_scanner.c" +#line 4379 "Zend/zend_language_scanner.c" yy366: YYDEBUG(366, *YYCURSOR); yych = *++YYCURSOR; @@ -4446,7 +4449,7 @@ int lex_scan(zval *zendlval) { return T_STRING_CAST; } -#line 4450 "Zend/zend_language_scanner.c" +#line 4453 "Zend/zend_language_scanner.c" yy380: YYDEBUG(380, *YYCURSOR); yych = *++YYCURSOR; @@ -4483,7 +4486,7 @@ int lex_scan(zval *zendlval) { return T_ARRAY_CAST; } -#line 4487 "Zend/zend_language_scanner.c" +#line 4490 "Zend/zend_language_scanner.c" yy387: YYDEBUG(387, *YYCURSOR); yych = *++YYCURSOR; @@ -4525,7 +4528,7 @@ int lex_scan(zval *zendlval) { return T_OBJECT_CAST; } -#line 4529 "Zend/zend_language_scanner.c" +#line 4532 "Zend/zend_language_scanner.c" yy395: YYDEBUG(395, *YYCURSOR); yych = *++YYCURSOR; @@ -4570,7 +4573,7 @@ int lex_scan(zval *zendlval) { return T_BOOL_CAST; } -#line 4574 "Zend/zend_language_scanner.c" +#line 4577 "Zend/zend_language_scanner.c" yy403: YYDEBUG(403, *YYCURSOR); yych = *++YYCURSOR; @@ -4634,7 +4637,7 @@ int lex_scan(zval *zendlval) { return T_UNSET_CAST; } -#line 4638 "Zend/zend_language_scanner.c" +#line 4641 "Zend/zend_language_scanner.c" yy415: YYDEBUG(415, *YYCURSOR); yych = *++YYCURSOR; @@ -4652,7 +4655,7 @@ int lex_scan(zval *zendlval) { return T_VAR; } -#line 4656 "Zend/zend_language_scanner.c" +#line 4659 "Zend/zend_language_scanner.c" yy418: YYDEBUG(418, *YYCURSOR); yych = *++YYCURSOR; @@ -4676,7 +4679,7 @@ int lex_scan(zval *zendlval) { return T_NEW; } -#line 4680 "Zend/zend_language_scanner.c" +#line 4683 "Zend/zend_language_scanner.c" yy422: YYDEBUG(422, *YYCURSOR); yych = *++YYCURSOR; @@ -4719,7 +4722,7 @@ int lex_scan(zval *zendlval) { return T_NAMESPACE; } -#line 4723 "Zend/zend_language_scanner.c" +#line 4726 "Zend/zend_language_scanner.c" yy430: YYDEBUG(430, *YYCURSOR); ++YYCURSOR; @@ -4733,7 +4736,7 @@ int lex_scan(zval *zendlval) BEGIN(INITIAL); return T_CLOSE_TAG; /* implicit ';' at php-end tag */ } -#line 4737 "Zend/zend_language_scanner.c" +#line 4740 "Zend/zend_language_scanner.c" yy432: YYDEBUG(432, *YYCURSOR); ++YYCURSOR; @@ -4743,7 +4746,7 @@ int lex_scan(zval *zendlval) { return T_COALESCE; } -#line 4747 "Zend/zend_language_scanner.c" +#line 4750 "Zend/zend_language_scanner.c" yy434: YYDEBUG(434, *YYCURSOR); yych = *++YYCURSOR; @@ -4778,7 +4781,7 @@ int lex_scan(zval *zendlval) { return T_CONCAT_EQUAL; } -#line 4782 "Zend/zend_language_scanner.c" +#line 4785 "Zend/zend_language_scanner.c" yy440: YYDEBUG(440, *YYCURSOR); yych = *++YYCURSOR; @@ -4791,7 +4794,7 @@ int lex_scan(zval *zendlval) { return T_ELLIPSIS; } -#line 4795 "Zend/zend_language_scanner.c" +#line 4798 "Zend/zend_language_scanner.c" yy443: YYDEBUG(443, *YYCURSOR); ++YYCURSOR; @@ -4801,7 +4804,7 @@ int lex_scan(zval *zendlval) { return T_PAAMAYIM_NEKUDOTAYIM; } -#line 4805 "Zend/zend_language_scanner.c" +#line 4808 "Zend/zend_language_scanner.c" yy445: YYDEBUG(445, *YYCURSOR); ++YYCURSOR; @@ -4827,7 +4830,7 @@ int lex_scan(zval *zendlval) { return T_MINUS_EQUAL; } -#line 4831 "Zend/zend_language_scanner.c" +#line 4834 "Zend/zend_language_scanner.c" yy449: YYDEBUG(449, *YYCURSOR); ++YYCURSOR; @@ -4837,7 +4840,7 @@ int lex_scan(zval *zendlval) { return T_DEC; } -#line 4841 "Zend/zend_language_scanner.c" +#line 4844 "Zend/zend_language_scanner.c" yy451: YYDEBUG(451, *YYCURSOR); ++YYCURSOR; @@ -4848,7 +4851,7 @@ int lex_scan(zval *zendlval) yy_push_state(ST_LOOKING_FOR_PROPERTY); return T_OBJECT_OPERATOR; } -#line 4852 "Zend/zend_language_scanner.c" +#line 4855 "Zend/zend_language_scanner.c" yy453: YYDEBUG(453, *YYCURSOR); yych = *++YYCURSOR; @@ -4897,7 +4900,7 @@ int lex_scan(zval *zendlval) { return T_PUBLIC; } -#line 4901 "Zend/zend_language_scanner.c" +#line 4904 "Zend/zend_language_scanner.c" yy460: YYDEBUG(460, *YYCURSOR); yych = *++YYCURSOR; @@ -4956,7 +4959,7 @@ int lex_scan(zval *zendlval) { return T_PROTECTED; } -#line 4960 "Zend/zend_language_scanner.c" +#line 4963 "Zend/zend_language_scanner.c" yy469: YYDEBUG(469, *YYCURSOR); yych = *++YYCURSOR; @@ -4990,7 +4993,7 @@ int lex_scan(zval *zendlval) { return T_PRIVATE; } -#line 4994 "Zend/zend_language_scanner.c" +#line 4997 "Zend/zend_language_scanner.c" yy475: YYDEBUG(475, *YYCURSOR); ++YYCURSOR; @@ -5003,7 +5006,7 @@ int lex_scan(zval *zendlval) { return T_PRINT; } -#line 5007 "Zend/zend_language_scanner.c" +#line 5010 "Zend/zend_language_scanner.c" yy477: YYDEBUG(477, *YYCURSOR); yych = *++YYCURSOR; @@ -5032,7 +5035,7 @@ int lex_scan(zval *zendlval) { return T_GOTO; } -#line 5036 "Zend/zend_language_scanner.c" +#line 5039 "Zend/zend_language_scanner.c" yy482: YYDEBUG(482, *YYCURSOR); yych = *++YYCURSOR; @@ -5060,7 +5063,7 @@ int lex_scan(zval *zendlval) { return T_GLOBAL; } -#line 5064 "Zend/zend_language_scanner.c" +#line 5067 "Zend/zend_language_scanner.c" yy487: YYDEBUG(487, *YYCURSOR); yych = *++YYCURSOR; @@ -5101,7 +5104,7 @@ int lex_scan(zval *zendlval) { return T_BREAK; } -#line 5105 "Zend/zend_language_scanner.c" +#line 5108 "Zend/zend_language_scanner.c" yy495: YYDEBUG(495, *YYCURSOR); yych = *++YYCURSOR; @@ -5145,7 +5148,7 @@ int lex_scan(zval *zendlval) { return T_SWITCH; } -#line 5149 "Zend/zend_language_scanner.c" +#line 5152 "Zend/zend_language_scanner.c" yy503: YYDEBUG(503, *YYCURSOR); yych = *++YYCURSOR; @@ -5173,7 +5176,7 @@ int lex_scan(zval *zendlval) { return T_STATIC; } -#line 5177 "Zend/zend_language_scanner.c" +#line 5180 "Zend/zend_language_scanner.c" yy508: YYDEBUG(508, *YYCURSOR); yych = *++YYCURSOR; @@ -5204,7 +5207,7 @@ int lex_scan(zval *zendlval) { return T_AS; } -#line 5208 "Zend/zend_language_scanner.c" +#line 5211 "Zend/zend_language_scanner.c" yy513: YYDEBUG(513, *YYCURSOR); yych = *++YYCURSOR; @@ -5227,7 +5230,7 @@ int lex_scan(zval *zendlval) { return T_ARRAY; } -#line 5231 "Zend/zend_language_scanner.c" +#line 5234 "Zend/zend_language_scanner.c" yy517: YYDEBUG(517, *YYCURSOR); ++YYCURSOR; @@ -5240,7 +5243,7 @@ int lex_scan(zval *zendlval) { return T_LOGICAL_AND; } -#line 5244 "Zend/zend_language_scanner.c" +#line 5247 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); yych = *++YYCURSOR; @@ -5278,7 +5281,7 @@ int lex_scan(zval *zendlval) { return T_ABSTRACT; } -#line 5282 "Zend/zend_language_scanner.c" +#line 5285 "Zend/zend_language_scanner.c" yy526: YYDEBUG(526, *YYCURSOR); yych = *++YYCURSOR; @@ -5306,7 +5309,7 @@ int lex_scan(zval *zendlval) { return T_WHILE; } -#line 5310 "Zend/zend_language_scanner.c" +#line 5313 "Zend/zend_language_scanner.c" yy531: YYDEBUG(531, *YYCURSOR); ++YYCURSOR; @@ -5319,7 +5322,7 @@ int lex_scan(zval *zendlval) { return T_IF; } -#line 5323 "Zend/zend_language_scanner.c" +#line 5326 "Zend/zend_language_scanner.c" yy533: YYDEBUG(533, *YYCURSOR); yych = *++YYCURSOR; @@ -5375,7 +5378,7 @@ int lex_scan(zval *zendlval) { return T_ISSET; } -#line 5379 "Zend/zend_language_scanner.c" +#line 5382 "Zend/zend_language_scanner.c" yy540: YYDEBUG(540, *YYCURSOR); yych = *++YYCURSOR; @@ -5433,7 +5436,7 @@ int lex_scan(zval *zendlval) { return T_INCLUDE; } -#line 5437 "Zend/zend_language_scanner.c" +#line 5440 "Zend/zend_language_scanner.c" yy548: YYDEBUG(548, *YYCURSOR); yych = *++YYCURSOR; @@ -5466,7 +5469,7 @@ int lex_scan(zval *zendlval) { return T_INCLUDE_ONCE; } -#line 5470 "Zend/zend_language_scanner.c" +#line 5473 "Zend/zend_language_scanner.c" yy554: YYDEBUG(554, *YYCURSOR); yych = *++YYCURSOR; @@ -5504,7 +5507,7 @@ int lex_scan(zval *zendlval) { return T_INTERFACE; } -#line 5508 "Zend/zend_language_scanner.c" +#line 5511 "Zend/zend_language_scanner.c" yy561: YYDEBUG(561, *YYCURSOR); yych = *++YYCURSOR; @@ -5558,7 +5561,7 @@ int lex_scan(zval *zendlval) { return T_INSTEADOF; } -#line 5562 "Zend/zend_language_scanner.c" +#line 5565 "Zend/zend_language_scanner.c" yy569: YYDEBUG(569, *YYCURSOR); yych = *++YYCURSOR; @@ -5591,7 +5594,7 @@ int lex_scan(zval *zendlval) { return T_INSTANCEOF; } -#line 5595 "Zend/zend_language_scanner.c" +#line 5598 "Zend/zend_language_scanner.c" yy575: YYDEBUG(575, *YYCURSOR); yych = *++YYCURSOR; @@ -5639,7 +5642,7 @@ int lex_scan(zval *zendlval) { return T_IMPLEMENTS; } -#line 5643 "Zend/zend_language_scanner.c" +#line 5646 "Zend/zend_language_scanner.c" yy584: YYDEBUG(584, *YYCURSOR); yych = *++YYCURSOR; @@ -5671,7 +5674,7 @@ int lex_scan(zval *zendlval) { return T_TRY; } -#line 5675 "Zend/zend_language_scanner.c" +#line 5678 "Zend/zend_language_scanner.c" yy588: YYDEBUG(588, *YYCURSOR); yych = *++YYCURSOR; @@ -5694,7 +5697,7 @@ int lex_scan(zval *zendlval) { return T_TRAIT; } -#line 5698 "Zend/zend_language_scanner.c" +#line 5701 "Zend/zend_language_scanner.c" yy592: YYDEBUG(592, *YYCURSOR); yych = *++YYCURSOR; @@ -5717,7 +5720,7 @@ int lex_scan(zval *zendlval) { return T_THROW; } -#line 5721 "Zend/zend_language_scanner.c" +#line 5724 "Zend/zend_language_scanner.c" yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; @@ -5745,7 +5748,7 @@ int lex_scan(zval *zendlval) { return T_YIELD; } -#line 5749 "Zend/zend_language_scanner.c" +#line 5752 "Zend/zend_language_scanner.c" yy601: YYDEBUG(601, *YYCURSOR); yych = *++YYCURSOR; @@ -5810,7 +5813,7 @@ int lex_scan(zval *zendlval) { return T_REQUIRE; } -#line 5814 "Zend/zend_language_scanner.c" +#line 5817 "Zend/zend_language_scanner.c" yy609: YYDEBUG(609, *YYCURSOR); yych = *++YYCURSOR; @@ -5843,7 +5846,7 @@ int lex_scan(zval *zendlval) { return T_REQUIRE_ONCE; } -#line 5847 "Zend/zend_language_scanner.c" +#line 5850 "Zend/zend_language_scanner.c" yy615: YYDEBUG(615, *YYCURSOR); yych = *++YYCURSOR; @@ -5866,7 +5869,7 @@ int lex_scan(zval *zendlval) { return T_RETURN; } -#line 5870 "Zend/zend_language_scanner.c" +#line 5873 "Zend/zend_language_scanner.c" yy619: YYDEBUG(619, *YYCURSOR); yych = *++YYCURSOR; @@ -5960,7 +5963,7 @@ int lex_scan(zval *zendlval) { return T_CONTINUE; } -#line 5964 "Zend/zend_language_scanner.c" +#line 5967 "Zend/zend_language_scanner.c" yy630: YYDEBUG(630, *YYCURSOR); ++YYCURSOR; @@ -5973,7 +5976,7 @@ int lex_scan(zval *zendlval) { return T_CONST; } -#line 5977 "Zend/zend_language_scanner.c" +#line 5980 "Zend/zend_language_scanner.c" yy632: YYDEBUG(632, *YYCURSOR); yych = *++YYCURSOR; @@ -6002,7 +6005,7 @@ int lex_scan(zval *zendlval) { return T_CLONE; } -#line 6006 "Zend/zend_language_scanner.c" +#line 6009 "Zend/zend_language_scanner.c" yy637: YYDEBUG(637, *YYCURSOR); yych = *++YYCURSOR; @@ -6020,7 +6023,7 @@ int lex_scan(zval *zendlval) { return T_CLASS; } -#line 6024 "Zend/zend_language_scanner.c" +#line 6027 "Zend/zend_language_scanner.c" yy640: YYDEBUG(640, *YYCURSOR); yych = *++YYCURSOR; @@ -6070,7 +6073,7 @@ int lex_scan(zval *zendlval) { return T_CALLABLE; } -#line 6074 "Zend/zend_language_scanner.c" +#line 6077 "Zend/zend_language_scanner.c" yy649: YYDEBUG(649, *YYCURSOR); ++YYCURSOR; @@ -6083,7 +6086,7 @@ int lex_scan(zval *zendlval) { return T_CASE; } -#line 6087 "Zend/zend_language_scanner.c" +#line 6090 "Zend/zend_language_scanner.c" yy651: YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; @@ -6101,7 +6104,7 @@ int lex_scan(zval *zendlval) { return T_CATCH; } -#line 6105 "Zend/zend_language_scanner.c" +#line 6108 "Zend/zend_language_scanner.c" yy654: YYDEBUG(654, *YYCURSOR); yych = *++YYCURSOR; @@ -6156,7 +6159,7 @@ int lex_scan(zval *zendlval) { return T_FUNCTION; } -#line 6160 "Zend/zend_language_scanner.c" +#line 6163 "Zend/zend_language_scanner.c" yy664: YYDEBUG(664, *YYCURSOR); ++YYCURSOR; @@ -6184,7 +6187,7 @@ int lex_scan(zval *zendlval) { return T_FOR; } -#line 6188 "Zend/zend_language_scanner.c" +#line 6191 "Zend/zend_language_scanner.c" yy666: YYDEBUG(666, *YYCURSOR); yych = *++YYCURSOR; @@ -6212,7 +6215,7 @@ int lex_scan(zval *zendlval) { return T_FOREACH; } -#line 6216 "Zend/zend_language_scanner.c" +#line 6219 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); yych = *++YYCURSOR; @@ -6250,7 +6253,7 @@ int lex_scan(zval *zendlval) { return T_FINAL; } -#line 6254 "Zend/zend_language_scanner.c" +#line 6257 "Zend/zend_language_scanner.c" yy675: YYDEBUG(675, *YYCURSOR); yych = *++YYCURSOR; @@ -6268,7 +6271,7 @@ int lex_scan(zval *zendlval) { return T_FINALLY; } -#line 6272 "Zend/zend_language_scanner.c" +#line 6275 "Zend/zend_language_scanner.c" yy678: YYDEBUG(678, *YYCURSOR); yych = *++YYCURSOR; @@ -6303,7 +6306,7 @@ int lex_scan(zval *zendlval) { return T_DO; } -#line 6307 "Zend/zend_language_scanner.c" +#line 6310 "Zend/zend_language_scanner.c" yy682: YYDEBUG(682, *YYCURSOR); ++YYCURSOR; @@ -6316,7 +6319,7 @@ int lex_scan(zval *zendlval) { return T_EXIT; } -#line 6320 "Zend/zend_language_scanner.c" +#line 6323 "Zend/zend_language_scanner.c" yy684: YYDEBUG(684, *YYCURSOR); yych = *++YYCURSOR; @@ -6355,7 +6358,7 @@ int lex_scan(zval *zendlval) { return T_DEFAULT; } -#line 6359 "Zend/zend_language_scanner.c" +#line 6362 "Zend/zend_language_scanner.c" yy691: YYDEBUG(691, *YYCURSOR); yych = *++YYCURSOR; @@ -6383,7 +6386,7 @@ int lex_scan(zval *zendlval) { return T_DECLARE; } -#line 6387 "Zend/zend_language_scanner.c" +#line 6390 "Zend/zend_language_scanner.c" yy696: YYDEBUG(696, *YYCURSOR); yych = *++YYCURSOR; @@ -6467,7 +6470,7 @@ int lex_scan(zval *zendlval) { return T_EXTENDS; } -#line 6471 "Zend/zend_language_scanner.c" +#line 6474 "Zend/zend_language_scanner.c" yy709: YYDEBUG(709, *YYCURSOR); ++YYCURSOR; @@ -6480,7 +6483,7 @@ int lex_scan(zval *zendlval) { return T_EXIT; } -#line 6484 "Zend/zend_language_scanner.c" +#line 6487 "Zend/zend_language_scanner.c" yy711: YYDEBUG(711, *YYCURSOR); yych = *++YYCURSOR; @@ -6498,7 +6501,7 @@ int lex_scan(zval *zendlval) { return T_EVAL; } -#line 6502 "Zend/zend_language_scanner.c" +#line 6505 "Zend/zend_language_scanner.c" yy714: YYDEBUG(714, *YYCURSOR); yych = *++YYCURSOR; @@ -6572,7 +6575,7 @@ int lex_scan(zval *zendlval) { return T_ENDWHILE; } -#line 6576 "Zend/zend_language_scanner.c" +#line 6579 "Zend/zend_language_scanner.c" yy725: YYDEBUG(725, *YYCURSOR); yych = *++YYCURSOR; @@ -6605,7 +6608,7 @@ int lex_scan(zval *zendlval) { return T_ENDSWITCH; } -#line 6609 "Zend/zend_language_scanner.c" +#line 6612 "Zend/zend_language_scanner.c" yy731: YYDEBUG(731, *YYCURSOR); ++YYCURSOR; @@ -6618,7 +6621,7 @@ int lex_scan(zval *zendlval) { return T_ENDIF; } -#line 6622 "Zend/zend_language_scanner.c" +#line 6625 "Zend/zend_language_scanner.c" yy733: YYDEBUG(733, *YYCURSOR); yych = *++YYCURSOR; @@ -6651,7 +6654,7 @@ int lex_scan(zval *zendlval) { return T_ENDFOR; } -#line 6655 "Zend/zend_language_scanner.c" +#line 6658 "Zend/zend_language_scanner.c" yy736: YYDEBUG(736, *YYCURSOR); yych = *++YYCURSOR; @@ -6679,7 +6682,7 @@ int lex_scan(zval *zendlval) { return T_ENDFOREACH; } -#line 6683 "Zend/zend_language_scanner.c" +#line 6686 "Zend/zend_language_scanner.c" yy741: YYDEBUG(741, *YYCURSOR); yych = *++YYCURSOR; @@ -6717,7 +6720,7 @@ int lex_scan(zval *zendlval) { return T_ENDDECLARE; } -#line 6721 "Zend/zend_language_scanner.c" +#line 6724 "Zend/zend_language_scanner.c" yy748: YYDEBUG(748, *YYCURSOR); yych = *++YYCURSOR; @@ -6740,7 +6743,7 @@ int lex_scan(zval *zendlval) { return T_EMPTY; } -#line 6744 "Zend/zend_language_scanner.c" +#line 6747 "Zend/zend_language_scanner.c" yy752: YYDEBUG(752, *YYCURSOR); yych = *++YYCURSOR; @@ -6773,7 +6776,7 @@ int lex_scan(zval *zendlval) { return T_ELSE; } -#line 6777 "Zend/zend_language_scanner.c" +#line 6780 "Zend/zend_language_scanner.c" yy755: YYDEBUG(755, *YYCURSOR); yych = *++YYCURSOR; @@ -6791,7 +6794,7 @@ int lex_scan(zval *zendlval) { return T_ELSEIF; } -#line 6795 "Zend/zend_language_scanner.c" +#line 6798 "Zend/zend_language_scanner.c" yy758: YYDEBUG(758, *YYCURSOR); yych = *++YYCURSOR; @@ -6809,7 +6812,7 @@ int lex_scan(zval *zendlval) { return T_ECHO; } -#line 6813 "Zend/zend_language_scanner.c" +#line 6816 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -6887,7 +6890,7 @@ int lex_scan(zval *zendlval) HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 6891 "Zend/zend_language_scanner.c" +#line 6894 "Zend/zend_language_scanner.c" yy765: YYDEBUG(765, *YYCURSOR); ++YYCURSOR; @@ -6901,7 +6904,7 @@ int lex_scan(zval *zendlval) yy_pop_state(); goto restart; } -#line 6905 "Zend/zend_language_scanner.c" +#line 6908 "Zend/zend_language_scanner.c" yy767: YYDEBUG(767, *YYCURSOR); ++YYCURSOR; @@ -6916,7 +6919,7 @@ int lex_scan(zval *zendlval) zend_copy_value(zendlval, yytext, yyleng); return T_STRING; } -#line 6920 "Zend/zend_language_scanner.c" +#line 6923 "Zend/zend_language_scanner.c" yy769: YYDEBUG(769, *YYCURSOR); yych = *++YYCURSOR; @@ -6941,7 +6944,7 @@ int lex_scan(zval *zendlval) { return T_OBJECT_OPERATOR; } -#line 6945 "Zend/zend_language_scanner.c" +#line 6948 "Zend/zend_language_scanner.c" yy774: YYDEBUG(774, *YYCURSOR); ++YYCURSOR; @@ -7033,7 +7036,7 @@ int lex_scan(zval *zendlval) yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7037 "Zend/zend_language_scanner.c" +#line 7040 "Zend/zend_language_scanner.c" yy780: YYDEBUG(780, *YYCURSOR); yych = *++YYCURSOR; @@ -7048,8 +7051,10 @@ int lex_scan(zval *zendlval) if (yybm[0+yych] & 128) { goto yy781; } - if (yych == '[') goto yy784; + if (yych <= '@') goto yy783; + if (yych <= '[') goto yy784; if (yych == '}') goto yy784; +yy783: YYDEBUG(783, *YYCURSOR); YYCURSOR = YYMARKER; goto yy779; @@ -7066,7 +7071,7 @@ int lex_scan(zval *zendlval) yy_push_state(ST_IN_SCRIPTING); return T_STRING_VARNAME; } -#line 7070 "Zend/zend_language_scanner.c" +#line 7075 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: @@ -7133,7 +7138,7 @@ int lex_scan(zval *zendlval) HANDLE_NEWLINES(yytext, yyleng - newline); return T_ENCAPSED_AND_WHITESPACE; } -#line 7137 "Zend/zend_language_scanner.c" +#line 7142 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7249,7 +7254,7 @@ int lex_scan(zval *zendlval) } return T_NUM_STRING; } -#line 7253 "Zend/zend_language_scanner.c" +#line 7258 "Zend/zend_language_scanner.c" yy794: YYDEBUG(794, *YYCURSOR); yych = *++YYCURSOR; @@ -7274,7 +7279,7 @@ int lex_scan(zval *zendlval) /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */ return yytext[0]; } -#line 7278 "Zend/zend_language_scanner.c" +#line 7283 "Zend/zend_language_scanner.c" yy797: YYDEBUG(797, *YYCURSOR); ++YYCURSOR; @@ -7285,7 +7290,7 @@ int lex_scan(zval *zendlval) yy_pop_state(); return ']'; } -#line 7289 "Zend/zend_language_scanner.c" +#line 7294 "Zend/zend_language_scanner.c" yy799: YYDEBUG(799, *YYCURSOR); yych = *++YYCURSOR; @@ -7303,7 +7308,7 @@ int lex_scan(zval *zendlval) ZVAL_NULL(zendlval); return T_ENCAPSED_AND_WHITESPACE; } -#line 7307 "Zend/zend_language_scanner.c" +#line 7312 "Zend/zend_language_scanner.c" yy802: YYDEBUG(802, *YYCURSOR); ++YYCURSOR; @@ -7317,7 +7322,7 @@ int lex_scan(zval *zendlval) zend_copy_value(zendlval, yytext, yyleng); return T_STRING; } -#line 7321 "Zend/zend_language_scanner.c" +#line 7326 "Zend/zend_language_scanner.c" yy804: YYDEBUG(804, *YYCURSOR); ++YYCURSOR; @@ -7332,7 +7337,7 @@ int lex_scan(zval *zendlval) zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7336 "Zend/zend_language_scanner.c" +#line 7341 "Zend/zend_language_scanner.c" yy806: YYDEBUG(806, *YYCURSOR); ++YYCURSOR; @@ -7373,7 +7378,7 @@ int lex_scan(zval *zendlval) zend_copy_value(zendlval, (yytext+1), (yyleng-1)); return T_VARIABLE; } -#line 7377 "Zend/zend_language_scanner.c" +#line 7382 "Zend/zend_language_scanner.c" yy811: YYDEBUG(811, *YYCURSOR); ++YYCURSOR; @@ -7418,7 +7423,7 @@ int lex_scan(zval *zendlval) ZVAL_STRINGL(zendlval, yytext, yyleng); return T_NUM_STRING; } -#line 7422 "Zend/zend_language_scanner.c" +#line 7427 "Zend/zend_language_scanner.c" yy819: YYDEBUG(819, *YYCURSOR); ++YYCURSOR; diff --git a/Zend/zend_language_scanner_defs.h b/Zend/zend_language_scanner_defs.h index 1118239c8d276..baf859bcd461a 100644 --- a/Zend/zend_language_scanner_defs.h +++ b/Zend/zend_language_scanner_defs.h @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.6 */ +/* Generated by re2c 0.13.7.5 */ #line 3 "Zend/zend_language_scanner_defs.h" enum YYCONDTYPE { diff --git a/ext/standard/tests/array/krsort_object.phpt b/ext/standard/tests/array/krsort_object.phpt index 36d8589a82bd2..6236595796cb0 100644 --- a/ext/standard/tests/array/krsort_object.phpt +++ b/ext/standard/tests/array/krsort_object.phpt @@ -15,7 +15,7 @@ Test krsort() function : object functionality - sort objects echo "*** Testing krsort() : object functionality ***\n"; // class declaration for integer objects -class Integer +class IntegerObject { public $class_value; // initializing object member value @@ -25,7 +25,7 @@ class Integer } // class declaration for string objects -class String +class StringObject { public $class_value; // initializing object member value @@ -42,17 +42,17 @@ class String // array of integer objects with different key values $unsorted_int_obj = array ( - 10 => new Integer(11), 20 => new Integer(66), - 3 => new Integer(23), 4 => new Integer(-5), - 50 => new Integer(0.001), 6 => new Integer(0) + 10 => new IntegerObject(11), 20 => new IntegerObject(66), + 3 => new IntegerObject(23), 4 => new IntegerObject(-5), + 50 => new IntegerObject(0.001), 6 => new IntegerObject(0) ); // array of string objects with different key values $unsorted_str_obj = array ( - "axx" => new String("axx"), "t" => new String("t"), - "w" => new String("w"), "py" => new String("py"), - "apple" => new String("apple"), "Orange" => new String("Orange"), - "Lemon" => new String("Lemon"), "aPPle" => new String("aPPle") + "axx" => new StringObject("axx"), "t" => new StringObject("t"), + "w" => new StringObject("w"), "py" => new StringObject("py"), + "apple" => new StringObject("apple"), "Orange" => new StringObject("Orange"), + "Lemon" => new StringObject("Lemon"), "aPPle" => new StringObject("aPPle") ); @@ -88,32 +88,32 @@ echo "Done\n"; bool(true) array(6) { [50]=> - object(Integer)#%d (1) { + object(IntegerObject)#%d (1) { ["class_value"]=> float(0.001) } [20]=> - object(Integer)#%d (1) { + object(IntegerObject)#%d (1) { ["class_value"]=> int(66) } [10]=> - object(Integer)#%d (1) { + object(IntegerObject)#%d (1) { ["class_value"]=> int(11) } [6]=> - object(Integer)#%d (1) { + object(IntegerObject)#%d (1) { ["class_value"]=> int(0) } [4]=> - object(Integer)#%d (1) { + object(IntegerObject)#%d (1) { ["class_value"]=> int(-5) } [3]=> - object(Integer)#%d (1) { + object(IntegerObject)#%d (1) { ["class_value"]=> int(23) } @@ -121,42 +121,42 @@ array(6) { bool(true) array(8) { ["w"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(1) "w" } ["t"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(1) "t" } ["py"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(2) "py" } ["axx"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(3) "axx" } ["apple"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(5) "apple" } ["aPPle"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(5) "aPPle" } ["Orange"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(6) "Orange" } ["Lemon"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(5) "Lemon" } @@ -166,32 +166,32 @@ array(8) { bool(true) array(6) { [50]=> - object(Integer)#%d (1) { + object(IntegerObject)#%d (1) { ["class_value"]=> float(0.001) } [20]=> - object(Integer)#%d (1) { + object(IntegerObject)#%d (1) { ["class_value"]=> int(66) } [10]=> - object(Integer)#%d (1) { + object(IntegerObject)#%d (1) { ["class_value"]=> int(11) } [6]=> - object(Integer)#%d (1) { + object(IntegerObject)#%d (1) { ["class_value"]=> int(0) } [4]=> - object(Integer)#%d (1) { + object(IntegerObject)#%d (1) { ["class_value"]=> int(-5) } [3]=> - object(Integer)#%d (1) { + object(IntegerObject)#%d (1) { ["class_value"]=> int(23) } @@ -199,42 +199,42 @@ array(6) { bool(true) array(8) { ["w"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(1) "w" } ["t"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(1) "t" } ["py"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(2) "py" } ["axx"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(3) "axx" } ["apple"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(5) "apple" } ["aPPle"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(5) "aPPle" } ["Orange"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(6) "Orange" } ["Lemon"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(5) "Lemon" } diff --git a/ext/standard/tests/array/ksort_object.phpt b/ext/standard/tests/array/ksort_object.phpt index 20e8ba26eb3c9..2d76026aa49b6 100644 --- a/ext/standard/tests/array/ksort_object.phpt +++ b/ext/standard/tests/array/ksort_object.phpt @@ -15,7 +15,7 @@ Test ksort() function : object functionality - sort objects echo "*** Testing ksort() : object functionality ***\n"; // class declaration for integer objects -class Integer +class IntegerObject { public $class_value; // initializing object member value @@ -26,7 +26,7 @@ class Integer } // class declaration for string objects -class String +class StringObject { public $class_value; // initializing object member value @@ -43,17 +43,17 @@ class String // array of integer objects $unsorted_int_obj = array ( - 11 => new Integer(11), 66 => new Integer(66), - 23 => new Integer(23), -5 => new Integer(-5), - 1 => new Integer(0.001), 0 => new Integer(0) + 11 => new IntegerObject(11), 66 => new IntegerObject(66), + 23 => new IntegerObject(23), -5 => new IntegerObject(-5), + 1 => new IntegerObject(0.001), 0 => new IntegerObject(0) ); // array of string objects $unsorted_str_obj = array ( - "axx" => new String("axx"), "t" => new String("t"), - "w" => new String("w"), "py" => new String("py"), - "apple" => new String("apple"), "Orange" => new String("Orange"), - "Lemon" => new String("Lemon"), "aPPle" => new String("aPPle") + "axx" => new StringObject("axx"), "t" => new StringObject("t"), + "w" => new StringObject("w"), "py" => new StringObject("py"), + "apple" => new StringObject("apple"), "Orange" => new StringObject("Orange"), + "Lemon" => new StringObject("Lemon"), "aPPle" => new StringObject("aPPle") ); echo "\n-- Testing ksort() by supplying various object arrays, 'flag' value is defualt --\n"; @@ -87,32 +87,32 @@ echo "Done\n"; bool(true) array(6) { [-5]=> - object(Integer)#%d (1) { + object(IntegerObject)#%d (1) { ["class_value"]=> int(-5) } [0]=> - object(Integer)#%d (1) { + object(IntegerObject)#%d (1) { ["class_value"]=> int(0) } [1]=> - object(Integer)#%d (1) { + object(IntegerObject)#%d (1) { ["class_value"]=> float(0.001) } [11]=> - object(Integer)#%d (1) { + object(IntegerObject)#%d (1) { ["class_value"]=> int(11) } [23]=> - object(Integer)#%d (1) { + object(IntegerObject)#%d (1) { ["class_value"]=> int(23) } [66]=> - object(Integer)#%d (1) { + object(IntegerObject)#%d (1) { ["class_value"]=> int(66) } @@ -120,42 +120,42 @@ array(6) { bool(true) array(8) { ["Lemon"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(5) "Lemon" } ["Orange"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(6) "Orange" } ["aPPle"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(5) "aPPle" } ["apple"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(5) "apple" } ["axx"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(3) "axx" } ["py"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(2) "py" } ["t"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(1) "t" } ["w"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(1) "w" } @@ -165,32 +165,32 @@ array(8) { bool(true) array(6) { [-5]=> - object(Integer)#%d (1) { + object(IntegerObject)#%d (1) { ["class_value"]=> int(-5) } [0]=> - object(Integer)#%d (1) { + object(IntegerObject)#%d (1) { ["class_value"]=> int(0) } [1]=> - object(Integer)#%d (1) { + object(IntegerObject)#%d (1) { ["class_value"]=> float(0.001) } [11]=> - object(Integer)#%d (1) { + object(IntegerObject)#%d (1) { ["class_value"]=> int(11) } [23]=> - object(Integer)#%d (1) { + object(IntegerObject)#%d (1) { ["class_value"]=> int(23) } [66]=> - object(Integer)#%d (1) { + object(IntegerObject)#%d (1) { ["class_value"]=> int(66) } @@ -198,42 +198,42 @@ array(6) { bool(true) array(8) { ["Lemon"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(5) "Lemon" } ["Orange"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(6) "Orange" } ["aPPle"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(5) "aPPle" } ["apple"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(5) "apple" } ["axx"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(3) "axx" } ["py"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(2) "py" } ["t"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(1) "t" } ["w"]=> - object(String)#%d (1) { + object(StringObject)#%d (1) { ["class_value"]=> string(1) "w" } diff --git a/ext/standard/tests/strings/lcfirst.phpt b/ext/standard/tests/strings/lcfirst.phpt index e603f4bbf8d42..6cbd213fbeb6e 100644 Binary files a/ext/standard/tests/strings/lcfirst.phpt and b/ext/standard/tests/strings/lcfirst.phpt differ diff --git a/ext/standard/tests/strings/strlen.phpt b/ext/standard/tests/strings/strlen.phpt index df39f2469ce32..ab54445943632 100644 Binary files a/ext/standard/tests/strings/strlen.phpt and b/ext/standard/tests/strings/strlen.phpt differ diff --git a/ext/standard/tests/strings/strpos.phpt b/ext/standard/tests/strings/strpos.phpt index b2bfedeb871e4..36854d1b372d6 100644 Binary files a/ext/standard/tests/strings/strpos.phpt and b/ext/standard/tests/strings/strpos.phpt differ diff --git a/ext/standard/tests/strings/strstr.phpt b/ext/standard/tests/strings/strstr.phpt index bdedb7e9f6719..fd7f58ef1a51a 100644 Binary files a/ext/standard/tests/strings/strstr.phpt and b/ext/standard/tests/strings/strstr.phpt differ diff --git a/ext/standard/tests/strings/ucfirst.phpt b/ext/standard/tests/strings/ucfirst.phpt index 468f7f034e6d1..8fb1a156b46a7 100644 Binary files a/ext/standard/tests/strings/ucfirst.phpt and b/ext/standard/tests/strings/ucfirst.phpt differ