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/explicit_weak_include_strict.phpt b/Zend/tests/typehints/explicit_weak_include_strict.phpt new file mode 100644 index 0000000000000..b7bcc5d02d2d4 --- /dev/null +++ b/Zend/tests/typehints/explicit_weak_include_strict.phpt @@ -0,0 +1,14 @@ +--TEST-- +explicitly strict_types=0 code including strict_types=1 code +--FILE-- + +--EXPECTF-- +Catchable fatal error: Argument 1 passed to takes_int() must be of the type integer, float given, called in %sweak_include_strict_2.inc on line 9 and defined in %sweak_include_strict_2.inc on line 5 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-- + '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 ($i): int { return $i; }, + 'float' => function ($f): float { return $f; }, + 'string' => function ($s): string { return $s; }, + 'bool' => function ($b): bool { 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: Return value of {closure}() must be of the type integer, string returned on line %d +string(1) "a" +*** Trying string(0) "" +E_RECOVERABLE_ERROR: Return value of {closure}() must be of the type integer, string returned on line %d +string(0) "" +*** Trying int(%d) +int(%d) +*** Trying float(NAN) +E_RECOVERABLE_ERROR: Return value of {closure}() must be of the type integer, float returned on line %d +float(NAN) +*** Trying bool(true) +int(1) +*** Trying bool(false) +int(0) +*** Trying NULL +E_RECOVERABLE_ERROR: Return value of {closure}() must be of the type integer, null returned on line %d +NULL +*** Trying array(0) { +} +E_RECOVERABLE_ERROR: Return value of {closure}() must be of the type integer, array returned on line %d +array(0) { +} +*** Trying object(stdClass)#%s (0) { +} +E_RECOVERABLE_ERROR: Return value of {closure}() must be of the type integer, object returned on line %d +object(stdClass)#%s (0) { +} +*** Trying object(Stringable)#%s (0) { +} +E_RECOVERABLE_ERROR: Return value of {closure}() must be of the type integer, object returned on line %d +object(Stringable)#%s (0) { +} +*** Trying resource(%d) of type (stream) +E_RECOVERABLE_ERROR: Return value of {closure}() must be of the type integer, resource returned 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: Return value of {closure}() must be of the type float, string returned on line %d +string(1) "a" +*** Trying string(0) "" +E_RECOVERABLE_ERROR: Return value of {closure}() must be of the type float, string returned 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: Return value of {closure}() must be of the type float, null returned on line %d +NULL +*** Trying array(0) { +} +E_RECOVERABLE_ERROR: Return value of {closure}() must be of the type float, array returned on line %d +array(0) { +} +*** Trying object(stdClass)#%s (0) { +} +E_RECOVERABLE_ERROR: Return value of {closure}() must be of the type float, object returned on line %d +object(stdClass)#%s (0) { +} +*** Trying object(Stringable)#%s (0) { +} +E_RECOVERABLE_ERROR: Return value of {closure}() must be of the type float, object returned on line %d +object(Stringable)#%s (0) { +} +*** Trying resource(%d) of type (stream) +E_RECOVERABLE_ERROR: Return value of {closure}() must be of the type float, resource returned 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: Return value of {closure}() must be of the type string, null returned on line %d +NULL +*** Trying array(0) { +} +E_RECOVERABLE_ERROR: Return value of {closure}() must be of the type string, array returned on line %d +array(0) { +} +*** Trying object(stdClass)#%s (0) { +} +E_RECOVERABLE_ERROR: Return value of {closure}() must be of the type string, object returned on line %d +object(stdClass)#%s (0) { +} +*** Trying object(Stringable)#%s (0) { +} +string(6) "foobar" +*** Trying resource(%d) of type (stream) +E_RECOVERABLE_ERROR: Return value of {closure}() must be of the type string, resource returned 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: Return value of {closure}() must be of the type boolean, null returned on line %d +NULL +*** Trying array(0) { +} +E_RECOVERABLE_ERROR: Return value of {closure}() must be of the type boolean, array returned on line %d +array(0) { +} +*** Trying object(stdClass)#%s (0) { +} +E_RECOVERABLE_ERROR: Return value of {closure}() must be of the type boolean, object returned on line %d +object(stdClass)#%s (0) { +} +*** Trying object(Stringable)#%s (0) { +} +E_RECOVERABLE_ERROR: Return value of {closure}() must be of the type boolean, object returned on line %d +object(Stringable)#%s (0) { +} +*** Trying resource(%d) of type (stream) +E_RECOVERABLE_ERROR: Return value of {closure}() must be of the type boolean, resource returned on line %d +resource(%d) of type (stream) diff --git a/Zend/tests/typehints/scalar_strict_basic.phpt b/Zend/tests/typehints/scalar_strict_basic.phpt new file mode 100644 index 0000000000000..b52fa7015c432 --- /dev/null +++ b/Zend/tests/typehints/scalar_strict_basic.phpt @@ -0,0 +1,142 @@ +--TEST-- +Strict scalar type hint basics +--FILE-- + 'E_NOTICE', + E_WARNING => 'E_WARNING', + E_RECOVERABLE_ERROR => 'E_RECOVERABLE_ERROR' +]; +$errored = true; +set_error_handler(function (int $errno, string $errmsg, string $file, int $line) use ($errnames, &$errored) { + echo "$errnames[$errno]: $errmsg on line $line\n"; + $errored = true; + 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; } +]; + +$values = [ + 1, + 1.0, + "1", + TRUE, + FALSE, + NULL, + [], + new StdClass, + fopen("data:text/plain,foobar", "r") +]; + +function type($value) { + if (is_float($value)) { + return "float"; + } else if (is_bool($value)) { + return $value ? "true" : "false"; + } else if (is_null($value)) { + return "null"; + } else { + return gettype($value); + } +} + +foreach ($functions as $type => $function) { + echo PHP_EOL, "Testing '$type' typehint:", PHP_EOL; + foreach ($values as $value) { + $errored = false; + echo "*** Trying ", type($value), " value", PHP_EOL; + $result = $function($value); + if (!$errored) { + var_dump($result); + } + } +} +--EXPECTF-- + +Testing 'int' typehint: +*** Trying integer value +int(1) +*** Trying float value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type integer, float given, called in %s on line 53 and defined on line 18 +*** Trying string value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type integer, string given, called in %s on line 53 and defined on line 18 +*** Trying true value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type integer, boolean given, called in %s on line 53 and defined on line 18 +*** Trying false value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type integer, boolean given, called in %s on line 53 and defined on line 18 +*** Trying null value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type integer, null given, called in %s on line 53 and defined on line 18 +*** Trying array value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type integer, array given, called in %s on line 53 and defined on line 18 +*** Trying object value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type integer, object given, called in %s on line 53 and defined on line 18 +*** Trying resource value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type integer, resource given, called in %s on line 53 and defined on line 18 + +Testing 'float' typehint: +*** Trying integer value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type float, integer given, called in %s on line 53 and defined on line 19 +*** Trying float value +float(1) +*** Trying string value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type float, string given, called in %s on line 53 and defined on line 19 +*** Trying true value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type float, boolean given, called in %s on line 53 and defined on line 19 +*** Trying false value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type float, boolean given, called in %s on line 53 and defined on line 19 +*** Trying null value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type float, null given, called in %s on line 53 and defined on line 19 +*** Trying array value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type float, array given, called in %s on line 53 and defined on line 19 +*** Trying object value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type float, object given, called in %s on line 53 and defined on line 19 +*** Trying resource value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type float, resource given, called in %s on line 53 and defined on line 19 + +Testing 'string' typehint: +*** Trying integer value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type string, integer given, called in %s on line 53 and defined on line 20 +*** Trying float value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type string, float given, called in %s on line 53 and defined on line 20 +*** Trying string value +string(1) "1" +*** Trying true value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type string, boolean given, called in %s on line 53 and defined on line 20 +*** Trying false value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type string, boolean given, called in %s on line 53 and defined on line 20 +*** Trying null value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type string, null given, called in %s on line 53 and defined on line 20 +*** Trying array value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type string, array given, called in %s on line 53 and defined on line 20 +*** Trying object value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type string, object given, called in %s on line 53 and defined on line 20 +*** Trying resource value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type string, resource given, called in %s on line 53 and defined on line 20 + +Testing 'bool' typehint: +*** Trying integer value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type boolean, integer given, called in %s on line 53 and defined on line 21 +*** Trying float value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type boolean, float given, called in %s on line 53 and defined on line 21 +*** Trying string value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type boolean, string given, called in %s on line 53 and defined on line 21 +*** Trying true value +bool(true) +*** Trying false value +bool(false) +*** Trying null value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type boolean, null given, called in %s on line 53 and defined on line 21 +*** Trying array value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type boolean, array given, called in %s on line 53 and defined on line 21 +*** Trying object value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type boolean, object given, called in %s on line 53 and defined on line 21 +*** Trying resource value +E_RECOVERABLE_ERROR: Argument 1 passed to {closure}() must be of the type boolean, resource given, called in %s on line 53 and defined on line 21 diff --git a/Zend/tests/typehints/scalar_weak_reference.phpt b/Zend/tests/typehints/scalar_weak_reference.phpt new file mode 100644 index 0000000000000..f397ceaa8d97b --- /dev/null +++ b/Zend/tests/typehints/scalar_weak_reference.phpt @@ -0,0 +1,29 @@ +--TEST-- +Weak scalar type hints, with references +--FILE-- + +--EXPECT-- +float(1) +int(1) +float(1) +string(1) "1" +bool(true) diff --git a/Zend/tests/typehints/strict_call_weak.phpt b/Zend/tests/typehints/strict_call_weak.phpt new file mode 100644 index 0000000000000..45b87b042ab3a --- /dev/null +++ b/Zend/tests/typehints/strict_call_weak.phpt @@ -0,0 +1,17 @@ +--TEST-- +strict_types=1 code calling strict_types=0 code +--FILE-- + +--EXPECTF-- +Catchable fatal error: Argument 1 passed to function_declared_in_weak_mode() must be of the type integer, float given, called in %sstrict_call_weak.php on line 10 and defined in %sstrict_call_weak_2.inc on line 5 + diff --git a/Zend/tests/typehints/strict_call_weak_2.inc b/Zend/tests/typehints/strict_call_weak_2.inc new file mode 100644 index 0000000000000..cba5512897735 --- /dev/null +++ b/Zend/tests/typehints/strict_call_weak_2.inc @@ -0,0 +1,7 @@ + +--EXPECTF-- +Catchable fatal error: Argument 1 passed to function_declared_in_weak_mode() must be of the type integer, float given, called in %sstrict_call_weak_explicit.php on line 10 and defined in %sstrict_call_weak_explicit_2.inc on line 5 + diff --git a/Zend/tests/typehints/strict_call_weak_explicit_2.inc b/Zend/tests/typehints/strict_call_weak_explicit_2.inc new file mode 100644 index 0000000000000..d26c84761c06f --- /dev/null +++ b/Zend/tests/typehints/strict_call_weak_explicit_2.inc @@ -0,0 +1,7 @@ + +--EXPECTF-- +Success! diff --git a/Zend/tests/typehints/strict_include_explicit_weak_2.inc b/Zend/tests/typehints/strict_include_explicit_weak_2.inc new file mode 100644 index 0000000000000..3da32e1738209 --- /dev/null +++ b/Zend/tests/typehints/strict_include_explicit_weak_2.inc @@ -0,0 +1,9 @@ + +--EXPECTF-- +Success! diff --git a/Zend/tests/typehints/strict_include_weak_2.inc b/Zend/tests/typehints/strict_include_weak_2.inc new file mode 100644 index 0000000000000..d4ee8a836b241 --- /dev/null +++ b/Zend/tests/typehints/strict_include_weak_2.inc @@ -0,0 +1,9 @@ +call(); // should cause an error +(new WeakTakesIntCaller)->call(); // should succeed +(new ExplicitWeakTakesIntCaller)->call(); // should succeed + +declare(strict_types=0) { + strict_calls_takes_int(); // should cause an error: our call to func is weak, but it was declared in strict mode so calls it makes are strict + weak_calls_takes_int(); // should succeed + explicit_weak_calls_takes_int(); // should succeed + (new StrictTakesIntCaller)->call(); // should cause an error + (new WeakTakesIntCaller)->call(); // should succeed + (new ExplicitWeakTakesIntCaller)->call(); // should succeed +} + +declare(strict_types=1) { + strict_calls_takes_int(); // should cause an error + weak_calls_takes_int(); // should succeed: our call to func is strict, but it was declared in weak mode so calls it makes are weak + explicit_weak_calls_takes_int(); // should succeed + (new StrictTakesIntCaller)->call(); // should cause an error + (new WeakTakesIntCaller)->call(); // should succeed + (new ExplicitWeakTakesIntCaller)->call(); // should succeed +} + +?> +--EXPECTF-- +Catchable fatal error: Argument 1 passed to takes_int() must be of the type integer, float given, called in %sstrict_nested.php on line 26 and defined in %sstrict_nested.php on line 14 +Failure! +Success! +Success! +Catchable fatal error: Argument 1 passed to takes_int() must be of the type integer, float given, called in %sstrict_nested.php on line 31 and defined in %sstrict_nested.php on line 14 +Failure! +Success! +Success! +Catchable fatal error: Argument 1 passed to takes_int() must be of the type integer, float given, called in %sstrict_nested.php on line 26 and defined in %sstrict_nested.php on line 14 +Failure! +Success! +Success! +Catchable fatal error: Argument 1 passed to takes_int() must be of the type integer, float given, called in %sstrict_nested.php on line 31 and defined in %sstrict_nested.php on line 14 +Failure! +Success! +Success! +Catchable fatal error: Argument 1 passed to takes_int() must be of the type integer, float given, called in %sstrict_nested.php on line 26 and defined in %sstrict_nested.php on line 14 +Failure! +Success! +Success! +Catchable fatal error: Argument 1 passed to takes_int() must be of the type integer, float given, called in %sstrict_nested.php on line 31 and defined in %sstrict_nested.php on line 14 +Failure! +Success! +Success! diff --git a/Zend/tests/typehints/weak_call_strict.phpt b/Zend/tests/typehints/weak_call_strict.phpt new file mode 100644 index 0000000000000..b0ea78ce67c1e --- /dev/null +++ b/Zend/tests/typehints/weak_call_strict.phpt @@ -0,0 +1,16 @@ +--TEST-- +strict_types=0 code calling strict_types=1 code +--FILE-- + +--EXPECT-- +Success! diff --git a/Zend/tests/typehints/weak_call_strict_2.inc b/Zend/tests/typehints/weak_call_strict_2.inc new file mode 100644 index 0000000000000..fe2a17f682071 --- /dev/null +++ b/Zend/tests/typehints/weak_call_strict_2.inc @@ -0,0 +1,7 @@ + +--EXPECT-- +Success! diff --git a/Zend/tests/typehints/weak_include_strict.phpt b/Zend/tests/typehints/weak_include_strict.phpt new file mode 100644 index 0000000000000..371b26dd8bf79 --- /dev/null +++ b/Zend/tests/typehints/weak_include_strict.phpt @@ -0,0 +1,14 @@ +--TEST-- +strict_types=0 code including strict_types=1 code +--FILE-- + +--EXPECTF-- +Catchable fatal error: Argument 1 passed to takes_int() must be of the type integer, float given, called in %sweak_include_strict_2.inc on line 9 and defined in %sweak_include_strict_2.inc on line 5 diff --git a/Zend/tests/typehints/weak_include_strict_2.inc b/Zend/tests/typehints/weak_include_strict_2.inc new file mode 100644 index 0000000000000..8acfc039e8410 --- /dev/null +++ b/Zend/tests/typehints/weak_include_strict_2.inc @@ -0,0 +1,9 @@ +func; const char *class_name = active_function->common.scope ? active_function->common.scope->name->val : ""; - zend_error(E_WARNING, "%s%s%s() expects %s %d parameter%s, %d given", + zend_error(strict ? E_RECOVERABLE_ERROR : E_WARNING, "%s%s%s() expects %s %d parameter%s, %d given", class_name, \ class_name[0] ? "::" : "", \ active_function->common.function_name->val, @@ -249,7 +250,7 @@ ZEND_API void zend_wrong_paramers_count_error(int num_args, int min_num_args, in } /* }}} */ -ZEND_API void zend_wrong_paramer_type_error(int num, zend_expected_type expected_type, zval *arg) /* {{{ */ +ZEND_API void zend_wrong_paramer_type_error(int num, zend_expected_type expected_type, zval *arg, zend_bool strict) /* {{{ */ { const char *space; const char *class_name = get_active_class_name(&space); @@ -258,17 +259,17 @@ ZEND_API void zend_wrong_paramer_type_error(int num, zend_expected_type expected NULL }; - zend_error(E_WARNING, "%s%s%s() expects parameter %d to be %s, %s given", + zend_error(strict ? E_RECOVERABLE_ERROR : E_WARNING, "%s%s%s() expects parameter %d to be %s, %s given", class_name, space, get_active_function_name(), num, expected_error[expected_type], zend_zval_type_name(arg)); } /* }}} */ -ZEND_API void zend_wrong_paramer_class_error(int num, char *name, zval *arg) /* {{{ */ +ZEND_API void zend_wrong_paramer_class_error(int num, char *name, zval *arg, zend_bool strict) /* {{{ */ { const char *space; const char *class_name = get_active_class_name(&space); - zend_error(E_WARNING, "%s%s%s() expects parameter %d to be %s, %s given", + zend_error(strict ? E_RECOVERABLE_ERROR : E_WARNING, "%s%s%s() expects parameter %d to be %s, %s given", class_name, space, get_active_function_name(), num, name, zend_zval_type_name(arg)); } /* }}} */ @@ -284,7 +285,7 @@ ZEND_API void zend_wrong_callback_error(int severity, int num, char *error) /* { } /* }}} */ -ZEND_API int zend_parse_arg_class(zval *arg, zend_class_entry **pce, int num, int check_null) /* {{{ */ +ZEND_API int zend_parse_arg_class(zval *arg, zend_class_entry **pce, int num, int check_null, zend_bool strict) /* {{{ */ { zend_class_entry *ce_base = *pce; @@ -299,7 +300,7 @@ ZEND_API int zend_parse_arg_class(zval *arg, zend_class_entry **pce, int num, in const char *space; const char *class_name = get_active_class_name(&space); - zend_error(E_WARNING, "%s%s%s() expects parameter %d to be a class name derived from %s, '%s' given", + zend_error(strict ? E_RECOVERABLE_ERROR : E_WARNING, "%s%s%s() expects parameter %d to be a class name derived from %s, '%s' given", class_name, space, get_active_function_name(), num, ce_base->name->val, Z_STRVAL_P(arg)); *pce = NULL; @@ -310,7 +311,7 @@ ZEND_API int zend_parse_arg_class(zval *arg, zend_class_entry **pce, int num, in const char *space; const char *class_name = get_active_class_name(&space); - zend_error(E_WARNING, "%s%s%s() expects parameter %d to be a valid class name, '%s' given", + zend_error(strict ? E_RECOVERABLE_ERROR : E_WARNING, "%s%s%s() expects parameter %d to be a valid class name, '%s' given", class_name, space, get_active_function_name(), num, Z_STRVAL_P(arg)); return 0; @@ -320,7 +321,7 @@ ZEND_API int zend_parse_arg_class(zval *arg, zend_class_entry **pce, int num, in /* }}} */ #endif -static const char *zend_parse_arg_impl(int arg_num, zval *arg, va_list *va, const char **spec, char **error, int *severity) /* {{{ */ +static const char *zend_parse_arg_impl(int arg_num, zval *arg, va_list *va, const char **spec, char **error, int *severity, zend_bool strict) /* {{{ */ { const char *spec_walk = *spec; char c = *spec_walk++; @@ -352,7 +353,7 @@ static const char *zend_parse_arg_impl(int arg_num, zval *arg, va_list *va, cons is_null = va_arg(*va, zend_bool *); } - if (!zend_parse_arg_long(arg, p, is_null, check_null, c == 'L')) { + if (!zend_parse_arg_long(arg, p, is_null, check_null, c == 'L', strict)) { return "integer"; } } @@ -367,7 +368,7 @@ static const char *zend_parse_arg_impl(int arg_num, zval *arg, va_list *va, cons is_null = va_arg(*va, zend_bool *); } - if (!zend_parse_arg_double(arg, p, is_null, check_null)) { + if (!zend_parse_arg_double(arg, p, is_null, check_null, strict)) { return "float"; } } @@ -377,7 +378,7 @@ static const char *zend_parse_arg_impl(int arg_num, zval *arg, va_list *va, cons { char **p = va_arg(*va, char **); size_t *pl = va_arg(*va, size_t *); - if (!zend_parse_arg_string(arg, p, pl, check_null)) { + if (!zend_parse_arg_string(arg, p, pl, check_null, strict)) { return "string"; } } @@ -387,7 +388,7 @@ static const char *zend_parse_arg_impl(int arg_num, zval *arg, va_list *va, cons { char **p = va_arg(*va, char **); size_t *pl = va_arg(*va, size_t *); - if (!zend_parse_arg_path(arg, p, pl, check_null)) { + if (!zend_parse_arg_path(arg, p, pl, check_null, strict)) { return "a valid path"; } } @@ -396,7 +397,7 @@ static const char *zend_parse_arg_impl(int arg_num, zval *arg, va_list *va, cons case 'P': { zend_string **str = va_arg(*va, zend_string **); - if (!zend_parse_arg_path_str(arg, str, check_null)) { + if (!zend_parse_arg_path_str(arg, str, check_null, strict)) { return "a valid path"; } } @@ -405,7 +406,7 @@ static const char *zend_parse_arg_impl(int arg_num, zval *arg, va_list *va, cons case 'S': { zend_string **str = va_arg(*va, zend_string **); - if (!zend_parse_arg_str(arg, str, check_null)) { + if (!zend_parse_arg_str(arg, str, check_null, strict)) { return "string"; } } @@ -420,7 +421,7 @@ static const char *zend_parse_arg_impl(int arg_num, zval *arg, va_list *va, cons is_null = va_arg(*va, zend_bool *); } - if (!zend_parse_arg_bool(arg, p, is_null, check_null)) { + if (!zend_parse_arg_bool(arg, p, is_null, check_null, strict)) { return "boolean"; } } @@ -539,7 +540,7 @@ static const char *zend_parse_arg_impl(int arg_num, zval *arg, va_list *va, cons break; } else { if (is_callable_error) { - *severity = E_WARNING; + *severity = strict ? E_RECOVERABLE_ERROR : E_WARNING; zend_spprintf(error, 0, "to be a valid callback, %s", is_callable_error); efree(is_callable_error); return ""; @@ -570,13 +571,13 @@ static const char *zend_parse_arg_impl(int arg_num, zval *arg, va_list *va, cons } /* }}} */ -static int zend_parse_arg(int arg_num, zval *arg, va_list *va, const char **spec, int quiet) /* {{{ */ +static int zend_parse_arg(int arg_num, zval *arg, va_list *va, const char **spec, int quiet, zend_bool strict) /* {{{ */ { const char *expected_type = NULL; char *error = NULL; - int severity = E_WARNING; + int severity = strict ? E_RECOVERABLE_ERROR : E_WARNING; - expected_type = zend_parse_arg_impl(arg_num, arg, va, spec, &error, &severity); + expected_type = zend_parse_arg_impl(arg_num, arg, va, spec, &error, &severity, strict); if (expected_type) { if (!quiet && (*expected_type || error)) { const char *space; @@ -606,9 +607,10 @@ ZEND_API int zend_parse_parameter(int flags, int arg_num, zval *arg, const char va_list va; int ret; int quiet = flags & ZEND_PARSE_PARAMS_QUIET; + zend_bool strict = (flags & ZEND_PARSE_PARAMS_STRICT) ? 1 : 0; va_start(va, spec); - ret = zend_parse_arg(arg_num, arg, &va, &spec, quiet); + ret = zend_parse_arg(arg_num, arg, &va, &spec, quiet, strict); va_end(va); return ret; @@ -624,6 +626,7 @@ static int zend_parse_va_args(int num_args, const char *type_spec, va_list *va, zval *arg; int arg_count; int quiet = flags & ZEND_PARSE_PARAMS_QUIET; + zend_bool strict = (flags & ZEND_PARSE_PARAMS_STRICT) ? 1 : 0; zend_bool have_varargs = 0; zval **varargs = NULL; int *n_varargs = NULL; @@ -659,7 +662,7 @@ static int zend_parse_va_args(int num_args, const char *type_spec, va_list *va, if (!quiet) { zend_function *active_function = EG(current_execute_data)->func; const char *class_name = active_function->common.scope ? active_function->common.scope->name->val : ""; - zend_error(E_WARNING, "%s%s%s(): only one varargs specifier (* or +) is permitted", + zend_error(strict ? E_RECOVERABLE_ERROR : E_WARNING, "%s%s%s(): only one varargs specifier (* or +) is permitted", class_name, class_name[0] ? "::" : "", active_function->common.function_name->val); @@ -679,7 +682,7 @@ static int zend_parse_va_args(int num_args, const char *type_spec, va_list *va, if (!quiet) { zend_function *active_function = EG(current_execute_data)->func; const char *class_name = active_function->common.scope ? active_function->common.scope->name->val : ""; - zend_error(E_WARNING, "%s%s%s(): bad type specifier while parsing parameters", + zend_error(strict ? E_RECOVERABLE_ERROR : E_WARNING, "%s%s%s(): bad type specifier while parsing parameters", class_name, class_name[0] ? "::" : "", active_function->common.function_name->val); @@ -702,7 +705,7 @@ static int zend_parse_va_args(int num_args, const char *type_spec, va_list *va, if (!quiet) { zend_function *active_function = EG(current_execute_data)->func; const char *class_name = active_function->common.scope ? active_function->common.scope->name->val : ""; - zend_error(E_WARNING, "%s%s%s() expects %s %d parameter%s, %d given", + zend_error(strict ? E_RECOVERABLE_ERROR : E_WARNING, "%s%s%s() expects %s %d parameter%s, %d given", class_name, class_name[0] ? "::" : "", active_function->common.function_name->val, @@ -717,7 +720,7 @@ static int zend_parse_va_args(int num_args, const char *type_spec, va_list *va, arg_count = ZEND_CALL_NUM_ARGS(EG(current_execute_data)); if (num_args > arg_count) { - zend_error(E_WARNING, "%s(): could not obtain parameters for parsing", + zend_error(strict ? E_RECOVERABLE_ERROR : E_WARNING, "%s(): could not obtain parameters for parsing", get_active_function_name()); return FAILURE; } @@ -751,7 +754,7 @@ static int zend_parse_va_args(int num_args, const char *type_spec, va_list *va, arg = ZEND_CALL_ARG(EG(current_execute_data), i + 1); - if (zend_parse_arg(i+1, arg, va, &type_spec, quiet) == FAILURE) { + if (zend_parse_arg(i+1, arg, va, &type_spec, quiet, strict) == FAILURE) { /* clean up varargs array if it was used */ if (varargs && *varargs) { *varargs = NULL; @@ -765,13 +768,13 @@ static int zend_parse_va_args(int num_args, const char *type_spec, va_list *va, } /* }}} */ -#define RETURN_IF_ZERO_ARGS(num_args, type_spec, quiet) { \ +#define RETURN_IF_ZERO_ARGS(num_args, type_spec, flags) { \ int __num_args = (num_args); \ \ - if (0 == (type_spec)[0] && 0 != __num_args && !(quiet)) { \ + if (0 == (type_spec)[0] && 0 != __num_args && !(flags & ZEND_PARSE_PARAMS_QUIET)) { \ const char *__space; \ const char * __class_name = get_active_class_name(&__space); \ - zend_error(E_WARNING, "%s%s%s() expects exactly 0 parameters, %d given", \ + zend_error((flags & ZEND_PARSE_PARAMS_STRICT) ? E_RECOVERABLE_ERROR : E_WARNING, "%s%s%s() expects exactly 0 parameters, %d given", \ __class_name, __space, \ get_active_function_name(), __num_args); \ return FAILURE; \ @@ -783,7 +786,11 @@ ZEND_API int zend_parse_parameters_ex(int flags, int num_args, const char *type_ va_list va; int retval; - RETURN_IF_ZERO_ARGS(num_args, type_spec, flags & ZEND_PARSE_PARAMS_QUIET); + if (ZEND_CALL_INFO(EG(current_execute_data)) & ZEND_CALL_STRICT_TYPEHINTS) { + flags |= ZEND_PARSE_PARAMS_STRICT; + } + + RETURN_IF_ZERO_ARGS(num_args, type_spec, flags); va_start(va, type_spec); retval = zend_parse_va_args(num_args, type_spec, &va, flags); @@ -797,11 +804,16 @@ ZEND_API int zend_parse_parameters(int num_args, const char *type_spec, ...) /* { va_list va; int retval; + int flags = 0; + + if (ZEND_CALL_INFO(EG(current_execute_data)) & ZEND_CALL_STRICT_TYPEHINTS) { + flags |= ZEND_PARSE_PARAMS_STRICT; + } - RETURN_IF_ZERO_ARGS(num_args, type_spec, 0); + RETURN_IF_ZERO_ARGS(num_args, type_spec, flags); va_start(va, type_spec); - retval = zend_parse_va_args(num_args, type_spec, &va, 0); + retval = zend_parse_va_args(num_args, type_spec, &va, flags); va_end(va); return retval; @@ -812,24 +824,29 @@ ZEND_API int zend_parse_method_parameters(int num_args, zval *this_ptr, const ch { va_list va; int retval; + int flags = 0; const char *p = type_spec; zval **object; zend_class_entry *ce; + if (ZEND_CALL_INFO(EG(current_execute_data)) & ZEND_CALL_STRICT_TYPEHINTS) { + flags |= ZEND_PARSE_PARAMS_STRICT; + } + /* Just checking this_ptr is not enough, because fcall_common_helper does not set * Z_OBJ(EG(This)) to NULL when calling an internal function with common.scope == NULL. * In that case EG(This) would still be the $this from the calling code and we'd take the * wrong branch here. */ zend_bool is_method = EG(current_execute_data)->func->common.scope != NULL; if (!is_method || !this_ptr || Z_TYPE_P(this_ptr) != IS_OBJECT) { - RETURN_IF_ZERO_ARGS(num_args, p, 0); + RETURN_IF_ZERO_ARGS(num_args, p, flags); va_start(va, type_spec); - retval = zend_parse_va_args(num_args, type_spec, &va, 0); + retval = zend_parse_va_args(num_args, type_spec, &va, flags); va_end(va); } else { p++; - RETURN_IF_ZERO_ARGS(num_args, p, 0); + RETURN_IF_ZERO_ARGS(num_args, p, flags); va_start(va, type_spec); @@ -842,7 +859,7 @@ ZEND_API int zend_parse_method_parameters(int num_args, zval *this_ptr, const ch Z_OBJCE_P(this_ptr)->name->val, get_active_function_name(), ce->name->val, get_active_function_name()); } - retval = zend_parse_va_args(num_args, p, &va, 0); + retval = zend_parse_va_args(num_args, p, &va, flags); va_end(va); } return retval; @@ -856,17 +873,20 @@ ZEND_API int zend_parse_method_parameters_ex(int flags, int num_args, zval *this const char *p = type_spec; zval **object; zend_class_entry *ce; - int quiet = flags & ZEND_PARSE_PARAMS_QUIET; + + if (ZEND_CALL_INFO(EG(current_execute_data)) & ZEND_CALL_STRICT_TYPEHINTS) { + flags |= ZEND_PARSE_PARAMS_STRICT; + } if (!this_ptr) { - RETURN_IF_ZERO_ARGS(num_args, p, quiet); + RETURN_IF_ZERO_ARGS(num_args, p, flags); va_start(va, type_spec); retval = zend_parse_va_args(num_args, type_spec, &va, flags); va_end(va); } else { p++; - RETURN_IF_ZERO_ARGS(num_args, p, quiet); + RETURN_IF_ZERO_ARGS(num_args, p, flags); va_start(va, type_spec); @@ -875,7 +895,7 @@ ZEND_API int zend_parse_method_parameters_ex(int flags, int num_args, zval *this *object = this_ptr; if (ce && !instanceof_function(Z_OBJCE_P(this_ptr), ce)) { - if (!quiet) { + if (!(flags & ZEND_PARSE_PARAMS_QUIET)) { zend_error(E_CORE_ERROR, "%s::%s() must be derived from %s::%s", ce->name->val, get_active_function_name(), Z_OBJCE_P(this_ptr)->name->val, get_active_function_name()); } @@ -2532,6 +2552,9 @@ ZEND_API int zend_register_class_alias_ex(const char *name, size_t name_len, zen lcname = zend_string_alloc(name_len, 1); zend_str_tolower_copy(lcname->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_API.h b/Zend/zend_API.h index d84fbcb2bfef5..4f12834bcfaa9 100644 --- a/Zend/zend_API.h +++ b/Zend/zend_API.h @@ -255,7 +255,9 @@ ZEND_API int zend_copy_parameters_array(int param_count, zval *argument_array); /* Parameter parsing API -- andrei */ -#define ZEND_PARSE_PARAMS_QUIET (1<<1) +#define ZEND_PARSE_PARAMS_QUIET (1<<1) +#define ZEND_PARSE_PARAMS_STRICT (1<<2) + ZEND_API int zend_parse_parameters(int num_args, const char *type_spec, ...); ZEND_API int zend_parse_parameters_ex(int flags, int num_args, const char *type_spec, ...); ZEND_API char *zend_zval_type_name(const zval *arg); @@ -293,7 +295,7 @@ ZEND_API int zend_register_class_alias_ex(const char *name, size_t name_len, zen ZEND_API int zend_disable_function(char *function_name, size_t function_name_length); ZEND_API int zend_disable_class(char *class_name, size_t class_name_length); -ZEND_API void zend_wrong_param_count(void); +ZEND_API void _zend_wrong_param_count(zend_bool strict); #define IS_CALLABLE_CHECK_SYNTAX_ONLY (1<<0) #define IS_CALLABLE_CHECK_NO_ACCESS (1<<1) @@ -351,12 +353,15 @@ ZEND_API char *zend_get_type_by_const(int type); #define getThis() (Z_OBJ(EX(This)) ? &EX(This) : NULL) #define ZEND_IS_METHOD_CALL() (EX(func)->common.scope != NULL) -#define WRONG_PARAM_COUNT ZEND_WRONG_PARAM_COUNT() -#define WRONG_PARAM_COUNT_WITH_RETVAL(ret) ZEND_WRONG_PARAM_COUNT_WITH_RETVAL(ret) +#define WRONG_PARAM_COUNT _ZEND_WRONG_PARAM_COUNT((ZEND_CALL_INFO(EG(current_execute_data)) & ZEND_CALL_STRICT_TYPEHINTS) ? 1 : 0) +#define WRONG_PARAM_COUNT_WITH_RETVAL(ret) _ZEND_WRONG_PARAM_COUNT_WITH_RETVAL((ZEND_CALL_INFO(EG(current_execute_data)) & ZEND_CALL_STRICT_TYPEHINTS) ? 1 : 0, ret) #define ARG_COUNT(dummy) EX_NUM_ARGS() #define ZEND_NUM_ARGS() EX_NUM_ARGS() -#define ZEND_WRONG_PARAM_COUNT() { zend_wrong_param_count(); return; } -#define ZEND_WRONG_PARAM_COUNT_WITH_RETVAL(ret) { zend_wrong_param_count(); return ret; } +/* These are prefixed with underscores for a reason: don't use them directly + * Use WRONG_PARAM_COUNT; + */ +#define _ZEND_WRONG_PARAM_COUNT(strict) { _zend_wrong_param_count(strict); return; } +#define _ZEND_WRONG_PARAM_COUNT_WITH_RETVAL(strict, ret) { _zend_wrong_param_count(strict); return ret; } #ifndef ZEND_WIN32 #define DLEXPORT @@ -701,9 +706,9 @@ typedef enum _zend_expected_type { Z_EXPECTED_LAST } zend_expected_type; -ZEND_API void zend_wrong_paramers_count_error(int num_args, int min_num_args, int max_num_args); -ZEND_API void zend_wrong_paramer_type_error(int num, zend_expected_type expected_type, zval *arg); -ZEND_API void zend_wrong_paramer_class_error(int num, char *name, zval *arg); +ZEND_API void zend_wrong_paramers_count_error(int num_args, int min_num_args, int max_num_args, zend_bool strict); +ZEND_API void zend_wrong_paramer_type_error(int num, zend_expected_type expected_type, zval *arg, zend_bool strict); +ZEND_API void zend_wrong_paramer_class_error(int num, char *name, zval *arg, zend_bool strict); ZEND_API void zend_wrong_callback_error(int severity, int num, char *error); #define ZPP_ERROR_OK 0 @@ -714,7 +719,8 @@ ZEND_API void zend_wrong_callback_error(int severity, int num, char *error); #define ZPP_ERROR_WRONG_COUNT 5 #define ZEND_PARSE_PARAMETERS_START_EX(flags, min_num_args, max_num_args) do { \ - const int _flags = (flags); \ + zend_bool _strict = (EX_CALL_INFO() & ZEND_CALL_STRICT_TYPEHINTS) ? 1 : 0; \ + const int _flags = (flags) | (_strict ? ZEND_PARSE_PARAMS_STRICT : 0); \ int _min_num_args = (min_num_args); \ int _max_num_args = (max_num_args); \ int _num_args = EX_NUM_ARGS(); \ @@ -738,7 +744,7 @@ ZEND_API void zend_wrong_callback_error(int severity, int num, char *error); (UNEXPECTED(_num_args > _max_num_args) && \ EXPECTED(_max_num_args >= 0))) { \ if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \ - zend_wrong_paramers_count_error(_num_args, _min_num_args, _max_num_args); \ + zend_wrong_paramers_count_error(_num_args, _min_num_args, _max_num_args, _strict); \ } \ error_code = ZPP_ERROR_FAILURE; \ break; \ @@ -754,11 +760,11 @@ ZEND_API void zend_wrong_callback_error(int severity, int num, char *error); if (UNEXPECTED(error_code != ZPP_ERROR_OK)) { \ if (!(_flags & ZEND_PARSE_PARAMS_QUIET)) { \ if (error_code == ZPP_ERROR_WRONG_CALLBACK) { \ - zend_wrong_callback_error(E_WARNING, _i, _error); \ + zend_wrong_callback_error(_strict ? E_RECOVERABLE_ERROR : E_WARNING, _i, _error); \ } else if (error_code == ZPP_ERROR_WRONG_CLASS) { \ - zend_wrong_paramer_class_error(_i, _error, _arg); \ + zend_wrong_paramer_class_error(_i, _error, _arg, _strict); \ } else if (error_code == ZPP_ERROR_WRONG_ARG) { \ - zend_wrong_paramer_type_error(_i, _expected_type, _arg); \ + zend_wrong_paramer_type_error(_i, _expected_type, _arg, _strict); \ } \ } \ failure; \ @@ -811,7 +817,7 @@ ZEND_API void zend_wrong_callback_error(int severity, int num, char *error); /* old "b" */ #define Z_PARAM_BOOL_EX(dest, is_null, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (UNEXPECTED(!zend_parse_arg_bool(_arg, &dest, &is_null, check_null))) { \ + if (UNEXPECTED(!zend_parse_arg_bool(_arg, &dest, &is_null, check_null, _strict))) { \ _expected_type = Z_EXPECTED_BOOL; \ error_code = ZPP_ERROR_WRONG_ARG; \ break; \ @@ -823,7 +829,7 @@ ZEND_API void zend_wrong_callback_error(int severity, int num, char *error); /* old "C" */ #define Z_PARAM_CLASS_EX(dest, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (UNEXPECTED(!zend_parse_arg_class(_arg, &dest, _i, check_null))) { \ + if (UNEXPECTED(!zend_parse_arg_class(_arg, &dest, _i, check_null, _strict))) { \ error_code = ZPP_ERROR_FAILURE; \ break; \ } @@ -834,7 +840,7 @@ ZEND_API void zend_wrong_callback_error(int severity, int num, char *error); /* old "d" */ #define Z_PARAM_DOUBLE_EX(dest, is_null, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (UNEXPECTED(!zend_parse_arg_double(_arg, &dest, &is_null, check_null))) { \ + if (UNEXPECTED(!zend_parse_arg_double(_arg, &dest, &is_null, check_null, _strict))) { \ _expected_type = Z_EXPECTED_DOUBLE; \ error_code = ZPP_ERROR_WRONG_ARG; \ break; \ @@ -889,7 +895,7 @@ ZEND_API void zend_wrong_callback_error(int severity, int num, char *error); /* old "l" */ #define Z_PARAM_LONG_EX(dest, is_null, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, 0))) { \ + if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, 0, _strict))) { \ _expected_type = Z_EXPECTED_LONG; \ error_code = ZPP_ERROR_WRONG_ARG; \ break; \ @@ -901,7 +907,7 @@ ZEND_API void zend_wrong_callback_error(int severity, int num, char *error); /* old "L" */ #define Z_PARAM_STRICT_LONG_EX(dest, is_null, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, 1))) { \ + if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, 1, _strict))) { \ _expected_type = Z_EXPECTED_LONG; \ error_code = ZPP_ERROR_WRONG_ARG; \ break; \ @@ -943,7 +949,7 @@ ZEND_API void zend_wrong_callback_error(int severity, int num, char *error); /* old "p" */ #define Z_PARAM_PATH_EX(dest, dest_len, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (UNEXPECTED(!zend_parse_arg_path(_arg, &dest, &dest_len, check_null))) { \ + if (UNEXPECTED(!zend_parse_arg_path(_arg, &dest, &dest_len, check_null, _strict))) { \ _expected_type = Z_EXPECTED_PATH; \ error_code = ZPP_ERROR_WRONG_ARG; \ break; \ @@ -955,7 +961,7 @@ ZEND_API void zend_wrong_callback_error(int severity, int num, char *error); /* old "P" */ #define Z_PARAM_PATH_STR_EX(dest, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (UNEXPECTED(!zend_parse_arg_path_str(_arg, &dest, check_null))) { \ + if (UNEXPECTED(!zend_parse_arg_path_str(_arg, &dest, check_null, _strict))) { \ _expected_type = Z_EXPECTED_PATH; \ error_code = ZPP_ERROR_WRONG_ARG; \ break; \ @@ -979,7 +985,7 @@ ZEND_API void zend_wrong_callback_error(int severity, int num, char *error); /* old "s" */ #define Z_PARAM_STRING_EX(dest, dest_len, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (UNEXPECTED(!zend_parse_arg_string(_arg, &dest, &dest_len, check_null))) { \ + if (UNEXPECTED(!zend_parse_arg_string(_arg, &dest, &dest_len, check_null, _strict))) { \ _expected_type = Z_EXPECTED_STRING; \ error_code = ZPP_ERROR_WRONG_ARG; \ break; \ @@ -991,7 +997,7 @@ ZEND_API void zend_wrong_callback_error(int severity, int num, char *error); /* old "S" */ #define Z_PARAM_STR_EX(dest, check_null, separate) \ Z_PARAM_PROLOGUE(separate); \ - if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null))) { \ + if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _strict))) { \ _expected_type = Z_EXPECTED_STRING; \ error_code = ZPP_ERROR_WRONG_ARG; \ break; \ @@ -1046,13 +1052,18 @@ ZEND_API void zend_wrong_callback_error(int severity, int num, char *error); /* Inlined implementations shared by new and old parameter parsing APIs */ ZEND_API int parse_arg_object_to_str(zval *arg, zend_string **str, int type); -ZEND_API int zend_parse_arg_class(zval *arg, zend_class_entry **pce, int num, int check_null); +ZEND_API int zend_parse_arg_class(zval *arg, zend_class_entry **pce, int num, int check_null, zend_bool strict); -static zend_always_inline int zend_parse_arg_bool(zval *arg, zend_bool *dest, zend_bool *is_null, int check_null) +static zend_always_inline int zend_parse_arg_bool(zval *arg, zend_bool *dest, zend_bool *is_null, int check_null, zend_bool strict) { if (check_null) { *is_null = 0; } + + if (UNEXPECTED(strict && Z_TYPE_P(arg) != IS_TRUE && Z_TYPE_P(arg) != IS_FALSE && !(check_null && Z_TYPE_P(arg) == IS_NULL))) { + return 0; + } + if (EXPECTED(Z_TYPE_P(arg) == IS_TRUE)) { *dest = 1; } else if (EXPECTED(Z_TYPE_P(arg) < IS_TRUE)) { @@ -1068,11 +1079,16 @@ static zend_always_inline int zend_parse_arg_bool(zval *arg, zend_bool *dest, ze return 1; } -static zend_always_inline int zend_parse_arg_long(zval *arg, zend_long *dest, zend_bool *is_null, int check_null, int strict) +static zend_always_inline int zend_parse_arg_long(zval *arg, zend_long *dest, zend_bool *is_null, int check_null, int cap, zend_bool strict) { if (check_null) { *is_null = 0; } + + if (UNEXPECTED(strict && Z_TYPE_P(arg) != IS_LONG && !(check_null && Z_TYPE_P(arg) == IS_NULL))) { + return 0; + } + if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) { *dest = Z_LVAL_P(arg); } else if (EXPECTED(Z_TYPE_P(arg) == IS_DOUBLE)) { @@ -1080,8 +1096,7 @@ static zend_always_inline int zend_parse_arg_long(zval *arg, zend_long *dest, ze return 0; } if (UNEXPECTED(!ZEND_DOUBLE_FITS_LONG(Z_DVAL_P(arg)))) { - /* Ironically, the strict parameter makes zpp *non*-strict here */ - if (strict) { + if (cap) { *dest = (Z_DVAL_P(arg) > 0) ? ZEND_LONG_MAX : ZEND_LONG_MIN; } else { return 0; @@ -1099,7 +1114,7 @@ static zend_always_inline int zend_parse_arg_long(zval *arg, zend_long *dest, ze return 0; } if (UNEXPECTED(!ZEND_DOUBLE_FITS_LONG(d))) { - if (strict) { + if (cap) { *dest = (d > 0) ? ZEND_LONG_MAX : ZEND_LONG_MIN; } else { return 0; @@ -1124,11 +1139,16 @@ static zend_always_inline int zend_parse_arg_long(zval *arg, zend_long *dest, ze return 1; } -static zend_always_inline int zend_parse_arg_double(zval *arg, double *dest, zend_bool *is_null, int check_null) +static zend_always_inline int zend_parse_arg_double(zval *arg, double *dest, zend_bool *is_null, int check_null, zend_bool strict) { if (check_null) { *is_null = 0; } + + if (UNEXPECTED(strict && Z_TYPE_P(arg) != IS_DOUBLE && !(check_null && Z_TYPE_P(arg) == IS_NULL))) { + return 0; + } + if (EXPECTED(Z_TYPE_P(arg) == IS_DOUBLE)) { *dest = Z_DVAL_P(arg); } else if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) { @@ -1157,8 +1177,12 @@ static zend_always_inline int zend_parse_arg_double(zval *arg, double *dest, zen return 1; } -static zend_always_inline int zend_parse_arg_str(zval *arg, zend_string **dest, int check_null) +static zend_always_inline int zend_parse_arg_str(zval *arg, zend_string **dest, int check_null, zend_bool strict) { + if (UNEXPECTED(strict && Z_TYPE_P(arg) != IS_STRING && !(check_null && Z_TYPE_P(arg) == IS_NULL))) { + return 0; + } + if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) { *dest = Z_STR_P(arg); } else if (EXPECTED(Z_TYPE_P(arg) < IS_STRING)) { @@ -1179,11 +1203,11 @@ static zend_always_inline int zend_parse_arg_str(zval *arg, zend_string **dest, return 1; } -static zend_always_inline int zend_parse_arg_string(zval *arg, char **dest, size_t *dest_len, int check_null) +static zend_always_inline int zend_parse_arg_string(zval *arg, char **dest, size_t *dest_len, int check_null, zend_bool strict) { zend_string *str; - if (!zend_parse_arg_str(arg, &str, check_null)) { + if (!zend_parse_arg_str(arg, &str, check_null, strict)) { return 0; } if (check_null && UNEXPECTED(!str)) { @@ -1196,20 +1220,20 @@ static zend_always_inline int zend_parse_arg_string(zval *arg, char **dest, size return 1; } -static zend_always_inline int zend_parse_arg_path_str(zval *arg, zend_string **dest, int check_null) +static zend_always_inline int zend_parse_arg_path_str(zval *arg, zend_string **dest, int check_null, zend_bool strict) { - if (!zend_parse_arg_str(arg, dest, check_null) || + if (!zend_parse_arg_str(arg, dest, check_null, strict) || (*dest && UNEXPECTED(CHECK_NULL_PATH((*dest)->val, (*dest)->len)))) { return 0; } return 1; } -static zend_always_inline int zend_parse_arg_path(zval *arg, char **dest, size_t *dest_len, int check_null) +static zend_always_inline int zend_parse_arg_path(zval *arg, char **dest, size_t *dest_len, int check_null, zend_bool strict) { zend_string *str; - if (!zend_parse_arg_path_str(arg, &str, check_null)) { + if (!zend_parse_arg_path_str(arg, &str, check_null, strict)) { return 0; } if (check_null && UNEXPECTED(!str)) { diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index bdd0c17583b9c..ec41f64900847 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -139,9 +139,75 @@ static zend_bool zend_get_unqualified_name(const zend_string *name, const char * } /* }}} */ +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 const struct _scalar_typehint_info* zend_find_scalar_typehint(const zend_string *const_name) /* {{{ */ +{ + const struct _scalar_typehint_info *info = &scalar_typehints[0]; + const char *uqname; + size_t uqname_len; + + if (!zend_get_unqualified_name(const_name, &uqname, &uqname_len)) { + uqname = const_name->val; + uqname_len = const_name->len; + } + + while (info->name) { + if (uqname_len == info->name_len && zend_binary_strcasecmp(uqname, uqname_len, info->name, info->name_len) == 0) { + break; + } + info++; + } + + if (info->name) { + return info; + } else { + return NULL; + } +} +/* }}} */ + +ZEND_API void zend_assert_valid_class_name(const zend_string *const_name) /* {{{ */ +{ + const struct _scalar_typehint_info *info = zend_find_scalar_typehint(const_name); + + if (info) { + zend_error_noreturn(E_COMPILE_ERROR, "\"%s\" cannot be used as a class name", info->name); + } +} +/* }}} */ + +static zend_always_inline zend_uchar zend_lookup_scalar_typehint_by_name(const zend_string *const_name) /* {{{ */ +{ + const struct _scalar_typehint_info *info = zend_find_scalar_typehint(const_name); + + if (info) { + return info->type; + } else { + return 0; + } +} +/* }}} */ + + static void init_compiler_declarables(void) /* {{{ */ { ZVAL_LONG(&CG(declarables).ticks, 0); + CG(declarables).strict_types = 0; } /* }}} */ @@ -1530,6 +1596,8 @@ void zend_do_end_compilation(void) /* {{{ */ { CG(has_bracketed_namespaces) = 0; zend_end_namespace(); + /* strict typehinting is per-file */ + CG(declarables).strict_types = 0; } /* }}} */ @@ -1834,7 +1902,8 @@ static zend_op *zend_delayed_compile_end(uint32_t offset) /* {{{ */ static void zend_emit_return_type_check(znode *expr, zend_arg_info *return_info) /* {{{ */ { if (return_info->type_hint != IS_UNDEF) { - zend_emit_op(NULL, ZEND_VERIFY_RETURN_TYPE, expr, NULL); + zend_op *opline = zend_emit_op(NULL, ZEND_VERIFY_RETURN_TYPE, expr, NULL); + opline->extended_value = (CG(declarables).strict_types ? 1 : 0); } } /* }}} */ @@ -2548,7 +2617,8 @@ void zend_compile_call_common(znode *result, zend_ast *args_ast, zend_function * opline->op1.num = zend_vm_calc_used_stack(arg_count, fbc); } - call_flags = (opline->opcode == ZEND_NEW ? ZEND_CALL_CTOR : 0); + call_flags = ((opline->opcode == ZEND_NEW) ? ZEND_CALL_CTOR : 0) + | (CG(declarables).strict_types ? ZEND_CALL_STRICT_TYPEHINTS : 0); opline = zend_emit_op(result, ZEND_DO_FCALL, NULL, NULL); opline->op1.num = call_flags; @@ -3169,7 +3239,18 @@ void zend_compile_return(zend_ast *ast) /* {{{ */ } if (CG(active_op_array)->fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { - zend_emit_return_type_check(&expr_node, CG(active_op_array)->arg_info - 1); + zend_arg_info *arg_info = CG(active_op_array)->arg_info - 1; + + /* for scalar, weak return types, the value may be casted + * thus, for constants, we need to store them in a tmp var + */ + if (expr_node.op_type == IS_CONST && !CG(declarables).strict_types) { + znode expr_node_copy = expr_node; + + zend_emit_op_tmp(&expr_node, ZEND_QM_ASSIGN, &expr_node_copy, NULL); + } + + zend_emit_return_type_check(&expr_node, arg_info); if (expr_node.op_type == IS_CONST) { zval_copy_ctor(&expr_node.u.constant); } @@ -3787,6 +3868,15 @@ void zend_compile_declare(zend_ast *ast) /* {{{ */ zend_error_noreturn(E_COMPILE_ERROR, "Encoding declaration pragma must be " "the very first statement in the script"); } + } else if (zend_string_equals_literal_ci(name, "strict_types")) { + zval value_zv; + zend_const_expr_to_zval(&value_zv, value_ast); + + if (Z_TYPE(value_zv) != IS_LONG || (Z_LVAL(value_zv) != 0 && Z_LVAL(value_zv) != 1)) { + zend_error_noreturn(E_COMPILE_ERROR, "strict_types declaration must have 0 or 1 as its value"); + } + + CG(declarables).strict_types = Z_LVAL(value_zv); } else { zend_error(E_COMPILE_WARNING, "Unsupported declare '%s'", name->val); } @@ -3831,19 +3921,24 @@ void zend_compile_params(zend_ast *ast, zend_ast *return_type_ast, zend_bool is_ arg_infos->type_hint = return_type_ast->attr; } else { zend_string *class_name = zend_ast_get_str(return_type_ast); + zend_uchar type = zend_lookup_scalar_typehint_by_name(class_name); - if (zend_is_const_default_class_ref(return_type_ast)) { - class_name = zend_resolve_class_name_ast(return_type_ast); + if (type != 0) { + arg_infos->type_hint = type; } else { - zend_string_addref(class_name); - if (!is_method) { - zend_error_noreturn(E_COMPILE_ERROR, "Cannot declare a return type of %s outside of a class scope", class_name->val); - return; + if (zend_is_const_default_class_ref(return_type_ast)) { + class_name = zend_resolve_class_name_ast(return_type_ast); + } else { + zend_string_addref(class_name); + if (!is_method) { + zend_error_noreturn(E_COMPILE_ERROR, "Cannot declare a return type of %s outside of a class scope", class_name->val); + return; + } } - } - arg_infos->type_hint = IS_OBJECT; - arg_infos->class_name = class_name; + arg_infos->type_hint = IS_OBJECT; + arg_infos->class_name = class_name; + } } arg_infos++; @@ -3949,7 +4044,14 @@ void zend_compile_params(zend_ast *ast, zend_ast *return_type_ast, zend_bool is_ } } else { zend_string *class_name = zend_ast_get_str(type_ast); + zend_uchar type; + type = zend_lookup_scalar_typehint_by_name(class_name); + if (type != 0) { + arg_info->type_hint = type; + goto done; + } + if (zend_is_const_default_class_ref(type_ast)) { class_name = zend_resolve_class_name_ast(type_ast); } else { @@ -3959,9 +4061,15 @@ void zend_compile_params(zend_ast *ast, zend_ast *return_type_ast, zend_bool is_ 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); + } } } } @@ -4575,6 +4683,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); @@ -4810,6 +4920,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 8a9b37cc6c6f8..ae5a042fd42e2 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -430,6 +430,7 @@ struct _zend_execute_data { #define ZEND_CALL_FREE_EXTRA_ARGS (1 << 2) /* equal to IS_TYPE_REFCOUNTED */ #define ZEND_CALL_CTOR (1 << 3) #define ZEND_CALL_CTOR_RESULT_UNUSED (1 << 4) +#define ZEND_CALL_STRICT_TYPEHINTS (1 << 5) #define ZEND_CALL_INFO(call) \ (Z_TYPE_INFO((call)->This) >> 24) @@ -737,6 +738,8 @@ int zendlex(zend_parser_stack_elem *elem); int zend_add_literal(zend_op_array *op_array, zval *zv); +ZEND_API void zend_assert_valid_class_name(const zend_string *const_name); + /* BEGIN: OPCODES */ #include "zend_vm_opcodes.h" diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 62064dcd5f587..584f2be5a6544 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -610,7 +610,54 @@ static int is_null_constant(zval *default_value) return 0; } -static void zend_verify_internal_arg_type(zend_function *zf, uint32_t arg_num, zval *arg) +static zend_bool zend_verify_scalar_type_hint(zend_uchar type_hint, zval *arg, zend_bool strict) +{ + switch (type_hint) { + case _IS_BOOL: { + zend_bool dest; + + if (!zend_parse_arg_bool(arg, &dest, NULL, 0, strict)) { + 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, strict)) { + 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, strict)) { + return 0; + } + zval_ptr_dtor(arg); + ZVAL_DOUBLE(arg, dest); + return 1; + } + case IS_STRING: { + zend_string *dest; + + /* on success "arg" is converted to IS_STRING */ + if (!zend_parse_arg_str(arg, &dest, 0, strict)) { + return 0; + } + return 1; + } + default: + return 0; + } +} + +static void zend_verify_internal_arg_type(zend_function *zf, uint32_t arg_num, zval *arg, zend_bool strict) { zend_internal_arg_info *cur_arg_info; char *need_msg; @@ -638,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); } @@ -647,15 +694,22 @@ 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(!ZEND_SAME_FAKE_TYPE(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, strict)) { + goto failure; + } } } } -static void zend_verify_arg_type(zend_function *zf, uint32_t arg_num, zval *arg, zval *default_value) +static void zend_verify_arg_type(zend_function *zf, uint32_t arg_num, zval *arg, zval *default_value, zend_bool strict) { zend_arg_info *cur_arg_info; char *need_msg; @@ -683,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); } @@ -692,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(!ZEND_SAME_FAKE_TYPE(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, strict)) { + goto failure; + } } } } @@ -725,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; } @@ -814,7 +873,7 @@ static int zend_verify_internal_return_type(zend_function *zf, zval *ret) } #endif -static void zend_verify_return_type(zend_function *zf, zval *ret) +static void zend_verify_return_type(zend_function *zf, zval *ret, zend_bool strict) { zend_arg_info *ret_info = zf->common.arg_info - 1; char *need_msg; @@ -841,10 +900,17 @@ static void zend_verify_return_type(zend_function *zf, zval *ret) if (!zend_is_callable(ret, IS_CALLABLE_CHECK_SILENT, NULL) && (Z_TYPE_P(ret) != IS_NULL || !ret_info->allow_null)) { zend_verify_return_error(E_RECOVERABLE_ERROR, zf, "be callable", "", zend_zval_type_name(ret), ""); } -#if ZEND_DEBUG - } else { - zend_error(E_ERROR, "Unknown typehint"); -#endif + } else if (UNEXPECTED(!ZEND_SAME_FAKE_TYPE(ret_info->type_hint, Z_TYPE_P(ret)))) { + if (Z_TYPE_P(ret) == IS_NULL) { + if (!ret_info->allow_null) { +failure: + zend_verify_return_error(E_RECOVERABLE_ERROR, zf, "be of the type ", zend_get_type_by_const(ret_info->type_hint), zend_zval_type_name(ret), ""); + } + return; + } + if (!zend_verify_scalar_type_hint(ret_info->type_hint, ret, strict)) { + goto failure; + } } } } @@ -866,10 +932,8 @@ static inline int zend_verify_missing_return_type(zend_function *zf) zend_verify_return_error(E_RECOVERABLE_ERROR, zf, "be of the type array", "", "none", ""); } else if (ret_info->type_hint == IS_CALLABLE) { zend_verify_return_error(E_RECOVERABLE_ERROR, zf, "be callable", "", "none", ""); -#if ZEND_DEBUG } else { - zend_error(E_ERROR, "Unknown typehint"); -#endif + zend_verify_return_error(E_RECOVERABLE_ERROR, zf, "be of the type ", zend_get_type_by_const(ret_info->type_hint), "none", ""); } return 0; } diff --git a/Zend/zend_globals.h b/Zend/zend_globals.h index beca5ad631b33..630d0f4c063d4 100644 --- a/Zend/zend_globals.h +++ b/Zend/zend_globals.h @@ -64,6 +64,7 @@ END_EXTERN_C() typedef struct _zend_declarables { zval ticks; + zend_bool strict_types; } zend_declarables; typedef struct _zend_vm_stack *zend_vm_stack; diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 99c25554874c8..8a869152b8c3d 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 */ +/* Generated by re2c 0.13.7.5 */ #line 1 "Zend/zend_language_scanner.l" /* +----------------------------------------------------------------------+ @@ -1128,16 +1128,15 @@ int lex_scan(zval *zendlval) } /* *********************************** */ yyc_INITIAL: - - YYDEBUG(0, *YYCURSOR); + YYDEBUG(1, *YYCURSOR); YYFILL(7); yych = *YYCURSOR; - if (yych != '<') goto yy4; - YYDEBUG(2, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '?') goto yy5; -yy3: + if (yych != '<') goto yy5; YYDEBUG(3, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) == '?') goto yy6; +yy4: + YYDEBUG(4, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1766 "Zend/zend_language_scanner.l" { @@ -1184,23 +1183,23 @@ int lex_scan(zval *zendlval) HANDLE_NEWLINES(yytext, yyleng); return T_INLINE_HTML; } -#line 1188 "Zend/zend_language_scanner.c" -yy4: - YYDEBUG(4, *YYCURSOR); - yych = *++YYCURSOR; - goto yy3; +#line 1187 "Zend/zend_language_scanner.c" yy5: YYDEBUG(5, *YYCURSOR); + yych = *++YYCURSOR; + goto yy4; +yy6: + YYDEBUG(6, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'O') { - if (yych == '=') goto yy7; + if (yych == '=') goto yy8; } else { - if (yych <= 'P') goto yy9; - if (yych == 'p') goto yy9; + if (yych <= 'P') goto yy10; + if (yych == 'p') goto yy10; } -yy6: - YYDEBUG(6, *YYCURSOR); +yy7: + YYDEBUG(7, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1757 "Zend/zend_language_scanner.l" { @@ -1211,47 +1210,47 @@ int lex_scan(zval *zendlval) goto inline_char_handler; } } -#line 1215 "Zend/zend_language_scanner.c" -yy7: - YYDEBUG(7, *YYCURSOR); - ++YYCURSOR; +#line 1214 "Zend/zend_language_scanner.c" +yy8: YYDEBUG(8, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(9, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1744 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG_WITH_ECHO; } -#line 1226 "Zend/zend_language_scanner.c" -yy9: - YYDEBUG(9, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy11; - if (yych == 'h') goto yy11; +#line 1225 "Zend/zend_language_scanner.c" yy10: YYDEBUG(10, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy6; + yych = *++YYCURSOR; + if (yych == 'H') goto yy12; + if (yych == 'h') goto yy12; yy11: YYDEBUG(11, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy12; - if (yych != 'p') goto yy10; + YYCURSOR = YYMARKER; + goto yy7; 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 yy10; - if (yych >= '\v') goto yy10; + if (yych <= 0x08) goto yy11; + if (yych >= '\v') goto yy11; } else { - if (yych <= '\r') goto yy15; - if (yych != ' ') goto yy10; + if (yych <= '\r') goto yy16; + if (yych != ' ') goto yy11; } -yy13: - YYDEBUG(13, *YYCURSOR); - ++YYCURSOR; yy14: YYDEBUG(14, *YYCURSOR); + ++YYCURSOR; +yy15: + YYDEBUG(15, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1750 "Zend/zend_language_scanner.l" { @@ -1259,12 +1258,12 @@ int lex_scan(zval *zendlval) BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG; } -#line 1263 "Zend/zend_language_scanner.c" -yy15: - YYDEBUG(15, *YYCURSOR); +#line 1262 "Zend/zend_language_scanner.c" +yy16: + YYDEBUG(16, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '\n') goto yy13; - goto yy14; + if ((yych = *YYCURSOR) == '\n') goto yy14; + goto yy15; /* *********************************** */ yyc_ST_BACKQUOTE: { @@ -1302,32 +1301,32 @@ int lex_scan(zval *zendlval) 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(16, *YYCURSOR); + YYDEBUG(17, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yych <= '_') { - if (yych != '$') goto yy23; + if (yych != '$') goto yy24; } else { - if (yych <= '`') goto yy21; - if (yych == '{') goto yy20; - goto yy23; + if (yych <= '`') goto yy22; + if (yych == '{') goto yy21; + goto yy24; } - YYDEBUG(18, *YYCURSOR); + YYDEBUG(19, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '_') { - if (yych <= '@') goto yy19; - if (yych <= 'Z') goto yy26; - if (yych >= '_') goto yy26; + if (yych <= '@') goto yy20; + if (yych <= 'Z') goto yy27; + if (yych >= '_') goto yy27; } else { if (yych <= 'z') { - if (yych >= 'a') goto yy26; + if (yych >= 'a') goto yy27; } else { - if (yych <= '{') goto yy29; - if (yych >= 0x7F) goto yy26; + if (yych <= '{') goto yy30; + if (yych >= 0x7F) goto yy27; } } -yy19: - YYDEBUG(19, *YYCURSOR); +yy20: + YYDEBUG(20, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 2176 "Zend/zend_language_scanner.l" { @@ -1370,31 +1369,31 @@ int lex_scan(zval *zendlval) zend_scan_escape_string(zendlval, yytext, yyleng, '`'); return T_ENCAPSED_AND_WHITESPACE; } -#line 1374 "Zend/zend_language_scanner.c" -yy20: - YYDEBUG(20, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '$') goto yy24; - goto yy19; +#line 1373 "Zend/zend_language_scanner.c" yy21: YYDEBUG(21, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == '$') goto yy25; + goto yy20; +yy22: YYDEBUG(22, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(23, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 2120 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '`'; } -#line 1390 "Zend/zend_language_scanner.c" -yy23: - YYDEBUG(23, *YYCURSOR); - yych = *++YYCURSOR; - goto yy19; +#line 1389 "Zend/zend_language_scanner.c" yy24: YYDEBUG(24, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + goto yy20; +yy25: YYDEBUG(25, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(26, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 2107 "Zend/zend_language_scanner.l" { @@ -1403,21 +1402,22 @@ int lex_scan(zval *zendlval) yyless(1); return T_CURLY_OPEN; } -#line 1407 "Zend/zend_language_scanner.c" -yy26: - YYDEBUG(26, *YYCURSOR); +#line 1406 "Zend/zend_language_scanner.c" +yy27: + YYDEBUG(27, *YYCURSOR); yyaccept = 0; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(27, *YYCURSOR); + YYDEBUG(28, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy26; + goto yy27; } - if (yych == '-') goto yy31; - if (yych == '[') goto yy33; -yy28: - YYDEBUG(28, *YYCURSOR); + if (yych == '-') goto yy32; + if (yych <= '@') goto yy29; + if (yych <= '[') goto yy34; +yy29: + YYDEBUG(29, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1831 "Zend/zend_language_scanner.l" { @@ -1425,10 +1425,10 @@ int lex_scan(zval *zendlval) return T_VARIABLE; } #line 1428 "Zend/zend_language_scanner.c" -yy29: - YYDEBUG(29, *YYCURSOR); - ++YYCURSOR; +yy30: YYDEBUG(30, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(31, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1555 "Zend/zend_language_scanner.l" { @@ -1436,18 +1436,18 @@ int lex_scan(zval *zendlval) return T_DOLLAR_OPEN_CURLY_BRACES; } #line 1439 "Zend/zend_language_scanner.c" -yy31: - YYDEBUG(31, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '>') goto yy35; yy32: YYDEBUG(32, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy28; + yych = *++YYCURSOR; + if (yych == '>') goto yy36; yy33: YYDEBUG(33, *YYCURSOR); - ++YYCURSOR; + YYCURSOR = YYMARKER; + goto yy29; +yy34: YYDEBUG(34, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(35, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1824 "Zend/zend_language_scanner.l" { @@ -1457,22 +1457,22 @@ int lex_scan(zval *zendlval) return T_VARIABLE; } #line 1460 "Zend/zend_language_scanner.c" -yy35: - YYDEBUG(35, *YYCURSOR); +yy36: + YYDEBUG(36, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '_') { - if (yych <= '@') goto yy32; - if (yych <= 'Z') goto yy36; - if (yych <= '^') goto yy32; + if (yych <= '@') goto yy33; + if (yych <= 'Z') goto yy37; + if (yych <= '^') goto yy33; } else { - if (yych <= '`') goto yy32; - if (yych <= 'z') goto yy36; - if (yych <= '~') goto yy32; + if (yych <= '`') goto yy33; + if (yych <= 'z') goto yy37; + if (yych <= '~') goto yy33; } -yy36: - YYDEBUG(36, *YYCURSOR); - ++YYCURSOR; +yy37: YYDEBUG(37, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(38, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1815 "Zend/zend_language_scanner.l" { @@ -1520,34 +1520,34 @@ int lex_scan(zval *zendlval) 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(38, *YYCURSOR); + YYDEBUG(39, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yych <= '#') { - if (yych == '"') goto yy43; - goto yy45; + if (yych == '"') goto yy44; + goto yy46; } else { - if (yych <= '$') goto yy40; - if (yych == '{') goto yy42; - goto yy45; + if (yych <= '$') goto yy41; + if (yych == '{') goto yy43; + goto yy46; } -yy40: - YYDEBUG(40, *YYCURSOR); +yy41: + YYDEBUG(41, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '_') { - if (yych <= '@') goto yy41; - if (yych <= 'Z') goto yy48; - if (yych >= '_') goto yy48; + if (yych <= '@') goto yy42; + if (yych <= 'Z') goto yy49; + if (yych >= '_') goto yy49; } else { if (yych <= 'z') { - if (yych >= 'a') goto yy48; + if (yych >= 'a') goto yy49; } else { - if (yych <= '{') goto yy51; - if (yych >= 0x7F) goto yy48; + if (yych <= '{') goto yy52; + if (yych >= 0x7F) goto yy49; } } -yy41: - YYDEBUG(41, *YYCURSOR); +yy42: + YYDEBUG(42, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 2126 "Zend/zend_language_scanner.l" { @@ -1599,15 +1599,15 @@ int lex_scan(zval *zendlval) return T_ENCAPSED_AND_WHITESPACE; } #line 1602 "Zend/zend_language_scanner.c" -yy42: - YYDEBUG(42, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '$') goto yy46; - goto yy41; yy43: YYDEBUG(43, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == '$') goto yy47; + goto yy42; +yy44: YYDEBUG(44, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(45, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 2115 "Zend/zend_language_scanner.l" { @@ -1615,14 +1615,14 @@ int lex_scan(zval *zendlval) return '"'; } #line 1618 "Zend/zend_language_scanner.c" -yy45: - YYDEBUG(45, *YYCURSOR); - yych = *++YYCURSOR; - goto yy41; yy46: YYDEBUG(46, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + goto yy42; +yy47: YYDEBUG(47, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(48, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 2107 "Zend/zend_language_scanner.l" { @@ -1632,50 +1632,51 @@ int lex_scan(zval *zendlval) return T_CURLY_OPEN; } #line 1635 "Zend/zend_language_scanner.c" -yy48: - YYDEBUG(48, *YYCURSOR); +yy49: + YYDEBUG(49, *YYCURSOR); yyaccept = 0; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(49, *YYCURSOR); + YYDEBUG(50, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy48; + goto yy49; } - if (yych == '-') goto yy53; - if (yych == '[') goto yy55; -yy50: - YYDEBUG(50, *YYCURSOR); + if (yych == '-') goto yy54; + if (yych <= '@') goto yy51; + if (yych <= '[') goto yy56; +yy51: + YYDEBUG(51, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1831 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); return T_VARIABLE; } -#line 1656 "Zend/zend_language_scanner.c" -yy51: - YYDEBUG(51, *YYCURSOR); - ++YYCURSOR; +#line 1657 "Zend/zend_language_scanner.c" +yy52: YYDEBUG(52, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(53, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1555 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 1667 "Zend/zend_language_scanner.c" -yy53: - YYDEBUG(53, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '>') goto yy57; +#line 1668 "Zend/zend_language_scanner.c" yy54: YYDEBUG(54, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy50; + yych = *++YYCURSOR; + if (yych == '>') goto yy58; yy55: YYDEBUG(55, *YYCURSOR); - ++YYCURSOR; + YYCURSOR = YYMARKER; + goto yy51; +yy56: YYDEBUG(56, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(57, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1824 "Zend/zend_language_scanner.l" { @@ -1684,23 +1685,23 @@ int lex_scan(zval *zendlval) zend_copy_value(zendlval, (yytext+1), (yyleng-1)); return T_VARIABLE; } -#line 1688 "Zend/zend_language_scanner.c" -yy57: - YYDEBUG(57, *YYCURSOR); +#line 1689 "Zend/zend_language_scanner.c" +yy58: + YYDEBUG(58, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '_') { - if (yych <= '@') goto yy54; - if (yych <= 'Z') goto yy58; - if (yych <= '^') goto yy54; + if (yych <= '@') goto yy55; + if (yych <= 'Z') goto yy59; + if (yych <= '^') goto yy55; } else { - if (yych <= '`') goto yy54; - if (yych <= 'z') goto yy58; - if (yych <= '~') goto yy54; + if (yych <= '`') goto yy55; + if (yych <= 'z') goto yy59; + if (yych <= '~') goto yy55; } -yy58: - YYDEBUG(58, *YYCURSOR); - ++YYCURSOR; +yy59: YYDEBUG(59, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(60, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1815 "Zend/zend_language_scanner.l" { @@ -1709,16 +1710,16 @@ int lex_scan(zval *zendlval) zend_copy_value(zendlval, (yytext+1), (yyleng-1)); return T_VARIABLE; } -#line 1713 "Zend/zend_language_scanner.c" +#line 1714 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_END_HEREDOC: - YYDEBUG(60, *YYCURSOR); + YYDEBUG(61, *YYCURSOR); YYFILL(1); yych = *YYCURSOR; - YYDEBUG(62, *YYCURSOR); - ++YYCURSOR; YYDEBUG(63, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(64, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 2093 "Zend/zend_language_scanner.l" { @@ -1733,7 +1734,7 @@ int lex_scan(zval *zendlval) BEGIN(ST_IN_SCRIPTING); return T_END_HEREDOC; } -#line 1737 "Zend/zend_language_scanner.c" +#line 1738 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_HEREDOC: { @@ -1771,29 +1772,29 @@ int lex_scan(zval *zendlval) 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(64, *YYCURSOR); + YYDEBUG(65, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; - if (yych == '$') goto yy66; - if (yych == '{') goto yy68; - goto yy69; -yy66: - YYDEBUG(66, *YYCURSOR); + if (yych == '$') goto yy67; + if (yych == '{') goto yy69; + goto yy70; +yy67: + YYDEBUG(67, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '_') { - if (yych <= '@') goto yy67; - if (yych <= 'Z') goto yy72; - if (yych >= '_') goto yy72; + if (yych <= '@') goto yy68; + if (yych <= 'Z') goto yy73; + if (yych >= '_') goto yy73; } else { if (yych <= 'z') { - if (yych >= 'a') goto yy72; + if (yych >= 'a') goto yy73; } else { - if (yych <= '{') goto yy75; - if (yych >= 0x7F) goto yy72; + if (yych <= '{') goto yy76; + if (yych >= 0x7F) goto yy73; } } -yy67: - YYDEBUG(67, *YYCURSOR); +yy68: + YYDEBUG(68, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 2218 "Zend/zend_language_scanner.l" { @@ -1868,20 +1869,20 @@ int lex_scan(zval *zendlval) zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0); return T_ENCAPSED_AND_WHITESPACE; } -#line 1872 "Zend/zend_language_scanner.c" -yy68: - YYDEBUG(68, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '$') goto yy70; - goto yy67; +#line 1873 "Zend/zend_language_scanner.c" yy69: YYDEBUG(69, *YYCURSOR); yych = *++YYCURSOR; - goto yy67; + if (yych == '$') goto yy71; + goto yy68; yy70: YYDEBUG(70, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + goto yy68; +yy71: YYDEBUG(71, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(72, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 2107 "Zend/zend_language_scanner.l" { @@ -1890,51 +1891,52 @@ int lex_scan(zval *zendlval) yyless(1); return T_CURLY_OPEN; } -#line 1894 "Zend/zend_language_scanner.c" -yy72: - YYDEBUG(72, *YYCURSOR); +#line 1895 "Zend/zend_language_scanner.c" +yy73: + YYDEBUG(73, *YYCURSOR); yyaccept = 0; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(73, *YYCURSOR); + YYDEBUG(74, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy72; + goto yy73; } - if (yych == '-') goto yy77; - if (yych == '[') goto yy79; -yy74: - YYDEBUG(74, *YYCURSOR); + if (yych == '-') goto yy78; + if (yych <= '@') goto yy75; + if (yych <= '[') goto yy80; +yy75: + YYDEBUG(75, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1831 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); return T_VARIABLE; } -#line 1915 "Zend/zend_language_scanner.c" -yy75: - YYDEBUG(75, *YYCURSOR); - ++YYCURSOR; +#line 1917 "Zend/zend_language_scanner.c" +yy76: YYDEBUG(76, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(77, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1555 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 1926 "Zend/zend_language_scanner.c" -yy77: - YYDEBUG(77, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '>') goto yy81; +#line 1928 "Zend/zend_language_scanner.c" yy78: YYDEBUG(78, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy74; + yych = *++YYCURSOR; + if (yych == '>') goto yy82; yy79: YYDEBUG(79, *YYCURSOR); - ++YYCURSOR; + YYCURSOR = YYMARKER; + goto yy75; +yy80: YYDEBUG(80, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1824 "Zend/zend_language_scanner.l" { @@ -1943,23 +1945,23 @@ int lex_scan(zval *zendlval) zend_copy_value(zendlval, (yytext+1), (yyleng-1)); return T_VARIABLE; } -#line 1947 "Zend/zend_language_scanner.c" -yy81: - YYDEBUG(81, *YYCURSOR); +#line 1949 "Zend/zend_language_scanner.c" +yy82: + YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '_') { - if (yych <= '@') goto yy78; - if (yych <= 'Z') goto yy82; - if (yych <= '^') goto yy78; + if (yych <= '@') goto yy79; + if (yych <= 'Z') goto yy83; + if (yych <= '^') goto yy79; } else { - if (yych <= '`') goto yy78; - if (yych <= 'z') goto yy82; - if (yych <= '~') goto yy78; + if (yych <= '`') goto yy79; + if (yych <= 'z') goto yy83; + if (yych <= '~') goto yy79; } -yy82: - YYDEBUG(82, *YYCURSOR); - ++YYCURSOR; +yy83: YYDEBUG(83, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1815 "Zend/zend_language_scanner.l" { @@ -1968,7 +1970,7 @@ int lex_scan(zval *zendlval) zend_copy_value(zendlval, (yytext+1), (yyleng-1)); return T_VARIABLE; } -#line 1972 "Zend/zend_language_scanner.c" +#line 1974 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -2007,7 +2009,7 @@ int lex_scan(zval *zendlval) 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, }; - YYDEBUG(84, *YYCURSOR); + YYDEBUG(85, *YYCURSOR); YYFILL(16); yych = *YYCURSOR; YYDEBUG(-1, yych); @@ -2040,32 +2042,32 @@ int lex_scan(zval *zendlval) case 0x1C: case 0x1D: case 0x1E: - case 0x1F: goto yy147; + case 0x1F: goto yy148; case '\t': case '\n': case '\r': - 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 ' ': 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 ')': case ',': case ';': case '@': case '[': case ']': - case '~': goto yy130; - case '*': goto yy121; - case '+': goto yy117; - case '-': goto yy101; - case '.': goto yy108; - case '/': goto yy122; - case '0': goto yy135; + case '~': goto yy131; + case '*': goto yy122; + case '+': goto yy118; + case '-': goto yy102; + case '.': goto yy109; + case '/': goto yy123; + case '0': goto yy136; case '1': case '2': case '3': @@ -2074,592 +2076,592 @@ int lex_scan(zval *zendlval) case '6': case '7': case '8': - case '9': goto yy137; - case ':': goto yy105; - case '<': goto yy119; - case '=': goto yy115; - case '>': goto yy120; - case '?': goto yy109; + case '9': goto yy138; + case ':': goto yy106; + case '<': goto yy120; + case '=': goto yy116; + case '>': goto yy121; + case '?': goto yy110; case 'A': - case 'a': goto yy96; + case 'a': goto yy97; case 'B': - case 'b': goto yy98; + case 'b': goto yy99; case 'C': - case 'c': goto yy90; + case 'c': goto yy91; case 'D': - case 'd': goto yy88; + case 'd': goto yy89; case 'E': - case 'e': goto yy86; + case 'e': goto yy87; case 'F': - case 'f': goto yy89; + case 'f': goto yy90; case 'G': - case 'g': goto yy99; + case 'g': goto yy100; case 'I': - case 'i': goto yy94; + case 'i': goto yy95; case 'L': - case 'l': goto yy116; + case 'l': goto yy117; case 'N': - case 'n': goto yy110; + case 'n': goto yy111; case 'O': - case 'o': goto yy127; + case 'o': goto yy128; case 'P': - case 'p': goto yy100; + case 'p': goto yy101; case 'R': - case 'r': goto yy91; + case 'r': goto yy92; case 'S': - case 's': goto yy97; + case 's': goto yy98; case 'T': - case 't': goto yy93; + case 't': goto yy94; case 'U': - case 'u': goto yy113; + case 'u': goto yy114; case 'V': - case 'v': goto yy111; + case 'v': goto yy112; case 'W': - case 'w': goto yy95; + case 'w': goto yy96; case 'X': - case 'x': goto yy128; + case 'x': goto yy129; case 'Y': - 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); + 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; YYDEBUG(-1, yych); switch ((yych = *YYCURSOR)) { case 'C': - case 'c': goto yy695; + case 'c': goto yy696; case 'L': - case 'l': goto yy696; + case 'l': goto yy697; case 'M': - case 'm': goto yy697; + case 'm': goto yy698; case 'N': - case 'n': goto yy698; + case 'n': goto yy699; case 'V': - case 'v': goto yy699; + case 'v': goto yy700; case 'X': - case 'x': goto yy700; - default: goto yy150; + case 'x': goto yy701; + default: goto yy151; } -yy87: - YYDEBUG(87, *YYCURSOR); +yy88: + YYDEBUG(88, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1854 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); return T_STRING; } -#line 2160 "Zend/zend_language_scanner.c" -yy88: - YYDEBUG(88, *YYCURSOR); +#line 2162 "Zend/zend_language_scanner.c" +yy89: + YYDEBUG(89, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= 'H') { - if (yych == 'E') goto yy677; - goto yy150; + if (yych == 'E') goto yy678; + goto yy151; } else { - if (yych <= 'I') goto yy678; - if (yych <= 'N') goto yy150; - goto yy679; + if (yych <= 'I') goto yy679; + if (yych <= 'N') goto yy151; + goto yy680; } } else { if (yych <= 'h') { - if (yych == 'e') goto yy677; - goto yy150; + if (yych == 'e') goto yy678; + goto yy151; } else { - if (yych <= 'i') goto yy678; - if (yych == 'o') goto yy679; - goto yy150; + if (yych <= 'i') goto yy679; + if (yych == 'o') goto yy680; + goto yy151; } } -yy89: - YYDEBUG(89, *YYCURSOR); +yy90: + YYDEBUG(90, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= 'N') { - if (yych == 'I') goto yy653; - goto yy150; + if (yych == 'I') goto yy654; + goto yy151; } else { - if (yych <= 'O') goto yy654; - if (yych <= 'T') goto yy150; - goto yy655; + if (yych <= 'O') goto yy655; + if (yych <= 'T') goto yy151; + goto yy656; } } else { if (yych <= 'n') { - if (yych == 'i') goto yy653; - goto yy150; + if (yych == 'i') goto yy654; + goto yy151; } else { - if (yych <= 'o') goto yy654; - if (yych == 'u') goto yy655; - goto yy150; + if (yych <= 'o') goto yy655; + if (yych == 'u') goto yy656; + goto yy151; } } -yy90: - YYDEBUG(90, *YYCURSOR); +yy91: + YYDEBUG(91, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= 'K') { - if (yych == 'A') goto yy618; - goto yy150; + if (yych == 'A') goto yy619; + goto yy151; } else { - if (yych <= 'L') goto yy619; - if (yych <= 'N') goto yy150; - goto yy620; + if (yych <= 'L') goto yy620; + if (yych <= 'N') goto yy151; + goto yy621; } } else { if (yych <= 'k') { - if (yych == 'a') goto yy618; - goto yy150; + if (yych == 'a') goto yy619; + goto yy151; } else { - if (yych <= 'l') goto yy619; - if (yych == 'o') goto yy620; - goto yy150; + if (yych <= 'l') goto yy620; + if (yych == 'o') goto yy621; + goto yy151; } } -yy91: - YYDEBUG(91, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy600; - if (yych == 'e') goto yy600; - goto yy150; yy92: YYDEBUG(92, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy595; - if (yych == 'i') goto yy595; - goto yy150; + if (yych == 'E') goto yy601; + if (yych == 'e') goto yy601; + goto yy151; yy93: YYDEBUG(93, *YYCURSOR); yych = *++YYCURSOR; + if (yych == 'I') goto yy596; + if (yych == 'i') goto yy596; + goto yy151; +yy94: + YYDEBUG(94, *YYCURSOR); + yych = *++YYCURSOR; if (yych <= 'R') { - if (yych == 'H') goto yy583; - if (yych <= 'Q') goto yy150; - goto yy584; + if (yych == 'H') goto yy584; + if (yych <= 'Q') goto yy151; + goto yy585; } else { if (yych <= 'h') { - if (yych <= 'g') goto yy150; - goto yy583; + if (yych <= 'g') goto yy151; + goto yy584; } else { - if (yych == 'r') goto yy584; - goto yy150; + if (yych == 'r') goto yy585; + goto yy151; } } -yy94: - YYDEBUG(94, *YYCURSOR); +yy95: + YYDEBUG(95, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= 'L') { - if (yych == 'F') goto yy530; - goto yy150; + if (yych == 'F') goto yy531; + goto yy151; } else { - if (yych <= 'M') goto yy532; - if (yych <= 'N') goto yy533; - if (yych <= 'R') goto yy150; - goto yy534; + if (yych <= 'M') goto yy533; + if (yych <= 'N') goto yy534; + if (yych <= 'R') goto yy151; + goto yy535; } } else { if (yych <= 'm') { - if (yych == 'f') goto yy530; - if (yych <= 'l') goto yy150; - goto yy532; + if (yych == 'f') goto yy531; + if (yych <= 'l') goto yy151; + goto yy533; } else { - if (yych <= 'n') goto yy533; - if (yych == 's') goto yy534; - goto yy150; + if (yych <= 'n') goto yy534; + if (yych == 's') goto yy535; + goto yy151; } } -yy95: - YYDEBUG(95, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy525; - if (yych == 'h') goto yy525; - goto yy150; yy96: YYDEBUG(96, *YYCURSOR); yych = *++YYCURSOR; + if (yych == 'H') goto yy526; + if (yych == 'h') goto yy526; + goto yy151; +yy97: + YYDEBUG(97, *YYCURSOR); + yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= 'M') { - if (yych == 'B') goto yy507; - goto yy150; + if (yych == 'B') goto yy508; + goto yy151; } else { - if (yych <= 'N') goto yy508; - if (yych <= 'Q') goto yy150; - if (yych <= 'R') goto yy509; - goto yy510; + if (yych <= 'N') goto yy509; + if (yych <= 'Q') goto yy151; + if (yych <= 'R') goto yy510; + goto yy511; } } else { if (yych <= 'n') { - if (yych == 'b') goto yy507; - if (yych <= 'm') goto yy150; - goto yy508; + if (yych == 'b') goto yy508; + if (yych <= 'm') goto yy151; + goto yy509; } else { - if (yych <= 'q') goto yy150; - if (yych <= 'r') goto yy509; - if (yych <= 's') goto yy510; - goto yy150; + if (yych <= 'q') goto yy151; + if (yych <= 'r') goto yy510; + if (yych <= 's') goto yy511; + goto yy151; } } -yy97: - YYDEBUG(97, *YYCURSOR); +yy98: + YYDEBUG(98, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'W') { - if (yych == 'T') goto yy495; - if (yych <= 'V') goto yy150; - goto yy496; + if (yych == 'T') goto yy496; + if (yych <= 'V') goto yy151; + goto yy497; } else { if (yych <= 't') { - if (yych <= 's') goto yy150; - goto yy495; + if (yych <= 's') goto yy151; + goto yy496; } else { - if (yych == 'w') goto yy496; - goto yy150; + if (yych == 'w') goto yy497; + goto yy151; } } -yy98: - YYDEBUG(98, *YYCURSOR); +yy99: + YYDEBUG(99, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ';') { if (yych <= '"') { - if (yych <= '!') goto yy150; - goto yy487; + if (yych <= '!') goto yy151; + goto yy488; } else { - if (yych == '\'') goto yy488; - goto yy150; + if (yych == '\'') goto yy489; + goto yy151; } } else { if (yych <= 'R') { - if (yych <= '<') goto yy486; - if (yych <= 'Q') goto yy150; - goto yy489; + if (yych <= '<') goto yy487; + if (yych <= 'Q') goto yy151; + goto yy490; } else { - if (yych == 'r') goto yy489; - goto yy150; + if (yych == 'r') goto yy490; + goto yy151; } } -yy99: - YYDEBUG(99, *YYCURSOR); +yy100: + YYDEBUG(100, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'L') goto yy476; - if (yych <= 'N') goto yy150; - goto yy477; + if (yych == 'L') goto yy477; + if (yych <= 'N') goto yy151; + goto yy478; } else { if (yych <= 'l') { - if (yych <= 'k') goto yy150; - goto yy476; + if (yych <= 'k') goto yy151; + goto yy477; } else { - if (yych == 'o') goto yy477; - goto yy150; + if (yych == 'o') goto yy478; + goto yy151; } } -yy100: - YYDEBUG(100, *YYCURSOR); +yy101: + YYDEBUG(101, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'R') goto yy452; - if (yych <= 'T') goto yy150; - goto yy453; + if (yych == 'R') goto yy453; + if (yych <= 'T') goto yy151; + goto yy454; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy150; - goto yy452; + if (yych <= 'q') goto yy151; + goto yy453; } else { - if (yych == 'u') goto yy453; - goto yy150; + if (yych == 'u') goto yy454; + goto yy151; } } -yy101: - YYDEBUG(101, *YYCURSOR); +yy102: + YYDEBUG(102, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '<') { - if (yych == '-') goto yy448; + if (yych == '-') goto yy449; } else { - if (yych <= '=') goto yy446; - if (yych <= '>') goto yy450; + if (yych <= '=') goto yy447; + if (yych <= '>') goto yy451; } -yy102: - YYDEBUG(102, *YYCURSOR); +yy103: + YYDEBUG(103, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1544 "Zend/zend_language_scanner.l" { return yytext[0]; } -#line 2396 "Zend/zend_language_scanner.c" -yy103: - YYDEBUG(103, *YYCURSOR); - ++YYCURSOR; - yych = *YYCURSOR; - goto yy445; +#line 2398 "Zend/zend_language_scanner.c" yy104: YYDEBUG(104, *YYCURSOR); + ++YYCURSOR; + yych = *YYCURSOR; + goto yy446; +yy105: + YYDEBUG(105, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1263 "Zend/zend_language_scanner.l" { HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 2410 "Zend/zend_language_scanner.c" -yy105: - YYDEBUG(105, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == ':') goto yy442; - goto yy102; +#line 2412 "Zend/zend_language_scanner.c" yy106: YYDEBUG(106, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == ':') goto yy443; + goto yy103; +yy107: YYDEBUG(107, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(108, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1288 "Zend/zend_language_scanner.l" { return T_NS_SEPARATOR; } -#line 2425 "Zend/zend_language_scanner.c" -yy108: - YYDEBUG(108, *YYCURSOR); +#line 2427 "Zend/zend_language_scanner.c" +yy109: + YYDEBUG(109, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy439; - goto yy102; + if (yych == '.') goto yy440; + goto yy103; } else { - if (yych <= '9') goto yy435; - if (yych == '=') goto yy437; - goto yy102; + if (yych <= '9') goto yy436; + if (yych == '=') goto yy438; + goto yy103; } -yy109: - YYDEBUG(109, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '=') goto yy102; - if (yych <= '>') goto yy429; - if (yych <= '?') goto yy431; - goto yy102; yy110: YYDEBUG(110, *YYCURSOR); yych = *++YYCURSOR; + if (yych <= '=') goto yy103; + if (yych <= '>') goto yy430; + if (yych <= '?') goto yy432; + goto yy103; +yy111: + YYDEBUG(111, *YYCURSOR); + yych = *++YYCURSOR; if (yych <= 'E') { - if (yych == 'A') goto yy417; - if (yych <= 'D') goto yy150; - goto yy418; + if (yych == 'A') goto yy418; + if (yych <= 'D') goto yy151; + goto yy419; } else { if (yych <= 'a') { - if (yych <= '`') goto yy150; - goto yy417; + if (yych <= '`') goto yy151; + goto yy418; } else { - if (yych == 'e') goto yy418; - goto yy150; + if (yych == 'e') goto yy419; + goto yy151; } } -yy111: - YYDEBUG(111, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy414; - if (yych == 'a') goto yy414; - goto yy150; yy112: YYDEBUG(112, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy415; + if (yych == 'a') goto yy415; + goto yy151; +yy113: + YYDEBUG(113, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { if (yych <= 'D') { if (yych <= ' ') { - if (yych == '\t') goto yy339; - if (yych <= 0x1F) goto yy102; - goto yy339; + if (yych == '\t') goto yy340; + if (yych <= 0x1F) goto yy103; + goto yy340; } else { - if (yych <= '@') goto yy102; - if (yych == 'C') goto yy102; - goto yy339; + if (yych <= '@') goto yy103; + if (yych == 'C') goto yy103; + goto yy340; } } else { if (yych <= 'I') { - if (yych == 'F') goto yy339; - if (yych <= 'H') goto yy102; - goto yy339; + if (yych == 'F') goto yy340; + if (yych <= 'H') goto yy103; + goto yy340; } else { - if (yych == 'O') goto yy339; - if (yych <= 'Q') goto yy102; - goto yy339; + if (yych == 'O') goto yy340; + if (yych <= 'Q') goto yy103; + goto yy340; } } } else { if (yych <= 'f') { if (yych <= 'b') { - if (yych == 'U') goto yy339; - if (yych <= '`') goto yy102; - goto yy339; + if (yych == 'U') goto yy340; + if (yych <= '`') goto yy103; + goto yy340; } else { - if (yych == 'd') goto yy339; - if (yych <= 'e') goto yy102; - goto yy339; + if (yych == 'd') goto yy340; + if (yych <= 'e') goto yy103; + goto yy340; } } else { if (yych <= 'o') { - if (yych == 'i') goto yy339; - if (yych <= 'n') goto yy102; - goto yy339; + if (yych == 'i') goto yy340; + if (yych <= 'n') goto yy103; + goto yy340; } else { if (yych <= 's') { - if (yych <= 'q') goto yy102; - goto yy339; + if (yych <= 'q') goto yy103; + goto yy340; } else { - if (yych == 'u') goto yy339; - goto yy102; + if (yych == 'u') goto yy340; + goto yy103; } } } } -yy113: - YYDEBUG(113, *YYCURSOR); +yy114: + YYDEBUG(114, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'S') { - if (yych == 'N') goto yy330; - if (yych <= 'R') goto yy150; - goto yy331; + if (yych == 'N') goto yy331; + if (yych <= 'R') goto yy151; + goto yy332; } else { if (yych <= 'n') { - if (yych <= 'm') goto yy150; - goto yy330; + if (yych <= 'm') goto yy151; + goto yy331; } else { - if (yych == 's') goto yy331; - goto yy150; + if (yych == 's') goto yy332; + goto yy151; } } -yy114: - YYDEBUG(114, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy248; - goto yy150; yy115: YYDEBUG(115, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '<') goto yy102; - if (yych <= '=') goto yy242; - if (yych <= '>') goto yy244; - goto yy102; + if (yych == '_') goto yy249; + goto yy151; yy116: YYDEBUG(116, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy238; - if (yych == 'i') goto yy238; - goto yy150; + if (yych <= '<') goto yy103; + if (yych <= '=') goto yy243; + if (yych <= '>') goto yy245; + goto yy103; yy117: YYDEBUG(117, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '+') goto yy236; - if (yych == '=') goto yy234; - goto yy102; + if (yych == 'I') goto yy239; + if (yych == 'i') goto yy239; + goto yy151; yy118: YYDEBUG(118, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy231; - goto yy102; + if (yych == '+') goto yy237; + if (yych == '=') goto yy235; + goto yy103; yy119: YYDEBUG(119, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= ';') goto yy102; - if (yych <= '<') goto yy209; - if (yych <= '=') goto yy211; - if (yych <= '>') goto yy213; - goto yy102; + if (yych == '=') goto yy232; + goto yy103; yy120: YYDEBUG(120, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '<') goto yy102; - if (yych <= '=') goto yy205; - if (yych <= '>') goto yy203; - goto yy102; + if (yych <= ';') goto yy103; + if (yych <= '<') goto yy210; + if (yych <= '=') goto yy212; + if (yych <= '>') goto yy214; + goto yy103; yy121: YYDEBUG(121, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '*') goto yy197; - if (yych == '=') goto yy199; - goto yy102; + if (yych <= '<') goto yy103; + if (yych <= '=') goto yy206; + if (yych <= '>') goto yy204; + goto yy103; yy122: YYDEBUG(122, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '.') { - if (yych == '*') goto yy189; - goto yy102; - } else { - if (yych <= '/') goto yy191; - if (yych == '=') goto yy192; - goto yy102; - } + if (yych == '*') goto yy198; + if (yych == '=') goto yy200; + goto yy103; yy123: YYDEBUG(123, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy187; - goto yy102; + if (yych <= '.') { + if (yych == '*') goto yy190; + goto yy103; + } else { + if (yych <= '/') goto yy192; + if (yych == '=') goto yy193; + goto yy103; + } yy124: YYDEBUG(124, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '&') goto yy183; - if (yych == '=') goto yy185; - goto yy102; + if (yych == '=') goto yy188; + goto yy103; yy125: YYDEBUG(125, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy181; - if (yych == '|') goto yy179; - goto yy102; + if (yych == '&') goto yy184; + if (yych == '=') goto yy186; + goto yy103; yy126: YYDEBUG(126, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy177; - goto yy102; + if (yych == '=') goto yy182; + if (yych == '|') goto yy180; + goto yy103; yy127: YYDEBUG(127, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy175; - if (yych == 'r') goto yy175; - goto yy150; + if (yych == '=') goto yy178; + goto yy103; yy128: YYDEBUG(128, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy172; - if (yych == 'o') goto yy172; - goto yy150; + if (yych == 'R') goto yy176; + if (yych == 'r') goto yy176; + goto yy151; yy129: YYDEBUG(129, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '_') { - if (yych <= '@') goto yy102; - if (yych <= 'Z') goto yy169; - if (yych <= '^') goto yy102; - goto yy169; - } else { - if (yych <= '`') goto yy102; - if (yych <= 'z') goto yy169; - if (yych <= '~') goto yy102; - goto yy169; - } + if (yych == 'O') goto yy173; + if (yych == 'o') goto yy173; + goto yy151; yy130: YYDEBUG(130, *YYCURSOR); yych = *++YYCURSOR; - goto yy102; + if (yych <= '_') { + if (yych <= '@') goto yy103; + if (yych <= 'Z') goto yy170; + if (yych <= '^') goto yy103; + goto yy170; + } else { + if (yych <= '`') goto yy103; + if (yych <= 'z') goto yy170; + if (yych <= '~') goto yy103; + goto yy170; + } yy131: YYDEBUG(131, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + goto yy103; +yy132: YYDEBUG(132, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(133, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1549 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING); return '{'; } -#line 2659 "Zend/zend_language_scanner.c" -yy133: - YYDEBUG(133, *YYCURSOR); - ++YYCURSOR; +#line 2661 "Zend/zend_language_scanner.c" +yy134: YYDEBUG(134, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(135, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1561 "Zend/zend_language_scanner.l" { @@ -2669,33 +2671,33 @@ int lex_scan(zval *zendlval) } return '}'; } -#line 2673 "Zend/zend_language_scanner.c" -yy135: - YYDEBUG(135, *YYCURSOR); +#line 2675 "Zend/zend_language_scanner.c" +yy136: + YYDEBUG(136, *YYCURSOR); yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'E') { if (yych <= '9') { - if (yych == '.') goto yy151; - if (yych >= '0') goto yy154; + if (yych == '.') goto yy152; + if (yych >= '0') goto yy155; } else { - if (yych == 'B') goto yy162; - if (yych >= 'E') goto yy156; + if (yych == 'B') goto yy163; + if (yych >= 'E') goto yy157; } } else { if (yych <= 'b') { - if (yych == 'X') goto yy161; - if (yych >= 'b') goto yy162; + if (yych == 'X') goto yy162; + if (yych >= 'b') goto yy163; } else { if (yych <= 'e') { - if (yych >= 'e') goto yy156; + if (yych >= 'e') goto yy157; } else { - if (yych == 'x') goto yy161; + if (yych == 'x') goto yy162; } } } -yy136: - YYDEBUG(136, *YYCURSOR); +yy137: + YYDEBUG(137, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1614 "Zend/zend_language_scanner.l" { @@ -2736,33 +2738,33 @@ int lex_scan(zval *zendlval) } return T_LNUMBER; } -#line 2740 "Zend/zend_language_scanner.c" -yy137: - YYDEBUG(137, *YYCURSOR); +#line 2742 "Zend/zend_language_scanner.c" +yy138: + YYDEBUG(138, *YYCURSOR); yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { - if (yych == '.') goto yy151; - if (yych <= '/') goto yy136; - goto yy154; + if (yych == '.') goto yy152; + if (yych <= '/') goto yy137; + goto yy155; } else { if (yych <= 'E') { - if (yych <= 'D') goto yy136; - goto yy156; + if (yych <= 'D') goto yy137; + goto yy157; } else { - if (yych == 'e') goto yy156; - goto yy136; + if (yych == 'e') goto yy157; + goto yy137; } } -yy138: - YYDEBUG(138, *YYCURSOR); - yych = *++YYCURSOR; - goto yy150; yy139: YYDEBUG(139, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + goto yy151; yy140: YYDEBUG(140, *YYCURSOR); + ++YYCURSOR; +yy141: + YYDEBUG(141, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1860 "Zend/zend_language_scanner.l" { @@ -2793,12 +2795,12 @@ int lex_scan(zval *zendlval) return T_COMMENT; } -#line 2797 "Zend/zend_language_scanner.c" -yy141: - YYDEBUG(141, *YYCURSOR); - ++YYCURSOR; +#line 2799 "Zend/zend_language_scanner.c" yy142: YYDEBUG(142, *YYCURSOR); + ++YYCURSOR; +yy143: + YYDEBUG(143, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1928 "Zend/zend_language_scanner.l" { @@ -2868,12 +2870,12 @@ int lex_scan(zval *zendlval) } return T_CONSTANT_ENCAPSED_STRING; } -#line 2872 "Zend/zend_language_scanner.c" -yy143: - YYDEBUG(143, *YYCURSOR); - ++YYCURSOR; +#line 2874 "Zend/zend_language_scanner.c" yy144: YYDEBUG(144, *YYCURSOR); + ++YYCURSOR; +yy145: + YYDEBUG(145, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1997 "Zend/zend_language_scanner.l" { @@ -2916,22 +2918,22 @@ int lex_scan(zval *zendlval) BEGIN(ST_DOUBLE_QUOTES); return '"'; } -#line 2920 "Zend/zend_language_scanner.c" -yy145: - YYDEBUG(145, *YYCURSOR); - ++YYCURSOR; +#line 2922 "Zend/zend_language_scanner.c" +yy146: YYDEBUG(146, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(147, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 2087 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); return '`'; } -#line 2931 "Zend/zend_language_scanner.c" -yy147: - YYDEBUG(147, *YYCURSOR); - ++YYCURSOR; +#line 2933 "Zend/zend_language_scanner.c" +yy148: YYDEBUG(148, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(149, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 2349 "Zend/zend_language_scanner.l" { @@ -2942,32 +2944,32 @@ 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 2946 "Zend/zend_language_scanner.c" -yy149: - YYDEBUG(149, *YYCURSOR); +#line 2948 "Zend/zend_language_scanner.c" +yy150: + YYDEBUG(150, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy150: - YYDEBUG(150, *YYCURSOR); - if (yybm[0+yych] & 4) { - goto yy149; - } - goto yy87; yy151: YYDEBUG(151, *YYCURSOR); + if (yybm[0+yych] & 4) { + goto yy150; + } + goto yy88; +yy152: + YYDEBUG(152, *YYCURSOR); yyaccept = 3; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(152, *YYCURSOR); + YYDEBUG(153, *YYCURSOR); if (yybm[0+yych] & 8) { - goto yy151; + goto yy152; } - if (yych == 'E') goto yy156; - if (yych == 'e') goto yy156; -yy153: - YYDEBUG(153, *YYCURSOR); + if (yych == 'E') goto yy157; + if (yych == 'e') goto yy157; +yy154: + YYDEBUG(154, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1702 "Zend/zend_language_scanner.l" { @@ -2978,97 +2980,97 @@ int lex_scan(zval *zendlval) ZEND_ASSERT(end == yytext + yyleng); return T_DNUMBER; } -#line 2982 "Zend/zend_language_scanner.c" -yy154: - YYDEBUG(154, *YYCURSOR); +#line 2984 "Zend/zend_language_scanner.c" +yy155: + YYDEBUG(155, *YYCURSOR); yyaccept = 2; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(155, *YYCURSOR); + YYDEBUG(156, *YYCURSOR); if (yych <= '9') { - if (yych == '.') goto yy151; - if (yych <= '/') goto yy136; - goto yy154; + if (yych == '.') goto yy152; + if (yych <= '/') goto yy137; + goto yy155; } else { if (yych <= 'E') { - if (yych <= 'D') goto yy136; + if (yych <= 'D') goto yy137; } else { - if (yych != 'e') goto yy136; + if (yych != 'e') goto yy137; } } -yy156: - YYDEBUG(156, *YYCURSOR); +yy157: + YYDEBUG(157, *YYCURSOR); yych = *++YYCURSOR; if (yych <= ',') { - if (yych == '+') goto yy158; + if (yych == '+') goto yy159; } else { - if (yych <= '-') goto yy158; - if (yych <= '/') goto yy157; - if (yych <= '9') goto yy159; + if (yych <= '-') goto yy159; + if (yych <= '/') goto yy158; + if (yych <= '9') goto yy160; } -yy157: - YYDEBUG(157, *YYCURSOR); +yy158: + YYDEBUG(158, *YYCURSOR); YYCURSOR = YYMARKER; if (yyaccept <= 2) { if (yyaccept <= 1) { - if (yyaccept <= 0) { - goto yy87; + if (yyaccept == 0) { + goto yy88; } else { - goto yy102; + goto yy103; } } else { - goto yy136; + goto yy137; } } else { if (yyaccept <= 4) { - if (yyaccept <= 3) { - goto yy153; + if (yyaccept == 3) { + goto yy154; } else { - goto yy190; + goto yy191; } } else { - goto yy210; + goto yy211; } } -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); - yych = *++YYCURSOR; - if (yybm[0+yych] & 32) { - goto yy166; - } - goto yy157; + if (yych <= '/') goto yy154; + if (yych <= '9') goto yy160; + goto yy154; yy162: YYDEBUG(162, *YYCURSOR); yych = *++YYCURSOR; - if (yybm[0+yych] & 16) { - goto yy163; + if (yybm[0+yych] & 32) { + goto yy167; } - goto yy157; + goto yy158; yy163: YYDEBUG(163, *YYCURSOR); + yych = *++YYCURSOR; + if (yybm[0+yych] & 16) { + goto yy164; + } + goto yy158; +yy164: + YYDEBUG(164, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(164, *YYCURSOR); + YYDEBUG(165, *YYCURSOR); if (yybm[0+yych] & 16) { - goto yy163; + goto yy164; } - YYDEBUG(165, *YYCURSOR); + YYDEBUG(166, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1586 "Zend/zend_language_scanner.l" { @@ -3098,17 +3100,17 @@ int lex_scan(zval *zendlval) return T_DNUMBER; } } -#line 3102 "Zend/zend_language_scanner.c" -yy166: - YYDEBUG(166, *YYCURSOR); +#line 3104 "Zend/zend_language_scanner.c" +yy167: + YYDEBUG(167, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(167, *YYCURSOR); + YYDEBUG(168, *YYCURSOR); if (yybm[0+yych] & 32) { - goto yy166; + goto yy167; } - YYDEBUG(168, *YYCURSOR); + YYDEBUG(169, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1653 "Zend/zend_language_scanner.l" { @@ -3138,135 +3140,135 @@ int lex_scan(zval *zendlval) return T_DNUMBER; } } -#line 3142 "Zend/zend_language_scanner.c" -yy169: - YYDEBUG(169, *YYCURSOR); +#line 3144 "Zend/zend_language_scanner.c" +yy170: + YYDEBUG(170, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(170, *YYCURSOR); + YYDEBUG(171, *YYCURSOR); if (yych <= '^') { if (yych <= '9') { - if (yych >= '0') goto yy169; + if (yych >= '0') goto yy170; } else { - if (yych <= '@') goto yy171; - if (yych <= 'Z') goto yy169; + if (yych <= '@') goto yy172; + if (yych <= 'Z') goto yy170; } } else { if (yych <= '`') { - if (yych <= '_') goto yy169; + if (yych <= '_') goto yy170; } else { - if (yych <= 'z') goto yy169; - if (yych >= 0x7F) goto yy169; + if (yych <= 'z') goto yy170; + if (yych >= 0x7F) goto yy170; } } -yy171: - YYDEBUG(171, *YYCURSOR); +yy172: + YYDEBUG(172, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1831 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); return T_VARIABLE; } -#line 3172 "Zend/zend_language_scanner.c" -yy172: - YYDEBUG(172, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy173; - if (yych != 'r') goto yy150; +#line 3174 "Zend/zend_language_scanner.c" 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 yy149; + goto yy150; } - YYDEBUG(174, *YYCURSOR); + YYDEBUG(175, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1532 "Zend/zend_language_scanner.l" { return T_LOGICAL_XOR; } -#line 3190 "Zend/zend_language_scanner.c" -yy175: - YYDEBUG(175, *YYCURSOR); +#line 3192 "Zend/zend_language_scanner.c" +yy176: + YYDEBUG(176, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(176, *YYCURSOR); + YYDEBUG(177, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1524 "Zend/zend_language_scanner.l" { return T_LOGICAL_OR; } -#line 3203 "Zend/zend_language_scanner.c" -yy177: - YYDEBUG(177, *YYCURSOR); - ++YYCURSOR; +#line 3205 "Zend/zend_language_scanner.c" +yy178: YYDEBUG(178, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(179, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1512 "Zend/zend_language_scanner.l" { return T_XOR_EQUAL; } -#line 3213 "Zend/zend_language_scanner.c" -yy179: - YYDEBUG(179, *YYCURSOR); - ++YYCURSOR; +#line 3215 "Zend/zend_language_scanner.c" +yy180: YYDEBUG(180, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(181, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1516 "Zend/zend_language_scanner.l" { return T_BOOLEAN_OR; } -#line 3223 "Zend/zend_language_scanner.c" -yy181: - YYDEBUG(181, *YYCURSOR); - ++YYCURSOR; +#line 3225 "Zend/zend_language_scanner.c" +yy182: YYDEBUG(182, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(183, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1508 "Zend/zend_language_scanner.l" { return T_OR_EQUAL; } -#line 3233 "Zend/zend_language_scanner.c" -yy183: - YYDEBUG(183, *YYCURSOR); - ++YYCURSOR; +#line 3235 "Zend/zend_language_scanner.c" +yy184: YYDEBUG(184, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(185, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1520 "Zend/zend_language_scanner.l" { return T_BOOLEAN_AND; } -#line 3243 "Zend/zend_language_scanner.c" -yy185: - YYDEBUG(185, *YYCURSOR); - ++YYCURSOR; +#line 3245 "Zend/zend_language_scanner.c" +yy186: YYDEBUG(186, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(187, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1504 "Zend/zend_language_scanner.l" { return T_AND_EQUAL; } -#line 3253 "Zend/zend_language_scanner.c" -yy187: - YYDEBUG(187, *YYCURSOR); - ++YYCURSOR; +#line 3255 "Zend/zend_language_scanner.c" +yy188: YYDEBUG(188, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(189, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1492 "Zend/zend_language_scanner.l" { return T_MOD_EQUAL; } -#line 3263 "Zend/zend_language_scanner.c" -yy189: - YYDEBUG(189, *YYCURSOR); - yyaccept = 4; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '*') goto yy194; +#line 3265 "Zend/zend_language_scanner.c" yy190: YYDEBUG(190, *YYCURSOR); + yyaccept = 4; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '*') goto yy195; +yy191: + YYDEBUG(191, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1889 "Zend/zend_language_scanner.l" { @@ -3301,249 +3303,249 @@ int lex_scan(zval *zendlval) return T_COMMENT; } -#line 3305 "Zend/zend_language_scanner.c" -yy191: - YYDEBUG(191, *YYCURSOR); - yych = *++YYCURSOR; - goto yy140; +#line 3307 "Zend/zend_language_scanner.c" yy192: YYDEBUG(192, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + goto yy141; +yy193: YYDEBUG(193, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(194, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1484 "Zend/zend_language_scanner.l" { return T_DIV_EQUAL; } -#line 3319 "Zend/zend_language_scanner.c" -yy194: - YYDEBUG(194, *YYCURSOR); +#line 3321 "Zend/zend_language_scanner.c" +yy195: + YYDEBUG(195, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 64) { - goto yy195; + goto yy196; } - goto yy157; -yy195: - YYDEBUG(195, *YYCURSOR); + goto yy158; +yy196: + YYDEBUG(196, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(196, *YYCURSOR); + YYDEBUG(197, *YYCURSOR); if (yybm[0+yych] & 64) { - goto yy195; + goto yy196; } - goto yy190; -yy197: - YYDEBUG(197, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy201; + goto yy191; +yy198: YYDEBUG(198, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy202; + YYDEBUG(199, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1476 "Zend/zend_language_scanner.l" { return T_POW; } -#line 3347 "Zend/zend_language_scanner.c" -yy199: - YYDEBUG(199, *YYCURSOR); - ++YYCURSOR; +#line 3349 "Zend/zend_language_scanner.c" +yy200: YYDEBUG(200, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(201, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1472 "Zend/zend_language_scanner.l" { return T_MUL_EQUAL; } -#line 3357 "Zend/zend_language_scanner.c" -yy201: - YYDEBUG(201, *YYCURSOR); - ++YYCURSOR; +#line 3359 "Zend/zend_language_scanner.c" +yy202: YYDEBUG(202, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(203, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1480 "Zend/zend_language_scanner.l" { return T_POW_EQUAL; } -#line 3367 "Zend/zend_language_scanner.c" -yy203: - YYDEBUG(203, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy207; +#line 3369 "Zend/zend_language_scanner.c" +yy204: YYDEBUG(204, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy208; + YYDEBUG(205, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1540 "Zend/zend_language_scanner.l" { return T_SR; } -#line 3378 "Zend/zend_language_scanner.c" -yy205: - YYDEBUG(205, *YYCURSOR); - ++YYCURSOR; +#line 3380 "Zend/zend_language_scanner.c" +yy206: YYDEBUG(206, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(207, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1460 "Zend/zend_language_scanner.l" { return T_IS_GREATER_OR_EQUAL; } -#line 3388 "Zend/zend_language_scanner.c" -yy207: - YYDEBUG(207, *YYCURSOR); - ++YYCURSOR; +#line 3390 "Zend/zend_language_scanner.c" +yy208: YYDEBUG(208, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(209, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1500 "Zend/zend_language_scanner.l" { return T_SR_EQUAL; } -#line 3398 "Zend/zend_language_scanner.c" -yy209: - YYDEBUG(209, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ';') goto yy210; - if (yych <= '<') goto yy217; - if (yych <= '=') goto yy215; +#line 3400 "Zend/zend_language_scanner.c" yy210: YYDEBUG(210, *YYCURSOR); + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ';') goto yy211; + if (yych <= '<') goto yy218; + if (yych <= '=') goto yy216; +yy211: + YYDEBUG(211, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1536 "Zend/zend_language_scanner.l" { return T_SL; } -#line 3413 "Zend/zend_language_scanner.c" -yy211: - YYDEBUG(211, *YYCURSOR); - ++YYCURSOR; +#line 3415 "Zend/zend_language_scanner.c" +yy212: YYDEBUG(212, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(213, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1456 "Zend/zend_language_scanner.l" { return T_IS_SMALLER_OR_EQUAL; } -#line 3423 "Zend/zend_language_scanner.c" -yy213: - YYDEBUG(213, *YYCURSOR); - ++YYCURSOR; +#line 3425 "Zend/zend_language_scanner.c" yy214: YYDEBUG(214, *YYCURSOR); + ++YYCURSOR; +yy215: + YYDEBUG(215, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1452 "Zend/zend_language_scanner.l" { return T_IS_NOT_EQUAL; } -#line 3434 "Zend/zend_language_scanner.c" -yy215: - YYDEBUG(215, *YYCURSOR); - ++YYCURSOR; +#line 3436 "Zend/zend_language_scanner.c" +yy216: YYDEBUG(216, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(217, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1496 "Zend/zend_language_scanner.l" { return T_SL_EQUAL; } -#line 3444 "Zend/zend_language_scanner.c" -yy217: - YYDEBUG(217, *YYCURSOR); +#line 3446 "Zend/zend_language_scanner.c" +yy218: + YYDEBUG(218, *YYCURSOR); ++YYCURSOR; YYFILL(2); yych = *YYCURSOR; - YYDEBUG(218, *YYCURSOR); + YYDEBUG(219, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy217; + goto yy218; } if (yych <= 'Z') { if (yych <= '&') { - if (yych == '"') goto yy222; - goto yy157; + if (yych == '"') goto yy223; + goto yy158; } else { - if (yych <= '\'') goto yy221; - if (yych <= '@') goto yy157; + if (yych <= '\'') goto yy222; + if (yych <= '@') goto yy158; } } else { if (yych <= '`') { - if (yych != '_') goto yy157; + if (yych != '_') goto yy158; } else { - if (yych <= 'z') goto yy219; - if (yych <= '~') goto yy157; + if (yych <= 'z') goto yy220; + if (yych <= '~') goto yy158; } } -yy219: - YYDEBUG(219, *YYCURSOR); +yy220: + YYDEBUG(220, *YYCURSOR); ++YYCURSOR; YYFILL(2); yych = *YYCURSOR; - YYDEBUG(220, *YYCURSOR); + YYDEBUG(221, *YYCURSOR); if (yych <= '@') { if (yych <= '\f') { - if (yych == '\n') goto yy226; - goto yy157; + if (yych == '\n') goto yy227; + goto yy158; } else { - if (yych <= '\r') goto yy228; - if (yych <= '/') goto yy157; - if (yych <= '9') goto yy219; - goto yy157; + if (yych <= '\r') goto yy229; + if (yych <= '/') goto yy158; + if (yych <= '9') goto yy220; + goto yy158; } } else { if (yych <= '_') { - if (yych <= 'Z') goto yy219; - if (yych <= '^') goto yy157; - goto yy219; + if (yych <= 'Z') goto yy220; + if (yych <= '^') goto yy158; + goto yy220; } else { - if (yych <= '`') goto yy157; - if (yych <= 'z') goto yy219; - if (yych <= '~') goto yy157; - goto yy219; + if (yych <= '`') goto yy158; + if (yych <= 'z') goto yy220; + if (yych <= '~') goto yy158; + goto yy220; } } -yy221: - YYDEBUG(221, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\'') goto yy157; - if (yych <= '/') goto yy230; - if (yych <= '9') goto yy157; - goto yy230; yy222: YYDEBUG(222, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '"') goto yy157; - if (yych <= '/') goto yy224; - if (yych <= '9') goto yy157; - goto yy224; + if (yych == '\'') goto yy158; + if (yych <= '/') goto yy231; + if (yych <= '9') goto yy158; + goto yy231; yy223: YYDEBUG(223, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '"') goto yy158; + if (yych <= '/') goto yy225; + if (yych <= '9') goto yy158; + goto yy225; +yy224: + YYDEBUG(224, *YYCURSOR); ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; -yy224: - YYDEBUG(224, *YYCURSOR); +yy225: + YYDEBUG(225, *YYCURSOR); if (yych <= 'Z') { if (yych <= '/') { - if (yych != '"') goto yy157; + if (yych != '"') goto yy158; } else { - if (yych <= '9') goto yy223; - if (yych <= '@') goto yy157; - goto yy223; + if (yych <= '9') goto yy224; + if (yych <= '@') goto yy158; + goto yy224; } } else { if (yych <= '`') { - if (yych == '_') goto yy223; - goto yy157; + if (yych == '_') goto yy224; + goto yy158; } else { - if (yych <= 'z') goto yy223; - if (yych <= '~') goto yy157; - goto yy223; + if (yych <= 'z') goto yy224; + if (yych <= '~') goto yy158; + goto yy224; } } -yy225: - YYDEBUG(225, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy226; - if (yych == '\r') goto yy228; - goto yy157; yy226: YYDEBUG(226, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych == '\n') goto yy227; + if (yych == '\r') goto yy229; + goto yy158; yy227: YYDEBUG(227, *YYCURSOR); + ++YYCURSOR; +yy228: + YYDEBUG(228, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 2039 "Zend/zend_language_scanner.l" { @@ -3592,3272 +3594,3272 @@ int lex_scan(zval *zendlval) return T_START_HEREDOC; } -#line 3596 "Zend/zend_language_scanner.c" -yy228: - YYDEBUG(228, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy226; - goto yy227; +#line 3598 "Zend/zend_language_scanner.c" yy229: YYDEBUG(229, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\n') goto yy227; + goto yy228; +yy230: + YYDEBUG(230, *YYCURSOR); ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; -yy230: - YYDEBUG(230, *YYCURSOR); +yy231: + YYDEBUG(231, *YYCURSOR); if (yych <= 'Z') { if (yych <= '/') { - if (yych == '\'') goto yy225; - goto yy157; + if (yych == '\'') goto yy226; + goto yy158; } else { - if (yych <= '9') goto yy229; - if (yych <= '@') goto yy157; - goto yy229; + if (yych <= '9') goto yy230; + if (yych <= '@') goto yy158; + goto yy230; } } else { if (yych <= '`') { - if (yych == '_') goto yy229; - goto yy157; + if (yych == '_') goto yy230; + goto yy158; } else { - if (yych <= 'z') goto yy229; - if (yych <= '~') goto yy157; - goto yy229; + if (yych <= 'z') goto yy230; + if (yych <= '~') goto yy158; + goto yy230; } } -yy231: - YYDEBUG(231, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '=') goto yy214; +yy232: YYDEBUG(232, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych != '=') goto yy215; YYDEBUG(233, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(234, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1444 "Zend/zend_language_scanner.l" { return T_IS_NOT_IDENTICAL; } -#line 3640 "Zend/zend_language_scanner.c" -yy234: - YYDEBUG(234, *YYCURSOR); - ++YYCURSOR; +#line 3642 "Zend/zend_language_scanner.c" +yy235: YYDEBUG(235, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(236, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1464 "Zend/zend_language_scanner.l" { return T_PLUS_EQUAL; } -#line 3650 "Zend/zend_language_scanner.c" -yy236: - YYDEBUG(236, *YYCURSOR); - ++YYCURSOR; +#line 3652 "Zend/zend_language_scanner.c" +yy237: YYDEBUG(237, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(238, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1432 "Zend/zend_language_scanner.l" { return T_INC; } -#line 3660 "Zend/zend_language_scanner.c" -yy238: - YYDEBUG(238, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy239; - if (yych != 's') goto yy150; +#line 3662 "Zend/zend_language_scanner.c" yy239: YYDEBUG(239, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy240; - if (yych != 't') goto yy150; + if (yych == 'S') goto yy240; + if (yych != 's') goto yy151; yy240: YYDEBUG(240, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy241; + if (yych != 't') goto yy151; +yy241: + YYDEBUG(241, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(241, *YYCURSOR); + YYDEBUG(242, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1420 "Zend/zend_language_scanner.l" { return T_LIST; } -#line 3683 "Zend/zend_language_scanner.c" -yy242: - YYDEBUG(242, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy246; +#line 3685 "Zend/zend_language_scanner.c" +yy243: YYDEBUG(243, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy247; + YYDEBUG(244, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1448 "Zend/zend_language_scanner.l" { return T_IS_EQUAL; } -#line 3694 "Zend/zend_language_scanner.c" -yy244: - YYDEBUG(244, *YYCURSOR); - ++YYCURSOR; +#line 3696 "Zend/zend_language_scanner.c" +yy245: YYDEBUG(245, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(246, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1416 "Zend/zend_language_scanner.l" { return T_DOUBLE_ARROW; } -#line 3704 "Zend/zend_language_scanner.c" -yy246: - YYDEBUG(246, *YYCURSOR); - ++YYCURSOR; +#line 3706 "Zend/zend_language_scanner.c" +yy247: YYDEBUG(247, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(248, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1440 "Zend/zend_language_scanner.l" { return T_IS_IDENTICAL; } -#line 3714 "Zend/zend_language_scanner.c" -yy248: - YYDEBUG(248, *YYCURSOR); +#line 3716 "Zend/zend_language_scanner.c" +yy249: + YYDEBUG(249, *YYCURSOR); yych = *++YYCURSOR; YYDEBUG(-1, yych); switch (yych) { case 'C': - case 'c': goto yy250; + case 'c': goto yy251; case 'D': - case 'd': goto yy255; + case 'd': goto yy256; case 'F': - case 'f': goto yy252; + case 'f': goto yy253; case 'H': - case 'h': goto yy249; + case 'h': goto yy250; case 'L': - case 'l': goto yy254; + case 'l': goto yy255; case 'M': - case 'm': goto yy253; + case 'm': goto yy254; case 'N': - case 'n': goto yy256; + case 'n': goto yy257; case 'T': - case 't': goto yy251; - default: goto yy150; + case 't': goto yy252; + default: goto yy151; } -yy249: - YYDEBUG(249, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy317; - if (yych == 'a') goto yy317; - goto yy150; yy250: YYDEBUG(250, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy310; - if (yych == 'l') goto yy310; - goto yy150; + if (yych == 'A') goto yy318; + if (yych == 'a') goto yy318; + goto yy151; yy251: YYDEBUG(251, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy303; - if (yych == 'r') goto yy303; - goto yy150; + if (yych == 'L') goto yy311; + if (yych == 'l') goto yy311; + goto yy151; yy252: YYDEBUG(252, *YYCURSOR); yych = *++YYCURSOR; + if (yych == 'R') goto yy304; + if (yych == 'r') goto yy304; + goto yy151; +yy253: + YYDEBUG(253, *YYCURSOR); + yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'I') goto yy287; - if (yych <= 'T') goto yy150; - goto yy288; + if (yych == 'I') goto yy288; + if (yych <= 'T') goto yy151; + goto yy289; } else { if (yych <= 'i') { - if (yych <= 'h') goto yy150; - goto yy287; + if (yych <= 'h') goto yy151; + goto yy288; } else { - if (yych == 'u') goto yy288; - goto yy150; + if (yych == 'u') goto yy289; + goto yy151; } } -yy253: - YYDEBUG(253, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy279; - if (yych == 'e') goto yy279; - goto yy150; yy254: YYDEBUG(254, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy273; - if (yych == 'i') goto yy273; - goto yy150; + if (yych == 'E') goto yy280; + if (yych == 'e') goto yy280; + goto yy151; yy255: YYDEBUG(255, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy268; - if (yych == 'i') goto yy268; - goto yy150; + if (yych == 'I') goto yy274; + if (yych == 'i') goto yy274; + goto yy151; yy256: YYDEBUG(256, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy257; - if (yych != 'a') goto yy150; + if (yych == 'I') goto yy269; + if (yych == 'i') goto yy269; + goto yy151; yy257: YYDEBUG(257, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy258; - if (yych != 'm') goto yy150; + if (yych == 'A') goto yy258; + if (yych != 'a') goto yy151; yy258: YYDEBUG(258, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy259; - if (yych != 'e') goto yy150; + if (yych == 'M') goto yy259; + if (yych != 'm') goto yy151; yy259: YYDEBUG(259, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy260; - if (yych != 's') goto yy150; + if (yych == 'E') goto yy260; + if (yych != 'e') goto yy151; yy260: YYDEBUG(260, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy261; - if (yych != 'p') goto yy150; + if (yych == 'S') goto yy261; + if (yych != 's') goto yy151; yy261: YYDEBUG(261, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy262; - if (yych != 'a') goto yy150; + if (yych == 'P') goto yy262; + if (yych != 'p') goto yy151; yy262: YYDEBUG(262, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy263; - if (yych != 'c') goto yy150; + if (yych == 'A') goto yy263; + if (yych != 'a') goto yy151; yy263: YYDEBUG(263, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy264; - if (yych != 'e') goto yy150; + if (yych == 'C') goto yy264; + if (yych != 'c') goto yy151; yy264: YYDEBUG(264, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy150; + if (yych == 'E') goto yy265; + if (yych != 'e') goto yy151; +yy265: YYDEBUG(265, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy150; + if (yych != '_') goto yy151; YYDEBUG(266, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy151; + YYDEBUG(267, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(267, *YYCURSOR); + YYDEBUG(268, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1739 "Zend/zend_language_scanner.l" { return T_NS_C; } -#line 3848 "Zend/zend_language_scanner.c" -yy268: - YYDEBUG(268, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy269; - if (yych != 'r') goto yy150; +#line 3850 "Zend/zend_language_scanner.c" yy269: YYDEBUG(269, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy150; + if (yych == 'R') goto yy270; + if (yych != 'r') goto yy151; +yy270: YYDEBUG(270, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy150; + if (yych != '_') goto yy151; YYDEBUG(271, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy151; + YYDEBUG(272, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(272, *YYCURSOR); + YYDEBUG(273, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1735 "Zend/zend_language_scanner.l" { return T_DIR; } -#line 3872 "Zend/zend_language_scanner.c" -yy273: - YYDEBUG(273, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy274; - if (yych != 'n') goto yy150; +#line 3874 "Zend/zend_language_scanner.c" yy274: YYDEBUG(274, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy275; - if (yych != 'e') goto yy150; + if (yych == 'N') goto yy275; + if (yych != 'n') goto yy151; yy275: YYDEBUG(275, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy150; + if (yych == 'E') goto yy276; + if (yych != 'e') goto yy151; +yy276: YYDEBUG(276, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy150; + if (yych != '_') goto yy151; YYDEBUG(277, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy151; + YYDEBUG(278, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(278, *YYCURSOR); + YYDEBUG(279, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1727 "Zend/zend_language_scanner.l" { return T_LINE; } -#line 3901 "Zend/zend_language_scanner.c" -yy279: - YYDEBUG(279, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy280; - if (yych != 't') goto yy150; +#line 3903 "Zend/zend_language_scanner.c" yy280: YYDEBUG(280, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy281; - if (yych != 'h') goto yy150; + if (yych == 'T') goto yy281; + if (yych != 't') goto yy151; yy281: YYDEBUG(281, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy282; - if (yych != 'o') goto yy150; + if (yych == 'H') goto yy282; + if (yych != 'h') goto yy151; yy282: YYDEBUG(282, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy283; - if (yych != 'd') goto yy150; + if (yych == 'O') goto yy283; + if (yych != 'o') goto yy151; yy283: YYDEBUG(283, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy150; + if (yych == 'D') goto yy284; + if (yych != 'd') goto yy151; +yy284: YYDEBUG(284, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy150; + if (yych != '_') goto yy151; YYDEBUG(285, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy151; + YYDEBUG(286, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(286, *YYCURSOR); + YYDEBUG(287, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1723 "Zend/zend_language_scanner.l" { return T_METHOD_C; } -#line 3940 "Zend/zend_language_scanner.c" -yy287: - YYDEBUG(287, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy298; - if (yych == 'l') goto yy298; - goto yy150; +#line 3942 "Zend/zend_language_scanner.c" yy288: YYDEBUG(288, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy289; - if (yych != 'n') goto yy150; + if (yych == 'L') goto yy299; + if (yych == 'l') goto yy299; + goto yy151; yy289: YYDEBUG(289, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy290; - if (yych != 'c') goto yy150; + if (yych == 'N') goto yy290; + if (yych != 'n') goto yy151; yy290: YYDEBUG(290, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy291; - if (yych != 't') goto yy150; + if (yych == 'C') goto yy291; + if (yych != 'c') goto yy151; yy291: YYDEBUG(291, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy292; - if (yych != 'i') goto yy150; + if (yych == 'T') goto yy292; + if (yych != 't') goto yy151; yy292: YYDEBUG(292, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy293; - if (yych != 'o') goto yy150; + if (yych == 'I') goto yy293; + if (yych != 'i') goto yy151; yy293: YYDEBUG(293, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy294; - if (yych != 'n') goto yy150; + if (yych == 'O') goto yy294; + if (yych != 'o') goto yy151; yy294: YYDEBUG(294, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy150; + if (yych == 'N') goto yy295; + if (yych != 'n') goto yy151; +yy295: YYDEBUG(295, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy150; + if (yych != '_') goto yy151; YYDEBUG(296, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy151; + YYDEBUG(297, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(297, *YYCURSOR); + YYDEBUG(298, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1719 "Zend/zend_language_scanner.l" { return T_FUNC_C; } -#line 3995 "Zend/zend_language_scanner.c" -yy298: - YYDEBUG(298, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy299; - if (yych != 'e') goto yy150; +#line 3997 "Zend/zend_language_scanner.c" yy299: YYDEBUG(299, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy150; + if (yych == 'E') goto yy300; + if (yych != 'e') goto yy151; +yy300: YYDEBUG(300, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy150; + if (yych != '_') goto yy151; YYDEBUG(301, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy151; + YYDEBUG(302, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(302, *YYCURSOR); + YYDEBUG(303, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1731 "Zend/zend_language_scanner.l" { return T_FILE; } -#line 4019 "Zend/zend_language_scanner.c" -yy303: - YYDEBUG(303, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy304; - if (yych != 'a') goto yy150; +#line 4021 "Zend/zend_language_scanner.c" yy304: YYDEBUG(304, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy305; - if (yych != 'i') goto yy150; + if (yych == 'A') goto yy305; + if (yych != 'a') goto yy151; yy305: YYDEBUG(305, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy306; - if (yych != 't') goto yy150; + if (yych == 'I') goto yy306; + if (yych != 'i') goto yy151; yy306: YYDEBUG(306, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy150; + if (yych == 'T') goto yy307; + if (yych != 't') goto yy151; +yy307: YYDEBUG(307, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy150; + if (yych != '_') goto yy151; YYDEBUG(308, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy151; + YYDEBUG(309, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(309, *YYCURSOR); + YYDEBUG(310, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1715 "Zend/zend_language_scanner.l" { return T_TRAIT_C; } -#line 4053 "Zend/zend_language_scanner.c" -yy310: - YYDEBUG(310, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy311; - if (yych != 'a') goto yy150; +#line 4055 "Zend/zend_language_scanner.c" yy311: YYDEBUG(311, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy312; - if (yych != 's') goto yy150; + if (yych == 'A') goto yy312; + if (yych != 'a') goto yy151; yy312: YYDEBUG(312, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'S') goto yy313; - if (yych != 's') goto yy150; + if (yych != 's') goto yy151; yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy150; + if (yych == 'S') goto yy314; + if (yych != 's') goto yy151; +yy314: YYDEBUG(314, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy150; + if (yych != '_') goto yy151; YYDEBUG(315, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy151; + YYDEBUG(316, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(316, *YYCURSOR); + YYDEBUG(317, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1711 "Zend/zend_language_scanner.l" { return T_CLASS_C; } -#line 4087 "Zend/zend_language_scanner.c" -yy317: - YYDEBUG(317, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy318; - if (yych != 'l') goto yy150; +#line 4089 "Zend/zend_language_scanner.c" yy318: YYDEBUG(318, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy319; - if (yych != 't') goto yy150; + if (yych == 'L') goto yy319; + if (yych != 'l') goto yy151; yy319: YYDEBUG(319, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy150; + if (yych == 'T') goto yy320; + if (yych != 't') goto yy151; +yy320: YYDEBUG(320, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy321; - if (yych != 'c') goto yy150; -yy321: + if (yych != '_') goto yy151; YYDEBUG(321, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy322; - if (yych != 'o') goto yy150; + if (yych == 'C') goto yy322; + if (yych != 'c') goto yy151; yy322: YYDEBUG(322, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy323; - if (yych != 'm') goto yy150; + if (yych == 'O') goto yy323; + if (yych != 'o') goto yy151; yy323: YYDEBUG(323, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy324; - if (yych != 'p') goto yy150; + if (yych == 'M') goto yy324; + if (yych != 'm') goto yy151; yy324: YYDEBUG(324, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy325; - if (yych != 'i') goto yy150; + if (yych == 'P') goto yy325; + if (yych != 'p') goto yy151; yy325: YYDEBUG(325, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy326; - if (yych != 'l') goto yy150; + if (yych == 'I') goto yy326; + if (yych != 'i') goto yy151; yy326: YYDEBUG(326, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy327; - if (yych != 'e') goto yy150; + if (yych == 'L') goto yy327; + if (yych != 'l') goto yy151; yy327: YYDEBUG(327, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy328; - if (yych != 'r') goto yy150; + if (yych == 'E') goto yy328; + if (yych != 'e') goto yy151; yy328: YYDEBUG(328, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy329; + if (yych != 'r') goto yy151; +yy329: + YYDEBUG(329, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(329, *YYCURSOR); + YYDEBUG(330, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1384 "Zend/zend_language_scanner.l" { return T_HALT_COMPILER; } -#line 4153 "Zend/zend_language_scanner.c" -yy330: - YYDEBUG(330, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy334; - if (yych == 's') goto yy334; - goto yy150; +#line 4155 "Zend/zend_language_scanner.c" yy331: YYDEBUG(331, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy332; - if (yych != 'e') goto yy150; + if (yych == 'S') goto yy335; + if (yych == 's') goto yy335; + goto yy151; yy332: YYDEBUG(332, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy333; + if (yych != 'e') goto yy151; +yy333: + YYDEBUG(333, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(333, *YYCURSOR); + YYDEBUG(334, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1364 "Zend/zend_language_scanner.l" { return T_USE; } -#line 4177 "Zend/zend_language_scanner.c" -yy334: - YYDEBUG(334, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy335; - if (yych != 'e') goto yy150; +#line 4179 "Zend/zend_language_scanner.c" yy335: YYDEBUG(335, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy336; - if (yych != 't') goto yy150; + if (yych == 'E') goto yy336; + if (yych != 'e') goto yy151; yy336: YYDEBUG(336, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy337; + if (yych != 't') goto yy151; +yy337: + YYDEBUG(337, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(337, *YYCURSOR); + YYDEBUG(338, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1412 "Zend/zend_language_scanner.l" { return T_UNSET; } -#line 4200 "Zend/zend_language_scanner.c" -yy338: - YYDEBUG(338, *YYCURSOR); +#line 4202 "Zend/zend_language_scanner.c" +yy339: + YYDEBUG(339, *YYCURSOR); ++YYCURSOR; YYFILL(7); yych = *YYCURSOR; -yy339: - YYDEBUG(339, *YYCURSOR); +yy340: + YYDEBUG(340, *YYCURSOR); if (yych <= 'S') { if (yych <= 'D') { if (yych <= ' ') { - if (yych == '\t') goto yy338; - if (yych <= 0x1F) goto yy157; - goto yy338; + if (yych == '\t') goto yy339; + if (yych <= 0x1F) goto yy158; + goto yy339; } else { if (yych <= 'A') { - if (yych <= '@') goto yy157; - goto yy343; + if (yych <= '@') goto yy158; + goto yy344; } else { - if (yych <= 'B') goto yy341; - if (yych <= 'C') goto yy157; - goto yy346; + if (yych <= 'B') goto yy342; + if (yych <= 'C') goto yy158; + goto yy347; } } } else { if (yych <= 'I') { - if (yych == 'F') goto yy347; - if (yych <= 'H') goto yy157; - goto yy348; + if (yych == 'F') goto yy348; + if (yych <= 'H') goto yy158; + goto yy349; } else { if (yych <= 'O') { - if (yych <= 'N') goto yy157; - goto yy342; + if (yych <= 'N') goto yy158; + goto yy343; } else { - if (yych <= 'Q') goto yy157; - if (yych <= 'R') goto yy345; - goto yy344; + if (yych <= 'Q') goto yy158; + if (yych <= 'R') goto yy346; + goto yy345; } } } } else { if (yych <= 'f') { if (yych <= 'a') { - if (yych == 'U') goto yy340; - if (yych <= '`') goto yy157; - goto yy343; + if (yych == 'U') goto yy341; + if (yych <= '`') goto yy158; + goto yy344; } else { if (yych <= 'c') { - if (yych <= 'b') goto yy341; - goto yy157; + if (yych <= 'b') goto yy342; + goto yy158; } else { - if (yych <= 'd') goto yy346; - if (yych <= 'e') goto yy157; - goto yy347; + if (yych <= 'd') goto yy347; + if (yych <= 'e') goto yy158; + goto yy348; } } } else { if (yych <= 'q') { if (yych <= 'i') { - if (yych <= 'h') goto yy157; - goto yy348; + if (yych <= 'h') goto yy158; + goto yy349; } else { - if (yych == 'o') goto yy342; - goto yy157; + if (yych == 'o') goto yy343; + goto yy158; } } else { if (yych <= 's') { - if (yych <= 'r') goto yy345; - goto yy344; + if (yych <= 'r') goto yy346; + goto yy345; } else { - if (yych != 'u') goto yy157; + if (yych != 'u') goto yy158; } } } } -yy340: - YYDEBUG(340, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy407; - if (yych == 'n') goto yy407; - goto yy157; yy341: YYDEBUG(341, *YYCURSOR); yych = *++YYCURSOR; + if (yych == 'N') goto yy408; + if (yych == 'n') goto yy408; + goto yy158; +yy342: + YYDEBUG(342, *YYCURSOR); + yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'I') goto yy394; - if (yych <= 'N') goto yy157; - goto yy395; + if (yych == 'I') goto yy395; + if (yych <= 'N') goto yy158; + goto yy396; } else { if (yych <= 'i') { - if (yych <= 'h') goto yy157; - goto yy394; + if (yych <= 'h') goto yy158; + goto yy395; } else { - if (yych == 'o') goto yy395; - goto yy157; + if (yych == 'o') goto yy396; + goto yy158; } } -yy342: - YYDEBUG(342, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy386; - if (yych == 'b') goto yy386; - goto yy157; yy343: YYDEBUG(343, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy379; - if (yych == 'r') goto yy379; - goto yy157; + if (yych == 'B') goto yy387; + if (yych == 'b') goto yy387; + goto yy158; yy344: YYDEBUG(344, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy371; - if (yych == 't') goto yy371; - goto yy157; + if (yych == 'R') goto yy380; + if (yych == 'r') goto yy380; + goto yy158; yy345: YYDEBUG(345, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy369; - if (yych == 'e') goto yy369; - goto yy157; + if (yych == 'T') goto yy372; + if (yych == 't') goto yy372; + goto yy158; yy346: YYDEBUG(346, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy365; - if (yych == 'o') goto yy365; - goto yy157; + if (yych == 'E') goto yy370; + if (yych == 'e') goto yy370; + goto yy158; yy347: YYDEBUG(347, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy358; - if (yych == 'l') goto yy358; - goto yy157; + if (yych == 'O') goto yy366; + if (yych == 'o') goto yy366; + goto yy158; yy348: YYDEBUG(348, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy349; - if (yych != 'n') goto yy157; + if (yych == 'L') goto yy359; + if (yych == 'l') goto yy359; + goto yy158; yy349: YYDEBUG(349, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy350; - if (yych != 't') goto yy157; + if (yych == 'N') goto yy350; + if (yych != 'n') goto yy158; yy350: YYDEBUG(350, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy351; - if (yych != 'e') goto yy353; + if (yych == 'T') goto yy351; + if (yych != 't') goto yy158; yy351: YYDEBUG(351, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy356; - if (yych == 'g') goto yy356; - goto yy157; + if (yych == 'E') goto yy352; + if (yych != 'e') goto yy354; yy352: YYDEBUG(352, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy357; + if (yych == 'g') goto yy357; + goto yy158; +yy353: + YYDEBUG(353, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy353: - YYDEBUG(353, *YYCURSOR); +yy354: + YYDEBUG(354, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy352; - goto yy157; + if (yych == '\t') goto yy353; + goto yy158; } else { - if (yych <= ' ') goto yy352; - if (yych != ')') goto yy157; + if (yych <= ' ') goto yy353; + if (yych != ')') goto yy158; } - YYDEBUG(354, *YYCURSOR); - ++YYCURSOR; YYDEBUG(355, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(356, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1312 "Zend/zend_language_scanner.l" { return T_INT_CAST; } -#line 4376 "Zend/zend_language_scanner.c" -yy356: - YYDEBUG(356, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy357; - if (yych != 'e') goto yy157; +#line 4378 "Zend/zend_language_scanner.c" yy357: YYDEBUG(357, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy352; - if (yych == 'r') goto yy352; - goto yy157; + if (yych == 'E') goto yy358; + if (yych != 'e') goto yy158; yy358: YYDEBUG(358, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy359; - if (yych != 'o') goto yy157; + if (yych == 'R') goto yy353; + if (yych == 'r') goto yy353; + goto yy158; yy359: YYDEBUG(359, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy360; - if (yych != 'a') goto yy157; + if (yych == 'O') goto yy360; + if (yych != 'o') goto yy158; yy360: YYDEBUG(360, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy361; - if (yych != 't') goto yy157; + if (yych == 'A') goto yy361; + if (yych != 'a') goto yy158; yy361: YYDEBUG(361, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy362; + if (yych != 't') goto yy158; +yy362: + YYDEBUG(362, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(362, *YYCURSOR); + YYDEBUG(363, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy361; - goto yy157; + if (yych == '\t') goto yy362; + goto yy158; } else { - if (yych <= ' ') goto yy361; - if (yych != ')') goto yy157; + if (yych <= ' ') goto yy362; + if (yych != ')') goto yy158; } - YYDEBUG(363, *YYCURSOR); - ++YYCURSOR; YYDEBUG(364, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(365, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1316 "Zend/zend_language_scanner.l" { return T_DOUBLE_CAST; } -#line 4424 "Zend/zend_language_scanner.c" -yy365: - YYDEBUG(365, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy366; - if (yych != 'u') goto yy157; +#line 4426 "Zend/zend_language_scanner.c" yy366: YYDEBUG(366, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy367; - if (yych != 'b') goto yy157; + if (yych == 'U') goto yy367; + if (yych != 'u') goto yy158; yy367: YYDEBUG(367, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy368; - if (yych != 'l') goto yy157; + if (yych == 'B') goto yy368; + if (yych != 'b') goto yy158; yy368: YYDEBUG(368, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy361; - if (yych == 'e') goto yy361; - goto yy157; + if (yych == 'L') goto yy369; + if (yych != 'l') goto yy158; yy369: YYDEBUG(369, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy370; - if (yych != 'a') goto yy157; + if (yych == 'E') goto yy362; + if (yych == 'e') goto yy362; + goto yy158; yy370: YYDEBUG(370, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy361; - if (yych == 'l') goto yy361; - goto yy157; + if (yych == 'A') goto yy371; + if (yych != 'a') goto yy158; yy371: YYDEBUG(371, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy372; - if (yych != 'r') goto yy157; + if (yych == 'L') goto yy362; + if (yych == 'l') goto yy362; + goto yy158; yy372: YYDEBUG(372, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy373; - if (yych != 'i') goto yy157; + if (yych == 'R') goto yy373; + if (yych != 'r') goto yy158; yy373: YYDEBUG(373, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy374; - if (yych != 'n') goto yy157; + if (yych == 'I') goto yy374; + if (yych != 'i') goto yy158; yy374: YYDEBUG(374, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy375; - if (yych != 'g') goto yy157; + if (yych == 'N') goto yy375; + if (yych != 'n') goto yy158; yy375: YYDEBUG(375, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy376; + if (yych != 'g') goto yy158; +yy376: + YYDEBUG(376, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(376, *YYCURSOR); + YYDEBUG(377, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy375; - goto yy157; + if (yych == '\t') goto yy376; + goto yy158; } else { - if (yych <= ' ') goto yy375; - if (yych != ')') goto yy157; + if (yych <= ' ') goto yy376; + if (yych != ')') goto yy158; } - YYDEBUG(377, *YYCURSOR); - ++YYCURSOR; YYDEBUG(378, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(379, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1320 "Zend/zend_language_scanner.l" { return T_STRING_CAST; } -#line 4498 "Zend/zend_language_scanner.c" -yy379: - YYDEBUG(379, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy380; - if (yych != 'r') goto yy157; +#line 4500 "Zend/zend_language_scanner.c" yy380: YYDEBUG(380, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy381; - if (yych != 'a') goto yy157; + if (yych == 'R') goto yy381; + if (yych != 'r') goto yy158; yy381: YYDEBUG(381, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy382; - if (yych != 'y') goto yy157; + if (yych == 'A') goto yy382; + if (yych != 'a') goto yy158; yy382: YYDEBUG(382, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy383; + if (yych != 'y') goto yy158; +yy383: + YYDEBUG(383, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(383, *YYCURSOR); + YYDEBUG(384, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy382; - goto yy157; + if (yych == '\t') goto yy383; + goto yy158; } else { - if (yych <= ' ') goto yy382; - if (yych != ')') goto yy157; + if (yych <= ' ') goto yy383; + if (yych != ')') goto yy158; } - YYDEBUG(384, *YYCURSOR); - ++YYCURSOR; YYDEBUG(385, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(386, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1324 "Zend/zend_language_scanner.l" { return T_ARRAY_CAST; } -#line 4535 "Zend/zend_language_scanner.c" -yy386: - YYDEBUG(386, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'J') goto yy387; - if (yych != 'j') goto yy157; +#line 4537 "Zend/zend_language_scanner.c" yy387: YYDEBUG(387, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy388; - if (yych != 'e') goto yy157; + if (yych == 'J') goto yy388; + if (yych != 'j') goto yy158; yy388: YYDEBUG(388, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy389; - if (yych != 'c') goto yy157; + if (yych == 'E') goto yy389; + if (yych != 'e') goto yy158; yy389: YYDEBUG(389, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy390; - if (yych != 't') goto yy157; + if (yych == 'C') goto yy390; + if (yych != 'c') goto yy158; yy390: YYDEBUG(390, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy391; + if (yych != 't') goto yy158; +yy391: + YYDEBUG(391, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(391, *YYCURSOR); + YYDEBUG(392, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy390; - goto yy157; + if (yych == '\t') goto yy391; + goto yy158; } else { - if (yych <= ' ') goto yy390; - if (yych != ')') goto yy157; + if (yych <= ' ') goto yy391; + if (yych != ')') goto yy158; } - YYDEBUG(392, *YYCURSOR); - ++YYCURSOR; YYDEBUG(393, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(394, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1328 "Zend/zend_language_scanner.l" { return T_OBJECT_CAST; } -#line 4577 "Zend/zend_language_scanner.c" -yy394: - YYDEBUG(394, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy404; - if (yych == 'n') goto yy404; - goto yy157; +#line 4579 "Zend/zend_language_scanner.c" yy395: YYDEBUG(395, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy396; - if (yych != 'o') goto yy157; + if (yych == 'N') goto yy405; + if (yych == 'n') goto yy405; + goto yy158; yy396: YYDEBUG(396, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy397; - if (yych != 'l') goto yy157; + if (yych == 'O') goto yy397; + if (yych != 'o') goto yy158; yy397: YYDEBUG(397, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy402; - if (yych == 'e') goto yy402; - goto yy399; + if (yych == 'L') goto yy398; + if (yych != 'l') goto yy158; yy398: YYDEBUG(398, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy403; + if (yych == 'e') goto yy403; + goto yy400; +yy399: + YYDEBUG(399, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy399: - YYDEBUG(399, *YYCURSOR); +yy400: + YYDEBUG(400, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy398; - goto yy157; + if (yych == '\t') goto yy399; + goto yy158; } else { - if (yych <= ' ') goto yy398; - if (yych != ')') goto yy157; + if (yych <= ' ') goto yy399; + if (yych != ')') goto yy158; } - YYDEBUG(400, *YYCURSOR); - ++YYCURSOR; YYDEBUG(401, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(402, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1332 "Zend/zend_language_scanner.l" { return T_BOOL_CAST; } -#line 4622 "Zend/zend_language_scanner.c" -yy402: - YYDEBUG(402, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy403; - if (yych != 'a') goto yy157; +#line 4624 "Zend/zend_language_scanner.c" yy403: YYDEBUG(403, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy398; - if (yych == 'n') goto yy398; - goto yy157; + if (yych == 'A') goto yy404; + if (yych != 'a') goto yy158; yy404: YYDEBUG(404, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy405; - if (yych != 'a') goto yy157; + if (yych == 'N') goto yy399; + if (yych == 'n') goto yy399; + goto yy158; yy405: YYDEBUG(405, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy406; - if (yych != 'r') goto yy157; + if (yych == 'A') goto yy406; + if (yych != 'a') goto yy158; yy406: YYDEBUG(406, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy375; - if (yych == 'y') goto yy375; - goto yy157; + if (yych == 'R') goto yy407; + if (yych != 'r') goto yy158; yy407: YYDEBUG(407, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy408; - if (yych != 's') goto yy157; + if (yych == 'Y') goto yy376; + if (yych == 'y') goto yy376; + goto yy158; yy408: YYDEBUG(408, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy409; - if (yych != 'e') goto yy157; + if (yych == 'S') goto yy409; + if (yych != 's') goto yy158; yy409: YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy410; - if (yych != 't') goto yy157; + if (yych == 'E') goto yy410; + if (yych != 'e') goto yy158; yy410: YYDEBUG(410, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy411; + if (yych != 't') goto yy158; +yy411: + YYDEBUG(411, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(411, *YYCURSOR); + YYDEBUG(412, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy410; - goto yy157; + if (yych == '\t') goto yy411; + goto yy158; } else { - if (yych <= ' ') goto yy410; - if (yych != ')') goto yy157; + if (yych <= ' ') goto yy411; + if (yych != ')') goto yy158; } - YYDEBUG(412, *YYCURSOR); - ++YYCURSOR; YYDEBUG(413, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(414, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1336 "Zend/zend_language_scanner.l" { return T_UNSET_CAST; } -#line 4686 "Zend/zend_language_scanner.c" -yy414: - YYDEBUG(414, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy415; - if (yych != 'r') goto yy150; +#line 4688 "Zend/zend_language_scanner.c" yy415: YYDEBUG(415, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy416; + if (yych != 'r') goto yy151; +yy416: + YYDEBUG(416, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(416, *YYCURSOR); + YYDEBUG(417, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1308 "Zend/zend_language_scanner.l" { return T_VAR; } -#line 4704 "Zend/zend_language_scanner.c" -yy417: - YYDEBUG(417, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy421; - if (yych == 'm') goto yy421; - goto yy150; +#line 4706 "Zend/zend_language_scanner.c" yy418: YYDEBUG(418, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'W') goto yy419; - if (yych != 'w') goto yy150; + if (yych == 'M') goto yy422; + if (yych == 'm') goto yy422; + goto yy151; yy419: YYDEBUG(419, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'W') goto yy420; + if (yych != 'w') goto yy151; +yy420: + YYDEBUG(420, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(420, *YYCURSOR); + YYDEBUG(421, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1300 "Zend/zend_language_scanner.l" { return T_NEW; } -#line 4728 "Zend/zend_language_scanner.c" -yy421: - YYDEBUG(421, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy422; - if (yych != 'e') goto yy150; +#line 4730 "Zend/zend_language_scanner.c" yy422: YYDEBUG(422, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy423; - if (yych != 's') goto yy150; + if (yych == 'E') goto yy423; + if (yych != 'e') goto yy151; yy423: YYDEBUG(423, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy424; - if (yych != 'p') goto yy150; + if (yych == 'S') goto yy424; + if (yych != 's') goto yy151; yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy425; - if (yych != 'a') goto yy150; + if (yych == 'P') goto yy425; + if (yych != 'p') goto yy151; yy425: YYDEBUG(425, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy426; - if (yych != 'c') goto yy150; + if (yych == 'A') goto yy426; + if (yych != 'a') goto yy151; yy426: YYDEBUG(426, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy427; - if (yych != 'e') goto yy150; + if (yych == 'C') goto yy427; + if (yych != 'c') goto yy151; yy427: YYDEBUG(427, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy428; + if (yych != 'e') goto yy151; +yy428: + YYDEBUG(428, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(428, *YYCURSOR); + YYDEBUG(429, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1360 "Zend/zend_language_scanner.l" { return T_NAMESPACE; } -#line 4771 "Zend/zend_language_scanner.c" -yy429: - YYDEBUG(429, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '\n') goto yy433; - if (yych == '\r') goto yy434; +#line 4773 "Zend/zend_language_scanner.c" yy430: YYDEBUG(430, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) == '\n') goto yy434; + if (yych == '\r') goto yy435; +yy431: + YYDEBUG(431, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1922 "Zend/zend_language_scanner.l" { BEGIN(INITIAL); return T_CLOSE_TAG; /* implicit ';' at php-end tag */ } -#line 4785 "Zend/zend_language_scanner.c" -yy431: - YYDEBUG(431, *YYCURSOR); - ++YYCURSOR; +#line 4787 "Zend/zend_language_scanner.c" +yy432: YYDEBUG(432, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(433, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1296 "Zend/zend_language_scanner.l" { return T_COALESCE; } -#line 4795 "Zend/zend_language_scanner.c" -yy433: - YYDEBUG(433, *YYCURSOR); - yych = *++YYCURSOR; - goto yy430; +#line 4797 "Zend/zend_language_scanner.c" yy434: YYDEBUG(434, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy433; - goto yy430; + goto yy431; yy435: YYDEBUG(435, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\n') goto yy434; + goto yy431; +yy436: + YYDEBUG(436, *YYCURSOR); yyaccept = 3; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(436, *YYCURSOR); + YYDEBUG(437, *YYCURSOR); if (yych <= 'D') { - if (yych <= '/') goto yy153; - if (yych <= '9') goto yy435; - goto yy153; + if (yych <= '/') goto yy154; + if (yych <= '9') goto yy436; + goto yy154; } else { - if (yych <= 'E') goto yy156; - if (yych == 'e') goto yy156; - goto yy153; + if (yych <= 'E') goto yy157; + if (yych == 'e') goto yy157; + goto yy154; } -yy437: - YYDEBUG(437, *YYCURSOR); - ++YYCURSOR; +yy438: YYDEBUG(438, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(439, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1488 "Zend/zend_language_scanner.l" { return T_CONCAT_EQUAL; } -#line 4830 "Zend/zend_language_scanner.c" -yy439: - YYDEBUG(439, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '.') goto yy157; +#line 4832 "Zend/zend_language_scanner.c" +yy440: YYDEBUG(440, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + if (yych != '.') goto yy158; YYDEBUG(441, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(442, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1292 "Zend/zend_language_scanner.l" { return T_ELLIPSIS; } -#line 4843 "Zend/zend_language_scanner.c" -yy442: - YYDEBUG(442, *YYCURSOR); - ++YYCURSOR; +#line 4845 "Zend/zend_language_scanner.c" +yy443: YYDEBUG(443, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(444, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1284 "Zend/zend_language_scanner.l" { return T_PAAMAYIM_NEKUDOTAYIM; } -#line 4853 "Zend/zend_language_scanner.c" -yy444: - YYDEBUG(444, *YYCURSOR); +#line 4855 "Zend/zend_language_scanner.c" +yy445: + YYDEBUG(445, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy445: - YYDEBUG(445, *YYCURSOR); +yy446: + YYDEBUG(446, *YYCURSOR); if (yych <= '\f') { - if (yych <= 0x08) goto yy104; - if (yych <= '\n') goto yy444; - goto yy104; + if (yych <= 0x08) goto yy105; + if (yych <= '\n') goto yy445; + goto yy105; } else { - if (yych <= '\r') goto yy444; - if (yych == ' ') goto yy444; - goto yy104; + if (yych <= '\r') goto yy445; + if (yych == ' ') goto yy445; + goto yy105; } -yy446: - YYDEBUG(446, *YYCURSOR); - ++YYCURSOR; +yy447: YYDEBUG(447, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(448, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1468 "Zend/zend_language_scanner.l" { return T_MINUS_EQUAL; } -#line 4879 "Zend/zend_language_scanner.c" -yy448: - YYDEBUG(448, *YYCURSOR); - ++YYCURSOR; +#line 4881 "Zend/zend_language_scanner.c" +yy449: YYDEBUG(449, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(450, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1436 "Zend/zend_language_scanner.l" { return T_DEC; } -#line 4889 "Zend/zend_language_scanner.c" -yy450: - YYDEBUG(450, *YYCURSOR); - ++YYCURSOR; +#line 4891 "Zend/zend_language_scanner.c" +yy451: YYDEBUG(451, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(452, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1258 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_PROPERTY); return T_OBJECT_OPERATOR; } -#line 4900 "Zend/zend_language_scanner.c" -yy452: - YYDEBUG(452, *YYCURSOR); +#line 4902 "Zend/zend_language_scanner.c" +yy453: + YYDEBUG(453, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'I') goto yy459; - if (yych <= 'N') goto yy150; - goto yy460; + if (yych == 'I') goto yy460; + if (yych <= 'N') goto yy151; + goto yy461; } else { if (yych <= 'i') { - if (yych <= 'h') goto yy150; - goto yy459; + if (yych <= 'h') goto yy151; + goto yy460; } else { - if (yych == 'o') goto yy460; - goto yy150; + if (yych == 'o') goto yy461; + goto yy151; } } -yy453: - YYDEBUG(453, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy454; - if (yych != 'b') goto yy150; yy454: YYDEBUG(454, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy455; - if (yych != 'l') goto yy150; + if (yych == 'B') goto yy455; + if (yych != 'b') goto yy151; yy455: YYDEBUG(455, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy456; - if (yych != 'i') goto yy150; + if (yych == 'L') goto yy456; + if (yych != 'l') goto yy151; yy456: YYDEBUG(456, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy457; - if (yych != 'c') goto yy150; + if (yych == 'I') goto yy457; + if (yych != 'i') goto yy151; yy457: YYDEBUG(457, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy458; + if (yych != 'c') goto yy151; +yy458: + YYDEBUG(458, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(458, *YYCURSOR); + YYDEBUG(459, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1408 "Zend/zend_language_scanner.l" { return T_PUBLIC; } -#line 4949 "Zend/zend_language_scanner.c" -yy459: - YYDEBUG(459, *YYCURSOR); +#line 4951 "Zend/zend_language_scanner.c" +yy460: + YYDEBUG(460, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'V') { - if (yych == 'N') goto yy468; - if (yych <= 'U') goto yy150; - goto yy469; + if (yych == 'N') goto yy469; + if (yych <= 'U') goto yy151; + goto yy470; } else { if (yych <= 'n') { - if (yych <= 'm') goto yy150; - goto yy468; + if (yych <= 'm') goto yy151; + goto yy469; } else { - if (yych == 'v') goto yy469; - goto yy150; + if (yych == 'v') goto yy470; + goto yy151; } } -yy460: - YYDEBUG(460, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy461; - if (yych != 't') goto yy150; yy461: YYDEBUG(461, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy462; - if (yych != 'e') goto yy150; + if (yych == 'T') goto yy462; + if (yych != 't') goto yy151; yy462: YYDEBUG(462, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy463; - if (yych != 'c') goto yy150; + if (yych == 'E') goto yy463; + if (yych != 'e') goto yy151; yy463: YYDEBUG(463, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy464; - if (yych != 't') goto yy150; + if (yych == 'C') goto yy464; + if (yych != 'c') goto yy151; yy464: YYDEBUG(464, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy465; - if (yych != 'e') goto yy150; + if (yych == 'T') goto yy465; + if (yych != 't') goto yy151; yy465: YYDEBUG(465, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy466; - if (yych != 'd') goto yy150; + if (yych == 'E') goto yy466; + if (yych != 'e') goto yy151; yy466: YYDEBUG(466, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy467; + if (yych != 'd') goto yy151; +yy467: + YYDEBUG(467, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(467, *YYCURSOR); + YYDEBUG(468, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1404 "Zend/zend_language_scanner.l" { return T_PROTECTED; } -#line 5008 "Zend/zend_language_scanner.c" -yy468: - YYDEBUG(468, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy474; - if (yych == 't') goto yy474; - goto yy150; +#line 5010 "Zend/zend_language_scanner.c" yy469: YYDEBUG(469, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy470; - if (yych != 'a') goto yy150; + if (yych == 'T') goto yy475; + if (yych == 't') goto yy475; + goto yy151; yy470: YYDEBUG(470, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy471; - if (yych != 't') goto yy150; + if (yych == 'A') goto yy471; + if (yych != 'a') goto yy151; yy471: YYDEBUG(471, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy472; - if (yych != 'e') goto yy150; + if (yych == 'T') goto yy472; + if (yych != 't') goto yy151; yy472: YYDEBUG(472, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy473; + if (yych != 'e') goto yy151; +yy473: + YYDEBUG(473, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(473, *YYCURSOR); + YYDEBUG(474, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1400 "Zend/zend_language_scanner.l" { return T_PRIVATE; } -#line 5042 "Zend/zend_language_scanner.c" -yy474: - YYDEBUG(474, *YYCURSOR); +#line 5044 "Zend/zend_language_scanner.c" +yy475: + YYDEBUG(475, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(475, *YYCURSOR); + YYDEBUG(476, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1234 "Zend/zend_language_scanner.l" { return T_PRINT; } -#line 5055 "Zend/zend_language_scanner.c" -yy476: - YYDEBUG(476, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy481; - if (yych == 'o') goto yy481; - goto yy150; +#line 5057 "Zend/zend_language_scanner.c" yy477: YYDEBUG(477, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy478; - if (yych != 't') goto yy150; + if (yych == 'O') goto yy482; + if (yych == 'o') goto yy482; + goto yy151; yy478: YYDEBUG(478, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy479; - if (yych != 'o') goto yy150; + if (yych == 'T') goto yy479; + if (yych != 't') goto yy151; yy479: YYDEBUG(479, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy480; + if (yych != 'o') goto yy151; +yy480: + YYDEBUG(480, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(480, *YYCURSOR); + YYDEBUG(481, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1226 "Zend/zend_language_scanner.l" { return T_GOTO; } -#line 5084 "Zend/zend_language_scanner.c" -yy481: - YYDEBUG(481, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy482; - if (yych != 'b') goto yy150; +#line 5086 "Zend/zend_language_scanner.c" yy482: YYDEBUG(482, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy483; - if (yych != 'a') goto yy150; + if (yych == 'B') goto yy483; + if (yych != 'b') goto yy151; yy483: YYDEBUG(483, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy484; - if (yych != 'l') goto yy150; + if (yych == 'A') goto yy484; + if (yych != 'a') goto yy151; yy484: YYDEBUG(484, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy485; + if (yych != 'l') goto yy151; +yy485: + YYDEBUG(485, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(485, *YYCURSOR); + YYDEBUG(486, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1372 "Zend/zend_language_scanner.l" { return T_GLOBAL; } -#line 5112 "Zend/zend_language_scanner.c" -yy486: - YYDEBUG(486, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '<') goto yy494; - goto yy157; +#line 5114 "Zend/zend_language_scanner.c" yy487: YYDEBUG(487, *YYCURSOR); yych = *++YYCURSOR; - goto yy144; + if (yych == '<') goto yy495; + goto yy158; yy488: YYDEBUG(488, *YYCURSOR); yych = *++YYCURSOR; - goto yy142; + goto yy145; yy489: YYDEBUG(489, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy490; - if (yych != 'e') goto yy150; + goto yy143; yy490: YYDEBUG(490, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy491; - if (yych != 'a') goto yy150; + if (yych == 'E') goto yy491; + if (yych != 'e') goto yy151; yy491: YYDEBUG(491, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'K') goto yy492; - if (yych != 'k') goto yy150; + if (yych == 'A') goto yy492; + if (yych != 'a') goto yy151; yy492: YYDEBUG(492, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'K') goto yy493; + if (yych != 'k') goto yy151; +yy493: + YYDEBUG(493, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(493, *YYCURSOR); + YYDEBUG(494, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1218 "Zend/zend_language_scanner.l" { return T_BREAK; } -#line 5153 "Zend/zend_language_scanner.c" -yy494: - YYDEBUG(494, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '<') goto yy217; - goto yy157; +#line 5155 "Zend/zend_language_scanner.c" yy495: YYDEBUG(495, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy502; - if (yych == 'a') goto yy502; - goto yy150; + if (yych == '<') goto yy218; + goto yy158; yy496: YYDEBUG(496, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy497; - if (yych != 'i') goto yy150; + if (yych == 'A') goto yy503; + if (yych == 'a') goto yy503; + goto yy151; yy497: YYDEBUG(497, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy498; - if (yych != 't') goto yy150; + if (yych == 'I') goto yy498; + if (yych != 'i') goto yy151; yy498: YYDEBUG(498, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy499; - if (yych != 'c') goto yy150; + if (yych == 'T') goto yy499; + if (yych != 't') goto yy151; yy499: YYDEBUG(499, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy500; - if (yych != 'h') goto yy150; + if (yych == 'C') goto yy500; + if (yych != 'c') goto yy151; yy500: YYDEBUG(500, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy501; + if (yych != 'h') goto yy151; +yy501: + YYDEBUG(501, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(501, *YYCURSOR); + YYDEBUG(502, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1202 "Zend/zend_language_scanner.l" { return T_SWITCH; } -#line 5197 "Zend/zend_language_scanner.c" -yy502: - YYDEBUG(502, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy503; - if (yych != 't') goto yy150; +#line 5199 "Zend/zend_language_scanner.c" yy503: YYDEBUG(503, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy504; - if (yych != 'i') goto yy150; + if (yych == 'T') goto yy504; + if (yych != 't') goto yy151; yy504: YYDEBUG(504, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy505; - if (yych != 'c') goto yy150; + if (yych == 'I') goto yy505; + if (yych != 'i') goto yy151; yy505: YYDEBUG(505, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy506; + if (yych != 'c') goto yy151; +yy506: + YYDEBUG(506, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(506, *YYCURSOR); + YYDEBUG(507, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1388 "Zend/zend_language_scanner.l" { return T_STATIC; } -#line 5225 "Zend/zend_language_scanner.c" -yy507: - YYDEBUG(507, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy518; - if (yych == 's') goto yy518; - goto yy150; +#line 5227 "Zend/zend_language_scanner.c" yy508: YYDEBUG(508, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy516; - if (yych == 'd') goto yy516; - goto yy150; + if (yych == 'S') goto yy519; + if (yych == 's') goto yy519; + goto yy151; yy509: YYDEBUG(509, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy512; - if (yych == 'r') goto yy512; - goto yy150; + if (yych == 'D') goto yy517; + if (yych == 'd') goto yy517; + goto yy151; yy510: YYDEBUG(510, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy513; + if (yych == 'r') goto yy513; + goto yy151; +yy511: + YYDEBUG(511, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(511, *YYCURSOR); + YYDEBUG(512, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1198 "Zend/zend_language_scanner.l" { return T_AS; } -#line 5256 "Zend/zend_language_scanner.c" -yy512: - YYDEBUG(512, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy513; - if (yych != 'a') goto yy150; +#line 5258 "Zend/zend_language_scanner.c" yy513: YYDEBUG(513, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy514; - if (yych != 'y') goto yy150; + if (yych == 'A') goto yy514; + if (yych != 'a') goto yy151; yy514: YYDEBUG(514, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy515; + if (yych != 'y') goto yy151; +yy515: + YYDEBUG(515, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(515, *YYCURSOR); + YYDEBUG(516, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1424 "Zend/zend_language_scanner.l" { return T_ARRAY; } -#line 5279 "Zend/zend_language_scanner.c" -yy516: - YYDEBUG(516, *YYCURSOR); +#line 5281 "Zend/zend_language_scanner.c" +yy517: + YYDEBUG(517, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(517, *YYCURSOR); + YYDEBUG(518, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1528 "Zend/zend_language_scanner.l" { return T_LOGICAL_AND; } -#line 5292 "Zend/zend_language_scanner.c" -yy518: - YYDEBUG(518, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy519; - if (yych != 't') goto yy150; +#line 5294 "Zend/zend_language_scanner.c" yy519: YYDEBUG(519, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy520; - if (yych != 'r') goto yy150; + if (yych == 'T') goto yy520; + if (yych != 't') goto yy151; yy520: YYDEBUG(520, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy521; - if (yych != 'a') goto yy150; + if (yych == 'R') goto yy521; + if (yych != 'r') goto yy151; yy521: YYDEBUG(521, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy522; - if (yych != 'c') goto yy150; + if (yych == 'A') goto yy522; + if (yych != 'a') goto yy151; yy522: YYDEBUG(522, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy523; - if (yych != 't') goto yy150; + if (yych == 'C') goto yy523; + if (yych != 'c') goto yy151; yy523: YYDEBUG(523, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy524; + if (yych != 't') goto yy151; +yy524: + YYDEBUG(524, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(524, *YYCURSOR); + YYDEBUG(525, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1392 "Zend/zend_language_scanner.l" { return T_ABSTRACT; } -#line 5330 "Zend/zend_language_scanner.c" -yy525: - YYDEBUG(525, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy526; - if (yych != 'i') goto yy150; +#line 5332 "Zend/zend_language_scanner.c" yy526: YYDEBUG(526, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy527; - if (yych != 'l') goto yy150; + if (yych == 'I') goto yy527; + if (yych != 'i') goto yy151; yy527: YYDEBUG(527, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy528; - if (yych != 'e') goto yy150; + if (yych == 'L') goto yy528; + if (yych != 'l') goto yy151; yy528: YYDEBUG(528, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy529; + if (yych != 'e') goto yy151; +yy529: + YYDEBUG(529, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(529, *YYCURSOR); + YYDEBUG(530, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1158 "Zend/zend_language_scanner.l" { return T_WHILE; } -#line 5358 "Zend/zend_language_scanner.c" -yy530: - YYDEBUG(530, *YYCURSOR); +#line 5360 "Zend/zend_language_scanner.c" +yy531: + YYDEBUG(531, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(531, *YYCURSOR); + YYDEBUG(532, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1142 "Zend/zend_language_scanner.l" { return T_IF; } -#line 5371 "Zend/zend_language_scanner.c" -yy532: - YYDEBUG(532, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'P') goto yy574; - if (yych == 'p') goto yy574; - goto yy150; +#line 5373 "Zend/zend_language_scanner.c" yy533: YYDEBUG(533, *YYCURSOR); yych = *++YYCURSOR; + if (yych == 'P') goto yy575; + if (yych == 'p') goto yy575; + goto yy151; +yy534: + YYDEBUG(534, *YYCURSOR); + yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= 'C') { - if (yych <= 'B') goto yy150; - goto yy541; + if (yych <= 'B') goto yy151; + goto yy542; } else { - if (yych <= 'R') goto yy150; - if (yych <= 'S') goto yy539; - goto yy540; + if (yych <= 'R') goto yy151; + if (yych <= 'S') goto yy540; + goto yy541; } } else { if (yych <= 'r') { - if (yych == 'c') goto yy541; - goto yy150; + if (yych == 'c') goto yy542; + goto yy151; } else { - if (yych <= 's') goto yy539; - if (yych <= 't') goto yy540; - goto yy150; + if (yych <= 's') goto yy540; + if (yych <= 't') goto yy541; + goto yy151; } } -yy534: - YYDEBUG(534, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy535; - if (yych != 's') goto yy150; yy535: YYDEBUG(535, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy536; - if (yych != 'e') goto yy150; + if (yych == 'S') goto yy536; + if (yych != 's') goto yy151; yy536: YYDEBUG(536, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy537; - if (yych != 't') goto yy150; + if (yych == 'E') goto yy537; + if (yych != 'e') goto yy151; yy537: YYDEBUG(537, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy538; + if (yych != 't') goto yy151; +yy538: + YYDEBUG(538, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(538, *YYCURSOR); + YYDEBUG(539, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1376 "Zend/zend_language_scanner.l" { return T_ISSET; } -#line 5427 "Zend/zend_language_scanner.c" -yy539: - YYDEBUG(539, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy560; - if (yych == 't') goto yy560; - goto yy150; +#line 5429 "Zend/zend_language_scanner.c" yy540: YYDEBUG(540, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy553; - if (yych == 'e') goto yy553; - goto yy150; + if (yych == 'T') goto yy561; + if (yych == 't') goto yy561; + goto yy151; yy541: YYDEBUG(541, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy542; - if (yych != 'l') goto yy150; + if (yych == 'E') goto yy554; + if (yych == 'e') goto yy554; + goto yy151; yy542: YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy543; - if (yych != 'u') goto yy150; + if (yych == 'L') goto yy543; + if (yych != 'l') goto yy151; yy543: YYDEBUG(543, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy544; - if (yych != 'd') goto yy150; + if (yych == 'U') goto yy544; + if (yych != 'u') goto yy151; yy544: YYDEBUG(544, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy545; - if (yych != 'e') goto yy150; + if (yych == 'D') goto yy545; + if (yych != 'd') goto yy151; yy545: YYDEBUG(545, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy546; + if (yych != 'e') goto yy151; +yy546: + YYDEBUG(546, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '9') { - if (yych >= '0') goto yy149; + if (yych >= '0') goto yy150; } else { - if (yych <= '@') goto yy546; - if (yych <= 'Z') goto yy149; + if (yych <= '@') goto yy547; + if (yych <= 'Z') goto yy150; } } else { if (yych <= '`') { - if (yych <= '_') goto yy547; + if (yych <= '_') goto yy548; } else { - if (yych <= 'z') goto yy149; - if (yych >= 0x7F) goto yy149; + if (yych <= 'z') goto yy150; + if (yych >= 0x7F) goto yy150; } } -yy546: - YYDEBUG(546, *YYCURSOR); +yy547: + YYDEBUG(547, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1344 "Zend/zend_language_scanner.l" { return T_INCLUDE; } -#line 5485 "Zend/zend_language_scanner.c" -yy547: - YYDEBUG(547, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy548; - if (yych != 'o') goto yy150; +#line 5487 "Zend/zend_language_scanner.c" yy548: YYDEBUG(548, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy549; - if (yych != 'n') goto yy150; + if (yych == 'O') goto yy549; + if (yych != 'o') goto yy151; yy549: YYDEBUG(549, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy550; - if (yych != 'c') goto yy150; + if (yych == 'N') goto yy550; + if (yych != 'n') goto yy151; yy550: YYDEBUG(550, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy551; - if (yych != 'e') goto yy150; + if (yych == 'C') goto yy551; + if (yych != 'c') goto yy151; yy551: YYDEBUG(551, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy552; + if (yych != 'e') goto yy151; +yy552: + YYDEBUG(552, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(552, *YYCURSOR); + YYDEBUG(553, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1348 "Zend/zend_language_scanner.l" { return T_INCLUDE_ONCE; } -#line 5518 "Zend/zend_language_scanner.c" -yy553: - YYDEBUG(553, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy554; - if (yych != 'r') goto yy150; +#line 5520 "Zend/zend_language_scanner.c" yy554: YYDEBUG(554, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy555; - if (yych != 'f') goto yy150; + if (yych == 'R') goto yy555; + if (yych != 'r') goto yy151; yy555: YYDEBUG(555, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy556; - if (yych != 'a') goto yy150; + if (yych == 'F') goto yy556; + if (yych != 'f') goto yy151; yy556: YYDEBUG(556, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy557; - if (yych != 'c') goto yy150; + if (yych == 'A') goto yy557; + if (yych != 'a') goto yy151; yy557: YYDEBUG(557, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy558; - if (yych != 'e') goto yy150; + if (yych == 'C') goto yy558; + if (yych != 'c') goto yy151; yy558: YYDEBUG(558, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy559; + if (yych != 'e') goto yy151; +yy559: + YYDEBUG(559, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(559, *YYCURSOR); + YYDEBUG(560, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1242 "Zend/zend_language_scanner.l" { return T_INTERFACE; } -#line 5556 "Zend/zend_language_scanner.c" -yy560: - YYDEBUG(560, *YYCURSOR); +#line 5558 "Zend/zend_language_scanner.c" +yy561: + YYDEBUG(561, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'E') { - if (yych == 'A') goto yy561; - if (yych <= 'D') goto yy150; - goto yy562; + if (yych == 'A') goto yy562; + if (yych <= 'D') goto yy151; + goto yy563; } else { if (yych <= 'a') { - if (yych <= '`') goto yy150; + if (yych <= '`') goto yy151; } else { - if (yych == 'e') goto yy562; - goto yy150; + if (yych == 'e') goto yy563; + goto yy151; } } -yy561: - YYDEBUG(561, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy568; - if (yych == 'n') goto yy568; - goto yy150; yy562: YYDEBUG(562, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy563; - if (yych != 'a') goto yy150; + if (yych == 'N') goto yy569; + if (yych == 'n') goto yy569; + goto yy151; yy563: YYDEBUG(563, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy564; - if (yych != 'd') goto yy150; + if (yych == 'A') goto yy564; + if (yych != 'a') goto yy151; yy564: YYDEBUG(564, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy565; - if (yych != 'o') goto yy150; + if (yych == 'D') goto yy565; + if (yych != 'd') goto yy151; yy565: YYDEBUG(565, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy566; - if (yych != 'f') goto yy150; + if (yych == 'O') goto yy566; + if (yych != 'o') goto yy151; yy566: YYDEBUG(566, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'F') goto yy567; + if (yych != 'f') goto yy151; +yy567: + YYDEBUG(567, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(567, *YYCURSOR); + YYDEBUG(568, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1368 "Zend/zend_language_scanner.l" { return T_INSTEADOF; } -#line 5610 "Zend/zend_language_scanner.c" -yy568: - YYDEBUG(568, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy569; - if (yych != 'c') goto yy150; +#line 5612 "Zend/zend_language_scanner.c" yy569: YYDEBUG(569, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy570; - if (yych != 'e') goto yy150; + if (yych == 'C') goto yy570; + if (yych != 'c') goto yy151; yy570: YYDEBUG(570, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy571; - if (yych != 'o') goto yy150; + if (yych == 'E') goto yy571; + if (yych != 'e') goto yy151; yy571: YYDEBUG(571, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy572; - if (yych != 'f') goto yy150; + if (yych == 'O') goto yy572; + if (yych != 'o') goto yy151; yy572: YYDEBUG(572, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'F') goto yy573; + if (yych != 'f') goto yy151; +yy573: + YYDEBUG(573, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(573, *YYCURSOR); + YYDEBUG(574, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1194 "Zend/zend_language_scanner.l" { return T_INSTANCEOF; } -#line 5643 "Zend/zend_language_scanner.c" -yy574: - YYDEBUG(574, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy575; - if (yych != 'l') goto yy150; +#line 5645 "Zend/zend_language_scanner.c" yy575: YYDEBUG(575, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy576; - if (yych != 'e') goto yy150; + if (yych == 'L') goto yy576; + if (yych != 'l') goto yy151; yy576: YYDEBUG(576, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy577; - if (yych != 'm') goto yy150; + if (yych == 'E') goto yy577; + if (yych != 'e') goto yy151; yy577: YYDEBUG(577, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy578; - if (yych != 'e') goto yy150; + if (yych == 'M') goto yy578; + if (yych != 'm') goto yy151; yy578: YYDEBUG(578, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy579; - if (yych != 'n') goto yy150; + if (yych == 'E') goto yy579; + if (yych != 'e') goto yy151; yy579: YYDEBUG(579, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy580; - if (yych != 't') goto yy150; + if (yych == 'N') goto yy580; + if (yych != 'n') goto yy151; yy580: YYDEBUG(580, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy581; - if (yych != 's') goto yy150; + if (yych == 'T') goto yy581; + if (yych != 't') goto yy151; yy581: YYDEBUG(581, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy582; + if (yych != 's') goto yy151; +yy582: + YYDEBUG(582, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(582, *YYCURSOR); + YYDEBUG(583, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1254 "Zend/zend_language_scanner.l" { return T_IMPLEMENTS; } -#line 5691 "Zend/zend_language_scanner.c" -yy583: - YYDEBUG(583, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy591; - if (yych == 'r') goto yy591; - goto yy150; +#line 5693 "Zend/zend_language_scanner.c" yy584: YYDEBUG(584, *YYCURSOR); yych = *++YYCURSOR; + if (yych == 'R') goto yy592; + if (yych == 'r') goto yy592; + goto yy151; +yy585: + YYDEBUG(585, *YYCURSOR); + yych = *++YYCURSOR; if (yych <= 'Y') { - if (yych == 'A') goto yy587; - if (yych <= 'X') goto yy150; + if (yych == 'A') goto yy588; + if (yych <= 'X') goto yy151; } else { if (yych <= 'a') { - if (yych <= '`') goto yy150; - goto yy587; + if (yych <= '`') goto yy151; + goto yy588; } else { - if (yych != 'y') goto yy150; + if (yych != 'y') goto yy151; } } - YYDEBUG(585, *YYCURSOR); + YYDEBUG(586, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(586, *YYCURSOR); + YYDEBUG(587, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1126 "Zend/zend_language_scanner.l" { return T_TRY; } -#line 5723 "Zend/zend_language_scanner.c" -yy587: - YYDEBUG(587, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy588; - if (yych != 'i') goto yy150; +#line 5725 "Zend/zend_language_scanner.c" yy588: YYDEBUG(588, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy589; - if (yych != 't') goto yy150; + if (yych == 'I') goto yy589; + if (yych != 'i') goto yy151; yy589: YYDEBUG(589, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy590; + if (yych != 't') goto yy151; +yy590: + YYDEBUG(590, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(590, *YYCURSOR); + YYDEBUG(591, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1246 "Zend/zend_language_scanner.l" { return T_TRAIT; } -#line 5746 "Zend/zend_language_scanner.c" -yy591: - YYDEBUG(591, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy592; - if (yych != 'o') goto yy150; +#line 5748 "Zend/zend_language_scanner.c" yy592: YYDEBUG(592, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'W') goto yy593; - if (yych != 'w') goto yy150; + if (yych == 'O') goto yy593; + if (yych != 'o') goto yy151; yy593: YYDEBUG(593, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'W') goto yy594; + if (yych != 'w') goto yy151; +yy594: + YYDEBUG(594, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(594, *YYCURSOR); + YYDEBUG(595, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1138 "Zend/zend_language_scanner.l" { return T_THROW; } -#line 5769 "Zend/zend_language_scanner.c" -yy595: - YYDEBUG(595, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy596; - if (yych != 'e') goto yy150; +#line 5771 "Zend/zend_language_scanner.c" yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy597; - if (yych != 'l') goto yy150; + if (yych == 'E') goto yy597; + if (yych != 'e') goto yy151; yy597: YYDEBUG(597, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy598; - if (yych != 'd') goto yy150; + if (yych == 'L') goto yy598; + if (yych != 'l') goto yy151; yy598: YYDEBUG(598, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy599; + if (yych != 'd') goto yy151; +yy599: + YYDEBUG(599, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(599, *YYCURSOR); + YYDEBUG(600, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1122 "Zend/zend_language_scanner.l" { return T_YIELD; } -#line 5797 "Zend/zend_language_scanner.c" -yy600: - YYDEBUG(600, *YYCURSOR); +#line 5799 "Zend/zend_language_scanner.c" +yy601: + YYDEBUG(601, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'T') { - if (yych == 'Q') goto yy602; - if (yych <= 'S') goto yy150; + if (yych == 'Q') goto yy603; + if (yych <= 'S') goto yy151; } else { if (yych <= 'q') { - if (yych <= 'p') goto yy150; - goto yy602; + if (yych <= 'p') goto yy151; + goto yy603; } else { - if (yych != 't') goto yy150; + if (yych != 't') goto yy151; } } - YYDEBUG(601, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy614; - if (yych == 'u') goto yy614; - goto yy150; -yy602: YYDEBUG(602, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy603; - if (yych != 'u') goto yy150; + if (yych == 'U') goto yy615; + if (yych == 'u') goto yy615; + goto yy151; yy603: YYDEBUG(603, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy604; - if (yych != 'i') goto yy150; + if (yych == 'U') goto yy604; + if (yych != 'u') goto yy151; yy604: YYDEBUG(604, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy605; - if (yych != 'r') goto yy150; + if (yych == 'I') goto yy605; + if (yych != 'i') goto yy151; yy605: YYDEBUG(605, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy606; - if (yych != 'e') goto yy150; + if (yych == 'R') goto yy606; + if (yych != 'r') goto yy151; yy606: YYDEBUG(606, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy607; + if (yych != 'e') goto yy151; +yy607: + YYDEBUG(607, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '9') { - if (yych >= '0') goto yy149; + if (yych >= '0') goto yy150; } else { - if (yych <= '@') goto yy607; - if (yych <= 'Z') goto yy149; + if (yych <= '@') goto yy608; + if (yych <= 'Z') goto yy150; } } else { if (yych <= '`') { - if (yych <= '_') goto yy608; + if (yych <= '_') goto yy609; } else { - if (yych <= 'z') goto yy149; - if (yych >= 0x7F) goto yy149; + if (yych <= 'z') goto yy150; + if (yych >= 0x7F) goto yy150; } } -yy607: - YYDEBUG(607, *YYCURSOR); +yy608: + YYDEBUG(608, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1352 "Zend/zend_language_scanner.l" { return T_REQUIRE; } -#line 5862 "Zend/zend_language_scanner.c" -yy608: - YYDEBUG(608, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy609; - if (yych != 'o') goto yy150; +#line 5864 "Zend/zend_language_scanner.c" yy609: YYDEBUG(609, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy610; - if (yych != 'n') goto yy150; + if (yych == 'O') goto yy610; + if (yych != 'o') goto yy151; yy610: YYDEBUG(610, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy611; - if (yych != 'c') goto yy150; + if (yych == 'N') goto yy611; + if (yych != 'n') goto yy151; yy611: YYDEBUG(611, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy612; - if (yych != 'e') goto yy150; + if (yych == 'C') goto yy612; + if (yych != 'c') goto yy151; yy612: YYDEBUG(612, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy613; + if (yych != 'e') goto yy151; +yy613: + YYDEBUG(613, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(613, *YYCURSOR); + YYDEBUG(614, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1356 "Zend/zend_language_scanner.l" { return T_REQUIRE_ONCE; } -#line 5895 "Zend/zend_language_scanner.c" -yy614: - YYDEBUG(614, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy615; - if (yych != 'r') goto yy150; +#line 5897 "Zend/zend_language_scanner.c" yy615: YYDEBUG(615, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy616; - if (yych != 'n') goto yy150; + if (yych == 'R') goto yy616; + if (yych != 'r') goto yy151; yy616: YYDEBUG(616, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy617; + if (yych != 'n') goto yy151; +yy617: + YYDEBUG(617, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(617, *YYCURSOR); + YYDEBUG(618, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1118 "Zend/zend_language_scanner.l" { return T_RETURN; } -#line 5918 "Zend/zend_language_scanner.c" -yy618: - YYDEBUG(618, *YYCURSOR); +#line 5920 "Zend/zend_language_scanner.c" +yy619: + YYDEBUG(619, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= 'L') { - if (yych <= 'K') goto yy150; - goto yy641; + if (yych <= 'K') goto yy151; + goto yy642; } else { - if (yych <= 'R') goto yy150; - if (yych <= 'S') goto yy640; - goto yy639; + if (yych <= 'R') goto yy151; + if (yych <= 'S') goto yy641; + goto yy640; } } else { if (yych <= 'r') { - if (yych == 'l') goto yy641; - goto yy150; + if (yych == 'l') goto yy642; + goto yy151; } else { - if (yych <= 's') goto yy640; - if (yych <= 't') goto yy639; - goto yy150; + if (yych <= 's') goto yy641; + if (yych <= 't') goto yy640; + goto yy151; } } -yy619: - YYDEBUG(619, *YYCURSOR); +yy620: + YYDEBUG(620, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'A') goto yy631; - if (yych <= 'N') goto yy150; - goto yy632; + if (yych == 'A') goto yy632; + if (yych <= 'N') goto yy151; + goto yy633; } else { if (yych <= 'a') { - if (yych <= '`') goto yy150; - goto yy631; + if (yych <= '`') goto yy151; + goto yy632; } else { - if (yych == 'o') goto yy632; - goto yy150; + if (yych == 'o') goto yy633; + goto yy151; } } -yy620: - YYDEBUG(620, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy621; - if (yych != 'n') goto yy150; yy621: YYDEBUG(621, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'R') goto yy150; - if (yych >= 'T') goto yy623; - } else { - if (yych <= 'r') goto yy150; - if (yych <= 's') goto yy622; - if (yych <= 't') goto yy623; - goto yy150; - } + if (yych == 'N') goto yy622; + if (yych != 'n') goto yy151; yy622: YYDEBUG(622, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy629; - if (yych == 't') goto yy629; - goto yy150; + if (yych <= 'T') { + if (yych <= 'R') goto yy151; + if (yych >= 'T') goto yy624; + } else { + if (yych <= 'r') goto yy151; + if (yych <= 's') goto yy623; + if (yych <= 't') goto yy624; + goto yy151; + } yy623: YYDEBUG(623, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy624; - if (yych != 'i') goto yy150; + if (yych == 'T') goto yy630; + if (yych == 't') goto yy630; + goto yy151; yy624: YYDEBUG(624, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy625; - if (yych != 'n') goto yy150; + if (yych == 'I') goto yy625; + if (yych != 'i') goto yy151; yy625: YYDEBUG(625, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy626; - if (yych != 'u') goto yy150; + if (yych == 'N') goto yy626; + if (yych != 'n') goto yy151; yy626: YYDEBUG(626, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy627; - if (yych != 'e') goto yy150; + if (yych == 'U') goto yy627; + if (yych != 'u') goto yy151; yy627: YYDEBUG(627, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy628; + if (yych != 'e') goto yy151; +yy628: + YYDEBUG(628, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(628, *YYCURSOR); + YYDEBUG(629, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1222 "Zend/zend_language_scanner.l" { return T_CONTINUE; } -#line 6012 "Zend/zend_language_scanner.c" -yy629: - YYDEBUG(629, *YYCURSOR); +#line 6014 "Zend/zend_language_scanner.c" +yy630: + YYDEBUG(630, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(630, *YYCURSOR); + YYDEBUG(631, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1114 "Zend/zend_language_scanner.l" { return T_CONST; } -#line 6025 "Zend/zend_language_scanner.c" -yy631: - YYDEBUG(631, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy636; - if (yych == 's') goto yy636; - goto yy150; +#line 6027 "Zend/zend_language_scanner.c" yy632: YYDEBUG(632, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy633; - if (yych != 'n') goto yy150; + if (yych == 'S') goto yy637; + if (yych == 's') goto yy637; + goto yy151; yy633: YYDEBUG(633, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy634; - if (yych != 'e') goto yy150; + if (yych == 'N') goto yy634; + if (yych != 'n') goto yy151; yy634: YYDEBUG(634, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy635; + if (yych != 'e') goto yy151; +yy635: + YYDEBUG(635, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(635, *YYCURSOR); + YYDEBUG(636, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1304 "Zend/zend_language_scanner.l" { return T_CLONE; } -#line 6054 "Zend/zend_language_scanner.c" -yy636: - YYDEBUG(636, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy637; - if (yych != 's') goto yy150; +#line 6056 "Zend/zend_language_scanner.c" yy637: YYDEBUG(637, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy638; + if (yych != 's') goto yy151; +yy638: + YYDEBUG(638, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(638, *YYCURSOR); + YYDEBUG(639, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1238 "Zend/zend_language_scanner.l" { return T_CLASS; } -#line 6072 "Zend/zend_language_scanner.c" -yy639: - YYDEBUG(639, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy650; - if (yych == 'c') goto yy650; - goto yy150; +#line 6074 "Zend/zend_language_scanner.c" yy640: YYDEBUG(640, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy648; - if (yych == 'e') goto yy648; - goto yy150; + if (yych == 'C') goto yy651; + if (yych == 'c') goto yy651; + goto yy151; yy641: YYDEBUG(641, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy642; - if (yych != 'l') goto yy150; + if (yych == 'E') goto yy649; + if (yych == 'e') goto yy649; + goto yy151; yy642: YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy643; - if (yych != 'a') goto yy150; + if (yych == 'L') goto yy643; + if (yych != 'l') goto yy151; yy643: YYDEBUG(643, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy644; - if (yych != 'b') goto yy150; + if (yych == 'A') goto yy644; + if (yych != 'a') goto yy151; yy644: YYDEBUG(644, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy645; - if (yych != 'l') goto yy150; + if (yych == 'B') goto yy645; + if (yych != 'b') goto yy151; yy645: YYDEBUG(645, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy646; - if (yych != 'e') goto yy150; + if (yych == 'L') goto yy646; + if (yych != 'l') goto yy151; yy646: YYDEBUG(646, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy647; + if (yych != 'e') goto yy151; +yy647: + YYDEBUG(647, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(647, *YYCURSOR); + YYDEBUG(648, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1428 "Zend/zend_language_scanner.l" { return T_CALLABLE; } -#line 6122 "Zend/zend_language_scanner.c" -yy648: - YYDEBUG(648, *YYCURSOR); +#line 6124 "Zend/zend_language_scanner.c" +yy649: + YYDEBUG(649, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(649, *YYCURSOR); + YYDEBUG(650, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1210 "Zend/zend_language_scanner.l" { return T_CASE; } -#line 6135 "Zend/zend_language_scanner.c" -yy650: - YYDEBUG(650, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy651; - if (yych != 'h') goto yy150; +#line 6137 "Zend/zend_language_scanner.c" yy651: YYDEBUG(651, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy652; + if (yych != 'h') goto yy151; +yy652: + YYDEBUG(652, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(652, *YYCURSOR); + YYDEBUG(653, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1130 "Zend/zend_language_scanner.l" { return T_CATCH; } -#line 6153 "Zend/zend_language_scanner.c" -yy653: - YYDEBUG(653, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy670; - if (yych == 'n') goto yy670; - goto yy150; +#line 6155 "Zend/zend_language_scanner.c" yy654: YYDEBUG(654, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy663; - if (yych == 'r') goto yy663; - goto yy150; + if (yych == 'N') goto yy671; + if (yych == 'n') goto yy671; + goto yy151; yy655: YYDEBUG(655, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy656; - if (yych != 'n') goto yy150; + if (yych == 'R') goto yy664; + if (yych == 'r') goto yy664; + goto yy151; yy656: YYDEBUG(656, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy657; - if (yych != 'c') goto yy150; + if (yych == 'N') goto yy657; + if (yych != 'n') goto yy151; yy657: YYDEBUG(657, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy658; - if (yych != 't') goto yy150; + if (yych == 'C') goto yy658; + if (yych != 'c') goto yy151; yy658: YYDEBUG(658, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy659; - if (yych != 'i') goto yy150; + if (yych == 'T') goto yy659; + if (yych != 't') goto yy151; yy659: YYDEBUG(659, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy660; - if (yych != 'o') goto yy150; + if (yych == 'I') goto yy660; + if (yych != 'i') goto yy151; yy660: YYDEBUG(660, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy661; - if (yych != 'n') goto yy150; + if (yych == 'O') goto yy661; + if (yych != 'o') goto yy151; yy661: YYDEBUG(661, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy662; + if (yych != 'n') goto yy151; +yy662: + YYDEBUG(662, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(662, *YYCURSOR); + YYDEBUG(663, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1110 "Zend/zend_language_scanner.l" { return T_FUNCTION; } -#line 6208 "Zend/zend_language_scanner.c" -yy663: - YYDEBUG(663, *YYCURSOR); +#line 6210 "Zend/zend_language_scanner.c" +yy664: + YYDEBUG(664, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '@') { - if (yych <= '/') goto yy664; - if (yych <= '9') goto yy149; + if (yych <= '/') goto yy665; + if (yych <= '9') goto yy150; } else { - if (yych == 'E') goto yy665; - if (yych <= 'Z') goto yy149; + if (yych == 'E') goto yy666; + if (yych <= 'Z') goto yy150; } } else { if (yych <= 'd') { - if (yych != '`') goto yy149; + if (yych != '`') goto yy150; } else { - if (yych <= 'e') goto yy665; - if (yych <= 'z') goto yy149; - if (yych >= 0x7F) goto yy149; + if (yych <= 'e') goto yy666; + if (yych <= 'z') goto yy150; + if (yych >= 0x7F) goto yy150; } } -yy664: - YYDEBUG(664, *YYCURSOR); +yy665: + YYDEBUG(665, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1170 "Zend/zend_language_scanner.l" { return T_FOR; } -#line 6236 "Zend/zend_language_scanner.c" -yy665: - YYDEBUG(665, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy666; - if (yych != 'a') goto yy150; +#line 6238 "Zend/zend_language_scanner.c" yy666: YYDEBUG(666, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy667; - if (yych != 'c') goto yy150; + if (yych == 'A') goto yy667; + if (yych != 'a') goto yy151; yy667: YYDEBUG(667, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy668; - if (yych != 'h') goto yy150; + if (yych == 'C') goto yy668; + if (yych != 'c') goto yy151; yy668: YYDEBUG(668, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy669; + if (yych != 'h') goto yy151; +yy669: + YYDEBUG(669, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(669, *YYCURSOR); + YYDEBUG(670, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1178 "Zend/zend_language_scanner.l" { return T_FOREACH; } -#line 6264 "Zend/zend_language_scanner.c" -yy670: - YYDEBUG(670, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy671; - if (yych != 'a') goto yy150; +#line 6266 "Zend/zend_language_scanner.c" yy671: YYDEBUG(671, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy672; - if (yych != 'l') goto yy150; + if (yych == 'A') goto yy672; + if (yych != 'a') goto yy151; yy672: YYDEBUG(672, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy673; + if (yych != 'l') goto yy151; +yy673: + YYDEBUG(673, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '@') { - if (yych <= '/') goto yy673; - if (yych <= '9') goto yy149; + if (yych <= '/') goto yy674; + if (yych <= '9') goto yy150; } else { - if (yych == 'L') goto yy674; - if (yych <= 'Z') goto yy149; + if (yych == 'L') goto yy675; + if (yych <= 'Z') goto yy150; } } else { if (yych <= 'k') { - if (yych != '`') goto yy149; + if (yych != '`') goto yy150; } else { - if (yych <= 'l') goto yy674; - if (yych <= 'z') goto yy149; - if (yych >= 0x7F) goto yy149; + if (yych <= 'l') goto yy675; + if (yych <= 'z') goto yy150; + if (yych >= 0x7F) goto yy150; } } -yy673: - YYDEBUG(673, *YYCURSOR); +yy674: + YYDEBUG(674, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1396 "Zend/zend_language_scanner.l" { return T_FINAL; } -#line 6302 "Zend/zend_language_scanner.c" -yy674: - YYDEBUG(674, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy675; - if (yych != 'y') goto yy150; +#line 6304 "Zend/zend_language_scanner.c" yy675: YYDEBUG(675, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy676; + if (yych != 'y') goto yy151; +yy676: + YYDEBUG(676, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(676, *YYCURSOR); + YYDEBUG(677, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1134 "Zend/zend_language_scanner.l" { return T_FINALLY; } -#line 6320 "Zend/zend_language_scanner.c" -yy677: - YYDEBUG(677, *YYCURSOR); +#line 6322 "Zend/zend_language_scanner.c" +yy678: + YYDEBUG(678, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'F') { - if (yych == 'C') goto yy683; - if (yych <= 'E') goto yy150; - goto yy684; + if (yych == 'C') goto yy684; + if (yych <= 'E') goto yy151; + goto yy685; } else { if (yych <= 'c') { - if (yych <= 'b') goto yy150; - goto yy683; + if (yych <= 'b') goto yy151; + goto yy684; } else { - if (yych == 'f') goto yy684; - goto yy150; + if (yych == 'f') goto yy685; + goto yy151; } } -yy678: - YYDEBUG(678, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy681; - if (yych == 'e') goto yy681; - goto yy150; yy679: YYDEBUG(679, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy682; + if (yych == 'e') goto yy682; + goto yy151; +yy680: + YYDEBUG(680, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(680, *YYCURSOR); + YYDEBUG(681, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1166 "Zend/zend_language_scanner.l" { return T_DO; } -#line 6355 "Zend/zend_language_scanner.c" -yy681: - YYDEBUG(681, *YYCURSOR); +#line 6357 "Zend/zend_language_scanner.c" +yy682: + YYDEBUG(682, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(682, *YYCURSOR); + YYDEBUG(683, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1106 "Zend/zend_language_scanner.l" { return T_EXIT; } -#line 6368 "Zend/zend_language_scanner.c" -yy683: - YYDEBUG(683, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy690; - if (yych == 'l') goto yy690; - goto yy150; +#line 6370 "Zend/zend_language_scanner.c" yy684: YYDEBUG(684, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy685; - if (yych != 'a') goto yy150; + if (yych == 'L') goto yy691; + if (yych == 'l') goto yy691; + goto yy151; yy685: YYDEBUG(685, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy686; - if (yych != 'u') goto yy150; + if (yych == 'A') goto yy686; + if (yych != 'a') goto yy151; yy686: YYDEBUG(686, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy687; - if (yych != 'l') goto yy150; + if (yych == 'U') goto yy687; + if (yych != 'u') goto yy151; yy687: YYDEBUG(687, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy688; - if (yych != 't') goto yy150; + if (yych == 'L') goto yy688; + if (yych != 'l') goto yy151; yy688: YYDEBUG(688, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy689; + if (yych != 't') goto yy151; +yy689: + YYDEBUG(689, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(689, *YYCURSOR); + YYDEBUG(690, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1214 "Zend/zend_language_scanner.l" { return T_DEFAULT; } -#line 6407 "Zend/zend_language_scanner.c" -yy690: - YYDEBUG(690, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy691; - if (yych != 'a') goto yy150; +#line 6409 "Zend/zend_language_scanner.c" yy691: YYDEBUG(691, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy692; - if (yych != 'r') goto yy150; + if (yych == 'A') goto yy692; + if (yych != 'a') goto yy151; yy692: YYDEBUG(692, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy693; - if (yych != 'e') goto yy150; + if (yych == 'R') goto yy693; + if (yych != 'r') goto yy151; yy693: YYDEBUG(693, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy694; + if (yych != 'e') goto yy151; +yy694: + YYDEBUG(694, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(694, *YYCURSOR); + YYDEBUG(695, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1186 "Zend/zend_language_scanner.l" { return T_DECLARE; } -#line 6435 "Zend/zend_language_scanner.c" -yy695: - YYDEBUG(695, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy757; - if (yych == 'h') goto yy757; - goto yy150; +#line 6437 "Zend/zend_language_scanner.c" yy696: YYDEBUG(696, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy751; - if (yych == 's') goto yy751; - goto yy150; + if (yych == 'H') goto yy758; + if (yych == 'h') goto yy758; + goto yy151; yy697: YYDEBUG(697, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy747; - if (yych == 'p') goto yy747; - goto yy150; + if (yych == 'S') goto yy752; + if (yych == 's') goto yy752; + goto yy151; yy698: YYDEBUG(698, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy713; - if (yych == 'd') goto yy713; - goto yy150; + if (yych == 'P') goto yy748; + if (yych == 'p') goto yy748; + goto yy151; yy699: YYDEBUG(699, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy710; - if (yych == 'a') goto yy710; - goto yy150; + if (yych == 'D') goto yy714; + if (yych == 'd') goto yy714; + goto yy151; yy700: YYDEBUG(700, *YYCURSOR); yych = *++YYCURSOR; + if (yych == 'A') goto yy711; + if (yych == 'a') goto yy711; + goto yy151; +yy701: + YYDEBUG(701, *YYCURSOR); + yych = *++YYCURSOR; if (yych <= 'T') { - if (yych == 'I') goto yy701; - if (yych <= 'S') goto yy150; - goto yy702; + if (yych == 'I') goto yy702; + if (yych <= 'S') goto yy151; + goto yy703; } else { if (yych <= 'i') { - if (yych <= 'h') goto yy150; + if (yych <= 'h') goto yy151; } else { - if (yych == 't') goto yy702; - goto yy150; + if (yych == 't') goto yy703; + goto yy151; } } -yy701: - YYDEBUG(701, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy708; - if (yych == 't') goto yy708; - goto yy150; yy702: YYDEBUG(702, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy703; - if (yych != 'e') goto yy150; + if (yych == 'T') goto yy709; + if (yych == 't') goto yy709; + goto yy151; yy703: YYDEBUG(703, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy704; - if (yych != 'n') goto yy150; + if (yych == 'E') goto yy704; + if (yych != 'e') goto yy151; yy704: YYDEBUG(704, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy705; - if (yych != 'd') goto yy150; + if (yych == 'N') goto yy705; + if (yych != 'n') goto yy151; yy705: YYDEBUG(705, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy706; - if (yych != 's') goto yy150; + if (yych == 'D') goto yy706; + if (yych != 'd') goto yy151; yy706: YYDEBUG(706, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy707; + if (yych != 's') goto yy151; +yy707: + YYDEBUG(707, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(707, *YYCURSOR); + YYDEBUG(708, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1250 "Zend/zend_language_scanner.l" { return T_EXTENDS; } -#line 6519 "Zend/zend_language_scanner.c" -yy708: - YYDEBUG(708, *YYCURSOR); +#line 6521 "Zend/zend_language_scanner.c" +yy709: + YYDEBUG(709, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(709, *YYCURSOR); + YYDEBUG(710, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1102 "Zend/zend_language_scanner.l" { return T_EXIT; } -#line 6532 "Zend/zend_language_scanner.c" -yy710: - YYDEBUG(710, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy711; - if (yych != 'l') goto yy150; +#line 6534 "Zend/zend_language_scanner.c" yy711: YYDEBUG(711, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy712; + if (yych != 'l') goto yy151; +yy712: + YYDEBUG(712, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(712, *YYCURSOR); + YYDEBUG(713, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1340 "Zend/zend_language_scanner.l" { return T_EVAL; } -#line 6550 "Zend/zend_language_scanner.c" -yy713: - YYDEBUG(713, *YYCURSOR); +#line 6552 "Zend/zend_language_scanner.c" +yy714: + YYDEBUG(714, *YYCURSOR); yych = *++YYCURSOR; YYDEBUG(-1, yych); switch (yych) { case 'D': - case 'd': goto yy714; + case 'd': goto yy715; case 'F': - case 'f': goto yy715; + case 'f': goto yy716; case 'I': - case 'i': goto yy716; + case 'i': goto yy717; case 'S': - case 's': goto yy717; + case 's': goto yy718; case 'W': - case 'w': goto yy718; - default: goto yy150; + case 'w': goto yy719; + default: goto yy151; } -yy714: - YYDEBUG(714, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy740; - if (yych == 'e') goto yy740; - goto yy150; yy715: YYDEBUG(715, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy732; - if (yych == 'o') goto yy732; - goto yy150; + if (yych == 'E') goto yy741; + if (yych == 'e') goto yy741; + goto yy151; yy716: YYDEBUG(716, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy730; - if (yych == 'f') goto yy730; - goto yy150; + if (yych == 'O') goto yy733; + if (yych == 'o') goto yy733; + goto yy151; yy717: YYDEBUG(717, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'W') goto yy724; - if (yych == 'w') goto yy724; - goto yy150; + if (yych == 'F') goto yy731; + if (yych == 'f') goto yy731; + goto yy151; yy718: YYDEBUG(718, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy719; - if (yych != 'h') goto yy150; + if (yych == 'W') goto yy725; + if (yych == 'w') goto yy725; + goto yy151; yy719: YYDEBUG(719, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy720; - if (yych != 'i') goto yy150; + if (yych == 'H') goto yy720; + if (yych != 'h') goto yy151; yy720: YYDEBUG(720, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy721; - if (yych != 'l') goto yy150; + if (yych == 'I') goto yy721; + if (yych != 'i') goto yy151; yy721: YYDEBUG(721, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy722; - if (yych != 'e') goto yy150; + if (yych == 'L') goto yy722; + if (yych != 'l') goto yy151; yy722: YYDEBUG(722, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy723; + if (yych != 'e') goto yy151; +yy723: + YYDEBUG(723, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(723, *YYCURSOR); + YYDEBUG(724, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1162 "Zend/zend_language_scanner.l" { return T_ENDWHILE; } -#line 6624 "Zend/zend_language_scanner.c" -yy724: - YYDEBUG(724, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy725; - if (yych != 'i') goto yy150; +#line 6626 "Zend/zend_language_scanner.c" yy725: YYDEBUG(725, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy726; - if (yych != 't') goto yy150; + if (yych == 'I') goto yy726; + if (yych != 'i') goto yy151; yy726: YYDEBUG(726, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy727; - if (yych != 'c') goto yy150; + if (yych == 'T') goto yy727; + if (yych != 't') goto yy151; yy727: YYDEBUG(727, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy728; - if (yych != 'h') goto yy150; + if (yych == 'C') goto yy728; + if (yych != 'c') goto yy151; yy728: YYDEBUG(728, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy729; + if (yych != 'h') goto yy151; +yy729: + YYDEBUG(729, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(729, *YYCURSOR); + YYDEBUG(730, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1206 "Zend/zend_language_scanner.l" { return T_ENDSWITCH; } -#line 6657 "Zend/zend_language_scanner.c" -yy730: - YYDEBUG(730, *YYCURSOR); +#line 6659 "Zend/zend_language_scanner.c" +yy731: + YYDEBUG(731, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(731, *YYCURSOR); + YYDEBUG(732, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1150 "Zend/zend_language_scanner.l" { return T_ENDIF; } -#line 6670 "Zend/zend_language_scanner.c" -yy732: - YYDEBUG(732, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy733; - if (yych != 'r') goto yy150; +#line 6672 "Zend/zend_language_scanner.c" yy733: YYDEBUG(733, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy734; + if (yych != 'r') goto yy151; +yy734: + YYDEBUG(734, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '@') { - if (yych <= '/') goto yy734; - if (yych <= '9') goto yy149; + if (yych <= '/') goto yy735; + if (yych <= '9') goto yy150; } else { - if (yych == 'E') goto yy735; - if (yych <= 'Z') goto yy149; + if (yych == 'E') goto yy736; + if (yych <= 'Z') goto yy150; } } else { if (yych <= 'd') { - if (yych != '`') goto yy149; + if (yych != '`') goto yy150; } else { - if (yych <= 'e') goto yy735; - if (yych <= 'z') goto yy149; - if (yych >= 0x7F) goto yy149; + if (yych <= 'e') goto yy736; + if (yych <= 'z') goto yy150; + if (yych >= 0x7F) goto yy150; } } -yy734: - YYDEBUG(734, *YYCURSOR); +yy735: + YYDEBUG(735, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1174 "Zend/zend_language_scanner.l" { return T_ENDFOR; } -#line 6703 "Zend/zend_language_scanner.c" -yy735: - YYDEBUG(735, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy736; - if (yych != 'a') goto yy150; +#line 6705 "Zend/zend_language_scanner.c" yy736: YYDEBUG(736, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy737; - if (yych != 'c') goto yy150; + if (yych == 'A') goto yy737; + if (yych != 'a') goto yy151; yy737: YYDEBUG(737, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy738; - if (yych != 'h') goto yy150; + if (yych == 'C') goto yy738; + if (yych != 'c') goto yy151; yy738: YYDEBUG(738, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy739; + if (yych != 'h') goto yy151; +yy739: + YYDEBUG(739, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(739, *YYCURSOR); + YYDEBUG(740, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1182 "Zend/zend_language_scanner.l" { return T_ENDFOREACH; } -#line 6731 "Zend/zend_language_scanner.c" -yy740: - YYDEBUG(740, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy741; - if (yych != 'c') goto yy150; +#line 6733 "Zend/zend_language_scanner.c" yy741: YYDEBUG(741, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy742; - if (yych != 'l') goto yy150; + if (yych == 'C') goto yy742; + if (yych != 'c') goto yy151; yy742: YYDEBUG(742, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy743; - if (yych != 'a') goto yy150; + if (yych == 'L') goto yy743; + if (yych != 'l') goto yy151; yy743: YYDEBUG(743, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy744; - if (yych != 'r') goto yy150; + if (yych == 'A') goto yy744; + if (yych != 'a') goto yy151; yy744: YYDEBUG(744, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy745; - if (yych != 'e') goto yy150; + if (yych == 'R') goto yy745; + if (yych != 'r') goto yy151; yy745: YYDEBUG(745, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy746; + if (yych != 'e') goto yy151; +yy746: + YYDEBUG(746, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(746, *YYCURSOR); + YYDEBUG(747, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1190 "Zend/zend_language_scanner.l" { return T_ENDDECLARE; } -#line 6769 "Zend/zend_language_scanner.c" -yy747: - YYDEBUG(747, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy748; - if (yych != 't') goto yy150; +#line 6771 "Zend/zend_language_scanner.c" yy748: YYDEBUG(748, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy749; - if (yych != 'y') goto yy150; + if (yych == 'T') goto yy749; + if (yych != 't') goto yy151; yy749: YYDEBUG(749, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy750; + if (yych != 'y') goto yy151; +yy750: + YYDEBUG(750, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(750, *YYCURSOR); + YYDEBUG(751, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1380 "Zend/zend_language_scanner.l" { return T_EMPTY; } -#line 6792 "Zend/zend_language_scanner.c" -yy751: - YYDEBUG(751, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy752; - if (yych != 'e') goto yy150; +#line 6794 "Zend/zend_language_scanner.c" yy752: YYDEBUG(752, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy753; + if (yych != 'e') goto yy151; +yy753: + YYDEBUG(753, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '@') { - if (yych <= '/') goto yy753; - if (yych <= '9') goto yy149; + if (yych <= '/') goto yy754; + if (yych <= '9') goto yy150; } else { - if (yych == 'I') goto yy754; - if (yych <= 'Z') goto yy149; + if (yych == 'I') goto yy755; + if (yych <= 'Z') goto yy150; } } else { if (yych <= 'h') { - if (yych != '`') goto yy149; + if (yych != '`') goto yy150; } else { - if (yych <= 'i') goto yy754; - if (yych <= 'z') goto yy149; - if (yych >= 0x7F) goto yy149; + if (yych <= 'i') goto yy755; + if (yych <= 'z') goto yy150; + if (yych >= 0x7F) goto yy150; } } -yy753: - YYDEBUG(753, *YYCURSOR); +yy754: + YYDEBUG(754, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1154 "Zend/zend_language_scanner.l" { return T_ELSE; } -#line 6825 "Zend/zend_language_scanner.c" -yy754: - YYDEBUG(754, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy755; - if (yych != 'f') goto yy150; +#line 6827 "Zend/zend_language_scanner.c" yy755: YYDEBUG(755, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'F') goto yy756; + if (yych != 'f') goto yy151; +yy756: + YYDEBUG(756, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(756, *YYCURSOR); + YYDEBUG(757, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1146 "Zend/zend_language_scanner.l" { return T_ELSEIF; } -#line 6843 "Zend/zend_language_scanner.c" -yy757: - YYDEBUG(757, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy758; - if (yych != 'o') goto yy150; +#line 6845 "Zend/zend_language_scanner.c" yy758: YYDEBUG(758, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy759; + if (yych != 'o') goto yy151; +yy759: + YYDEBUG(759, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy149; + goto yy150; } - YYDEBUG(759, *YYCURSOR); + YYDEBUG(760, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1230 "Zend/zend_language_scanner.l" { return T_ECHO; } -#line 6861 "Zend/zend_language_scanner.c" +#line 6863 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -6896,52 +6898,52 @@ int lex_scan(zval *zendlval) 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, }; - YYDEBUG(760, *YYCURSOR); + YYDEBUG(761, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yych <= '-') { if (yych <= '\r') { - if (yych <= 0x08) goto yy768; - if (yych <= '\n') goto yy762; - if (yych <= '\f') goto yy768; + if (yych <= 0x08) goto yy769; + if (yych <= '\n') goto yy763; + if (yych <= '\f') goto yy769; } else { - if (yych == ' ') goto yy762; - if (yych <= ',') goto yy768; - goto yy764; + if (yych == ' ') goto yy763; + if (yych <= ',') goto yy769; + goto yy765; } } else { if (yych <= '_') { - if (yych <= '@') goto yy768; - if (yych <= 'Z') goto yy766; - if (yych <= '^') goto yy768; - goto yy766; + if (yych <= '@') goto yy769; + if (yych <= 'Z') goto yy767; + if (yych <= '^') goto yy769; + goto yy767; } else { - if (yych <= '`') goto yy768; - if (yych <= 'z') goto yy766; - if (yych <= '~') goto yy768; - goto yy766; + if (yych <= '`') goto yy769; + if (yych <= 'z') goto yy767; + if (yych <= '~') goto yy769; + goto yy767; } } -yy762: - YYDEBUG(762, *YYCURSOR); - ++YYCURSOR; - yych = *YYCURSOR; - goto yy774; yy763: YYDEBUG(763, *YYCURSOR); + ++YYCURSOR; + yych = *YYCURSOR; + goto yy775; +yy764: + YYDEBUG(764, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1263 "Zend/zend_language_scanner.l" { HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 6939 "Zend/zend_language_scanner.c" -yy764: - YYDEBUG(764, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '>') goto yy771; +#line 6941 "Zend/zend_language_scanner.c" yy765: YYDEBUG(765, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) == '>') goto yy772; +yy766: + YYDEBUG(766, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1278 "Zend/zend_language_scanner.l" { @@ -6949,14 +6951,14 @@ int lex_scan(zval *zendlval) yy_pop_state(); goto restart; } -#line 6953 "Zend/zend_language_scanner.c" -yy766: - YYDEBUG(766, *YYCURSOR); - ++YYCURSOR; - yych = *YYCURSOR; - goto yy770; +#line 6955 "Zend/zend_language_scanner.c" yy767: YYDEBUG(767, *YYCURSOR); + ++YYCURSOR; + yych = *YYCURSOR; + goto yy771; +yy768: + YYDEBUG(768, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1272 "Zend/zend_language_scanner.l" { @@ -6964,43 +6966,43 @@ int lex_scan(zval *zendlval) zend_copy_value(zendlval, yytext, yyleng); return T_STRING; } -#line 6968 "Zend/zend_language_scanner.c" -yy768: - YYDEBUG(768, *YYCURSOR); - yych = *++YYCURSOR; - goto yy765; +#line 6970 "Zend/zend_language_scanner.c" yy769: YYDEBUG(769, *YYCURSOR); + yych = *++YYCURSOR; + goto yy766; +yy770: + YYDEBUG(770, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy770: - YYDEBUG(770, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy769; - } - goto yy767; yy771: YYDEBUG(771, *YYCURSOR); - ++YYCURSOR; + if (yybm[0+yych] & 64) { + goto yy770; + } + goto yy768; +yy772: YYDEBUG(772, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(773, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1268 "Zend/zend_language_scanner.l" { return T_OBJECT_OPERATOR; } -#line 6993 "Zend/zend_language_scanner.c" -yy773: - YYDEBUG(773, *YYCURSOR); +#line 6995 "Zend/zend_language_scanner.c" +yy774: + YYDEBUG(774, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy774: - YYDEBUG(774, *YYCURSOR); +yy775: + YYDEBUG(775, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy773; + goto yy774; } - goto yy763; + goto yy764; } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7039,40 +7041,40 @@ int lex_scan(zval *zendlval) 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(775, *YYCURSOR); + YYDEBUG(776, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yych <= '_') { - if (yych <= '@') goto yy779; - if (yych <= 'Z') goto yy777; - if (yych <= '^') goto yy779; + if (yych <= '@') goto yy780; + if (yych <= 'Z') goto yy778; + if (yych <= '^') goto yy780; } else { - if (yych <= '`') goto yy779; - if (yych <= 'z') goto yy777; - if (yych <= '~') goto yy779; + if (yych <= '`') goto yy780; + if (yych <= 'z') goto yy778; + if (yych <= '~') goto yy780; } -yy777: - YYDEBUG(777, *YYCURSOR); +yy778: + YYDEBUG(778, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '_') { if (yych <= '@') { - if (yych <= '/') goto yy778; - if (yych <= '9') goto yy781; + if (yych <= '/') goto yy779; + if (yych <= '9') goto yy782; } else { - if (yych <= '[') goto yy781; - if (yych >= '_') goto yy781; + if (yych <= '[') goto yy782; + if (yych >= '_') goto yy782; } } else { if (yych <= '|') { - if (yych <= '`') goto yy778; - if (yych <= 'z') goto yy781; + if (yych <= '`') goto yy779; + if (yych <= 'z') goto yy782; } else { - if (yych != '~') goto yy781; + if (yych != '~') goto yy782; } } -yy778: - YYDEBUG(778, *YYCURSOR); +yy779: + YYDEBUG(779, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1579 "Zend/zend_language_scanner.l" { @@ -7081,30 +7083,32 @@ int lex_scan(zval *zendlval) yy_push_state(ST_IN_SCRIPTING); goto restart; } -#line 7085 "Zend/zend_language_scanner.c" -yy779: - YYDEBUG(779, *YYCURSOR); - yych = *++YYCURSOR; - goto yy778; +#line 7087 "Zend/zend_language_scanner.c" yy780: YYDEBUG(780, *YYCURSOR); + yych = *++YYCURSOR; + goto yy779; +yy781: + YYDEBUG(781, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy781: - YYDEBUG(781, *YYCURSOR); +yy782: + YYDEBUG(782, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy780; + goto yy781; } - if (yych == '[') goto yy783; - if (yych == '}') goto yy783; - YYDEBUG(782, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy778; + if (yych <= '@') goto yy783; + if (yych <= '[') goto yy784; + if (yych == '}') goto yy784; yy783: YYDEBUG(783, *YYCURSOR); - ++YYCURSOR; + YYCURSOR = YYMARKER; + goto yy779; +yy784: YYDEBUG(784, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(785, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1570 "Zend/zend_language_scanner.l" { @@ -7114,16 +7118,16 @@ int lex_scan(zval *zendlval) yy_push_state(ST_IN_SCRIPTING); return T_STRING_VARNAME; } -#line 7118 "Zend/zend_language_scanner.c" +#line 7122 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: - YYDEBUG(785, *YYCURSOR); + YYDEBUG(786, *YYCURSOR); YYFILL(1); yych = *YYCURSOR; - YYDEBUG(787, *YYCURSOR); - ++YYCURSOR; YYDEBUG(788, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(789, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 2292 "Zend/zend_language_scanner.l" { @@ -7181,7 +7185,7 @@ int lex_scan(zval *zendlval) HANDLE_NEWLINES(yytext, yyleng - newline); return T_ENCAPSED_AND_WHITESPACE; } -#line 7185 "Zend/zend_language_scanner.c" +#line 7189 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7219,74 +7223,74 @@ int lex_scan(zval *zendlval) 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, }; - YYDEBUG(789, *YYCURSOR); + YYDEBUG(790, *YYCURSOR); YYFILL(3); yych = *YYCURSOR; if (yych <= '/') { if (yych <= ' ') { if (yych <= '\f') { - if (yych <= 0x08) goto yy803; - if (yych <= '\n') goto yy799; - goto yy803; + if (yych <= 0x08) goto yy804; + if (yych <= '\n') goto yy800; + goto yy804; } else { - if (yych <= '\r') goto yy799; - if (yych <= 0x1F) goto yy803; - goto yy799; + if (yych <= '\r') goto yy800; + if (yych <= 0x1F) goto yy804; + goto yy800; } } else { if (yych <= '$') { - if (yych <= '"') goto yy798; - if (yych <= '#') goto yy799; - goto yy794; + if (yych <= '"') goto yy799; + if (yych <= '#') goto yy800; + goto yy795; } else { - if (yych == '\'') goto yy799; - goto yy798; + if (yych == '\'') goto yy800; + goto yy799; } } } else { if (yych <= '\\') { if (yych <= '@') { - if (yych <= '0') goto yy791; - if (yych <= '9') goto yy793; - goto yy798; - } else { - if (yych <= 'Z') goto yy801; - if (yych <= '[') goto yy798; + if (yych <= '0') goto yy792; + if (yych <= '9') goto yy794; goto yy799; + } else { + if (yych <= 'Z') goto yy802; + if (yych <= '[') goto yy799; + goto yy800; } } else { if (yych <= '_') { - if (yych <= ']') goto yy796; - if (yych <= '^') goto yy798; - goto yy801; + if (yych <= ']') goto yy797; + if (yych <= '^') goto yy799; + goto yy802; } else { - if (yych <= '`') goto yy798; - if (yych <= 'z') goto yy801; - if (yych <= '~') goto yy798; - goto yy801; + if (yych <= '`') goto yy799; + if (yych <= 'z') goto yy802; + if (yych <= '~') goto yy799; + goto yy802; } } } -yy791: - YYDEBUG(791, *YYCURSOR); +yy792: + YYDEBUG(792, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'W') { if (yych <= '9') { - if (yych >= '0') goto yy815; + if (yych >= '0') goto yy816; } else { - if (yych == 'B') goto yy812; + if (yych == 'B') goto yy813; } } else { if (yych <= 'b') { - if (yych <= 'X') goto yy814; - if (yych >= 'b') goto yy812; + if (yych <= 'X') goto yy815; + if (yych >= 'b') goto yy813; } else { - if (yych == 'x') goto yy814; + if (yych == 'x') goto yy815; } } -yy792: - YYDEBUG(792, *YYCURSOR); +yy793: + YYDEBUG(793, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1681 "Zend/zend_language_scanner.l" { /* Offset could be treated as a long */ @@ -7304,51 +7308,51 @@ int lex_scan(zval *zendlval) } return T_NUM_STRING; } -#line 7308 "Zend/zend_language_scanner.c" -yy793: - YYDEBUG(793, *YYCURSOR); - yych = *++YYCURSOR; - goto yy811; +#line 7312 "Zend/zend_language_scanner.c" yy794: YYDEBUG(794, *YYCURSOR); + yych = *++YYCURSOR; + goto yy812; +yy795: + YYDEBUG(795, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '_') { - if (yych <= '@') goto yy795; - if (yych <= 'Z') goto yy807; - if (yych >= '_') goto yy807; + if (yych <= '@') goto yy796; + if (yych <= 'Z') goto yy808; + if (yych >= '_') goto yy808; } else { - if (yych <= '`') goto yy795; - if (yych <= 'z') goto yy807; - if (yych >= 0x7F) goto yy807; + if (yych <= '`') goto yy796; + if (yych <= 'z') goto yy808; + if (yych >= 0x7F) goto yy808; } -yy795: - YYDEBUG(795, *YYCURSOR); +yy796: + YYDEBUG(796, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1841 "Zend/zend_language_scanner.l" { /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */ return yytext[0]; } -#line 7333 "Zend/zend_language_scanner.c" -yy796: - YYDEBUG(796, *YYCURSOR); - ++YYCURSOR; +#line 7337 "Zend/zend_language_scanner.c" +yy797: YYDEBUG(797, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(798, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1836 "Zend/zend_language_scanner.l" { yy_pop_state(); return ']'; } -#line 7344 "Zend/zend_language_scanner.c" -yy798: - YYDEBUG(798, *YYCURSOR); - yych = *++YYCURSOR; - goto yy795; +#line 7348 "Zend/zend_language_scanner.c" yy799: YYDEBUG(799, *YYCURSOR); - ++YYCURSOR; + yych = *++YYCURSOR; + goto yy796; +yy800: YYDEBUG(800, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(801, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1846 "Zend/zend_language_scanner.l" { @@ -7358,25 +7362,25 @@ int lex_scan(zval *zendlval) ZVAL_NULL(zendlval); return T_ENCAPSED_AND_WHITESPACE; } -#line 7362 "Zend/zend_language_scanner.c" -yy801: - YYDEBUG(801, *YYCURSOR); - ++YYCURSOR; - yych = *YYCURSOR; - goto yy806; +#line 7366 "Zend/zend_language_scanner.c" yy802: YYDEBUG(802, *YYCURSOR); + ++YYCURSOR; + yych = *YYCURSOR; + goto yy807; +yy803: + YYDEBUG(803, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1854 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); return T_STRING; } -#line 7376 "Zend/zend_language_scanner.c" -yy803: - YYDEBUG(803, *YYCURSOR); - ++YYCURSOR; +#line 7380 "Zend/zend_language_scanner.c" +yy804: YYDEBUG(804, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(805, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 2349 "Zend/zend_language_scanner.l" { @@ -7387,113 +7391,113 @@ 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 7391 "Zend/zend_language_scanner.c" -yy805: - YYDEBUG(805, *YYCURSOR); +#line 7395 "Zend/zend_language_scanner.c" +yy806: + YYDEBUG(806, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy806: - YYDEBUG(806, *YYCURSOR); - if (yybm[0+yych] & 16) { - goto yy805; - } - goto yy802; yy807: YYDEBUG(807, *YYCURSOR); + if (yybm[0+yych] & 16) { + goto yy806; + } + goto yy803; +yy808: + YYDEBUG(808, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(808, *YYCURSOR); + YYDEBUG(809, *YYCURSOR); if (yych <= '^') { if (yych <= '9') { - if (yych >= '0') goto yy807; + if (yych >= '0') goto yy808; } else { - if (yych <= '@') goto yy809; - if (yych <= 'Z') goto yy807; + if (yych <= '@') goto yy810; + if (yych <= 'Z') goto yy808; } } else { if (yych <= '`') { - if (yych <= '_') goto yy807; + if (yych <= '_') goto yy808; } else { - if (yych <= 'z') goto yy807; - if (yych >= 0x7F) goto yy807; + if (yych <= 'z') goto yy808; + if (yych >= 0x7F) goto yy808; } } -yy809: - YYDEBUG(809, *YYCURSOR); +yy810: + YYDEBUG(810, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1831 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); return T_VARIABLE; } -#line 7432 "Zend/zend_language_scanner.c" -yy810: - YYDEBUG(810, *YYCURSOR); +#line 7436 "Zend/zend_language_scanner.c" +yy811: + YYDEBUG(811, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy811: - YYDEBUG(811, *YYCURSOR); - if (yybm[0+yych] & 32) { - goto yy810; - } - goto yy792; yy812: YYDEBUG(812, *YYCURSOR); - yych = *++YYCURSOR; - if (yybm[0+yych] & 128) { - goto yy820; + if (yybm[0+yych] & 32) { + goto yy811; } + goto yy793; yy813: YYDEBUG(813, *YYCURSOR); - YYCURSOR = YYMARKER; - goto yy792; + yych = *++YYCURSOR; + if (yybm[0+yych] & 128) { + goto yy821; + } yy814: YYDEBUG(814, *YYCURSOR); + YYCURSOR = YYMARKER; + goto yy793; +yy815: + YYDEBUG(815, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 64) { - goto yy818; + goto yy819; } - goto yy813; -yy815: - YYDEBUG(815, *YYCURSOR); + goto yy814; +yy816: + YYDEBUG(816, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(816, *YYCURSOR); - if (yych <= '/') goto yy817; - if (yych <= '9') goto yy815; -yy817: YYDEBUG(817, *YYCURSOR); + if (yych <= '/') goto yy818; + if (yych <= '9') goto yy816; +yy818: + YYDEBUG(818, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1697 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ ZVAL_STRINGL(zendlval, yytext, yyleng); return T_NUM_STRING; } -#line 7477 "Zend/zend_language_scanner.c" -yy818: - YYDEBUG(818, *YYCURSOR); +#line 7481 "Zend/zend_language_scanner.c" +yy819: + YYDEBUG(819, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(819, *YYCURSOR); + YYDEBUG(820, *YYCURSOR); if (yybm[0+yych] & 64) { - goto yy818; + goto yy819; } - goto yy817; -yy820: - YYDEBUG(820, *YYCURSOR); + goto yy818; +yy821: + YYDEBUG(821, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(821, *YYCURSOR); + YYDEBUG(822, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy820; + goto yy821; } - goto yy817; + goto yy818; } } #line 2358 "Zend/zend_language_scanner.l" diff --git a/Zend/zend_language_scanner_defs.h b/Zend/zend_language_scanner_defs.h index 5926e3c61d971..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.5 */ +/* Generated by re2c 0.13.7.5 */ #line 3 "Zend/zend_language_scanner_defs.h" enum YYCONDTYPE { diff --git a/Zend/zend_types.h b/Zend/zend_types.h index 80e17003739f2..f3bc9774ecb91 100644 --- a/Zend/zend_types.h +++ b/Zend/zend_types.h @@ -238,6 +238,11 @@ static zend_always_inline zend_uchar zval_get_type(const zval* pz) { return pz->u1.v.type; } +#define ZEND_SAME_FAKE_TYPE(faketype, realtype) ( \ + (faketype) == (realtype) \ + || ((faketype) == _IS_BOOL && ((realtype) == IS_TRUE || (realtype) == IS_FALSE)) \ +) + /* we should never set just Z_TYPE, we should set Z_TYPE_INFO */ #define Z_TYPE(zval) zval_get_type(&(zval)) #define Z_TYPE_P(zval_p) Z_TYPE(*(zval_p)) diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 8a1bda8cd76fa..9b4a7b0ca29f7 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -2768,6 +2768,8 @@ ZEND_VM_HANDLER(60, ZEND_DO_FCALL, ANY, ANY) zend_object *object = Z_OBJ(call->This); zval *ret; + ZEND_ADD_CALL_FLAG(call, opline->op1.num & ZEND_CALL_STRICT_TYPEHINTS); + SAVE_OPLINE(); EX(call) = call->prev_execute_data; if (UNEXPECTED((fbc->common.fn_flags & (ZEND_ACC_ABSTRACT|ZEND_ACC_DEPRECATED)) != 0)) { @@ -2843,7 +2845,7 @@ ZEND_VM_HANDLER(60, ZEND_DO_FCALL, ANY, ANY) zval *p = ZEND_CALL_ARG(call, 1); for (i = 0; i < num_args; ++i) { - zend_verify_internal_arg_type(fbc, i + 1, p); + zend_verify_internal_arg_type(fbc, i + 1, p, (EX_CALL_INFO() & ZEND_CALL_STRICT_TYPEHINTS) ? 1 : 0); p++; } if (UNEXPECTED(EG(exception) != NULL)) { @@ -2956,11 +2958,15 @@ ZEND_VM_HANDLER(124, ZEND_VERIFY_RETURN_TYPE, CONST|TMP|VAR|UNUSED|CV, UNUSED) if (OP1_TYPE == IS_UNUSED) { zend_verify_missing_return_type(EX(func)); } else { +/* prevents "undefined variable opline" errors */ +#if OP1_TYPE != IS_UNUSED zval *retval_ptr; zend_free_op free_op1; retval_ptr = GET_OP1_ZVAL_PTR_DEREF(BP_VAR_R); - zend_verify_return_type(EX(func), retval_ptr); + /* extended_value stores strictness flag */ + zend_verify_return_type(EX(func), retval_ptr, opline->extended_value); +#endif } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -3692,7 +3698,7 @@ ZEND_VM_HANDLER(63, ZEND_RECV, ANY, ANY) } else if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) != 0)) { zval *param = _get_zval_ptr_cv_undef_BP_VAR_W(execute_data, opline->result.var); - zend_verify_arg_type(EX(func), arg_num, param, NULL); + zend_verify_arg_type(EX(func), arg_num, param, NULL, (EX_CALL_INFO() & ZEND_CALL_STRICT_TYPEHINTS) ? 1 : 0); CHECK_EXCEPTION(); } @@ -3720,7 +3726,7 @@ ZEND_VM_HANDLER(64, ZEND_RECV_INIT, ANY, CONST) } if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) != 0)) { - zend_verify_arg_type(EX(func), arg_num, param, EX_CONSTANT(opline->op2)); + zend_verify_arg_type(EX(func), arg_num, param, EX_CONSTANT(opline->op2), (EX_CALL_INFO() & ZEND_CALL_STRICT_TYPEHINTS) ? 1 : 0); } CHECK_EXCEPTION(); @@ -3746,8 +3752,8 @@ ZEND_VM_HANDLER(164, ZEND_RECV_VARIADIC, ANY, ANY) ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(params)) { param = EX_VAR_NUM(EX(func)->op_array.last_var + EX(func)->op_array.T); if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) != 0)) { - do { - zend_verify_arg_type(EX(func), arg_num, param, NULL); + do { + zend_verify_arg_type(EX(func), arg_num, param, NULL, (EX_CALL_INFO() & ZEND_CALL_STRICT_TYPEHINTS) ? 1 : 0); if (Z_OPT_REFCOUNTED_P(param)) Z_ADDREF_P(param); ZEND_HASH_FILL_ADD(param); param++; diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 19e1a741b5df6..83943a9c66b6a 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -494,6 +494,8 @@ static int ZEND_FASTCALL ZEND_DO_FCALL_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_object *object = Z_OBJ(call->This); zval *ret; + ZEND_ADD_CALL_FLAG(call, opline->op1.num & ZEND_CALL_STRICT_TYPEHINTS); + SAVE_OPLINE(); EX(call) = call->prev_execute_data; if (UNEXPECTED((fbc->common.fn_flags & (ZEND_ACC_ABSTRACT|ZEND_ACC_DEPRECATED)) != 0)) { @@ -569,7 +571,7 @@ static int ZEND_FASTCALL ZEND_DO_FCALL_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zval *p = ZEND_CALL_ARG(call, 1); for (i = 0; i < num_args; ++i) { - zend_verify_internal_arg_type(fbc, i + 1, p); + zend_verify_internal_arg_type(fbc, i + 1, p, (EX_CALL_INFO() & ZEND_CALL_STRICT_TYPEHINTS) ? 1 : 0); p++; } if (UNEXPECTED(EG(exception) != NULL)) { @@ -987,7 +989,7 @@ static int ZEND_FASTCALL ZEND_RECV_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } else if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) != 0)) { zval *param = _get_zval_ptr_cv_undef_BP_VAR_W(execute_data, opline->result.var); - zend_verify_arg_type(EX(func), arg_num, param, NULL); + zend_verify_arg_type(EX(func), arg_num, param, NULL, (EX_CALL_INFO() & ZEND_CALL_STRICT_TYPEHINTS) ? 1 : 0); CHECK_EXCEPTION(); } @@ -1014,7 +1016,7 @@ static int ZEND_FASTCALL ZEND_RECV_VARIADIC_SPEC_HANDLER(ZEND_OPCODE_HANDLER_AR param = EX_VAR_NUM(EX(func)->op_array.last_var + EX(func)->op_array.T); if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) != 0)) { do { - zend_verify_arg_type(EX(func), arg_num, param, NULL); + zend_verify_arg_type(EX(func), arg_num, param, NULL, (EX_CALL_INFO() & ZEND_CALL_STRICT_TYPEHINTS) ? 1 : 0); if (Z_OPT_REFCOUNTED_P(param)) Z_ADDREF_P(param); ZEND_HASH_FILL_ADD(param); param++; @@ -1764,7 +1766,7 @@ static int ZEND_FASTCALL ZEND_RECV_INIT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ } if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) != 0)) { - zend_verify_arg_type(EX(func), arg_num, param, EX_CONSTANT(opline->op2)); + zend_verify_arg_type(EX(func), arg_num, param, EX_CONSTANT(opline->op2), (EX_CALL_INFO() & ZEND_CALL_STRICT_TYPEHINTS) ? 1 : 0); } CHECK_EXCEPTION(); @@ -6107,11 +6109,15 @@ static int ZEND_FASTCALL ZEND_VERIFY_RETURN_TYPE_SPEC_CONST_UNUSED_HANDLER(ZEND if (IS_CONST == IS_UNUSED) { zend_verify_missing_return_type(EX(func)); } else { +/* prevents "undefined variable opline" errors */ +#if IS_CONST != IS_UNUSED zval *retval_ptr; retval_ptr = EX_CONSTANT(opline->op1); - zend_verify_return_type(EX(func), retval_ptr); + /* extended_value stores strictness flag */ + zend_verify_return_type(EX(func), retval_ptr, opline->extended_value); +#endif } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -10125,11 +10131,15 @@ static int ZEND_FASTCALL ZEND_VERIFY_RETURN_TYPE_SPEC_TMP_UNUSED_HANDLER(ZEND_O if (IS_TMP_VAR == IS_UNUSED) { zend_verify_missing_return_type(EX(func)); } else { +/* prevents "undefined variable opline" errors */ +#if IS_TMP_VAR != IS_UNUSED zval *retval_ptr; zend_free_op free_op1; retval_ptr = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1); - zend_verify_return_type(EX(func), retval_ptr); + /* extended_value stores strictness flag */ + zend_verify_return_type(EX(func), retval_ptr, opline->extended_value); +#endif } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -14966,11 +14976,15 @@ static int ZEND_FASTCALL ZEND_VERIFY_RETURN_TYPE_SPEC_VAR_UNUSED_HANDLER(ZEND_O if (IS_VAR == IS_UNUSED) { zend_verify_missing_return_type(EX(func)); } else { +/* prevents "undefined variable opline" errors */ +#if IS_VAR != IS_UNUSED zval *retval_ptr; zend_free_op free_op1; retval_ptr = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1); - zend_verify_return_type(EX(func), retval_ptr); + /* extended_value stores strictness flag */ + zend_verify_return_type(EX(func), retval_ptr, opline->extended_value); +#endif } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -20229,11 +20243,15 @@ static int ZEND_FASTCALL ZEND_VERIFY_RETURN_TYPE_SPEC_UNUSED_UNUSED_HANDLER(ZEN if (IS_UNUSED == IS_UNUSED) { zend_verify_missing_return_type(EX(func)); } else { +/* prevents "undefined variable opline" errors */ +#if IS_UNUSED != IS_UNUSED zval *retval_ptr; retval_ptr = NULL; - zend_verify_return_type(EX(func), retval_ptr); + /* extended_value stores strictness flag */ + zend_verify_return_type(EX(func), retval_ptr, opline->extended_value); +#endif } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); @@ -28413,11 +28431,15 @@ static int ZEND_FASTCALL ZEND_VERIFY_RETURN_TYPE_SPEC_CV_UNUSED_HANDLER(ZEND_OP if (IS_CV == IS_UNUSED) { zend_verify_missing_return_type(EX(func)); } else { +/* prevents "undefined variable opline" errors */ +#if IS_CV != IS_UNUSED zval *retval_ptr; retval_ptr = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var); - zend_verify_return_type(EX(func), retval_ptr); + /* extended_value stores strictness flag */ + zend_verify_return_type(EX(func), retval_ptr, opline->extended_value); +#endif } CHECK_EXCEPTION(); ZEND_VM_NEXT_OPCODE(); diff --git a/ext/gd/gd.c b/ext/gd/gd.c index 61050ba2881d3..ebd4500495bb6 100644 --- a/ext/gd/gd.c +++ b/ext/gd/gd.c @@ -3940,13 +3940,13 @@ static void php_imagettftext_common(INTERNAL_FUNCTION_PARAMETERS, int mode, int if (mode == TTFTEXT_BBOX) { if (argc < 4 || argc > ((extended) ? 5 : 4)) { - ZEND_WRONG_PARAM_COUNT(); + WRONG_PARAM_COUNT; } else if (zend_parse_parameters(argc, "ddss|a", &ptsize, &angle, &fontname, &fontname_len, &str, &str_len, &EXT) == FAILURE) { RETURN_FALSE; } } else { if (argc < 8 || argc > ((extended) ? 9 : 8)) { - ZEND_WRONG_PARAM_COUNT(); + WRONG_PARAM_COUNT; } else if (zend_parse_parameters(argc, "rddlllss|a", &IM, &ptsize, &angle, &x, &y, &col, &fontname, &fontname_len, &str, &str_len, &EXT) == FAILURE) { RETURN_FALSE; } @@ -4395,7 +4395,7 @@ PHP_FUNCTION(imagepsbbox) BBox char_bbox, str_bbox = {0, 0, 0, 0}; if (argc != 3 && argc != 6) { - ZEND_WRONG_PARAM_COUNT(); + WRONG_PARAM_COUNT; } if (zend_parse_parameters(ZEND_NUM_ARGS(), "Srl|lld", &str, &fnt, &sz, &sp, &wd, &angle) == FAILURE) { diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 9f6d8220ce64c..3516ab489471e 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -368,7 +368,7 @@ PHP_FUNCTION(mysqli_stmt_bind_param) args = safe_emalloc(argc, sizeof(zval), 0); if (zend_get_parameters_array_ex(argc, args) == FAILURE) { - zend_wrong_param_count(); + WRONG_PARAM_COUNT; rc = 1; } else { rc = mysqli_stmt_bind_param_do_bind(stmt, argc, num_vars, args, start, types); 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