diff options
author | Dmitry Stogov <dmitry@zend.com> | 2014-04-26 00:32:51 +0400 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2014-04-26 00:32:51 +0400 |
commit | f9927a6c97208c60d922f9a4e98feb8079c57d1f (patch) | |
tree | 35815b69d1bf7d47fb41e857ff8d2b024ddac153 /Zend | |
parent | 4e7cbf3f5842abe6688c11ce3cc11d2eabf0695f (diff) | |
parent | b82d077f988606580e5c06a9da18fe4f60ddb7cb (diff) | |
download | php-git-f9927a6c97208c60d922f9a4e98feb8079c57d1f.tar.gz |
Merge mainstream 'master' branch into refactoring
During merge I had to revert:
Nikita's patch for php_splice() (it probably needs to be applyed again)
Bob Weinand's patches related to constant expression handling (we need to review them carefully)
I also reverted all our attempts to support sapi/phpdbg (we didn't test it anyway)
Conflicts:
Zend/zend.h
Zend/zend_API.c
Zend/zend_ast.c
Zend/zend_compile.c
Zend/zend_compile.h
Zend/zend_constants.c
Zend/zend_exceptions.c
Zend/zend_execute.c
Zend/zend_execute.h
Zend/zend_execute_API.c
Zend/zend_hash.c
Zend/zend_highlight.c
Zend/zend_language_parser.y
Zend/zend_language_scanner.c
Zend/zend_language_scanner_defs.h
Zend/zend_variables.c
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
ext/date/php_date.c
ext/dom/documenttype.c
ext/hash/hash.c
ext/iconv/iconv.c
ext/mbstring/tests/zend_multibyte-10.phpt
ext/mbstring/tests/zend_multibyte-11.phpt
ext/mbstring/tests/zend_multibyte-12.phpt
ext/mysql/php_mysql.c
ext/mysqli/mysqli.c
ext/mysqlnd/mysqlnd_reverse_api.c
ext/mysqlnd/php_mysqlnd.c
ext/opcache/ZendAccelerator.c
ext/opcache/zend_accelerator_util_funcs.c
ext/opcache/zend_persist.c
ext/opcache/zend_persist_calc.c
ext/pcre/php_pcre.c
ext/pdo/pdo_dbh.c
ext/pdo/pdo_stmt.c
ext/pdo_pgsql/pgsql_driver.c
ext/pgsql/pgsql.c
ext/reflection/php_reflection.c
ext/session/session.c
ext/spl/spl_array.c
ext/spl/spl_observer.c
ext/standard/array.c
ext/standard/basic_functions.c
ext/standard/html.c
ext/standard/mail.c
ext/standard/php_array.h
ext/standard/proc_open.c
ext/standard/streamsfuncs.c
ext/standard/user_filters.c
ext/standard/var_unserializer.c
ext/standard/var_unserializer.re
main/php_variables.c
sapi/phpdbg/phpdbg.c
sapi/phpdbg/phpdbg_bp.c
sapi/phpdbg/phpdbg_frame.c
sapi/phpdbg/phpdbg_help.c
sapi/phpdbg/phpdbg_list.c
sapi/phpdbg/phpdbg_print.c
sapi/phpdbg/phpdbg_prompt.c
Diffstat (limited to 'Zend')
50 files changed, 3195 insertions, 2323 deletions
diff --git a/Zend/Zend.dsp b/Zend/Zend.dsp index 348e1abaa5..98d368fb16 100644 --- a/Zend/Zend.dsp +++ b/Zend/Zend.dsp @@ -269,6 +269,10 @@ SOURCE=.\zend_variables.c SOURCE=.\zend_vm_opcodes.c
# End Source File
+# Begin Source File
+
+SOURCE=.\zend_virtual_cwd.c
+# End Source File
# End Group
# Begin Group "Header Files"
@@ -437,10 +441,6 @@ SOURCE=.\zend_ts_hash.h SOURCE=.\zend_variables.h
# End Source File
-# Begin Source File
-
-SOURCE=.\zend_virtual_cwd.c
-# End Source File
# End Group
# Begin Group "Parsers"
diff --git a/Zend/tests/arg_unpack/basic.phpt b/Zend/tests/arg_unpack/basic.phpt index 9c0365586a..f8bd019378 100644 --- a/Zend/tests/arg_unpack/basic.phpt +++ b/Zend/tests/arg_unpack/basic.phpt @@ -30,12 +30,12 @@ test(...getArray([1, 2, 3])); test(...arrayGen([])); test(...arrayGen([1, 2, 3])); -test(1, ...[2, 3], ...[4, 5], 6); -test(1, ...getArray([2, 3]), ...arrayGen([4, 5]), 6); +test(1, ...[2, 3], ...[4, 5]); +test(1, ...getArray([2, 3]), ...arrayGen([4, 5])); test2(...[1, 2]); test2(...[1, 2, 3]); -test2(...[1], ...[], ...[], ...[2, 3], 4, ...[5, 6]); +test2(...[1], ...[], ...[], ...[2, 3], ...[4, 5]); ?> --EXPECT-- @@ -75,7 +75,7 @@ array(3) { [2]=> int(3) } -array(6) { +array(5) { [0]=> int(1) [1]=> @@ -86,10 +86,8 @@ array(6) { int(4) [4]=> int(5) - [5]=> - int(6) } -array(6) { +array(5) { [0]=> int(1) [1]=> @@ -100,8 +98,6 @@ array(6) { int(4) [4]=> int(5) - [5]=> - int(6) } int(1) int(2) diff --git a/Zend/tests/arg_unpack/by_ref.phpt b/Zend/tests/arg_unpack/by_ref.phpt index 0619a3bab8..7c8a86be48 100644 --- a/Zend/tests/arg_unpack/by_ref.phpt +++ b/Zend/tests/arg_unpack/by_ref.phpt @@ -17,46 +17,37 @@ $array = [1, 2, 3]; test1(...$array); var_dump($array); -$array1 = [1, 2]; $val2 = 3; $array2 = [4, 5]; -test1(...$array1, $val2, ...$array2); -var_dump($array1, $val2, $array2); +$array1 = [1, 2]; $array2 = [3, 4]; +test1(...$array1, ...$array2); +var_dump($array1, $array2); function test2($val1, &$ref1, $val2, &$ref2) { $ref1++; $ref2++; } -$array = [1, 2, 3, 4]; +$array = [0, 0, 0, 0]; test2(...$array); var_dump($array); -$a = $b = $c = $d = 0; +$array1 = [1, 2]; $array2 = [4, 5]; +test1(...$array1, ...$array2); +var_dump($array1, $array2); -$array = []; -test2(...$array, $a, $b, $c, $d); -var_dump($array, $a, $b, $c, $d); +$a = $b = $c = $d = 0; +$array = [0, 0, 0, 0]; -$array = [1]; -test2(...$array, $a, $b, $c, $d); -var_dump($array, $a, $b, $c, $d); +test2($a, ...$array); +var_dump($a, $array); -$array = [1, 2]; -test2(...$array, $a, $b, $c, $d); -var_dump($array, $a, $b, $c, $d); +test2($a, $b, ...$array); +var_dump($a, $b, $array); -$array = [1, 2, 3]; -test2(...$array, $a, $b, $c, $d); -var_dump($array, $a, $b, $c, $d); +test2($a, $b, $c, ...$array); +var_dump($a, $b, $c, $array); -$vars = []; -$array = []; -test2(...$array, $vars['a'], $vars['b'], $vars['c'], $vars['d']); -var_dump($vars); - -$vars = []; -$array = [1]; -test2(...$array, $vars['a'], $vars['b'], $vars['c'], $vars['d']); -var_dump($vars); +test2($a, $b, $c, $d, ...$array); +var_dump($a, $b, $c, $d, $array); ?> --EXPECTF-- @@ -74,76 +65,81 @@ array(2) { [1]=> int(3) } -int(4) array(2) { [0]=> - int(5) + int(4) [1]=> - int(6) + int(5) } array(4) { [0]=> - int(1) + int(0) [1]=> - int(3) + int(1) [2]=> - int(3) + int(0) [3]=> - int(5) -} -array(0) { + int(1) } -int(0) -int(1) -int(0) -int(1) -array(1) { +array(2) { [0]=> - int(1) + int(2) + [1]=> + int(3) } -int(1) -int(1) -int(1) -int(1) array(2) { [0]=> + int(5) + [1]=> + int(6) +} +int(0) +array(4) { + [0]=> int(1) [1]=> - int(3) + int(0) + [2]=> + int(1) + [3]=> + int(0) } +int(0) int(1) -int(2) -int(1) -int(1) -array(3) { +array(4) { [0]=> int(1) [1]=> - int(3) + int(1) [2]=> - int(3) + int(1) + [3]=> + int(0) } +int(0) int(2) -int(2) -int(1) -int(1) - -Notice: Undefined index: a in %s on line %d - -Notice: Undefined index: c in %s on line %d -array(2) { - ["b"]=> +int(0) +array(4) { + [0]=> + int(2) + [1]=> int(1) - ["d"]=> + [2]=> int(1) + [3]=> + int(0) } - -Notice: Undefined index: b in %s on line %d - -Notice: Undefined index: d in %s on line %d -array(2) { - ["a"]=> +int(0) +int(3) +int(0) +int(1) +array(4) { + [0]=> + int(2) + [1]=> int(1) - ["c"]=> + [2]=> int(1) + [3]=> + int(0) } diff --git a/Zend/tests/arg_unpack/dynamic.phpt b/Zend/tests/arg_unpack/dynamic.phpt index efed84da78..8f129f85a6 100644 --- a/Zend/tests/arg_unpack/dynamic.phpt +++ b/Zend/tests/arg_unpack/dynamic.phpt @@ -9,7 +9,7 @@ $fn = function(...$args) { $fn(...[]); $fn(...[1, 2, 3]); -$fn(1, ...[2, 3], ...[], 4, 5); +$fn(1, ...[2, 3], ...[], ...[4, 5]); ?> --EXPECT-- diff --git a/Zend/tests/arg_unpack/invalid_type.phpt b/Zend/tests/arg_unpack/invalid_type.phpt index 3efffebc76..1ef545558c 100644 --- a/Zend/tests/arg_unpack/invalid_type.phpt +++ b/Zend/tests/arg_unpack/invalid_type.phpt @@ -12,7 +12,7 @@ test(...42); test(...new stdClass); test(1, 2, 3, ..."foo", ...[4, 5]); -test(1, 2, ...new StdClass, 3, ...3.14, ...[4, 5]); +test(1, 2, 3, ...new StdClass, ...3.14, ...[4, 5]); ?> --EXPECTF-- diff --git a/Zend/tests/arg_unpack/method.phpt b/Zend/tests/arg_unpack/method.phpt index d6a6e4712b..fb9ace8378 100644 --- a/Zend/tests/arg_unpack/method.phpt +++ b/Zend/tests/arg_unpack/method.phpt @@ -14,8 +14,7 @@ class Foo { } $foo = new Foo; -$foo->test(...[1, 2], 3, 4, ...[], 5); -Foo::test2(1, 2, ...[3, 4], ...[], 5); +Foo::test2(1, 2, ...[3, 4], ...[], ...[5]); ?> --EXPECT-- @@ -31,15 +30,3 @@ array(5) { [4]=> int(5) } -array(5) { - [0]=> - int(1) - [1]=> - int(2) - [2]=> - int(3) - [3]=> - int(4) - [4]=> - int(5) -} diff --git a/Zend/tests/arg_unpack/new.phpt b/Zend/tests/arg_unpack/new.phpt index 3cf224f288..7a0968e2c9 100644 --- a/Zend/tests/arg_unpack/new.phpt +++ b/Zend/tests/arg_unpack/new.phpt @@ -11,7 +11,7 @@ class Foo { new Foo(...[]); new Foo(...[1, 2, 3]); -new Foo(...[1], 2, ...[], ...[3, 4], 5); +new Foo(...[1], ...[], ...[2, 3]); ?> --EXPECT-- @@ -25,15 +25,11 @@ array(3) { [2]=> int(3) } -array(5) { +array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) - [3]=> - int(4) - [4]=> - int(5) } diff --git a/Zend/tests/arg_unpack/positional_arg_after_unpack_error.phpt b/Zend/tests/arg_unpack/positional_arg_after_unpack_error.phpt new file mode 100644 index 0000000000..30e13e3d10 --- /dev/null +++ b/Zend/tests/arg_unpack/positional_arg_after_unpack_error.phpt @@ -0,0 +1,10 @@ +--TEST-- +Positional arguments cannot be used after argument unpacking +--FILE-- +<?php + +var_dump(...[1, 2, 3], 4); + +?> +--EXPECTF-- +Fatal error: Cannot use positional argument after argument unpacking in %s on line %d diff --git a/Zend/tests/arg_unpack/traversable_throwing_exception.phpt b/Zend/tests/arg_unpack/traversable_throwing_exception.phpt index 8ddc24dc74..abbf537587 100644 --- a/Zend/tests/arg_unpack/traversable_throwing_exception.phpt +++ b/Zend/tests/arg_unpack/traversable_throwing_exception.phpt @@ -20,11 +20,11 @@ function gen() { } try { - test(1, 2, ...new Foo, 3, 4); + test(1, 2, ...new Foo, ...[3, 4]); } catch (Exception $e) { var_dump($e->getMessage()); } try { - test(1, 2, ...gen(), 3, 4); + test(1, 2, ...gen(), ...[3, 4]); } catch (Exception $e) { var_dump($e->getMessage()); } ?> diff --git a/Zend/tests/arg_unpack/traversable_with_by_ref_parameters.phpt b/Zend/tests/arg_unpack/traversable_with_by_ref_parameters.phpt index e862341652..711287eded 100644 --- a/Zend/tests/arg_unpack/traversable_with_by_ref_parameters.phpt +++ b/Zend/tests/arg_unpack/traversable_with_by_ref_parameters.phpt @@ -13,8 +13,6 @@ function gen($array) { } } -test(...gen([1, 2, 3]), $a); -var_dump($a); test(1, 2, 3, $b, ...gen([4, 5, 6])); var_dump($b); @@ -25,7 +23,6 @@ test(...gen([1, 2]), ...gen([3, 4])); ?> --EXPECTF-- int(42) -int(42) Warning: Cannot pass by-reference argument 4 of test() by unpacking a Traversable, passing by-value instead in %s on line %d diff --git a/Zend/tests/bug66015.phpt b/Zend/tests/bug66015.phpt new file mode 100644 index 0000000000..4f6d51e0dd --- /dev/null +++ b/Zend/tests/bug66015.phpt @@ -0,0 +1,30 @@ +--TEST-- +Bug #66015 (wrong array indexing in class's static property) +--FILE-- +<?php +class Test +{ + const FIRST = 1; + const SECOND = 2; + const THIRD = 3; + + protected static $array = [ + self::FIRST => 'first', + 'second', + 'third' + ]; + + public function __construct() + { + var_export(self::$array); + } +} + +$test = new Test(); +?> +--EXPECTF-- +array ( + 1 => 'first', + 2 => 'second', + 3 => 'third', +) diff --git a/Zend/tests/bug66660.phpt b/Zend/tests/bug66660.phpt new file mode 100644 index 0000000000..9ae8a27336 --- /dev/null +++ b/Zend/tests/bug66660.phpt @@ -0,0 +1,13 @@ +--TEST-- +Bug #66660 (Composer.phar install/update fails) +--STDIN-- +<?php __CLASS__ ?> +--FILE-- +<?php +file_put_contents(__DIR__."/bug66660.tmp.php", "<?php __CLASS__ ?>"); +echo php_strip_whitespace(__DIR__."/bug66660.tmp.php"); +?> +--CLEAN-- +<?php unlink(__DIR__."/bug66660.tmp.php"); ?> +--EXPECT-- +<?php __CLASS__ ?> diff --git a/Zend/tests/constant_expressions.phpt b/Zend/tests/constant_expressions.phpt index 7dea0d83f7..cf6474bd63 100644 --- a/Zend/tests/constant_expressions.phpt +++ b/Zend/tests/constant_expressions.phpt @@ -35,6 +35,9 @@ const T_25 = 1 + 2 * 3; // Test for memory leaks const T_26 = "1" + 2 + "3"; +// Allow T_POW +const T_27 = 2 ** 3; + var_dump(T_1); var_dump(T_2); var_dump(T_3); @@ -61,6 +64,7 @@ var_dump(T_23); var_dump(T_24); var_dump(T_25); var_dump(T_26); +var_dump(T_27); ?> --EXPECT-- int(2) @@ -89,3 +93,4 @@ bool(false) bool(true) int(7) int(6) +int(8) diff --git a/Zend/tests/debug_info-error-0.0.phpt b/Zend/tests/debug_info-error-0.0.phpt new file mode 100644 index 0000000000..1c8dfc8853 --- /dev/null +++ b/Zend/tests/debug_info-error-0.0.phpt @@ -0,0 +1,19 @@ +--TEST-- +Testing __debugInfo() magic method with bad returns ZERO (float) +--FILE-- +<?php + +class C { + public $val; + public function __debugInfo() { + return $this->val; + } + public function __construct($val) { + $this->val = $val; + } +} + +$c = new C(0.0); +var_dump($c); +--EXPECTF-- +Fatal error: __debuginfo() must return an array in %s%eZend%etests%edebug_info-error-0.0.php on line %d diff --git a/Zend/tests/debug_info-error-0.phpt b/Zend/tests/debug_info-error-0.phpt new file mode 100644 index 0000000000..868ac2f75f --- /dev/null +++ b/Zend/tests/debug_info-error-0.phpt @@ -0,0 +1,19 @@ +--TEST-- +Testing __debugInfo() magic method with bad returns ZERO +--FILE-- +<?php + +class C { + public $val; + public function __debugInfo() { + return $this->val; + } + public function __construct($val) { + $this->val = $val; + } +} + +$c = new C(0); +var_dump($c); +--EXPECTF-- +Fatal error: __debuginfo() must return an array in %s%eZend%etests%edebug_info-error-0.php on line %d diff --git a/Zend/tests/debug_info-error-1.0.phpt b/Zend/tests/debug_info-error-1.0.phpt new file mode 100644 index 0000000000..27611237bb --- /dev/null +++ b/Zend/tests/debug_info-error-1.0.phpt @@ -0,0 +1,19 @@ +--TEST-- +Testing __debugInfo() magic method with bad returns ONE (float) +--FILE-- +<?php + +class C { + public $val; + public function __debugInfo() { + return $this->val; + } + public function __construct($val) { + $this->val = $val; + } +} + +$c = new C(1.0); +var_dump($c); +--EXPECTF-- +Fatal error: __debuginfo() must return an array in %s%eZend%etests%edebug_info-error-1.0.php on line %d diff --git a/Zend/tests/debug_info-error-1.phpt b/Zend/tests/debug_info-error-1.phpt new file mode 100644 index 0000000000..e2e9823ed4 --- /dev/null +++ b/Zend/tests/debug_info-error-1.phpt @@ -0,0 +1,19 @@ +--TEST-- +Testing __debugInfo() magic method with bad returns ONE +--FILE-- +<?php + +class C { + public $val; + public function __debugInfo() { + return $this->val; + } + public function __construct($val) { + $this->val = $val; + } +} + +$c = new C(1); +var_dump($c); +--EXPECTF-- +Fatal error: __debuginfo() must return an array in %s%eZend%etests%edebug_info-error-1.php on line %d diff --git a/Zend/tests/debug_info-error-empty_str.phpt b/Zend/tests/debug_info-error-empty_str.phpt new file mode 100644 index 0000000000..72ab85d7d8 --- /dev/null +++ b/Zend/tests/debug_info-error-empty_str.phpt @@ -0,0 +1,19 @@ +--TEST-- +Testing __debugInfo() magic method with bad returns EMPTY STRING +--FILE-- +<?php + +class C { + public $val; + public function __debugInfo() { + return $this->val; + } + public function __construct($val) { + $this->val = $val; + } +} + +$c = new C(""); +var_dump($c); +--EXPECTF-- +Fatal error: __debuginfo() must return an array in %s%eZend%etests%edebug_info-error-empty_str.php on line %d diff --git a/Zend/tests/debug_info-error-false.phpt b/Zend/tests/debug_info-error-false.phpt new file mode 100644 index 0000000000..d6e19938af --- /dev/null +++ b/Zend/tests/debug_info-error-false.phpt @@ -0,0 +1,19 @@ +--TEST-- +Testing __debugInfo() magic method with bad returns FALSE +--FILE-- +<?php + +class C { + public $val; + public function __debugInfo() { + return $this->val; + } + public function __construct($val) { + $this->val = $val; + } +} + +$c = new C(false); +var_dump($c); +--EXPECTF-- +Fatal error: __debuginfo() must return an array in %s%eZend%etests%edebug_info-error-false.php on line %d diff --git a/Zend/tests/debug_info-error-object.phpt b/Zend/tests/debug_info-error-object.phpt new file mode 100644 index 0000000000..40737db2b6 --- /dev/null +++ b/Zend/tests/debug_info-error-object.phpt @@ -0,0 +1,19 @@ +--TEST-- +Testing __debugInfo() magic method with bad returns OBJECT +--FILE-- +<?php + +class C { + public $val; + public function __debugInfo() { + return $this->val; + } + public function __construct($val) { + $this->val = $val; + } +} + +$c = new C(new stdClass); +var_dump($c); +--EXPECTF-- +Fatal error: __debuginfo() must return an array in %s%eZend%etests%edebug_info-error-object.php on line %d diff --git a/Zend/tests/debug_info-error-resource.phpt b/Zend/tests/debug_info-error-resource.phpt new file mode 100644 index 0000000000..ebdc37e534 --- /dev/null +++ b/Zend/tests/debug_info-error-resource.phpt @@ -0,0 +1,19 @@ +--TEST-- +Testing __debugInfo() magic method with bad returns RESOURCE +--FILE-- +<?php + +class C { + public $val; + public function __debugInfo() { + return $this->val; + } + public function __construct($val) { + $this->val = $val; + } +} + +$c = new C(fopen("data:text/plain,Foo", 'r')); +var_dump($c); +--EXPECTF-- +Fatal error: __debuginfo() must return an array in %s%eZend%etests%edebug_info-error-resource.php on line %d diff --git a/Zend/tests/debug_info-error-str.phpt b/Zend/tests/debug_info-error-str.phpt new file mode 100644 index 0000000000..aa16d5bf7c --- /dev/null +++ b/Zend/tests/debug_info-error-str.phpt @@ -0,0 +1,19 @@ +--TEST-- +Testing __debugInfo() magic method with bad returns STRING +--FILE-- +<?php + +class C { + public $val; + public function __debugInfo() { + return $this->val; + } + public function __construct($val) { + $this->val = $val; + } +} + +$c = new C("foo"); +var_dump($c); +--EXPECTF-- +Fatal error: __debuginfo() must return an array in %s%eZend%etests%edebug_info-error-str.php on line %d diff --git a/Zend/tests/debug_info-error-true.phpt b/Zend/tests/debug_info-error-true.phpt new file mode 100644 index 0000000000..2501e8a412 --- /dev/null +++ b/Zend/tests/debug_info-error-true.phpt @@ -0,0 +1,19 @@ +--TEST-- +Testing __debugInfo() magic method with bad returns TRUE +--FILE-- +<?php + +class C { + public $val; + public function __debugInfo() { + return $this->val; + } + public function __construct($val) { + $this->val = $val; + } +} + +$c = new C(true); +var_dump($c); +--EXPECTF-- +Fatal error: __debuginfo() must return an array in %s%eZend%etests%edebug_info-error-true.php on line %d diff --git a/Zend/tests/debug_info.phpt b/Zend/tests/debug_info.phpt new file mode 100644 index 0000000000..c82ddb2143 --- /dev/null +++ b/Zend/tests/debug_info.phpt @@ -0,0 +1,39 @@ +--TEST-- +Testing __debugInfo() magic method +--FILE-- +<?php + +class Foo { + public $d = 4; + protected $e = 5; + private $f = 6; + + public function __debugInfo() { + return ['a'=>1, "\0*\0b"=>2, "\0Foo\0c"=>3]; + } +} + +class Bar { + public $val = 123; + + public function __debugInfo() { + return null; + } +} + +$f = new Foo; +var_dump($f); + +$b = new Bar; +var_dump($b); +--EXPECTF-- +object(Foo)#%d (3) { + ["a"]=> + int(1) + ["b":protected]=> + int(2) + ["c":"Foo":private]=> + int(3) +} +object(Bar)#%d (0) { +} diff --git a/Zend/tests/generators/errors/serialize_unserialize_error.phpt b/Zend/tests/generators/errors/serialize_unserialize_error.phpt index aa2d4693f7..b5e77e5028 100644 --- a/Zend/tests/generators/errors/serialize_unserialize_error.phpt +++ b/Zend/tests/generators/errors/serialize_unserialize_error.phpt @@ -32,12 +32,11 @@ Stack trace: #0 %s(%d): serialize(Object(Generator)) #1 {main} -exception 'Exception' with message 'Unserialization of 'Generator' is not allowed' in %s:%d -Stack trace: -#0 [internal function]: Generator->__wakeup() -#1 %s(%d): unserialize('O:9:"Generator"...') -#2 {main} +Warning: Erroneous data format for unserializing 'Generator' in %sserialize_unserialize_error.php on line %d + +Notice: unserialize(): Error at offset 19 of 20 bytes in %sserialize_unserialize_error.php on line %s +bool(false) exception 'Exception' with message 'Unserialization of 'Generator' is not allowed' in %s:%d Stack trace: #0 %s(%d): unserialize('C:9:"Generator"...') diff --git a/Zend/zend.h b/Zend/zend.h index 799eb25cfe..cabe64a56a 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -470,6 +470,7 @@ struct _zend_class_entry { union _zend_function *__call; union _zend_function *__callstatic; union _zend_function *__tostring; + union _zend_function *__debugInfo; union _zend_function *serialize_func; union _zend_function *unserialize_func; diff --git a/Zend/zend_API.c b/Zend/zend_API.c index 9212527963..60ef092bb1 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -1128,7 +1128,7 @@ static int zval_update_class_constant(zval *pp, int is_static, int offset TSRMLS int ret; zend_class_entry *old_scope = *scope; *scope = prop_info->ce; - ret = zval_update_constant(pp, (void*)1 TSRMLS_CC); + ret = zval_update_constant(pp, 1 TSRMLS_CC); *scope = old_scope; return ret; } @@ -1137,7 +1137,7 @@ static int zval_update_class_constant(zval *pp, int is_static, int offset TSRMLS } while (ce); } - return zval_update_constant(pp, (void*)1 TSRMLS_CC); + return zval_update_constant(pp, 1 TSRMLS_CC); } return 0; } @@ -1151,7 +1151,7 @@ ZEND_API void zend_update_class_constants(zend_class_entry *class_type TSRMLS_DC int i; *scope = class_type; - zend_hash_apply_with_argument(&class_type->constants_table, (apply_func_arg_t) zval_update_constant, (void*)1 TSRMLS_CC); + zend_hash_apply_with_argument(&class_type->constants_table, (apply_func_arg_t) zval_update_constant, (void *)1 TSRMLS_CC); for (i = 0; i < class_type->default_properties_count; i++) { if (Z_TYPE(class_type->default_properties_table[i]) != IS_UNDEF) { @@ -2085,6 +2085,9 @@ ZEND_API void zend_check_magic_method_implementation(const zend_class_entry *ce, !memcmp(lcname, ZEND_TOSTRING_FUNC_NAME, sizeof(ZEND_TOSTRING_FUNC_NAME)-1) && fptr->common.num_args != 0 ) { zend_error(error_type, "Method %s::%s() cannot take arguments", ce->name->val, ZEND_TOSTRING_FUNC_NAME); + } else if (name_len == sizeof(ZEND_DEBUGINFO_FUNC_NAME) - 1 && + !memcmp(lcname, ZEND_DEBUGINFO_FUNC_NAME, sizeof(ZEND_DEBUGINFO_FUNC_NAME)-1) && fptr->common.num_args != 0) { + zend_error(error_type, "Method %s::%s() cannot take arguments", ce->name->val, ZEND_DEBUGINFO_FUNC_NAME); } } /* }}} */ @@ -2098,7 +2101,7 @@ ZEND_API int zend_register_functions(zend_class_entry *scope, const zend_functio int count=0, unload=0; HashTable *target_function_table = function_table; int error_type; - zend_function *ctor = NULL, *dtor = NULL, *clone = NULL, *__get = NULL, *__set = NULL, *__unset = NULL, *__isset = NULL, *__call = NULL, *__callstatic = NULL, *__tostring = NULL; + zend_function *ctor = NULL, *dtor = NULL, *clone = NULL, *__get = NULL, *__set = NULL, *__unset = NULL, *__isset = NULL, *__call = NULL, *__callstatic = NULL, *__tostring = NULL, *__debugInfo = NULL; zend_string *lowercase_name; int fname_len; const char *lc_class_name = NULL; @@ -2250,6 +2253,8 @@ ZEND_API int zend_register_functions(zend_class_entry *scope, const zend_functio __unset = reg_function; } else if ((fname_len == sizeof(ZEND_ISSET_FUNC_NAME)-1) && !memcmp(lowercase_name->val, ZEND_ISSET_FUNC_NAME, sizeof(ZEND_ISSET_FUNC_NAME) - 1)) { __isset = reg_function; + } else if ((fname_len == sizeof(ZEND_DEBUGINFO_FUNC_NAME)-1) && !memcmp(lowercase_name->val, ZEND_DEBUGINFO_FUNC_NAME, sizeof(ZEND_DEBUGINFO_FUNC_NAME) - 1)) { + __debugInfo = reg_function; } else { reg_function = NULL; } @@ -2289,6 +2294,7 @@ ZEND_API int zend_register_functions(zend_class_entry *scope, const zend_functio scope->__set = __set; scope->__unset = __unset; scope->__isset = __isset; + scope->__debugInfo = __debugInfo; if (ctor) { ctor->common.fn_flags |= ZEND_ACC_CTOR; if (ctor->common.fn_flags & ZEND_ACC_STATIC) { @@ -2352,6 +2358,11 @@ ZEND_API int zend_register_functions(zend_class_entry *scope, const zend_functio } __isset->common.fn_flags &= ~ZEND_ACC_ALLOW_STATIC; } + if (__debugInfo) { + if (__debugInfo->common.fn_flags & ZEND_ACC_STATIC) { + zend_error(error_type, "Method %s::%s() cannot be static", scope->name->val, __debugInfo->common.function_name->val); + } + } efree((char*)lc_class_name); } return SUCCESS; diff --git a/Zend/zend_API.h b/Zend/zend_API.h index 43c205c659..ae26375f70 100644 --- a/Zend/zend_API.h +++ b/Zend/zend_API.h @@ -193,6 +193,7 @@ typedef struct _zend_fcall_info_cache { class_container.__set = handle_propset; \ class_container.__unset = handle_propunset; \ class_container.__isset = handle_propisset; \ + class_container.__debugInfo = NULL; \ class_container.serialize_func = NULL; \ class_container.unserialize_func = NULL; \ class_container.serialize = NULL; \ diff --git a/Zend/zend_ast.c b/Zend/zend_ast.c index 5babcffe48..07d38dc6bf 100644 --- a/Zend/zend_ast.c +++ b/Zend/zend_ast.c @@ -106,6 +106,13 @@ ZEND_API void zend_ast_evaluate(zval *result, zend_ast *ast, zend_class_entry *s zval_dtor(&op1); zval_dtor(&op2); break; + case ZEND_POW: + zend_ast_evaluate(&op1, (&ast->u.child)[0], scope TSRMLS_CC); + zend_ast_evaluate(&op2, (&ast->u.child)[1], scope TSRMLS_CC); + pow_function(result, &op1, &op2 TSRMLS_CC); + zval_dtor(&op1); + zval_dtor(&op2); + break; case ZEND_DIV: zend_ast_evaluate(&op1, (&ast->u.child)[0], scope TSRMLS_CC); zend_ast_evaluate(&op2, (&ast->u.child)[1], scope TSRMLS_CC); @@ -224,7 +231,7 @@ ZEND_API void zend_ast_evaluate(zval *result, zend_ast *ast, zend_class_entry *s case ZEND_CONST: ZVAL_DUP(result, &ast->u.val); if (Z_OPT_CONSTANT_P(result)) { - zval_update_constant_ex(result, (void *) 1, scope TSRMLS_CC); + zval_update_constant_ex(result, 1, scope TSRMLS_CC); } break; case ZEND_BOOL_AND: @@ -288,24 +295,15 @@ ZEND_API zend_ast *zend_ast_copy(zend_ast *ast) zend_ast *copy = zend_ast_create_constant(&ast->u.val); zval_copy_ctor(©->u.val); return copy; - } else { - switch (ast->children) { - case 1: - return zend_ast_create_unary( - ast->kind, - zend_ast_copy((&ast->u.child)[0])); - case 2: - return zend_ast_create_binary( - ast->kind, - zend_ast_copy((&ast->u.child)[0]), - zend_ast_copy((&ast->u.child)[1])); - case 3: - return zend_ast_create_ternary( - ast->kind, - zend_ast_copy((&ast->u.child)[0]), - zend_ast_copy((&ast->u.child)[1]), - zend_ast_copy((&ast->u.child)[2])); + } else if (ast->children) { + zend_ast *new = emalloc(sizeof(zend_ast) + sizeof(zend_ast*) * (ast->children - 1)); + int i; + new->kind = ast->kind; + new->children = ast->children; + for (i = 0; i < ast->children; i++) { + (&new->u.child)[i] = zend_ast_copy((&ast->u.child)[i]); } + return new; } return NULL; } diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 625957f74a..8df612e18b 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -97,6 +97,13 @@ ZEND_API zend_compiler_globals compiler_globals; ZEND_API zend_executor_globals executor_globals; #endif +static void zend_push_function_call_entry(zend_function *fbc TSRMLS_DC) /* {{{ */ +{ + zend_function_call_entry fcall = { fbc }; + zend_stack_push(&CG(function_call_stack), &fcall, sizeof(zend_function_call_entry)); +} +/* }}} */ + static void zend_duplicate_property_info(zend_property_info *property_info) /* {{{ */ { STR_ADDREF(property_info->name); @@ -1611,6 +1618,11 @@ void zend_do_begin_function_declaration(znode *function_token, znode *function_n if (fn_flags & ((ZEND_ACC_PPP_MASK | ZEND_ACC_STATIC) ^ ZEND_ACC_PUBLIC)) { zend_error(E_WARNING, "The magic method __invoke() must have public visibility and cannot be static"); } + + } else if ((name->len == sizeof(ZEND_DEBUGINFO_FUNC_NAME)-1) && (!memcmp(lcname->val, ZEND_DEBUGINFO_FUNC_NAME, sizeof(ZEND_DEBUGINFO_FUNC_NAME)-1))) { + if (fn_flags & ((ZEND_ACC_PPP_MASK | ZEND_ACC_STATIC) ^ ZEND_ACC_PUBLIC)) { + zend_error(E_WARNING, "The magic method __debugInfo() must have public visibility and cannot be static"); + } } } else { char *class_lcname; @@ -1671,6 +1683,11 @@ void zend_do_begin_function_declaration(znode *function_token, znode *function_n if (fn_flags & ((ZEND_ACC_PPP_MASK | ZEND_ACC_STATIC) ^ ZEND_ACC_PUBLIC)) { zend_error(E_WARNING, "The magic method __invoke() must have public visibility and cannot be static"); } + } else if ((name->len == sizeof(ZEND_DEBUGINFO_FUNC_NAME)-1) && (!memcmp(lcname->val, ZEND_DEBUGINFO_FUNC_NAME, sizeof(ZEND_DEBUGINFO_FUNC_NAME)-1))) { + if (fn_flags & ((ZEND_ACC_PPP_MASK | ZEND_ACC_STATIC) ^ ZEND_ACC_PUBLIC)) { + zend_error(E_WARNING, "The magic method __debugInfo() must have public visibility and cannot be static"); + } + CG(active_class_entry)->__debugInfo = (zend_function *) CG(active_op_array); } else if (!(fn_flags & ZEND_ACC_STATIC)) { CG(active_op_array)->fn_flags |= ZEND_ACC_ALLOW_STATIC; } @@ -1981,7 +1998,7 @@ int zend_do_begin_function_call(znode *function_name, zend_bool check_namespace STR_RELEASE(Z_STR(function_name->u.constant)); Z_STR(function_name->u.constant) = lcname; - zend_stack_push(&CG(function_call_stack), (void *) &function, sizeof(zend_function *)); + zend_push_function_call_entry(function TSRMLS_CC); if (CG(context).nested_calls + 1 > CG(active_op_array)->nested_calls) { CG(active_op_array)->nested_calls = CG(context).nested_calls + 1; } @@ -1994,7 +2011,6 @@ void zend_do_begin_method_call(znode *left_bracket TSRMLS_DC) /* {{{ */ { zend_op *last_op; int last_op_number; - unsigned char *ptr = NULL; zend_do_end_variable_parse(left_bracket, BP_VAR_R, 0 TSRMLS_CC); zend_do_begin_variable_parse(TSRMLS_C); @@ -2038,7 +2054,7 @@ void zend_do_begin_method_call(znode *left_bracket TSRMLS_DC) /* {{{ */ } } - zend_stack_push(&CG(function_call_stack), (void *) &ptr, sizeof(zend_function *)); + zend_push_function_call_entry(NULL TSRMLS_CC); if (++CG(context).nested_calls > CG(active_op_array)->nested_calls) { CG(active_op_array)->nested_calls = CG(context).nested_calls; } @@ -2061,7 +2077,6 @@ void zend_do_clone(znode *result, znode *expr TSRMLS_DC) /* {{{ */ void zend_do_begin_dynamic_function_call(znode *function_name, int ns_call TSRMLS_DC) /* {{{ */ { - unsigned char *ptr = NULL; zend_op *opline; opline = get_next_op(CG(active_op_array) TSRMLS_CC); @@ -2087,7 +2102,7 @@ void zend_do_begin_dynamic_function_call(znode *function_name, int ns_call TSRML } } - zend_stack_push(&CG(function_call_stack), (void *) &ptr, sizeof(zend_function *)); + zend_push_function_call_entry(NULL TSRMLS_CC); if (++CG(context).nested_calls > CG(active_op_array)->nested_calls) { CG(active_op_array)->nested_calls = CG(context).nested_calls; } @@ -2489,7 +2504,6 @@ void zend_do_build_full_name(znode *result, znode *prefix, znode *name, int is_c int zend_do_begin_class_member_function_call(znode *class_name, znode *method_name TSRMLS_DC) /* {{{ */ { znode class_node; - unsigned char *ptr = NULL; zend_op *opline; if (method_name->op_type == IS_CONST) { @@ -2538,7 +2552,7 @@ int zend_do_begin_class_member_function_call(znode *class_name, znode *method_na SET_NODE(opline->op2, method_name); } - zend_stack_push(&CG(function_call_stack), (void *) &ptr, sizeof(zend_function *)); + zend_push_function_call_entry(NULL TSRMLS_CC); if (++CG(context).nested_calls > CG(active_op_array)->nested_calls) { CG(active_op_array)->nested_calls = CG(context).nested_calls; } @@ -2547,22 +2561,21 @@ int zend_do_begin_class_member_function_call(znode *class_name, znode *method_na } /* }}} */ -void zend_do_end_function_call(znode *function_name, znode *result, const znode *argument_list, int is_method, int is_dynamic_fcall TSRMLS_DC) /* {{{ */ +void zend_do_end_function_call(znode *function_name, znode *result, int is_method, int is_dynamic_fcall TSRMLS_DC) /* {{{ */ { zend_op *opline; + zend_function_call_entry *fcall; + zend_stack_top(&CG(function_call_stack), (void **) &fcall); if (is_method && function_name && function_name->op_type == IS_UNUSED) { /* clone */ - if (Z_LVAL(argument_list->u.constant) != 0) { + if (fcall->arg_num != 0) { zend_error(E_WARNING, "Clone method does not require arguments"); } opline = &CG(active_op_array)->opcodes[Z_LVAL(function_name->u.constant)]; } else { - zend_function **function_ptr_ptr; - zend_stack_top(&CG(function_call_stack), (void **) &function_ptr_ptr); - opline = get_next_op(CG(active_op_array) TSRMLS_CC); - if (*function_ptr_ptr) { + if (fcall->fbc) { opline->opcode = ZEND_DO_FCALL; SET_NODE(opline->op1, function_name); SET_UNUSED(opline->op2); @@ -2586,33 +2599,39 @@ void zend_do_end_function_call(znode *function_name, znode *result, const znode opline->result.var = get_temporary_variable(CG(active_op_array)); opline->result_type = IS_VAR; GET_NODE(result, opline->result); - - zend_stack_del_top(&CG(function_call_stack)); - opline->extended_value = Z_LVAL(argument_list->u.constant); + opline->extended_value = fcall->arg_num; if (CG(context).used_stack + 1 > CG(active_op_array)->used_stack) { CG(active_op_array)->used_stack = CG(context).used_stack + 1; } - CG(context).used_stack -= Z_LVAL(argument_list->u.constant); + CG(context).used_stack -= fcall->arg_num; + zend_stack_del_top(&CG(function_call_stack)); } /* }}} */ -void zend_do_pass_param(znode *param, zend_uchar op, int offset TSRMLS_DC) /* {{{ */ +void zend_do_pass_param(znode *param, zend_uchar op TSRMLS_DC) /* {{{ */ { zend_op *opline; int original_op = op; - zend_function **function_ptr_ptr, *function_ptr; + zend_function_call_entry *fcall; + zend_function *function_ptr; int send_by_reference = 0; int send_function = 0; - zend_stack_top(&CG(function_call_stack), (void **) &function_ptr_ptr); - function_ptr = *function_ptr_ptr; + zend_stack_top(&CG(function_call_stack), (void **) &fcall); + function_ptr = fcall->fbc; + fcall->arg_num++; + + if (fcall->uses_argument_unpacking) { + zend_error_noreturn(E_COMPILE_ERROR, + "Cannot use positional argument after argument unpacking"); + } if (original_op == ZEND_SEND_REF) { if (function_ptr && function_ptr->common.function_name && function_ptr->common.type == ZEND_USER_FUNCTION && - !ARG_SHOULD_BE_SENT_BY_REF(function_ptr, (zend_uint) offset)) { + !ARG_SHOULD_BE_SENT_BY_REF(function_ptr, fcall->arg_num)) { zend_error_noreturn(E_COMPILE_ERROR, "Call-time pass-by-reference has been removed; " "If you would like to pass argument by reference, modify the declaration of %s().", @@ -2624,7 +2643,7 @@ void zend_do_pass_param(znode *param, zend_uchar op, int offset TSRMLS_DC) /* {{ } if (function_ptr) { - if (ARG_MAY_BE_SENT_BY_REF(function_ptr, (zend_uint) offset)) { + if (ARG_MAY_BE_SENT_BY_REF(function_ptr, fcall->arg_num)) { if (op == ZEND_SEND_VAR && param->op_type & (IS_VAR|IS_CV)) { send_by_reference = ZEND_ARG_SEND_BY_REF; if (zend_is_function_or_method_call(param)) { @@ -2635,7 +2654,7 @@ void zend_do_pass_param(znode *param, zend_uchar op, int offset TSRMLS_DC) /* {{ } else { op = ZEND_SEND_VAL; } - } else if (ARG_SHOULD_BE_SENT_BY_REF(function_ptr, (zend_uint) offset)) { + } else if (ARG_SHOULD_BE_SENT_BY_REF(function_ptr, fcall->arg_num)) { send_by_reference = ZEND_ARG_SEND_BY_REF; } } @@ -2670,7 +2689,7 @@ void zend_do_pass_param(znode *param, zend_uchar op, int offset TSRMLS_DC) /* {{ if (function_ptr) { zend_do_end_variable_parse(param, BP_VAR_R, 0 TSRMLS_CC); } else { - zend_do_end_variable_parse(param, BP_VAR_FUNC_ARG, offset TSRMLS_CC); + zend_do_end_variable_parse(param, BP_VAR_FUNC_ARG, fcall->arg_num TSRMLS_CC); } break; case ZEND_SEND_REF: @@ -2696,7 +2715,7 @@ void zend_do_pass_param(znode *param, zend_uchar op, int offset TSRMLS_DC) /* {{ } opline->opcode = op; SET_NODE(opline->op1, param); - opline->op2.opline_num = offset; + opline->op2.opline_num = fcall->arg_num; SET_UNUSED(opline->op2); if (++CG(context).used_stack > CG(active_op_array)->used_stack) { @@ -2705,18 +2724,20 @@ void zend_do_pass_param(znode *param, zend_uchar op, int offset TSRMLS_DC) /* {{ } /* }}} */ -void zend_do_unpack_params(znode *params, int offset TSRMLS_DC) /* {{{ */ +void zend_do_unpack_params(znode *params TSRMLS_DC) /* {{{ */ { zend_op *opline; - zend_function **function_ptr_ptr; + zend_function_call_entry *fcall; - zend_stack_top(&CG(function_call_stack), (void **) &function_ptr_ptr); - if (*function_ptr_ptr) { + zend_stack_top(&CG(function_call_stack), (void **) &fcall); + fcall->uses_argument_unpacking = 1; + + if (fcall->fbc) { /* If argument unpacking is used argument numbers and sending modes can no longer be * computed at compile time, thus we need access to EX(call). In order to have it we * retroactively emit a ZEND_INIT_FCALL_BY_NAME opcode. */ zval func_name; - ZVAL_STR(&func_name, STR_COPY((*function_ptr_ptr)->common.function_name)); + ZVAL_STR(&func_name, STR_COPY(fcall->fbc->common.function_name)); opline = get_next_op(CG(active_op_array) TSRMLS_CC); opline->opcode = ZEND_INIT_FCALL_BY_NAME; @@ -2727,14 +2748,14 @@ void zend_do_unpack_params(znode *params, int offset TSRMLS_DC) /* {{{ */ GET_CACHE_SLOT(opline->op2.constant); ++CG(context).nested_calls; - *function_ptr_ptr = NULL; + fcall->fbc = NULL; } opline = get_next_op(CG(active_op_array) TSRMLS_CC); opline->opcode = ZEND_SEND_UNPACK; SET_NODE(opline->op1, params); SET_UNUSED(opline->op2); - opline->op2.num = (zend_uint) offset; + opline->op2.num = fcall->arg_num; } /* }}} */ @@ -3134,6 +3155,9 @@ static void do_inherit_parent_constructor(zend_class_entry *ce) /* {{{ */ if (!ce->destructor) { ce->destructor = ce->parent->destructor; } + if (!ce->__debugInfo) { + ce->__debugInfo = ce->parent->__debugInfo; + } if (ce->constructor) { if (ce->parent->constructor && ce->parent->constructor->common.fn_flags & ZEND_ACC_FINAL) { zend_error(E_ERROR, "Cannot override final %s::%s() with %s::%s()", @@ -3469,7 +3493,7 @@ static char * zend_get_function_declaration(zend_function *fptr TSRMLS_DC) /* {{ zval zv; ZVAL_DUP(&zv, precv->op2.zv); - zval_update_constant_ex(&zv, (void*)1, fptr->common.scope TSRMLS_CC); + zval_update_constant_ex(&zv, 1, fptr->common.scope TSRMLS_CC); if (Z_TYPE(zv) == IS_BOOL) { if (Z_LVAL(zv)) { memcpy(offset, "true", 4); @@ -4006,6 +4030,8 @@ static void zend_add_magic_methods(zend_class_entry* ce, zend_string* mname, zen ce->__callstatic = fe; } else if (!strncmp(mname->val, ZEND_TOSTRING_FUNC_NAME, mname->len)) { ce->__tostring = fe; + } else if (!strncmp(mname->val, ZEND_DEBUGINFO_FUNC_NAME, mname->len)) { + ce->__debugInfo = fe; } else if (ce->name->len == mname->len) { zend_string *lowercase_name = STR_ALLOC(ce->name->len, 0); zend_str_tolower_copy(lowercase_name->val, ce->name->val, ce->name->len); @@ -5602,7 +5628,6 @@ void zend_do_pop_object(znode *object TSRMLS_DC) /* {{{ */ void zend_do_begin_new_object(znode *new_token, znode *class_type TSRMLS_DC) /* {{{ */ { zend_op *opline; - unsigned char *ptr = NULL; new_token->u.op.opline_num = get_next_op_number(CG(active_op_array)); opline = get_next_op(CG(active_op_array) TSRMLS_CC); @@ -5613,18 +5638,18 @@ void zend_do_begin_new_object(znode *new_token, znode *class_type TSRMLS_DC) /* SET_NODE(opline->op1, class_type); SET_UNUSED(opline->op2); - zend_stack_push(&CG(function_call_stack), (void *) &ptr, sizeof(unsigned char *)); + zend_push_function_call_entry(NULL TSRMLS_CC); if (++CG(context).nested_calls > CG(active_op_array)->nested_calls) { CG(active_op_array)->nested_calls = CG(context).nested_calls; } } /* }}} */ -void zend_do_end_new_object(znode *result, const znode *new_token, const znode *argument_list TSRMLS_DC) /* {{{ */ +void zend_do_end_new_object(znode *result, const znode *new_token TSRMLS_DC) /* {{{ */ { znode ctor_result; - zend_do_end_function_call(NULL, &ctor_result, argument_list, 1, 0 TSRMLS_CC); + zend_do_end_function_call(NULL, &ctor_result, 1, 0 TSRMLS_CC); zend_do_free(&ctor_result TSRMLS_CC); CG(active_op_array)->opcodes[new_token->u.op.opline_num].op2.opline_num = get_next_op_number(CG(active_op_array)); @@ -6986,6 +7011,7 @@ ZEND_API void zend_initialize_class_data(zend_class_entry *ce, zend_bool nullify ce->unserialize = NULL; ce->serialize_func = NULL; ce->unserialize_func = NULL; + ce->__debugInfo = NULL; if (ce->type == ZEND_INTERNAL_CLASS) { ce->info.internal.module = NULL; ce->info.internal.builtin_functions = NULL; diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h index 24f06c426f..4288a3b705 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -343,6 +343,11 @@ typedef struct _zend_function_state { zval *arguments; } zend_function_state; +typedef struct _zend_function_call_entry { + zend_function *fbc; + zend_uint arg_num; + zend_bool uses_argument_unpacking; +} zend_function_call_entry; typedef struct _zend_switch_entry { znode cond; @@ -506,7 +511,7 @@ void zend_do_begin_dynamic_function_call(znode *function_name, int prefix_len TS void zend_do_fetch_class(znode *result, znode *class_name TSRMLS_DC); void zend_do_build_full_name(znode *result, znode *prefix, znode *name, int is_class_member TSRMLS_DC); int zend_do_begin_class_member_function_call(znode *class_name, znode *method_name TSRMLS_DC); -void zend_do_end_function_call(znode *function_name, znode *result, const znode *argument_list, int is_method, int is_dynamic_fcall TSRMLS_DC); +void zend_do_end_function_call(znode *function_name, znode *result, int is_method, int is_dynamic_fcall TSRMLS_DC); void zend_do_return(znode *expr, int do_end_vparse TSRMLS_DC); void zend_do_yield(znode *result, znode *value, znode *key, zend_bool is_variable TSRMLS_DC); void zend_do_handle_exception(TSRMLS_D); @@ -542,8 +547,8 @@ ZEND_API void zend_do_inheritance(zend_class_entry *ce, zend_class_entry *parent void zend_do_early_binding(TSRMLS_D); ZEND_API void zend_do_delayed_early_binding(const zend_op_array *op_array TSRMLS_DC); -void zend_do_pass_param(znode *param, zend_uchar op, int offset TSRMLS_DC); -void zend_do_unpack_params(znode *params, int offset TSRMLS_DC); +void zend_do_pass_param(znode *param, zend_uchar op TSRMLS_DC); +void zend_do_unpack_params(znode *params TSRMLS_DC); void zend_do_boolean_or_begin(znode *expr1, znode *op_token TSRMLS_DC); @@ -573,7 +578,7 @@ void zend_do_pop_object(znode *object TSRMLS_DC); void zend_do_begin_new_object(znode *new_token, znode *class_type TSRMLS_DC); -void zend_do_end_new_object(znode *result, const znode *new_token, const znode *argument_list TSRMLS_DC); +void zend_do_end_new_object(znode *result, const znode *new_token TSRMLS_DC); void zend_do_fetch_constant(znode *result, znode *constant_container, znode *constant_name, int mode, zend_bool check_namespace TSRMLS_DC); @@ -862,6 +867,7 @@ END_EXTERN_C() #define ZEND_TOSTRING_FUNC_NAME "__tostring" #define ZEND_AUTOLOAD_FUNC_NAME "__autoload" #define ZEND_INVOKE_FUNC_NAME "__invoke" +#define ZEND_DEBUGINFO_FUNC_NAME "__debuginfo" /* The following constants may be combined in CG(compiler_options) * to change the default compiler behavior */ diff --git a/Zend/zend_constants.c b/Zend/zend_constants.c index fd98a92c4e..a25fe2bdb5 100644 --- a/Zend/zend_constants.c +++ b/Zend/zend_constants.c @@ -396,7 +396,7 @@ ZEND_API zval *zend_get_constant_ex(zend_string *cname, zend_class_entry *scope, STR_FREE(class_name); STR_FREE(constant_name); if (ret_constant && Z_CONSTANT_P(ret_constant)) { - zval_update_constant_ex(ret_constant, (void*)1, ce TSRMLS_CC); + zval_update_constant_ex(ret_constant, 1, ce TSRMLS_CC); } return ret_constant; } diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c index 4272adedbd..137d9c97f8 100644 --- a/Zend/zend_exceptions.c +++ b/Zend/zend_exceptions.c @@ -360,6 +360,13 @@ ZEND_METHOD(error_exception, getSeverity) } \ } while (0) + +#define TRACE_ARG_APPEND(vallen) do { \ + int len = str->len; \ + str = STR_REALLOC(str, len + vallen, 0); \ + memmove(str->val + len - l_added + 1 + vallen, str->val + len - l_added + 1, l_added); \ + } while (0) + /* }}} */ static int _build_trace_args(zval *arg TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key) /* {{{ */ @@ -370,7 +377,7 @@ static int _build_trace_args(zval *arg TSRMLS_DC, int num_args, va_list args, ze str = *str_ptr; /* the trivial way would be to do: - * conver_to_string_ex(arg); + * convert_to_string_ex(arg); * append it and kill the now tmp arg. * but that could cause some E_NOTICE and also damn long lines. */ @@ -394,8 +401,57 @@ static int _build_trace_args(zval *arg TSRMLS_DC, int num_args, va_list args, ze l_added += 3 + 1; } while (--l_added) { - if (str->val[str->len - l_added] < 32) { - str->val[str->len - l_added] = '?'; + unsigned char chr = str->val[str->len - l_added]; + if (chr < 32 || chr == '\\' || chr > 126) { + str->val[str->len - l_added] = '\\'; + + switch (chr) { + case '\n': + TRACE_ARG_APPEND(1); + str->val[str->len - l_added] = 'n'; + break; + case '\r': + TRACE_ARG_APPEND(1); + str->val[str->len - l_added] = 'r'; + break; + case '\t': + TRACE_ARG_APPEND(1); + str->val[str->len - l_added] = 't'; + break; + case '\f': + TRACE_ARG_APPEND(1); + str->val[str->len - l_added] = 'f'; + break; + case '\v': + TRACE_ARG_APPEND(1); + str->val[str->len - l_added] = 'v'; + break; +#ifndef PHP_WIN32 + case '\e': +#else + case VK_ESCAPE: +#endif + TRACE_ARG_APPEND(1); + str->val[str->len - l_added] = 'e'; + break; + case '\\': + TRACE_ARG_APPEND(1); + str->val[str->len - l_added] = '\\'; + break; + default: + TRACE_ARG_APPEND(3); + str->val[str->len - l_added - 2] = 'x'; + if ((chr >> 4) < 10) { + str->val[str->len - l_added - 1] = (chr >> 4) + '0'; + } else { + str->val[str->len - l_added - 1] = (chr >> 4) + 'A' - 10; + } + if (chr % 16 < 10) { + str->val[str->len - l_added] = chr % 16 + '0'; + } else { + str->val[str->len - l_added] = chr % 16 + 'A' - 10; + } + } } } break; diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index b5f9df5d42..22acd4e960 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -1681,7 +1681,7 @@ ZEND_API zend_execute_data *zend_create_execute_data_from_op_array(zend_op_array static zend_always_inline zend_bool zend_is_by_ref_func_arg_fetch(zend_op *opline, call_slot *call TSRMLS_DC) /* {{{ */ { - zend_uint arg_num = (opline->extended_value & ZEND_FETCH_ARG_MASK) + call->num_additional_args; + zend_uint arg_num = opline->extended_value & ZEND_FETCH_ARG_MASK; return ARG_SHOULD_BE_SENT_BY_REF(call->fbc, arg_num); } /* }}} */ diff --git a/Zend/zend_execute.h b/Zend/zend_execute.h index d632a97840..98e2678f53 100644 --- a/Zend/zend_execute.h +++ b/Zend/zend_execute.h @@ -134,10 +134,10 @@ again: return result; } -ZEND_API int zval_update_constant(zval *pp, void *arg TSRMLS_DC); -ZEND_API int zval_update_constant_inline_change(zval *pp, void *arg TSRMLS_DC); -ZEND_API int zval_update_constant_no_inline_change(zval *pp, void *arg TSRMLS_DC); -ZEND_API int zval_update_constant_ex(zval *pp, void *arg, zend_class_entry *scope TSRMLS_DC); +ZEND_API int zval_update_constant(zval *pp, zend_bool inline_change TSRMLS_DC); +ZEND_API int zval_update_constant_inline_change(zval *pp, zend_class_entry *scope TSRMLS_DC); +ZEND_API int zval_update_constant_no_inline_change(zval *pp, zend_class_entry *scope TSRMLS_DC); +ZEND_API int zval_update_constant_ex(zval *pp, zend_bool inline_change, zend_class_entry *scope TSRMLS_DC); /* dedicated Zend executor functions - do not use! */ #define ZEND_VM_STACK_PAGE_SIZE ((16 * 1024) - 16) diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 621ad66586..03f763ea21 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -501,14 +501,13 @@ ZEND_API int zend_is_true(zval *op TSRMLS_DC) /* {{{ */ #include "../TSRM/tsrm_strtok_r.h" -#define IS_VISITED_CONSTANT 0x080 +#define IS_VISITED_CONSTANT 0x80 #define IS_CONSTANT_VISITED(p) (Z_TYPE_P(p) & IS_VISITED_CONSTANT) #define Z_REAL_TYPE_P(p) (Z_TYPE_P(p) & ~IS_VISITED_CONSTANT) #define MARK_CONSTANT_VISITED(p) Z_TYPE_INFO_P(p) |= IS_VISITED_CONSTANT -ZEND_API int zval_update_constant_ex(zval *p, void *arg, zend_class_entry *scope TSRMLS_DC) /* {{{ */ +ZEND_API int zval_update_constant_ex(zval *p, zend_bool inline_change, zend_class_entry *scope TSRMLS_DC) /* {{{ */ { - zend_bool inline_change = (zend_bool) (zend_uintptr_t) arg; zval *const_value, tmp; char *colon; @@ -588,7 +587,7 @@ ZEND_API int zval_update_constant_ex(zval *p, void *arg, zend_class_entry *scope //???! ZVAL_COPY_VALUE(p, const_value); if (Z_OPT_CONSTANT_P(p)) { - zval_update_constant_ex(p, (void*)1, NULL TSRMLS_CC); + zval_update_constant_ex(p, 1, NULL TSRMLS_CC); } zval_opt_copy_ctor(p); } @@ -670,7 +669,7 @@ ZEND_API int zval_update_constant_ex(zval *p, void *arg, zend_class_entry *scope //???! ZVAL_COPY_VALUE(&tmp, const_value); if (Z_OPT_CONSTANT(tmp)) { - zval_update_constant_ex(&tmp, (void*)1, NULL TSRMLS_CC); + zval_update_constant_ex(&tmp, 1, NULL TSRMLS_CC); } zval_opt_copy_ctor(&tmp); const_value = &tmp; @@ -721,21 +720,21 @@ ZEND_API int zval_update_constant_ex(zval *p, void *arg, zend_class_entry *scope } /* }}} */ -ZEND_API int zval_update_constant_inline_change(zval *pp, void *scope TSRMLS_DC) /* {{{ */ +ZEND_API int zval_update_constant_inline_change(zval *pp, zend_class_entry *scope TSRMLS_DC) /* {{{ */ { - return zval_update_constant_ex(pp, (void*)1, scope TSRMLS_CC); + return zval_update_constant_ex(pp, 1, scope TSRMLS_CC); } /* }}} */ -ZEND_API int zval_update_constant_no_inline_change(zval *pp, void *scope TSRMLS_DC) /* {{{ */ +ZEND_API int zval_update_constant_no_inline_change(zval *pp, zend_class_entry *scope TSRMLS_DC) /* {{{ */ { - return zval_update_constant_ex(pp, (void*)0, scope TSRMLS_CC); + return zval_update_constant_ex(pp, 0, scope TSRMLS_CC); } /* }}} */ -ZEND_API int zval_update_constant(zval *pp, void *arg TSRMLS_DC) /* {{{ */ +ZEND_API int zval_update_constant(zval *pp, zend_bool inline_change TSRMLS_DC) /* {{{ */ { - return zval_update_constant_ex(pp, arg, NULL TSRMLS_CC); + return zval_update_constant_ex(pp, inline_change, NULL TSRMLS_CC); } /* }}} */ diff --git a/Zend/zend_highlight.c b/Zend/zend_highlight.c index 9959d96fc7..50a1edce38 100644 --- a/Zend/zend_highlight.c +++ b/Zend/zend_highlight.c @@ -57,7 +57,7 @@ ZEND_API void zend_html_putc(char c) ZEND_API void zend_html_puts(const char *s, uint len TSRMLS_DC) { const unsigned char *ptr = (const unsigned char*)s, *end = ptr + len; - unsigned char *filtered; + unsigned char *filtered = NULL; size_t filtered_len; if (LANG_SCNG(output_filter)) { diff --git a/Zend/zend_ini_parser.y b/Zend/zend_ini_parser.y index 29a2cb0aff..eaf451a3a1 100644 --- a/Zend/zend_ini_parser.y +++ b/Zend/zend_ini_parser.y @@ -120,7 +120,7 @@ static void zend_ini_get_constant(zval *result, zval *name TSRMLS_DC) if (Z_TYPE_P(c) != IS_STRING) { ZVAL_COPY_VALUE(&tmp, c); if (Z_OPT_CONSTANT(tmp)) { - zval_update_constant_ex(&tmp, (void*)1, NULL TSRMLS_CC); + zval_update_constant_ex(&tmp, 1, NULL TSRMLS_CC); } zval_opt_copy_ctor(&tmp); convert_to_string(&tmp); diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index 073242b97e..ace4f6c284 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -72,7 +72,7 @@ static YYSIZE_T zend_yytnamerr(char*, const char*); %token T_PRINT "print (T_PRINT)" %right T_YIELD %token T_YIELD "yield (T_YIELD)" -%left '=' T_PLUS_EQUAL T_MINUS_EQUAL T_MUL_EQUAL T_DIV_EQUAL T_CONCAT_EQUAL T_MOD_EQUAL T_AND_EQUAL T_OR_EQUAL T_XOR_EQUAL T_SL_EQUAL T_SR_EQUAL +%left '=' T_PLUS_EQUAL T_MINUS_EQUAL T_MUL_EQUAL T_DIV_EQUAL T_CONCAT_EQUAL T_MOD_EQUAL T_AND_EQUAL T_OR_EQUAL T_XOR_EQUAL T_SL_EQUAL T_SR_EQUAL T_POW_EQUAL %token T_PLUS_EQUAL "+= (T_PLUS_EQUAL)" %token T_MINUS_EQUAL "-= (T_MINUS_EQUAL)" %token T_MUL_EQUAL "*= (T_MUL_EQUAL)" @@ -109,6 +109,7 @@ static YYSIZE_T zend_yytnamerr(char*, const char*); %nonassoc T_INSTANCEOF %token T_INSTANCEOF "instanceof (T_INSTANCEOF)" %right '~' T_INC T_DEC T_INT_CAST T_DOUBLE_CAST T_STRING_CAST T_ARRAY_CAST T_OBJECT_CAST T_BOOL_CAST T_UNSET_CAST '@' +%right T_POW %token T_INC "++ (T_INC)" %token T_DEC "-- (T_DEC)" %token T_INT_CAST "(int) (T_INT_CAST)" @@ -213,6 +214,8 @@ static YYSIZE_T zend_yytnamerr(char*, const char*); %token T_DIR "__DIR__ (T_DIR)" %token T_NS_SEPARATOR "\\ (T_NS_SEPARATOR)" %token T_ELLIPSIS "... (T_ELLIPSIS)" +%token T_POW "** (T_POW)" +%token T_POW_EQUAL "**= (T_POW_EQUAL)" %% /* Rules */ @@ -577,19 +580,20 @@ optional_class_type: function_call_parameter_list: '(' ')' { Z_LVAL($$.u.constant) = 0; } | '(' non_empty_function_call_parameter_list ')' { $$ = $2; } - | '(' yield_expr ')' { Z_LVAL($$.u.constant) = 1; zend_do_pass_param(&$2, ZEND_SEND_VAL, Z_LVAL($$.u.constant) TSRMLS_CC); } + | '(' yield_expr ')' { zend_do_pass_param(&$2, ZEND_SEND_VAL TSRMLS_CC); } ; non_empty_function_call_parameter_list: - expr_without_variable { Z_LVAL($$.u.constant) = 1; zend_do_pass_param(&$1, ZEND_SEND_VAL, Z_LVAL($$.u.constant) TSRMLS_CC); } - | variable { Z_LVAL($$.u.constant) = 1; zend_do_pass_param(&$1, ZEND_SEND_VAR, Z_LVAL($$.u.constant) TSRMLS_CC); } - | '&' w_variable { Z_LVAL($$.u.constant) = 1; zend_do_pass_param(&$2, ZEND_SEND_REF, Z_LVAL($$.u.constant) TSRMLS_CC); } - | T_ELLIPSIS expr { Z_LVAL($$.u.constant) = 0; zend_do_unpack_params(&$2, Z_LVAL($$.u.constant) TSRMLS_CC); } - | non_empty_function_call_parameter_list ',' expr_without_variable { Z_LVAL($$.u.constant)=Z_LVAL($1.u.constant)+1; zend_do_pass_param(&$3, ZEND_SEND_VAL, Z_LVAL($$.u.constant) TSRMLS_CC); } - | non_empty_function_call_parameter_list ',' variable { Z_LVAL($$.u.constant)=Z_LVAL($1.u.constant)+1; zend_do_pass_param(&$3, ZEND_SEND_VAR, Z_LVAL($$.u.constant) TSRMLS_CC); } - | non_empty_function_call_parameter_list ',' '&' w_variable { Z_LVAL($$.u.constant)=Z_LVAL($1.u.constant)+1; zend_do_pass_param(&$4, ZEND_SEND_REF, Z_LVAL($$.u.constant) TSRMLS_CC); } - | non_empty_function_call_parameter_list ',' T_ELLIPSIS expr { Z_LVAL($$.u.constant)=Z_LVAL($1.u.constant); zend_do_unpack_params(&$4, Z_LVAL($$.u.constant) TSRMLS_CC); } + function_call_parameter + | non_empty_function_call_parameter_list ',' function_call_parameter +; + +function_call_parameter: + expr_without_variable { zend_do_pass_param(&$1, ZEND_SEND_VAL TSRMLS_CC); } + | variable { zend_do_pass_param(&$1, ZEND_SEND_VAR TSRMLS_CC); } + | '&' w_variable { zend_do_pass_param(&$2, ZEND_SEND_REF TSRMLS_CC); } + | T_ELLIPSIS expr { zend_do_unpack_params(&$2 TSRMLS_CC); } ; global_var_list: @@ -766,18 +770,19 @@ instance_call: ; new_expr: - T_NEW class_name_reference { zend_do_extended_fcall_begin(TSRMLS_C); zend_do_begin_new_object(&$1, &$2 TSRMLS_CC); } ctor_arguments { zend_do_end_new_object(&$$, &$1, &$4 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} + T_NEW class_name_reference { zend_do_extended_fcall_begin(TSRMLS_C); zend_do_begin_new_object(&$1, &$2 TSRMLS_CC); } ctor_arguments { zend_do_end_new_object(&$$, &$1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} ; expr_without_variable: T_LIST '(' { zend_do_list_init(TSRMLS_C); } assignment_list ')' '=' expr { zend_do_list_end(&$$, &$7 TSRMLS_CC); } | variable '=' expr { zend_check_writable_variable(&$1); zend_do_assign(&$$, &$1, &$3 TSRMLS_CC); } | variable '=' '&' variable { zend_check_writable_variable(&$1); zend_do_end_variable_parse(&$4, BP_VAR_W, 1 TSRMLS_CC); zend_do_end_variable_parse(&$1, BP_VAR_W, 0 TSRMLS_CC); zend_do_assign_ref(&$$, &$1, &$4 TSRMLS_CC); } - | variable '=' '&' T_NEW class_name_reference { zend_error(E_DEPRECATED, "Assigning the return value of new by reference is deprecated"); zend_check_writable_variable(&$1); zend_do_extended_fcall_begin(TSRMLS_C); zend_do_begin_new_object(&$4, &$5 TSRMLS_CC); } ctor_arguments { zend_do_end_new_object(&$3, &$4, &$7 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); zend_do_end_variable_parse(&$1, BP_VAR_W, 0 TSRMLS_CC); $3.EA = ZEND_PARSED_NEW; zend_do_assign_ref(&$$, &$1, &$3 TSRMLS_CC); } + | variable '=' '&' T_NEW class_name_reference { zend_error(E_DEPRECATED, "Assigning the return value of new by reference is deprecated"); zend_check_writable_variable(&$1); zend_do_extended_fcall_begin(TSRMLS_C); zend_do_begin_new_object(&$4, &$5 TSRMLS_CC); } ctor_arguments { zend_do_end_new_object(&$3, &$4 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); zend_do_end_variable_parse(&$1, BP_VAR_W, 0 TSRMLS_CC); $3.EA = ZEND_PARSED_NEW; zend_do_assign_ref(&$$, &$1, &$3 TSRMLS_CC); } | T_CLONE expr { zend_do_clone(&$$, &$2 TSRMLS_CC); } | variable T_PLUS_EQUAL expr { zend_check_writable_variable(&$1); zend_do_end_variable_parse(&$1, BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_ADD, &$$, &$1, &$3 TSRMLS_CC); } | variable T_MINUS_EQUAL expr { zend_check_writable_variable(&$1); zend_do_end_variable_parse(&$1, BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_SUB, &$$, &$1, &$3 TSRMLS_CC); } | variable T_MUL_EQUAL expr { zend_check_writable_variable(&$1); zend_do_end_variable_parse(&$1, BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_MUL, &$$, &$1, &$3 TSRMLS_CC); } + | variable T_POW_EQUAL expr { zend_check_writable_variable(&$1); zend_do_end_variable_parse(&$1, BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_POW, &$$, &$1, &$3 TSRMLS_CC); } | variable T_DIV_EQUAL expr { zend_check_writable_variable(&$1); zend_do_end_variable_parse(&$1, BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_DIV, &$$, &$1, &$3 TSRMLS_CC); } | variable T_CONCAT_EQUAL expr { zend_check_writable_variable(&$1); zend_do_end_variable_parse(&$1, BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_CONCAT, &$$, &$1, &$3 TSRMLS_CC); } | variable T_MOD_EQUAL expr { zend_check_writable_variable(&$1); zend_do_end_variable_parse(&$1, BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_MOD, &$$, &$1, &$3 TSRMLS_CC); } @@ -802,6 +807,7 @@ expr_without_variable: | expr '+' expr { zend_do_binary_op(ZEND_ADD, &$$, &$1, &$3 TSRMLS_CC); } | expr '-' expr { zend_do_binary_op(ZEND_SUB, &$$, &$1, &$3 TSRMLS_CC); } | expr '*' expr { zend_do_binary_op(ZEND_MUL, &$$, &$1, &$3 TSRMLS_CC); } + | expr T_POW expr { zend_do_binary_op(ZEND_POW, &$$, &$1, &$3 TSRMLS_CC); } | expr '/' expr { zend_do_binary_op(ZEND_DIV, &$$, &$1, &$3 TSRMLS_CC); } | expr '%' expr { zend_do_binary_op(ZEND_MOD, &$$, &$1, &$3 TSRMLS_CC); } | expr T_SL expr { zend_do_binary_op(ZEND_SL, &$$, &$1, &$3 TSRMLS_CC); } @@ -885,21 +891,21 @@ lexical_var_list: function_call: namespace_name { $$.u.op.opline_num = zend_do_begin_function_call(&$1, 1 TSRMLS_CC); } - function_call_parameter_list { zend_do_end_function_call(&$1, &$$, &$3, 0, $2.u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } + function_call_parameter_list { zend_do_end_function_call(&$1, &$$, 0, $2.u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } | T_NAMESPACE T_NS_SEPARATOR namespace_name { $1.op_type = IS_CONST; ZVAL_EMPTY_STRING(&$1.u.constant); zend_do_build_namespace_name(&$1, &$1, &$3 TSRMLS_CC); $$.u.op.opline_num = zend_do_begin_function_call(&$1, 0 TSRMLS_CC); } - function_call_parameter_list { zend_do_end_function_call(&$1, &$$, &$5, 0, $4.u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } + function_call_parameter_list { zend_do_end_function_call(&$1, &$$, 0, $4.u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } | T_NS_SEPARATOR namespace_name { $$.u.op.opline_num = zend_do_begin_function_call(&$2, 0 TSRMLS_CC); } - function_call_parameter_list { zend_do_end_function_call(&$2, &$$, &$4, 0, $3.u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } + function_call_parameter_list { zend_do_end_function_call(&$2, &$$, 0, $3.u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } | class_name T_PAAMAYIM_NEKUDOTAYIM variable_name { $$.u.op.opline_num = zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); } - function_call_parameter_list { zend_do_end_function_call($4.u.op.opline_num?NULL:&$3, &$$, &$5, $4.u.op.opline_num, $4.u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} + function_call_parameter_list { zend_do_end_function_call($4.u.op.opline_num?NULL:&$3, &$$, $4.u.op.opline_num, $4.u.op.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} | class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects { zend_do_end_variable_parse(&$3, BP_VAR_R, 0 TSRMLS_CC); zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); } - function_call_parameter_list { zend_do_end_function_call(NULL, &$$, &$5, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} + function_call_parameter_list { zend_do_end_function_call(NULL, &$$, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_name { zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); } - function_call_parameter_list { zend_do_end_function_call(NULL, &$$, &$5, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} + function_call_parameter_list { zend_do_end_function_call(NULL, &$$, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} | variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects { zend_do_end_variable_parse(&$3, BP_VAR_R, 0 TSRMLS_CC); zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); } - function_call_parameter_list { zend_do_end_function_call(NULL, &$$, &$5, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} + function_call_parameter_list { zend_do_end_function_call(NULL, &$$, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} | variable_without_objects { zend_do_end_variable_parse(&$1, BP_VAR_R, 0 TSRMLS_CC); zend_do_begin_dynamic_function_call(&$1, 0 TSRMLS_CC); } - function_call_parameter_list { zend_do_end_function_call(&$1, &$$, &$3, 0, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} + function_call_parameter_list { zend_do_end_function_call(&$1, &$$, 0, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} ; class_name: @@ -1000,6 +1006,7 @@ static_operation: static_scalar_value '+' static_scalar_value { $$.u.ast = zend_ast_create_binary(ZEND_ADD, $1.u.ast, $3.u.ast); } | static_scalar_value '-' static_scalar_value { $$.u.ast = zend_ast_create_binary(ZEND_SUB, $1.u.ast, $3.u.ast); } | static_scalar_value '*' static_scalar_value { $$.u.ast = zend_ast_create_binary(ZEND_MUL, $1.u.ast, $3.u.ast); } + | static_scalar_value T_POW static_scalar_value { $$.u.ast = zend_ast_create_binary(ZEND_POW, $1.u.ast, $3.u.ast); } | static_scalar_value '/' static_scalar_value { $$.u.ast = zend_ast_create_binary(ZEND_DIV, $1.u.ast, $3.u.ast); } | static_scalar_value '%' static_scalar_value { $$.u.ast = zend_ast_create_binary(ZEND_MOD, $1.u.ast, $3.u.ast); } | '!' static_scalar_value { $$.u.ast = zend_ast_create_unary(ZEND_BOOL_NOT, $2.u.ast); } @@ -1112,7 +1119,7 @@ array_method_dereference: method: { zend_do_pop_object(&$$ TSRMLS_CC); zend_do_begin_method_call(&$$ TSRMLS_CC); } - function_call_parameter_list { zend_do_end_function_call(&$1, &$$, &$2, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } + function_call_parameter_list { zend_do_end_function_call(&$1, &$$, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } ; method_or_not: diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index cd7119f43d..be8be6c782 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1116,7 +1116,7 @@ yyc_INITIAL: yy3: YYDEBUG(3, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1772 "Zend/zend_language_scanner.l" +#line 1780 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -1195,7 +1195,7 @@ yy5: yy6: YYDEBUG(6, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1762 "Zend/zend_language_scanner.l" +#line 1770 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { DUMMY_STRINGL(zendlval, yytext, yyleng); @@ -1212,7 +1212,7 @@ yy7: if ((yych = *YYCURSOR) == '=') goto yy43; YYDEBUG(8, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1743 "Zend/zend_language_scanner.l" +#line 1751 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { DUMMY_STRINGL(zendlval, yytext, yyleng); @@ -1408,7 +1408,7 @@ yy35: ++YYCURSOR; YYDEBUG(38, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1709 "Zend/zend_language_scanner.l" +#line 1717 "Zend/zend_language_scanner.l" { YYCTYPE *bracket = (YYCTYPE*)zend_memrchr(yytext, '<', yyleng - (sizeof("script language=php>") - 1)); @@ -1450,7 +1450,7 @@ yy43: ++YYCURSOR; YYDEBUG(44, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1725 "Zend/zend_language_scanner.l" +#line 1733 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { DUMMY_STRINGL(zendlval, yytext, yyleng); @@ -1466,7 +1466,7 @@ yy45: ++YYCURSOR; YYDEBUG(46, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1736 "Zend/zend_language_scanner.l" +#line 1744 "Zend/zend_language_scanner.l" { DUMMY_STRINGL(zendlval, yytext, yyleng); BEGIN(ST_IN_SCRIPTING); @@ -1499,7 +1499,7 @@ yy50: yy51: YYDEBUG(51, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1754 "Zend/zend_language_scanner.l" +#line 1762 "Zend/zend_language_scanner.l" { DUMMY_STRINGL(zendlval, yytext, yyleng); HANDLE_NEWLINE(yytext[yyleng-1]); @@ -1577,7 +1577,7 @@ yyc_ST_BACKQUOTE: yy56: YYDEBUG(56, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2215 "Zend/zend_language_scanner.l" +#line 2223 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -1629,7 +1629,7 @@ yy58: ++YYCURSOR; YYDEBUG(59, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2159 "Zend/zend_language_scanner.l" +#line 2167 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '`'; @@ -1644,7 +1644,7 @@ yy61: ++YYCURSOR; YYDEBUG(62, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2146 "Zend/zend_language_scanner.l" +#line 2154 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); @@ -1667,7 +1667,7 @@ yy63: yy65: YYDEBUG(65, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1853 "Zend/zend_language_scanner.l" +#line 1861 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); return T_VARIABLE; @@ -1678,7 +1678,7 @@ yy66: ++YYCURSOR; YYDEBUG(67, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1476 "Zend/zend_language_scanner.l" +#line 1484 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; @@ -1697,7 +1697,7 @@ yy70: ++YYCURSOR; YYDEBUG(71, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1846 "Zend/zend_language_scanner.l" +#line 1854 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -1722,7 +1722,7 @@ yy73: ++YYCURSOR; YYDEBUG(74, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1837 "Zend/zend_language_scanner.l" +#line 1845 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -1797,7 +1797,7 @@ yy77: yy78: YYDEBUG(78, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2165 "Zend/zend_language_scanner.l" +#line 2173 "Zend/zend_language_scanner.l" { if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) { YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1; @@ -1857,7 +1857,7 @@ yy80: ++YYCURSOR; YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2154 "Zend/zend_language_scanner.l" +#line 2162 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '"'; @@ -1872,7 +1872,7 @@ yy83: ++YYCURSOR; YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2146 "Zend/zend_language_scanner.l" +#line 2154 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); @@ -1895,7 +1895,7 @@ yy85: yy87: YYDEBUG(87, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1853 "Zend/zend_language_scanner.l" +#line 1861 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); return T_VARIABLE; @@ -1906,7 +1906,7 @@ yy88: ++YYCURSOR; YYDEBUG(89, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1476 "Zend/zend_language_scanner.l" +#line 1484 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; @@ -1925,7 +1925,7 @@ yy92: ++YYCURSOR; YYDEBUG(93, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1846 "Zend/zend_language_scanner.l" +#line 1854 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -1950,7 +1950,7 @@ yy95: ++YYCURSOR; YYDEBUG(96, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1837 "Zend/zend_language_scanner.l" +#line 1845 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -1968,7 +1968,7 @@ yyc_ST_END_HEREDOC: ++YYCURSOR; YYDEBUG(100, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2132 "Zend/zend_language_scanner.l" +#line 2140 "Zend/zend_language_scanner.l" { zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack)); @@ -2043,7 +2043,7 @@ yy103: yy104: YYDEBUG(104, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2257 "Zend/zend_language_scanner.l" +#line 2265 "Zend/zend_language_scanner.l" { int newline = 0; @@ -2131,7 +2131,7 @@ yy107: ++YYCURSOR; YYDEBUG(108, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2146 "Zend/zend_language_scanner.l" +#line 2154 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); @@ -2154,7 +2154,7 @@ yy109: yy111: YYDEBUG(111, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1853 "Zend/zend_language_scanner.l" +#line 1861 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); return T_VARIABLE; @@ -2165,7 +2165,7 @@ yy112: ++YYCURSOR; YYDEBUG(113, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1476 "Zend/zend_language_scanner.l" +#line 1484 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; @@ -2184,7 +2184,7 @@ yy116: ++YYCURSOR; YYDEBUG(117, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1846 "Zend/zend_language_scanner.l" +#line 1854 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2209,7 +2209,7 @@ yy119: ++YYCURSOR; YYDEBUG(120, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1837 "Zend/zend_language_scanner.l" +#line 1845 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2383,23 +2383,23 @@ yy123: YYDEBUG(-1, yych); switch ((yych = *YYCURSOR)) { case 'C': - case 'c': goto yy738; + case 'c': goto yy742; case 'L': - case 'l': goto yy739; + case 'l': goto yy743; case 'M': - case 'm': goto yy740; + case 'm': goto yy744; case 'N': - case 'n': goto yy741; + case 'n': goto yy745; case 'V': - case 'v': goto yy742; + case 'v': goto yy746; case 'X': - case 'x': goto yy743; + case 'x': goto yy747; default: goto yy187; } yy124: YYDEBUG(124, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1875 "Zend/zend_language_scanner.l" +#line 1883 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); return T_STRING; @@ -2410,20 +2410,20 @@ yy125: yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= 'H') { - if (yych == 'E') goto yy720; + if (yych == 'E') goto yy724; goto yy187; } else { - if (yych <= 'I') goto yy721; + if (yych <= 'I') goto yy725; if (yych <= 'N') goto yy187; - goto yy722; + goto yy726; } } else { if (yych <= 'h') { - if (yych == 'e') goto yy720; + if (yych == 'e') goto yy724; goto yy187; } else { - if (yych <= 'i') goto yy721; - if (yych == 'o') goto yy722; + if (yych <= 'i') goto yy725; + if (yych == 'o') goto yy726; goto yy187; } } @@ -2432,20 +2432,20 @@ yy126: yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= 'N') { - if (yych == 'I') goto yy696; + if (yych == 'I') goto yy700; goto yy187; } else { - if (yych <= 'O') goto yy697; + if (yych <= 'O') goto yy701; if (yych <= 'T') goto yy187; - goto yy698; + goto yy702; } } else { if (yych <= 'n') { - if (yych == 'i') goto yy696; + if (yych == 'i') goto yy700; goto yy187; } else { - if (yych <= 'o') goto yy697; - if (yych == 'u') goto yy698; + if (yych <= 'o') goto yy701; + if (yych == 'u') goto yy702; goto yy187; } } @@ -2454,48 +2454,48 @@ yy127: yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= 'K') { - if (yych == 'A') goto yy661; + if (yych == 'A') goto yy665; goto yy187; } else { - if (yych <= 'L') goto yy662; + if (yych <= 'L') goto yy666; if (yych <= 'N') goto yy187; - goto yy663; + goto yy667; } } else { if (yych <= 'k') { - if (yych == 'a') goto yy661; + if (yych == 'a') goto yy665; goto yy187; } else { - if (yych <= 'l') goto yy662; - if (yych == 'o') goto yy663; + if (yych <= 'l') goto yy666; + if (yych == 'o') goto yy667; goto yy187; } } yy128: YYDEBUG(128, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy643; - if (yych == 'e') goto yy643; + if (yych == 'E') goto yy647; + if (yych == 'e') goto yy647; goto yy187; yy129: YYDEBUG(129, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy638; - if (yych == 'i') goto yy638; + if (yych == 'I') goto yy642; + if (yych == 'i') goto yy642; goto yy187; yy130: YYDEBUG(130, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'R') { - if (yych == 'H') goto yy626; + if (yych == 'H') goto yy630; if (yych <= 'Q') goto yy187; - goto yy627; + goto yy631; } else { if (yych <= 'h') { if (yych <= 'g') goto yy187; - goto yy626; + goto yy630; } else { - if (yych == 'r') goto yy627; + if (yych == 'r') goto yy631; goto yy187; } } @@ -2504,53 +2504,53 @@ yy131: yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= 'L') { - if (yych == 'F') goto yy573; + if (yych == 'F') goto yy577; goto yy187; } else { - if (yych <= 'M') goto yy575; - if (yych <= 'N') goto yy576; + if (yych <= 'M') goto yy579; + if (yych <= 'N') goto yy580; if (yych <= 'R') goto yy187; - goto yy577; + goto yy581; } } else { if (yych <= 'm') { - if (yych == 'f') goto yy573; + if (yych == 'f') goto yy577; if (yych <= 'l') goto yy187; - goto yy575; + goto yy579; } else { - if (yych <= 'n') goto yy576; - if (yych == 's') goto yy577; + if (yych <= 'n') goto yy580; + if (yych == 's') goto yy581; goto yy187; } } yy132: YYDEBUG(132, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy568; - if (yych == 'h') goto yy568; + if (yych == 'H') goto yy572; + if (yych == 'h') goto yy572; goto yy187; yy133: YYDEBUG(133, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= 'M') { - if (yych == 'B') goto yy550; + if (yych == 'B') goto yy554; goto yy187; } else { - if (yych <= 'N') goto yy551; + if (yych <= 'N') goto yy555; if (yych <= 'Q') goto yy187; - if (yych <= 'R') goto yy552; - goto yy553; + if (yych <= 'R') goto yy556; + goto yy557; } } else { if (yych <= 'n') { - if (yych == 'b') goto yy550; + if (yych == 'b') goto yy554; if (yych <= 'm') goto yy187; - goto yy551; + goto yy555; } else { if (yych <= 'q') goto yy187; - if (yych <= 'r') goto yy552; - if (yych <= 's') goto yy553; + if (yych <= 'r') goto yy556; + if (yych <= 's') goto yy557; goto yy187; } } @@ -2558,15 +2558,15 @@ yy134: YYDEBUG(134, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'W') { - if (yych == 'T') goto yy538; + if (yych == 'T') goto yy542; if (yych <= 'V') goto yy187; - goto yy539; + goto yy543; } else { if (yych <= 't') { if (yych <= 's') goto yy187; - goto yy538; + goto yy542; } else { - if (yych == 'w') goto yy539; + if (yych == 'w') goto yy543; goto yy187; } } @@ -2577,18 +2577,18 @@ yy135: if (yych <= ';') { if (yych <= '"') { if (yych <= '!') goto yy187; - goto yy530; + goto yy534; } else { - if (yych == '\'') goto yy531; + if (yych == '\'') goto yy535; goto yy187; } } else { if (yych <= 'R') { - if (yych <= '<') goto yy529; + if (yych <= '<') goto yy533; if (yych <= 'Q') goto yy187; - goto yy532; + goto yy536; } else { - if (yych == 'r') goto yy532; + if (yych == 'r') goto yy536; goto yy187; } } @@ -2596,15 +2596,15 @@ yy136: YYDEBUG(136, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'L') goto yy519; + if (yych == 'L') goto yy523; if (yych <= 'N') goto yy187; - goto yy520; + goto yy524; } else { if (yych <= 'l') { if (yych <= 'k') goto yy187; - goto yy519; + goto yy523; } else { - if (yych == 'o') goto yy520; + if (yych == 'o') goto yy524; goto yy187; } } @@ -2612,15 +2612,15 @@ yy137: YYDEBUG(137, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'R') goto yy495; + if (yych == 'R') goto yy499; if (yych <= 'T') goto yy187; - goto yy496; + goto yy500; } else { if (yych <= 'r') { if (yych <= 'q') goto yy187; - goto yy495; + goto yy499; } else { - if (yych == 'u') goto yy496; + if (yych == 'u') goto yy500; goto yy187; } } @@ -2628,15 +2628,15 @@ yy138: YYDEBUG(138, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '<') { - if (yych == '-') goto yy491; + if (yych == '-') goto yy495; } else { - if (yych <= '=') goto yy489; - if (yych <= '>') goto yy493; + if (yych <= '=') goto yy493; + if (yych <= '>') goto yy497; } yy139: YYDEBUG(139, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1465 "Zend/zend_language_scanner.l" +#line 1473 "Zend/zend_language_scanner.l" { return yytext[0]; } @@ -2645,7 +2645,7 @@ yy140: YYDEBUG(140, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy488; + goto yy492; yy141: YYDEBUG(141, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); @@ -2659,7 +2659,7 @@ yy141: yy142: YYDEBUG(142, *YYCURSOR); yych = *++YYCURSOR; - if (yych == ':') goto yy485; + if (yych == ':') goto yy489; goto yy139; yy143: YYDEBUG(143, *YYCURSOR); @@ -2676,34 +2676,34 @@ yy145: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy482; + if (yych == '.') goto yy486; goto yy139; } else { - if (yych <= '9') goto yy478; - if (yych == '=') goto yy480; + if (yych <= '9') goto yy482; + if (yych == '=') goto yy484; goto yy139; } yy146: YYDEBUG(146, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'E') { - if (yych == 'A') goto yy466; + if (yych == 'A') goto yy470; if (yych <= 'D') goto yy187; - goto yy467; + goto yy471; } else { if (yych <= 'a') { if (yych <= '`') goto yy187; - goto yy466; + goto yy470; } else { - if (yych == 'e') goto yy467; + if (yych == 'e') goto yy471; goto yy187; } } yy147: YYDEBUG(147, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy463; - if (yych == 'a') goto yy463; + if (yych == 'A') goto yy467; + if (yych == 'a') goto yy467; goto yy187; yy148: YYDEBUG(148, *YYCURSOR); @@ -2712,47 +2712,47 @@ yy148: if (yych <= 'S') { if (yych <= 'D') { if (yych <= ' ') { - if (yych == '\t') goto yy388; + if (yych == '\t') goto yy392; if (yych <= 0x1F) goto yy139; - goto yy388; + goto yy392; } else { if (yych <= '@') goto yy139; if (yych == 'C') goto yy139; - goto yy388; + goto yy392; } } else { if (yych <= 'I') { - if (yych == 'F') goto yy388; + if (yych == 'F') goto yy392; if (yych <= 'H') goto yy139; - goto yy388; + goto yy392; } else { - if (yych == 'O') goto yy388; + if (yych == 'O') goto yy392; if (yych <= 'Q') goto yy139; - goto yy388; + goto yy392; } } } else { if (yych <= 'f') { if (yych <= 'b') { - if (yych == 'U') goto yy388; + if (yych == 'U') goto yy392; if (yych <= '`') goto yy139; - goto yy388; + goto yy392; } else { - if (yych == 'd') goto yy388; + if (yych == 'd') goto yy392; if (yych <= 'e') goto yy139; - goto yy388; + goto yy392; } } else { if (yych <= 'o') { - if (yych == 'i') goto yy388; + if (yych == 'i') goto yy392; if (yych <= 'n') goto yy139; - goto yy388; + goto yy392; } else { if (yych <= 's') { if (yych <= 'q') goto yy139; - goto yy388; + goto yy392; } else { - if (yych == 'u') goto yy388; + if (yych == 'u') goto yy392; goto yy139; } } @@ -2762,71 +2762,72 @@ yy149: YYDEBUG(149, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'S') { - if (yych == 'N') goto yy379; + if (yych == 'N') goto yy383; if (yych <= 'R') goto yy187; - goto yy380; + goto yy384; } else { if (yych <= 'n') { if (yych <= 'm') goto yy187; - goto yy379; + goto yy383; } else { - if (yych == 's') goto yy380; + if (yych == 's') goto yy384; goto yy187; } } yy150: YYDEBUG(150, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '_') goto yy297; + if (yych == '_') goto yy301; goto yy187; yy151: YYDEBUG(151, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '<') goto yy139; - if (yych <= '=') goto yy291; - if (yych <= '>') goto yy293; + if (yych <= '=') goto yy295; + if (yych <= '>') goto yy297; goto yy139; yy152: YYDEBUG(152, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy287; - if (yych == 'i') goto yy287; + if (yych == 'I') goto yy291; + if (yych == 'i') goto yy291; goto yy187; yy153: YYDEBUG(153, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '+') goto yy285; - if (yych == '=') goto yy283; + if (yych == '+') goto yy289; + if (yych == '=') goto yy287; goto yy139; yy154: YYDEBUG(154, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy280; + if (yych == '=') goto yy284; goto yy139; yy155: YYDEBUG(155, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ';') { - if (yych == '/') goto yy252; + if (yych == '/') goto yy256; goto yy139; } else { - if (yych <= '<') goto yy250; - if (yych <= '=') goto yy253; - if (yych <= '>') goto yy255; + if (yych <= '<') goto yy254; + if (yych <= '=') goto yy257; + if (yych <= '>') goto yy259; goto yy139; } yy156: YYDEBUG(156, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '<') goto yy139; - if (yych <= '=') goto yy246; - if (yych <= '>') goto yy244; + if (yych <= '=') goto yy250; + if (yych <= '>') goto yy248; goto yy139; yy157: YYDEBUG(157, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy242; + if (yych == '*') goto yy242; + if (yych == '=') goto yy244; goto yy139; yy158: YYDEBUG(158, *YYCURSOR); @@ -2903,18 +2904,18 @@ yy168: ++YYCURSOR; YYDEBUG(169, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1470 "Zend/zend_language_scanner.l" +#line 1478 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return '{'; } -#line 2912 "Zend/zend_language_scanner.c" +#line 2913 "Zend/zend_language_scanner.c" yy170: YYDEBUG(170, *YYCURSOR); ++YYCURSOR; YYDEBUG(171, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1482 "Zend/zend_language_scanner.l" +#line 1490 "Zend/zend_language_scanner.l" { RESET_DOC_COMMENT(); if (!zend_stack_is_empty(&SCNG(state_stack))) { @@ -2922,7 +2923,7 @@ yy170: } return '}'; } -#line 2926 "Zend/zend_language_scanner.c" +#line 2927 "Zend/zend_language_scanner.c" yy172: YYDEBUG(172, *YYCURSOR); yyaccept = 2; @@ -2950,7 +2951,7 @@ yy172: yy173: YYDEBUG(173, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1530 "Zend/zend_language_scanner.l" +#line 1538 "Zend/zend_language_scanner.l" { if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ ZVAL_LONG(zendlval, strtol(yytext, NULL, 0)); @@ -2968,7 +2969,7 @@ yy173: } return T_LNUMBER; } -#line 2972 "Zend/zend_language_scanner.c" +#line 2973 "Zend/zend_language_scanner.c" yy174: YYDEBUG(174, *YYCURSOR); yyaccept = 2; @@ -2996,7 +2997,7 @@ yy176: yy177: YYDEBUG(177, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1881 "Zend/zend_language_scanner.l" +#line 1889 "Zend/zend_language_scanner.l" { while (YYCURSOR < YYLIMIT) { switch (*YYCURSOR++) { @@ -3030,14 +3031,14 @@ yy177: return T_COMMENT; } -#line 3034 "Zend/zend_language_scanner.c" +#line 3035 "Zend/zend_language_scanner.c" yy178: YYDEBUG(178, *YYCURSOR); ++YYCURSOR; yy179: YYDEBUG(179, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1967 "Zend/zend_language_scanner.l" +#line 1975 "Zend/zend_language_scanner.l" { register char *s, *t; char *end; @@ -3105,14 +3106,14 @@ yy179: } return T_CONSTANT_ENCAPSED_STRING; } -#line 3109 "Zend/zend_language_scanner.c" +#line 3110 "Zend/zend_language_scanner.c" yy180: YYDEBUG(180, *YYCURSOR); ++YYCURSOR; yy181: YYDEBUG(181, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2036 "Zend/zend_language_scanner.l" +#line 2044 "Zend/zend_language_scanner.l" { int bprefix = (yytext[0] != '"') ? 1 : 0; @@ -3153,24 +3154,24 @@ yy181: BEGIN(ST_DOUBLE_QUOTES); return '"'; } -#line 3157 "Zend/zend_language_scanner.c" +#line 3158 "Zend/zend_language_scanner.c" yy182: YYDEBUG(182, *YYCURSOR); ++YYCURSOR; YYDEBUG(183, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2126 "Zend/zend_language_scanner.l" +#line 2134 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); return '`'; } -#line 3168 "Zend/zend_language_scanner.c" +#line 3169 "Zend/zend_language_scanner.c" yy184: YYDEBUG(184, *YYCURSOR); ++YYCURSOR; YYDEBUG(185, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2388 "Zend/zend_language_scanner.l" +#line 2396 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -3179,7 +3180,7 @@ yy184: zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 3183 "Zend/zend_language_scanner.c" +#line 3184 "Zend/zend_language_scanner.c" yy186: YYDEBUG(186, *YYCURSOR); ++YYCURSOR; @@ -3206,12 +3207,12 @@ yy188: yy190: YYDEBUG(190, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1585 "Zend/zend_language_scanner.l" +#line 1593 "Zend/zend_language_scanner.l" { ZVAL_DOUBLE(zendlval, zend_strtod(yytext, NULL)); return T_DNUMBER; } -#line 3215 "Zend/zend_language_scanner.c" +#line 3216 "Zend/zend_language_scanner.c" yy191: YYDEBUG(191, *YYCURSOR); yyaccept = 2; @@ -3261,7 +3262,7 @@ yy194: goto yy235; } } else { - goto yy251; + goto yy255; } } yy195: @@ -3303,7 +3304,7 @@ yy200: } YYDEBUG(202, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1507 "Zend/zend_language_scanner.l" +#line 1515 "Zend/zend_language_scanner.l" { char *bin = yytext + 2; /* Skip "0b" */ int len = yyleng - 2; @@ -3326,7 +3327,7 @@ yy200: return T_DNUMBER; } } -#line 3330 "Zend/zend_language_scanner.c" +#line 3331 "Zend/zend_language_scanner.c" yy203: YYDEBUG(203, *YYCURSOR); ++YYCURSOR; @@ -3338,7 +3339,7 @@ yy203: } YYDEBUG(205, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1548 "Zend/zend_language_scanner.l" +#line 1556 "Zend/zend_language_scanner.l" { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; @@ -3361,7 +3362,7 @@ yy203: return T_DNUMBER; } } -#line 3365 "Zend/zend_language_scanner.c" +#line 3366 "Zend/zend_language_scanner.c" yy206: YYDEBUG(206, *YYCURSOR); ++YYCURSOR; @@ -3370,13 +3371,13 @@ yy206: yy207: YYDEBUG(207, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1948 "Zend/zend_language_scanner.l" +#line 1956 "Zend/zend_language_scanner.l" { DUMMY_STRINGL(zendlval, yytext, yyleng); BEGIN(INITIAL); return T_CLOSE_TAG; /* implicit ';' at php-end tag */ } -#line 3380 "Zend/zend_language_scanner.c" +#line 3381 "Zend/zend_language_scanner.c" yy208: YYDEBUG(208, *YYCURSOR); yych = *++YYCURSOR; @@ -3410,12 +3411,12 @@ yy210: yy212: YYDEBUG(212, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1853 "Zend/zend_language_scanner.l" +#line 1861 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); return T_VARIABLE; } -#line 3419 "Zend/zend_language_scanner.c" +#line 3420 "Zend/zend_language_scanner.c" yy213: YYDEBUG(213, *YYCURSOR); yych = *++YYCURSOR; @@ -3429,11 +3430,11 @@ yy214: } YYDEBUG(215, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1453 "Zend/zend_language_scanner.l" +#line 1461 "Zend/zend_language_scanner.l" { return T_LOGICAL_XOR; } -#line 3437 "Zend/zend_language_scanner.c" +#line 3438 "Zend/zend_language_scanner.c" yy216: YYDEBUG(216, *YYCURSOR); ++YYCURSOR; @@ -3442,61 +3443,61 @@ yy216: } YYDEBUG(217, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1445 "Zend/zend_language_scanner.l" +#line 1453 "Zend/zend_language_scanner.l" { return T_LOGICAL_OR; } -#line 3450 "Zend/zend_language_scanner.c" +#line 3451 "Zend/zend_language_scanner.c" yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; YYDEBUG(219, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1433 "Zend/zend_language_scanner.l" +#line 1441 "Zend/zend_language_scanner.l" { return T_XOR_EQUAL; } -#line 3460 "Zend/zend_language_scanner.c" +#line 3461 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; YYDEBUG(221, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1437 "Zend/zend_language_scanner.l" +#line 1445 "Zend/zend_language_scanner.l" { return T_BOOLEAN_OR; } -#line 3470 "Zend/zend_language_scanner.c" +#line 3471 "Zend/zend_language_scanner.c" yy222: YYDEBUG(222, *YYCURSOR); ++YYCURSOR; YYDEBUG(223, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1429 "Zend/zend_language_scanner.l" +#line 1437 "Zend/zend_language_scanner.l" { return T_OR_EQUAL; } -#line 3480 "Zend/zend_language_scanner.c" +#line 3481 "Zend/zend_language_scanner.c" yy224: YYDEBUG(224, *YYCURSOR); ++YYCURSOR; YYDEBUG(225, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1441 "Zend/zend_language_scanner.l" +#line 1449 "Zend/zend_language_scanner.l" { return T_BOOLEAN_AND; } -#line 3490 "Zend/zend_language_scanner.c" +#line 3491 "Zend/zend_language_scanner.c" yy226: YYDEBUG(226, *YYCURSOR); ++YYCURSOR; YYDEBUG(227, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1425 "Zend/zend_language_scanner.l" +#line 1433 "Zend/zend_language_scanner.l" { return T_AND_EQUAL; } -#line 3500 "Zend/zend_language_scanner.c" +#line 3501 "Zend/zend_language_scanner.c" yy228: YYDEBUG(228, *YYCURSOR); ++YYCURSOR; @@ -3505,7 +3506,7 @@ yy228: yy229: YYDEBUG(229, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1955 "Zend/zend_language_scanner.l" +#line 1963 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { BEGIN(INITIAL); @@ -3516,17 +3517,17 @@ yy229: return yytext[0]; } } -#line 3520 "Zend/zend_language_scanner.c" +#line 3521 "Zend/zend_language_scanner.c" yy230: YYDEBUG(230, *YYCURSOR); ++YYCURSOR; YYDEBUG(231, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1413 "Zend/zend_language_scanner.l" +#line 1421 "Zend/zend_language_scanner.l" { return T_MOD_EQUAL; } -#line 3530 "Zend/zend_language_scanner.c" +#line 3531 "Zend/zend_language_scanner.c" yy232: YYDEBUG(232, *YYCURSOR); yych = *++YYCURSOR; @@ -3544,7 +3545,7 @@ yy234: yy235: YYDEBUG(235, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1915 "Zend/zend_language_scanner.l" +#line 1923 "Zend/zend_language_scanner.l" { int doc_com; @@ -3577,7 +3578,7 @@ yy235: return T_COMMENT; } -#line 3581 "Zend/zend_language_scanner.c" +#line 3582 "Zend/zend_language_scanner.c" yy236: YYDEBUG(236, *YYCURSOR); yych = *++YYCURSOR; @@ -3587,11 +3588,11 @@ yy237: ++YYCURSOR; YYDEBUG(238, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1405 "Zend/zend_language_scanner.l" +#line 1413 "Zend/zend_language_scanner.l" { return T_DIV_EQUAL; } -#line 3595 "Zend/zend_language_scanner.c" +#line 3596 "Zend/zend_language_scanner.c" yy239: YYDEBUG(239, *YYCURSOR); yych = *++YYCURSOR; @@ -3612,246 +3613,267 @@ yy240: yy242: YYDEBUG(242, *YYCURSOR); ++YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy246; YYDEBUG(243, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1401 "Zend/zend_language_scanner.l" +#line 1405 "Zend/zend_language_scanner.l" { - return T_MUL_EQUAL; + return T_POW; } -#line 3622 "Zend/zend_language_scanner.c" +#line 3624 "Zend/zend_language_scanner.c" yy244: YYDEBUG(244, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy248; YYDEBUG(245, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1461 "Zend/zend_language_scanner.l" +#line 1401 "Zend/zend_language_scanner.l" { - return T_SR; + return T_MUL_EQUAL; } -#line 3633 "Zend/zend_language_scanner.c" +#line 3634 "Zend/zend_language_scanner.c" yy246: YYDEBUG(246, *YYCURSOR); ++YYCURSOR; YYDEBUG(247, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1389 "Zend/zend_language_scanner.l" +#line 1409 "Zend/zend_language_scanner.l" { - return T_IS_GREATER_OR_EQUAL; + return T_POW_EQUAL; } -#line 3643 "Zend/zend_language_scanner.c" +#line 3644 "Zend/zend_language_scanner.c" yy248: YYDEBUG(248, *YYCURSOR); ++YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy252; YYDEBUG(249, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1421 "Zend/zend_language_scanner.l" +#line 1469 "Zend/zend_language_scanner.l" { - return T_SR_EQUAL; + return T_SR; } -#line 3653 "Zend/zend_language_scanner.c" +#line 3655 "Zend/zend_language_scanner.c" yy250: YYDEBUG(250, *YYCURSOR); - yyaccept = 5; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ';') goto yy251; - if (yych <= '<') goto yy266; - if (yych <= '=') goto yy264; -yy251: + ++YYCURSOR; YYDEBUG(251, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1457 "Zend/zend_language_scanner.l" +#line 1389 "Zend/zend_language_scanner.l" { - return T_SL; + return T_IS_GREATER_OR_EQUAL; } -#line 3668 "Zend/zend_language_scanner.c" +#line 3665 "Zend/zend_language_scanner.c" yy252: YYDEBUG(252, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(253, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1429 "Zend/zend_language_scanner.l" + { + return T_SR_EQUAL; +} +#line 3675 "Zend/zend_language_scanner.c" +yy254: + YYDEBUG(254, *YYCURSOR); + yyaccept = 5; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ';') goto yy255; + if (yych <= '<') goto yy270; + if (yych <= '=') goto yy268; +yy255: + YYDEBUG(255, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1465 "Zend/zend_language_scanner.l" + { + return T_SL; +} +#line 3690 "Zend/zend_language_scanner.c" +yy256: + YYDEBUG(256, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy257; - if (yych == 's') goto yy257; + if (yych == 'S') goto yy261; + if (yych == 's') goto yy261; goto yy194; -yy253: - YYDEBUG(253, *YYCURSOR); +yy257: + YYDEBUG(257, *YYCURSOR); ++YYCURSOR; - YYDEBUG(254, *YYCURSOR); + YYDEBUG(258, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1385 "Zend/zend_language_scanner.l" { return T_IS_SMALLER_OR_EQUAL; } -#line 3684 "Zend/zend_language_scanner.c" -yy255: - YYDEBUG(255, *YYCURSOR); +#line 3706 "Zend/zend_language_scanner.c" +yy259: + YYDEBUG(259, *YYCURSOR); ++YYCURSOR; -yy256: - YYDEBUG(256, *YYCURSOR); +yy260: + YYDEBUG(260, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1381 "Zend/zend_language_scanner.l" { return T_IS_NOT_EQUAL; } -#line 3695 "Zend/zend_language_scanner.c" -yy257: - YYDEBUG(257, *YYCURSOR); +#line 3717 "Zend/zend_language_scanner.c" +yy261: + YYDEBUG(261, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy258; + if (yych == 'C') goto yy262; if (yych != 'c') goto yy194; -yy258: - YYDEBUG(258, *YYCURSOR); +yy262: + YYDEBUG(262, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy259; + if (yych == 'R') goto yy263; if (yych != 'r') goto yy194; -yy259: - YYDEBUG(259, *YYCURSOR); +yy263: + YYDEBUG(263, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy260; + if (yych == 'I') goto yy264; if (yych != 'i') goto yy194; -yy260: - YYDEBUG(260, *YYCURSOR); +yy264: + YYDEBUG(264, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy261; + if (yych == 'P') goto yy265; if (yych != 'p') goto yy194; -yy261: - YYDEBUG(261, *YYCURSOR); +yy265: + YYDEBUG(265, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy262; + if (yych == 'T') goto yy266; if (yych != 't') goto yy194; -yy262: - YYDEBUG(262, *YYCURSOR); +yy266: + YYDEBUG(266, *YYCURSOR); ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(263, *YYCURSOR); + YYDEBUG(267, *YYCURSOR); if (yych <= '\r') { if (yych <= 0x08) goto yy194; - if (yych <= '\n') goto yy262; + if (yych <= '\n') goto yy266; if (yych <= '\f') goto yy194; - goto yy262; + goto yy266; } else { if (yych <= ' ') { if (yych <= 0x1F) goto yy194; - goto yy262; + goto yy266; } else { if (yych == '>') goto yy206; goto yy194; } } -yy264: - YYDEBUG(264, *YYCURSOR); +yy268: + YYDEBUG(268, *YYCURSOR); ++YYCURSOR; - YYDEBUG(265, *YYCURSOR); + YYDEBUG(269, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1417 "Zend/zend_language_scanner.l" +#line 1425 "Zend/zend_language_scanner.l" { return T_SL_EQUAL; } -#line 3750 "Zend/zend_language_scanner.c" -yy266: - YYDEBUG(266, *YYCURSOR); +#line 3772 "Zend/zend_language_scanner.c" +yy270: + YYDEBUG(270, *YYCURSOR); ++YYCURSOR; YYFILL(2); yych = *YYCURSOR; - YYDEBUG(267, *YYCURSOR); + YYDEBUG(271, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy266; + goto yy270; } if (yych <= 'Z') { if (yych <= '&') { - if (yych == '"') goto yy271; + if (yych == '"') goto yy275; goto yy194; } else { - if (yych <= '\'') goto yy270; + if (yych <= '\'') goto yy274; if (yych <= '@') goto yy194; } } else { if (yych <= '`') { if (yych != '_') goto yy194; } else { - if (yych <= 'z') goto yy268; + if (yych <= 'z') goto yy272; if (yych <= '~') goto yy194; } } -yy268: - YYDEBUG(268, *YYCURSOR); +yy272: + YYDEBUG(272, *YYCURSOR); ++YYCURSOR; YYFILL(2); yych = *YYCURSOR; - YYDEBUG(269, *YYCURSOR); + YYDEBUG(273, *YYCURSOR); if (yych <= '@') { if (yych <= '\f') { - if (yych == '\n') goto yy275; + if (yych == '\n') goto yy279; goto yy194; } else { - if (yych <= '\r') goto yy277; + if (yych <= '\r') goto yy281; if (yych <= '/') goto yy194; - if (yych <= '9') goto yy268; + if (yych <= '9') goto yy272; goto yy194; } } else { if (yych <= '_') { - if (yych <= 'Z') goto yy268; + if (yych <= 'Z') goto yy272; if (yych <= '^') goto yy194; - goto yy268; + goto yy272; } else { if (yych <= '`') goto yy194; - if (yych <= 'z') goto yy268; + if (yych <= 'z') goto yy272; if (yych <= '~') goto yy194; - goto yy268; + goto yy272; } } -yy270: - YYDEBUG(270, *YYCURSOR); +yy274: + YYDEBUG(274, *YYCURSOR); yych = *++YYCURSOR; if (yych == '\'') goto yy194; - if (yych <= '/') goto yy279; + if (yych <= '/') goto yy283; if (yych <= '9') goto yy194; - goto yy279; -yy271: - YYDEBUG(271, *YYCURSOR); + goto yy283; +yy275: + YYDEBUG(275, *YYCURSOR); yych = *++YYCURSOR; if (yych == '"') goto yy194; - if (yych <= '/') goto yy273; + if (yych <= '/') goto yy277; if (yych <= '9') goto yy194; - goto yy273; -yy272: - YYDEBUG(272, *YYCURSOR); + goto yy277; +yy276: + YYDEBUG(276, *YYCURSOR); ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; -yy273: - YYDEBUG(273, *YYCURSOR); +yy277: + YYDEBUG(277, *YYCURSOR); if (yych <= 'Z') { if (yych <= '/') { if (yych != '"') goto yy194; } else { - if (yych <= '9') goto yy272; + if (yych <= '9') goto yy276; if (yych <= '@') goto yy194; - goto yy272; + goto yy276; } } else { if (yych <= '`') { - if (yych == '_') goto yy272; + if (yych == '_') goto yy276; goto yy194; } else { - if (yych <= 'z') goto yy272; + if (yych <= 'z') goto yy276; if (yych <= '~') goto yy194; - goto yy272; + goto yy276; } } -yy274: - YYDEBUG(274, *YYCURSOR); +yy278: + YYDEBUG(278, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy275; - if (yych == '\r') goto yy277; + if (yych == '\n') goto yy279; + if (yych == '\r') goto yy281; goto yy194; -yy275: - YYDEBUG(275, *YYCURSOR); +yy279: + YYDEBUG(279, *YYCURSOR); ++YYCURSOR; -yy276: - YYDEBUG(276, *YYCURSOR); +yy280: + YYDEBUG(280, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2078 "Zend/zend_language_scanner.l" +#line 2086 "Zend/zend_language_scanner.l" { char *s; int bprefix = (yytext[0] != '<') ? 1 : 0; @@ -3898,255 +3920,255 @@ yy276: return T_START_HEREDOC; } -#line 3902 "Zend/zend_language_scanner.c" -yy277: - YYDEBUG(277, *YYCURSOR); +#line 3924 "Zend/zend_language_scanner.c" +yy281: + YYDEBUG(281, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy275; - goto yy276; -yy278: - YYDEBUG(278, *YYCURSOR); + if (yych == '\n') goto yy279; + goto yy280; +yy282: + YYDEBUG(282, *YYCURSOR); ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; -yy279: - YYDEBUG(279, *YYCURSOR); +yy283: + YYDEBUG(283, *YYCURSOR); if (yych <= 'Z') { if (yych <= '/') { - if (yych == '\'') goto yy274; + if (yych == '\'') goto yy278; goto yy194; } else { - if (yych <= '9') goto yy278; + if (yych <= '9') goto yy282; if (yych <= '@') goto yy194; - goto yy278; + goto yy282; } } else { if (yych <= '`') { - if (yych == '_') goto yy278; + if (yych == '_') goto yy282; goto yy194; } else { - if (yych <= 'z') goto yy278; + if (yych <= 'z') goto yy282; if (yych <= '~') goto yy194; - goto yy278; + goto yy282; } } -yy280: - YYDEBUG(280, *YYCURSOR); +yy284: + YYDEBUG(284, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '=') goto yy256; - YYDEBUG(281, *YYCURSOR); + if (yych != '=') goto yy260; + YYDEBUG(285, *YYCURSOR); ++YYCURSOR; - YYDEBUG(282, *YYCURSOR); + YYDEBUG(286, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1373 "Zend/zend_language_scanner.l" { return T_IS_NOT_IDENTICAL; } -#line 3946 "Zend/zend_language_scanner.c" -yy283: - YYDEBUG(283, *YYCURSOR); +#line 3968 "Zend/zend_language_scanner.c" +yy287: + YYDEBUG(287, *YYCURSOR); ++YYCURSOR; - YYDEBUG(284, *YYCURSOR); + YYDEBUG(288, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1393 "Zend/zend_language_scanner.l" { return T_PLUS_EQUAL; } -#line 3956 "Zend/zend_language_scanner.c" -yy285: - YYDEBUG(285, *YYCURSOR); +#line 3978 "Zend/zend_language_scanner.c" +yy289: + YYDEBUG(289, *YYCURSOR); ++YYCURSOR; - YYDEBUG(286, *YYCURSOR); + YYDEBUG(290, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1361 "Zend/zend_language_scanner.l" { return T_INC; } -#line 3966 "Zend/zend_language_scanner.c" -yy287: - YYDEBUG(287, *YYCURSOR); +#line 3988 "Zend/zend_language_scanner.c" +yy291: + YYDEBUG(291, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy288; + if (yych == 'S') goto yy292; if (yych != 's') goto yy187; -yy288: - YYDEBUG(288, *YYCURSOR); +yy292: + YYDEBUG(292, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy289; + if (yych == 'T') goto yy293; if (yych != 't') goto yy187; -yy289: - YYDEBUG(289, *YYCURSOR); +yy293: + YYDEBUG(293, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(290, *YYCURSOR); + YYDEBUG(294, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1349 "Zend/zend_language_scanner.l" { return T_LIST; } -#line 3989 "Zend/zend_language_scanner.c" -yy291: - YYDEBUG(291, *YYCURSOR); +#line 4011 "Zend/zend_language_scanner.c" +yy295: + YYDEBUG(295, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy295; - YYDEBUG(292, *YYCURSOR); + if ((yych = *YYCURSOR) == '=') goto yy299; + YYDEBUG(296, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1377 "Zend/zend_language_scanner.l" { return T_IS_EQUAL; } -#line 4000 "Zend/zend_language_scanner.c" -yy293: - YYDEBUG(293, *YYCURSOR); +#line 4022 "Zend/zend_language_scanner.c" +yy297: + YYDEBUG(297, *YYCURSOR); ++YYCURSOR; - YYDEBUG(294, *YYCURSOR); + YYDEBUG(298, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1345 "Zend/zend_language_scanner.l" { return T_DOUBLE_ARROW; } -#line 4010 "Zend/zend_language_scanner.c" -yy295: - YYDEBUG(295, *YYCURSOR); +#line 4032 "Zend/zend_language_scanner.c" +yy299: + YYDEBUG(299, *YYCURSOR); ++YYCURSOR; - YYDEBUG(296, *YYCURSOR); + YYDEBUG(300, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1369 "Zend/zend_language_scanner.l" { return T_IS_IDENTICAL; } -#line 4020 "Zend/zend_language_scanner.c" -yy297: - YYDEBUG(297, *YYCURSOR); +#line 4042 "Zend/zend_language_scanner.c" +yy301: + YYDEBUG(301, *YYCURSOR); yych = *++YYCURSOR; YYDEBUG(-1, yych); switch (yych) { case 'C': - case 'c': goto yy299; + case 'c': goto yy303; case 'D': - case 'd': goto yy304; + case 'd': goto yy308; case 'F': - case 'f': goto yy301; + case 'f': goto yy305; case 'H': - case 'h': goto yy298; + case 'h': goto yy302; case 'L': - case 'l': goto yy303; + case 'l': goto yy307; case 'M': - case 'm': goto yy302; + case 'm': goto yy306; case 'N': - case 'n': goto yy305; + case 'n': goto yy309; case 'T': - case 't': goto yy300; + case 't': goto yy304; default: goto yy187; } -yy298: - YYDEBUG(298, *YYCURSOR); +yy302: + YYDEBUG(302, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy366; - if (yych == 'a') goto yy366; + if (yych == 'A') goto yy370; + if (yych == 'a') goto yy370; goto yy187; -yy299: - YYDEBUG(299, *YYCURSOR); +yy303: + YYDEBUG(303, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy359; - if (yych == 'l') goto yy359; + if (yych == 'L') goto yy363; + if (yych == 'l') goto yy363; goto yy187; -yy300: - YYDEBUG(300, *YYCURSOR); +yy304: + YYDEBUG(304, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy352; - if (yych == 'r') goto yy352; + if (yych == 'R') goto yy356; + if (yych == 'r') goto yy356; goto yy187; -yy301: - YYDEBUG(301, *YYCURSOR); +yy305: + YYDEBUG(305, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'I') goto yy336; + if (yych == 'I') goto yy340; if (yych <= 'T') goto yy187; - goto yy337; + goto yy341; } else { if (yych <= 'i') { if (yych <= 'h') goto yy187; - goto yy336; + goto yy340; } else { - if (yych == 'u') goto yy337; + if (yych == 'u') goto yy341; goto yy187; } } -yy302: - YYDEBUG(302, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy328; - if (yych == 'e') goto yy328; - goto yy187; -yy303: - YYDEBUG(303, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy322; - if (yych == 'i') goto yy322; - goto yy187; -yy304: - YYDEBUG(304, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy317; - if (yych == 'i') goto yy317; - goto yy187; -yy305: - YYDEBUG(305, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy306; - if (yych != 'a') goto yy187; yy306: YYDEBUG(306, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy307; - if (yych != 'm') goto yy187; + if (yych == 'E') goto yy332; + if (yych == 'e') goto yy332; + goto yy187; yy307: YYDEBUG(307, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy308; - if (yych != 'e') goto yy187; + if (yych == 'I') goto yy326; + if (yych == 'i') goto yy326; + goto yy187; yy308: YYDEBUG(308, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy309; - if (yych != 's') goto yy187; + if (yych == 'I') goto yy321; + if (yych == 'i') goto yy321; + goto yy187; yy309: YYDEBUG(309, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy310; - if (yych != 'p') goto yy187; + if (yych == 'A') goto yy310; + if (yych != 'a') goto yy187; yy310: YYDEBUG(310, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy311; - if (yych != 'a') goto yy187; + if (yych == 'M') goto yy311; + if (yych != 'm') goto yy187; yy311: YYDEBUG(311, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy312; - if (yych != 'c') goto yy187; + if (yych == 'E') goto yy312; + if (yych != 'e') goto yy187; yy312: YYDEBUG(312, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy313; - if (yych != 'e') goto yy187; + if (yych == 'S') goto yy313; + if (yych != 's') goto yy187; yy313: YYDEBUG(313, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy187; + if (yych == 'P') goto yy314; + if (yych != 'p') goto yy187; +yy314: YYDEBUG(314, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy187; + if (yych == 'A') goto yy315; + if (yych != 'a') goto yy187; +yy315: YYDEBUG(315, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy316; + if (yych != 'c') goto yy187; +yy316: + YYDEBUG(316, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy317; + if (yych != 'e') goto yy187; +yy317: + YYDEBUG(317, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy187; + YYDEBUG(318, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy187; + YYDEBUG(319, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(316, *YYCURSOR); + YYDEBUG(320, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1700 "Zend/zend_language_scanner.l" +#line 1708 "Zend/zend_language_scanner.l" { if (Z_TYPE(CG(current_namespace)) != IS_UNDEF) { ZVAL_DUP(zendlval, &CG(current_namespace)); @@ -4155,27 +4177,27 @@ yy313: } return T_NS_C; } -#line 4159 "Zend/zend_language_scanner.c" -yy317: - YYDEBUG(317, *YYCURSOR); +#line 4181 "Zend/zend_language_scanner.c" +yy321: + YYDEBUG(321, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy318; + if (yych == 'R') goto yy322; if (yych != 'r') goto yy187; -yy318: - YYDEBUG(318, *YYCURSOR); +yy322: + YYDEBUG(322, *YYCURSOR); yych = *++YYCURSOR; if (yych != '_') goto yy187; - YYDEBUG(319, *YYCURSOR); + YYDEBUG(323, *YYCURSOR); yych = *++YYCURSOR; if (yych != '_') goto yy187; - YYDEBUG(320, *YYCURSOR); + YYDEBUG(324, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(321, *YYCURSOR); + YYDEBUG(325, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1675 "Zend/zend_language_scanner.l" +#line 1683 "Zend/zend_language_scanner.l" { zend_string *filename = zend_get_compiled_filename(TSRMLS_C); zend_string *dirname; @@ -4200,72 +4222,72 @@ yy318: ZVAL_STR(zendlval, dirname); return T_DIR; } -#line 4204 "Zend/zend_language_scanner.c" -yy322: - YYDEBUG(322, *YYCURSOR); +#line 4226 "Zend/zend_language_scanner.c" +yy326: + YYDEBUG(326, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy323; + if (yych == 'N') goto yy327; if (yych != 'n') goto yy187; -yy323: - YYDEBUG(323, *YYCURSOR); +yy327: + YYDEBUG(327, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy324; + if (yych == 'E') goto yy328; if (yych != 'e') goto yy187; -yy324: - YYDEBUG(324, *YYCURSOR); +yy328: + YYDEBUG(328, *YYCURSOR); yych = *++YYCURSOR; if (yych != '_') goto yy187; - YYDEBUG(325, *YYCURSOR); + YYDEBUG(329, *YYCURSOR); yych = *++YYCURSOR; if (yych != '_') goto yy187; - YYDEBUG(326, *YYCURSOR); + YYDEBUG(330, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(327, *YYCURSOR); + YYDEBUG(331, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1659 "Zend/zend_language_scanner.l" +#line 1667 "Zend/zend_language_scanner.l" { ZVAL_LONG(zendlval, CG(zend_lineno)); return T_LINE; } -#line 4234 "Zend/zend_language_scanner.c" -yy328: - YYDEBUG(328, *YYCURSOR); +#line 4256 "Zend/zend_language_scanner.c" +yy332: + YYDEBUG(332, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy329; + if (yych == 'T') goto yy333; if (yych != 't') goto yy187; -yy329: - YYDEBUG(329, *YYCURSOR); +yy333: + YYDEBUG(333, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy330; + if (yych == 'H') goto yy334; if (yych != 'h') goto yy187; -yy330: - YYDEBUG(330, *YYCURSOR); +yy334: + YYDEBUG(334, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy331; + if (yych == 'O') goto yy335; if (yych != 'o') goto yy187; -yy331: - YYDEBUG(331, *YYCURSOR); +yy335: + YYDEBUG(335, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy332; + if (yych == 'D') goto yy336; if (yych != 'd') goto yy187; -yy332: - YYDEBUG(332, *YYCURSOR); +yy336: + YYDEBUG(336, *YYCURSOR); yych = *++YYCURSOR; if (yych != '_') goto yy187; - YYDEBUG(333, *YYCURSOR); + YYDEBUG(337, *YYCURSOR); yych = *++YYCURSOR; if (yych != '_') goto yy187; - YYDEBUG(334, *YYCURSOR); + YYDEBUG(338, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(335, *YYCURSOR); + YYDEBUG(339, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1627 "Zend/zend_language_scanner.l" +#line 1635 "Zend/zend_language_scanner.l" { if (CG(active_class_entry)) { int len = 0; @@ -4297,58 +4319,58 @@ yy332: } return T_METHOD_C; } -#line 4301 "Zend/zend_language_scanner.c" -yy336: - YYDEBUG(336, *YYCURSOR); +#line 4323 "Zend/zend_language_scanner.c" +yy340: + YYDEBUG(340, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy347; - if (yych == 'l') goto yy347; + if (yych == 'L') goto yy351; + if (yych == 'l') goto yy351; goto yy187; -yy337: - YYDEBUG(337, *YYCURSOR); +yy341: + YYDEBUG(341, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy338; + if (yych == 'N') goto yy342; if (yych != 'n') goto yy187; -yy338: - YYDEBUG(338, *YYCURSOR); +yy342: + YYDEBUG(342, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy339; + if (yych == 'C') goto yy343; if (yych != 'c') goto yy187; -yy339: - YYDEBUG(339, *YYCURSOR); +yy343: + YYDEBUG(343, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy340; + if (yych == 'T') goto yy344; if (yych != 't') goto yy187; -yy340: - YYDEBUG(340, *YYCURSOR); +yy344: + YYDEBUG(344, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy341; + if (yych == 'I') goto yy345; if (yych != 'i') goto yy187; -yy341: - YYDEBUG(341, *YYCURSOR); +yy345: + YYDEBUG(345, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy342; + if (yych == 'O') goto yy346; if (yych != 'o') goto yy187; -yy342: - YYDEBUG(342, *YYCURSOR); +yy346: + YYDEBUG(346, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy343; + if (yych == 'N') goto yy347; if (yych != 'n') goto yy187; -yy343: - YYDEBUG(343, *YYCURSOR); +yy347: + YYDEBUG(347, *YYCURSOR); yych = *++YYCURSOR; if (yych != '_') goto yy187; - YYDEBUG(344, *YYCURSOR); + YYDEBUG(348, *YYCURSOR); yych = *++YYCURSOR; if (yych != '_') goto yy187; - YYDEBUG(345, *YYCURSOR); + YYDEBUG(349, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(346, *YYCURSOR); + YYDEBUG(350, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1617 "Zend/zend_language_scanner.l" +#line 1625 "Zend/zend_language_scanner.l" { zend_op_array *op_array = CG(active_op_array); if (op_array && op_array->function_name) { @@ -4358,27 +4380,27 @@ yy343: } return T_FUNC_C; } -#line 4362 "Zend/zend_language_scanner.c" -yy347: - YYDEBUG(347, *YYCURSOR); +#line 4384 "Zend/zend_language_scanner.c" +yy351: + YYDEBUG(351, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy348; + if (yych == 'E') goto yy352; if (yych != 'e') goto yy187; -yy348: - YYDEBUG(348, *YYCURSOR); +yy352: + YYDEBUG(352, *YYCURSOR); yych = *++YYCURSOR; if (yych != '_') goto yy187; - YYDEBUG(349, *YYCURSOR); + YYDEBUG(353, *YYCURSOR); yych = *++YYCURSOR; if (yych != '_') goto yy187; - YYDEBUG(350, *YYCURSOR); + YYDEBUG(354, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(351, *YYCURSOR); + YYDEBUG(355, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1664 "Zend/zend_language_scanner.l" +#line 1672 "Zend/zend_language_scanner.l" { zend_string *filename = zend_get_compiled_filename(TSRMLS_C); @@ -4389,37 +4411,37 @@ yy348: } return T_FILE; } -#line 4393 "Zend/zend_language_scanner.c" -yy352: - YYDEBUG(352, *YYCURSOR); +#line 4415 "Zend/zend_language_scanner.c" +yy356: + YYDEBUG(356, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy353; + if (yych == 'A') goto yy357; if (yych != 'a') goto yy187; -yy353: - YYDEBUG(353, *YYCURSOR); +yy357: + YYDEBUG(357, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy354; + if (yych == 'I') goto yy358; if (yych != 'i') goto yy187; -yy354: - YYDEBUG(354, *YYCURSOR); +yy358: + YYDEBUG(358, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy355; + if (yych == 'T') goto yy359; if (yych != 't') goto yy187; -yy355: - YYDEBUG(355, *YYCURSOR); +yy359: + YYDEBUG(359, *YYCURSOR); yych = *++YYCURSOR; if (yych != '_') goto yy187; - YYDEBUG(356, *YYCURSOR); + YYDEBUG(360, *YYCURSOR); yych = *++YYCURSOR; if (yych != '_') goto yy187; - YYDEBUG(357, *YYCURSOR); + YYDEBUG(361, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(358, *YYCURSOR); + YYDEBUG(362, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1607 "Zend/zend_language_scanner.l" +#line 1615 "Zend/zend_language_scanner.l" { zend_class_entry *ce = CG(active_class_entry); if (ce && ce->name && ZEND_ACC_TRAIT == (ce->ce_flags & ZEND_ACC_TRAIT)) { @@ -4429,37 +4451,37 @@ yy355: } return T_TRAIT_C; } -#line 4433 "Zend/zend_language_scanner.c" -yy359: - YYDEBUG(359, *YYCURSOR); +#line 4455 "Zend/zend_language_scanner.c" +yy363: + YYDEBUG(363, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy360; + if (yych == 'A') goto yy364; if (yych != 'a') goto yy187; -yy360: - YYDEBUG(360, *YYCURSOR); +yy364: + YYDEBUG(364, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy361; + if (yych == 'S') goto yy365; if (yych != 's') goto yy187; -yy361: - YYDEBUG(361, *YYCURSOR); +yy365: + YYDEBUG(365, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy362; + if (yych == 'S') goto yy366; if (yych != 's') goto yy187; -yy362: - YYDEBUG(362, *YYCURSOR); +yy366: + YYDEBUG(366, *YYCURSOR); yych = *++YYCURSOR; if (yych != '_') goto yy187; - YYDEBUG(363, *YYCURSOR); + YYDEBUG(367, *YYCURSOR); yych = *++YYCURSOR; if (yych != '_') goto yy187; - YYDEBUG(364, *YYCURSOR); + YYDEBUG(368, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(365, *YYCURSOR); + YYDEBUG(369, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1590 "Zend/zend_language_scanner.l" +#line 1598 "Zend/zend_language_scanner.l" { zend_class_entry *ce = CG(active_class_entry); if (ce && ZEND_ACC_TRAIT == (ce->ce_flags & ZEND_ACC_TRAIT)) { @@ -4476,84 +4498,60 @@ yy362: } return T_CLASS_C; } -#line 4480 "Zend/zend_language_scanner.c" -yy366: - YYDEBUG(366, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy367; - if (yych != 'l') goto yy187; -yy367: - YYDEBUG(367, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy368; - if (yych != 't') goto yy187; -yy368: - YYDEBUG(368, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy187; - YYDEBUG(369, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy370; - if (yych != 'c') goto yy187; +#line 4502 "Zend/zend_language_scanner.c" yy370: YYDEBUG(370, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy371; - if (yych != 'o') goto yy187; + if (yych == 'L') goto yy371; + if (yych != 'l') goto yy187; yy371: YYDEBUG(371, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy372; - if (yych != 'm') goto yy187; + if (yych == 'T') goto yy372; + if (yych != 't') goto yy187; yy372: YYDEBUG(372, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy373; - if (yych != 'p') goto yy187; -yy373: + if (yych != '_') goto yy187; YYDEBUG(373, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy374; - if (yych != 'i') goto yy187; + if (yych == 'C') goto yy374; + if (yych != 'c') goto yy187; yy374: YYDEBUG(374, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy375; - if (yych != 'l') goto yy187; + if (yych == 'O') goto yy375; + if (yych != 'o') goto yy187; yy375: YYDEBUG(375, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy376; - if (yych != 'e') goto yy187; + if (yych == 'M') goto yy376; + if (yych != 'm') goto yy187; yy376: YYDEBUG(376, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy377; - if (yych != 'r') goto yy187; + if (yych == 'P') goto yy377; + if (yych != 'p') goto yy187; yy377: YYDEBUG(377, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 4) { - goto yy186; - } + yych = *++YYCURSOR; + if (yych == 'I') goto yy378; + if (yych != 'i') goto yy187; +yy378: YYDEBUG(378, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1313 "Zend/zend_language_scanner.l" - { - return T_HALT_COMPILER; -} -#line 4546 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'L') goto yy379; + if (yych != 'l') goto yy187; yy379: YYDEBUG(379, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy383; - if (yych == 's') goto yy383; - goto yy187; + if (yych == 'E') goto yy380; + if (yych != 'e') goto yy187; yy380: YYDEBUG(380, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy381; - if (yych != 'e') goto yy187; + if (yych == 'R') goto yy381; + if (yych != 'r') goto yy187; yy381: YYDEBUG(381, *YYCURSOR); ++YYCURSOR; @@ -4562,21 +4560,22 @@ yy381: } YYDEBUG(382, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1293 "Zend/zend_language_scanner.l" +#line 1313 "Zend/zend_language_scanner.l" { - return T_USE; + return T_HALT_COMPILER; } -#line 4570 "Zend/zend_language_scanner.c" +#line 4568 "Zend/zend_language_scanner.c" yy383: YYDEBUG(383, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy384; - if (yych != 'e') goto yy187; + if (yych == 'S') goto yy387; + if (yych == 's') goto yy387; + goto yy187; yy384: YYDEBUG(384, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy385; - if (yych != 't') goto yy187; + if (yych == 'E') goto yy385; + if (yych != 'e') goto yy187; yy385: YYDEBUG(385, *YYCURSOR); ++YYCURSOR; @@ -4585,2639 +4584,2662 @@ yy385: } YYDEBUG(386, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1341 "Zend/zend_language_scanner.l" +#line 1293 "Zend/zend_language_scanner.l" { - return T_UNSET; + return T_USE; } -#line 4593 "Zend/zend_language_scanner.c" +#line 4592 "Zend/zend_language_scanner.c" yy387: YYDEBUG(387, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy388; + if (yych != 'e') goto yy187; +yy388: + YYDEBUG(388, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy389; + if (yych != 't') goto yy187; +yy389: + YYDEBUG(389, *YYCURSOR); + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 4) { + goto yy186; + } + YYDEBUG(390, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1341 "Zend/zend_language_scanner.l" + { + return T_UNSET; +} +#line 4615 "Zend/zend_language_scanner.c" +yy391: + YYDEBUG(391, *YYCURSOR); ++YYCURSOR; YYFILL(7); yych = *YYCURSOR; -yy388: - YYDEBUG(388, *YYCURSOR); +yy392: + YYDEBUG(392, *YYCURSOR); if (yych <= 'S') { if (yych <= 'D') { if (yych <= ' ') { - if (yych == '\t') goto yy387; + if (yych == '\t') goto yy391; if (yych <= 0x1F) goto yy194; - goto yy387; + goto yy391; } else { if (yych <= 'A') { if (yych <= '@') goto yy194; - goto yy392; + goto yy396; } else { - if (yych <= 'B') goto yy390; + if (yych <= 'B') goto yy394; if (yych <= 'C') goto yy194; - goto yy395; + goto yy399; } } } else { if (yych <= 'I') { - if (yych == 'F') goto yy396; + if (yych == 'F') goto yy400; if (yych <= 'H') goto yy194; - goto yy397; + goto yy401; } else { if (yych <= 'O') { if (yych <= 'N') goto yy194; - goto yy391; + goto yy395; } else { if (yych <= 'Q') goto yy194; - if (yych <= 'R') goto yy394; - goto yy393; + if (yych <= 'R') goto yy398; + goto yy397; } } } } else { if (yych <= 'f') { if (yych <= 'a') { - if (yych == 'U') goto yy389; + if (yych == 'U') goto yy393; if (yych <= '`') goto yy194; - goto yy392; + goto yy396; } else { if (yych <= 'c') { - if (yych <= 'b') goto yy390; + if (yych <= 'b') goto yy394; goto yy194; } else { - if (yych <= 'd') goto yy395; + if (yych <= 'd') goto yy399; if (yych <= 'e') goto yy194; - goto yy396; + goto yy400; } } } else { if (yych <= 'q') { if (yych <= 'i') { if (yych <= 'h') goto yy194; - goto yy397; + goto yy401; } else { - if (yych == 'o') goto yy391; + if (yych == 'o') goto yy395; goto yy194; } } else { if (yych <= 's') { - if (yych <= 'r') goto yy394; - goto yy393; + if (yych <= 'r') goto yy398; + goto yy397; } else { if (yych != 'u') goto yy194; } } } } -yy389: - YYDEBUG(389, *YYCURSOR); +yy393: + YYDEBUG(393, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy456; - if (yych == 'n') goto yy456; + if (yych == 'N') goto yy460; + if (yych == 'n') goto yy460; goto yy194; -yy390: - YYDEBUG(390, *YYCURSOR); +yy394: + YYDEBUG(394, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'I') goto yy443; + if (yych == 'I') goto yy447; if (yych <= 'N') goto yy194; - goto yy444; + goto yy448; } else { if (yych <= 'i') { if (yych <= 'h') goto yy194; - goto yy443; + goto yy447; } else { - if (yych == 'o') goto yy444; + if (yych == 'o') goto yy448; goto yy194; } } -yy391: - YYDEBUG(391, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy435; - if (yych == 'b') goto yy435; - goto yy194; -yy392: - YYDEBUG(392, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy428; - if (yych == 'r') goto yy428; - goto yy194; -yy393: - YYDEBUG(393, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy420; - if (yych == 't') goto yy420; - goto yy194; -yy394: - YYDEBUG(394, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy418; - if (yych == 'e') goto yy418; - goto yy194; yy395: YYDEBUG(395, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy414; - if (yych == 'o') goto yy414; + if (yych == 'B') goto yy439; + if (yych == 'b') goto yy439; goto yy194; yy396: YYDEBUG(396, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy407; - if (yych == 'l') goto yy407; + if (yych == 'R') goto yy432; + if (yych == 'r') goto yy432; goto yy194; yy397: YYDEBUG(397, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy398; - if (yych != 'n') goto yy194; + if (yych == 'T') goto yy424; + if (yych == 't') goto yy424; + goto yy194; yy398: YYDEBUG(398, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy399; - if (yych != 't') goto yy194; + if (yych == 'E') goto yy422; + if (yych == 'e') goto yy422; + goto yy194; yy399: YYDEBUG(399, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy400; - if (yych != 'e') goto yy402; + if (yych == 'O') goto yy418; + if (yych == 'o') goto yy418; + goto yy194; yy400: YYDEBUG(400, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy405; - if (yych == 'g') goto yy405; + if (yych == 'L') goto yy411; + if (yych == 'l') goto yy411; goto yy194; yy401: YYDEBUG(401, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy402; + if (yych != 'n') goto yy194; +yy402: + YYDEBUG(402, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy403; + if (yych != 't') goto yy194; +yy403: + YYDEBUG(403, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy404; + if (yych != 'e') goto yy406; +yy404: + YYDEBUG(404, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy409; + if (yych == 'g') goto yy409; + goto yy194; +yy405: + YYDEBUG(405, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy402: - YYDEBUG(402, *YYCURSOR); +yy406: + YYDEBUG(406, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy401; + if (yych == '\t') goto yy405; goto yy194; } else { - if (yych <= ' ') goto yy401; + if (yych <= ' ') goto yy405; if (yych != ')') goto yy194; } - YYDEBUG(403, *YYCURSOR); + YYDEBUG(407, *YYCURSOR); ++YYCURSOR; - YYDEBUG(404, *YYCURSOR); + YYDEBUG(408, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1241 "Zend/zend_language_scanner.l" { return T_INT_CAST; } -#line 4769 "Zend/zend_language_scanner.c" -yy405: - YYDEBUG(405, *YYCURSOR); +#line 4791 "Zend/zend_language_scanner.c" +yy409: + YYDEBUG(409, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy406; + if (yych == 'E') goto yy410; if (yych != 'e') goto yy194; -yy406: - YYDEBUG(406, *YYCURSOR); +yy410: + YYDEBUG(410, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy401; - if (yych == 'r') goto yy401; + if (yych == 'R') goto yy405; + if (yych == 'r') goto yy405; goto yy194; -yy407: - YYDEBUG(407, *YYCURSOR); +yy411: + YYDEBUG(411, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy408; + if (yych == 'O') goto yy412; if (yych != 'o') goto yy194; -yy408: - YYDEBUG(408, *YYCURSOR); +yy412: + YYDEBUG(412, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy409; + if (yych == 'A') goto yy413; if (yych != 'a') goto yy194; -yy409: - YYDEBUG(409, *YYCURSOR); +yy413: + YYDEBUG(413, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy410; + if (yych == 'T') goto yy414; if (yych != 't') goto yy194; -yy410: - YYDEBUG(410, *YYCURSOR); +yy414: + YYDEBUG(414, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(411, *YYCURSOR); + YYDEBUG(415, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy410; + if (yych == '\t') goto yy414; goto yy194; } else { - if (yych <= ' ') goto yy410; + if (yych <= ' ') goto yy414; if (yych != ')') goto yy194; } - YYDEBUG(412, *YYCURSOR); + YYDEBUG(416, *YYCURSOR); ++YYCURSOR; - YYDEBUG(413, *YYCURSOR); + YYDEBUG(417, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1245 "Zend/zend_language_scanner.l" { return T_DOUBLE_CAST; } -#line 4817 "Zend/zend_language_scanner.c" -yy414: - YYDEBUG(414, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy415; - if (yych != 'u') goto yy194; -yy415: - YYDEBUG(415, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy416; - if (yych != 'b') goto yy194; -yy416: - YYDEBUG(416, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy417; - if (yych != 'l') goto yy194; -yy417: - YYDEBUG(417, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy410; - if (yych == 'e') goto yy410; - goto yy194; +#line 4839 "Zend/zend_language_scanner.c" yy418: YYDEBUG(418, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy419; - if (yych != 'a') goto yy194; + if (yych == 'U') goto yy419; + if (yych != 'u') goto yy194; yy419: YYDEBUG(419, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy410; - if (yych == 'l') goto yy410; - goto yy194; + if (yych == 'B') goto yy420; + if (yych != 'b') goto yy194; yy420: YYDEBUG(420, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy421; - if (yych != 'r') goto yy194; + if (yych == 'L') goto yy421; + if (yych != 'l') goto yy194; yy421: YYDEBUG(421, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy422; - if (yych != 'i') goto yy194; + if (yych == 'E') goto yy414; + if (yych == 'e') goto yy414; + goto yy194; yy422: YYDEBUG(422, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy423; - if (yych != 'n') goto yy194; + if (yych == 'A') goto yy423; + if (yych != 'a') goto yy194; yy423: YYDEBUG(423, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy424; - if (yych != 'g') goto yy194; + if (yych == 'L') goto yy414; + if (yych == 'l') goto yy414; + goto yy194; yy424: YYDEBUG(424, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy425; + if (yych != 'r') goto yy194; +yy425: + YYDEBUG(425, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy426; + if (yych != 'i') goto yy194; +yy426: + YYDEBUG(426, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy427; + if (yych != 'n') goto yy194; +yy427: + YYDEBUG(427, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy428; + if (yych != 'g') goto yy194; +yy428: + YYDEBUG(428, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(425, *YYCURSOR); + YYDEBUG(429, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy424; + if (yych == '\t') goto yy428; goto yy194; } else { - if (yych <= ' ') goto yy424; + if (yych <= ' ') goto yy428; if (yych != ')') goto yy194; } - YYDEBUG(426, *YYCURSOR); + YYDEBUG(430, *YYCURSOR); ++YYCURSOR; - YYDEBUG(427, *YYCURSOR); + YYDEBUG(431, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1249 "Zend/zend_language_scanner.l" { return T_STRING_CAST; } -#line 4891 "Zend/zend_language_scanner.c" -yy428: - YYDEBUG(428, *YYCURSOR); +#line 4913 "Zend/zend_language_scanner.c" +yy432: + YYDEBUG(432, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy429; + if (yych == 'R') goto yy433; if (yych != 'r') goto yy194; -yy429: - YYDEBUG(429, *YYCURSOR); +yy433: + YYDEBUG(433, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy430; + if (yych == 'A') goto yy434; if (yych != 'a') goto yy194; -yy430: - YYDEBUG(430, *YYCURSOR); +yy434: + YYDEBUG(434, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy431; + if (yych == 'Y') goto yy435; if (yych != 'y') goto yy194; -yy431: - YYDEBUG(431, *YYCURSOR); +yy435: + YYDEBUG(435, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(432, *YYCURSOR); + YYDEBUG(436, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy431; + if (yych == '\t') goto yy435; goto yy194; } else { - if (yych <= ' ') goto yy431; + if (yych <= ' ') goto yy435; if (yych != ')') goto yy194; } - YYDEBUG(433, *YYCURSOR); + YYDEBUG(437, *YYCURSOR); ++YYCURSOR; - YYDEBUG(434, *YYCURSOR); + YYDEBUG(438, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1253 "Zend/zend_language_scanner.l" { return T_ARRAY_CAST; } -#line 4928 "Zend/zend_language_scanner.c" -yy435: - YYDEBUG(435, *YYCURSOR); +#line 4950 "Zend/zend_language_scanner.c" +yy439: + YYDEBUG(439, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'J') goto yy436; + if (yych == 'J') goto yy440; if (yych != 'j') goto yy194; -yy436: - YYDEBUG(436, *YYCURSOR); +yy440: + YYDEBUG(440, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy437; + if (yych == 'E') goto yy441; if (yych != 'e') goto yy194; -yy437: - YYDEBUG(437, *YYCURSOR); +yy441: + YYDEBUG(441, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy438; + if (yych == 'C') goto yy442; if (yych != 'c') goto yy194; -yy438: - YYDEBUG(438, *YYCURSOR); +yy442: + YYDEBUG(442, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy439; + if (yych == 'T') goto yy443; if (yych != 't') goto yy194; -yy439: - YYDEBUG(439, *YYCURSOR); +yy443: + YYDEBUG(443, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(440, *YYCURSOR); + YYDEBUG(444, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy439; + if (yych == '\t') goto yy443; goto yy194; } else { - if (yych <= ' ') goto yy439; + if (yych <= ' ') goto yy443; if (yych != ')') goto yy194; } - YYDEBUG(441, *YYCURSOR); + YYDEBUG(445, *YYCURSOR); ++YYCURSOR; - YYDEBUG(442, *YYCURSOR); + YYDEBUG(446, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1257 "Zend/zend_language_scanner.l" { return T_OBJECT_CAST; } -#line 4970 "Zend/zend_language_scanner.c" -yy443: - YYDEBUG(443, *YYCURSOR); +#line 4992 "Zend/zend_language_scanner.c" +yy447: + YYDEBUG(447, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy453; - if (yych == 'n') goto yy453; + if (yych == 'N') goto yy457; + if (yych == 'n') goto yy457; goto yy194; -yy444: - YYDEBUG(444, *YYCURSOR); +yy448: + YYDEBUG(448, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy445; + if (yych == 'O') goto yy449; if (yych != 'o') goto yy194; -yy445: - YYDEBUG(445, *YYCURSOR); +yy449: + YYDEBUG(449, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy446; + if (yych == 'L') goto yy450; if (yych != 'l') goto yy194; -yy446: - YYDEBUG(446, *YYCURSOR); +yy450: + YYDEBUG(450, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy451; - if (yych == 'e') goto yy451; - goto yy448; -yy447: - YYDEBUG(447, *YYCURSOR); + if (yych == 'E') goto yy455; + if (yych == 'e') goto yy455; + goto yy452; +yy451: + YYDEBUG(451, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy448: - YYDEBUG(448, *YYCURSOR); +yy452: + YYDEBUG(452, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy447; + if (yych == '\t') goto yy451; goto yy194; } else { - if (yych <= ' ') goto yy447; + if (yych <= ' ') goto yy451; if (yych != ')') goto yy194; } - YYDEBUG(449, *YYCURSOR); + YYDEBUG(453, *YYCURSOR); ++YYCURSOR; - YYDEBUG(450, *YYCURSOR); + YYDEBUG(454, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1261 "Zend/zend_language_scanner.l" { return T_BOOL_CAST; } -#line 5015 "Zend/zend_language_scanner.c" -yy451: - YYDEBUG(451, *YYCURSOR); +#line 5037 "Zend/zend_language_scanner.c" +yy455: + YYDEBUG(455, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy452; + if (yych == 'A') goto yy456; if (yych != 'a') goto yy194; -yy452: - YYDEBUG(452, *YYCURSOR); +yy456: + YYDEBUG(456, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy447; - if (yych == 'n') goto yy447; + if (yych == 'N') goto yy451; + if (yych == 'n') goto yy451; goto yy194; -yy453: - YYDEBUG(453, *YYCURSOR); +yy457: + YYDEBUG(457, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy454; + if (yych == 'A') goto yy458; if (yych != 'a') goto yy194; -yy454: - YYDEBUG(454, *YYCURSOR); +yy458: + YYDEBUG(458, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy455; + if (yych == 'R') goto yy459; if (yych != 'r') goto yy194; -yy455: - YYDEBUG(455, *YYCURSOR); +yy459: + YYDEBUG(459, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy424; - if (yych == 'y') goto yy424; + if (yych == 'Y') goto yy428; + if (yych == 'y') goto yy428; goto yy194; -yy456: - YYDEBUG(456, *YYCURSOR); +yy460: + YYDEBUG(460, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy457; + if (yych == 'S') goto yy461; if (yych != 's') goto yy194; -yy457: - YYDEBUG(457, *YYCURSOR); +yy461: + YYDEBUG(461, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy458; + if (yych == 'E') goto yy462; if (yych != 'e') goto yy194; -yy458: - YYDEBUG(458, *YYCURSOR); +yy462: + YYDEBUG(462, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy459; + if (yych == 'T') goto yy463; if (yych != 't') goto yy194; -yy459: - YYDEBUG(459, *YYCURSOR); +yy463: + YYDEBUG(463, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(460, *YYCURSOR); + YYDEBUG(464, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy459; + if (yych == '\t') goto yy463; goto yy194; } else { - if (yych <= ' ') goto yy459; + if (yych <= ' ') goto yy463; if (yych != ')') goto yy194; } - YYDEBUG(461, *YYCURSOR); + YYDEBUG(465, *YYCURSOR); ++YYCURSOR; - YYDEBUG(462, *YYCURSOR); + YYDEBUG(466, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1265 "Zend/zend_language_scanner.l" { return T_UNSET_CAST; } -#line 5079 "Zend/zend_language_scanner.c" -yy463: - YYDEBUG(463, *YYCURSOR); +#line 5101 "Zend/zend_language_scanner.c" +yy467: + YYDEBUG(467, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy464; + if (yych == 'R') goto yy468; if (yych != 'r') goto yy187; -yy464: - YYDEBUG(464, *YYCURSOR); +yy468: + YYDEBUG(468, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(465, *YYCURSOR); + YYDEBUG(469, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1237 "Zend/zend_language_scanner.l" { return T_VAR; } -#line 5097 "Zend/zend_language_scanner.c" -yy466: - YYDEBUG(466, *YYCURSOR); +#line 5119 "Zend/zend_language_scanner.c" +yy470: + YYDEBUG(470, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy470; - if (yych == 'm') goto yy470; + if (yych == 'M') goto yy474; + if (yych == 'm') goto yy474; goto yy187; -yy467: - YYDEBUG(467, *YYCURSOR); +yy471: + YYDEBUG(471, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'W') goto yy468; + if (yych == 'W') goto yy472; if (yych != 'w') goto yy187; -yy468: - YYDEBUG(468, *YYCURSOR); +yy472: + YYDEBUG(472, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(469, *YYCURSOR); + YYDEBUG(473, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1229 "Zend/zend_language_scanner.l" { return T_NEW; } -#line 5121 "Zend/zend_language_scanner.c" -yy470: - YYDEBUG(470, *YYCURSOR); +#line 5143 "Zend/zend_language_scanner.c" +yy474: + YYDEBUG(474, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy471; + if (yych == 'E') goto yy475; if (yych != 'e') goto yy187; -yy471: - YYDEBUG(471, *YYCURSOR); +yy475: + YYDEBUG(475, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy472; + if (yych == 'S') goto yy476; if (yych != 's') goto yy187; -yy472: - YYDEBUG(472, *YYCURSOR); +yy476: + YYDEBUG(476, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy473; + if (yych == 'P') goto yy477; if (yych != 'p') goto yy187; -yy473: - YYDEBUG(473, *YYCURSOR); +yy477: + YYDEBUG(477, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy474; + if (yych == 'A') goto yy478; if (yych != 'a') goto yy187; -yy474: - YYDEBUG(474, *YYCURSOR); +yy478: + YYDEBUG(478, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy475; + if (yych == 'C') goto yy479; if (yych != 'c') goto yy187; -yy475: - YYDEBUG(475, *YYCURSOR); +yy479: + YYDEBUG(479, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy476; + if (yych == 'E') goto yy480; if (yych != 'e') goto yy187; -yy476: - YYDEBUG(476, *YYCURSOR); +yy480: + YYDEBUG(480, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(477, *YYCURSOR); + YYDEBUG(481, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1289 "Zend/zend_language_scanner.l" { return T_NAMESPACE; } -#line 5164 "Zend/zend_language_scanner.c" -yy478: - YYDEBUG(478, *YYCURSOR); +#line 5186 "Zend/zend_language_scanner.c" +yy482: + YYDEBUG(482, *YYCURSOR); yyaccept = 3; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(479, *YYCURSOR); + YYDEBUG(483, *YYCURSOR); if (yych <= 'D') { if (yych <= '/') goto yy190; - if (yych <= '9') goto yy478; + if (yych <= '9') goto yy482; goto yy190; } else { if (yych <= 'E') goto yy193; if (yych == 'e') goto yy193; goto yy190; } -yy480: - YYDEBUG(480, *YYCURSOR); +yy484: + YYDEBUG(484, *YYCURSOR); ++YYCURSOR; - YYDEBUG(481, *YYCURSOR); + YYDEBUG(485, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1409 "Zend/zend_language_scanner.l" +#line 1417 "Zend/zend_language_scanner.l" { return T_CONCAT_EQUAL; } -#line 5190 "Zend/zend_language_scanner.c" -yy482: - YYDEBUG(482, *YYCURSOR); +#line 5212 "Zend/zend_language_scanner.c" +yy486: + YYDEBUG(486, *YYCURSOR); yych = *++YYCURSOR; if (yych != '.') goto yy194; - YYDEBUG(483, *YYCURSOR); + YYDEBUG(487, *YYCURSOR); ++YYCURSOR; - YYDEBUG(484, *YYCURSOR); + YYDEBUG(488, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1225 "Zend/zend_language_scanner.l" { return T_ELLIPSIS; } -#line 5203 "Zend/zend_language_scanner.c" -yy485: - YYDEBUG(485, *YYCURSOR); +#line 5225 "Zend/zend_language_scanner.c" +yy489: + YYDEBUG(489, *YYCURSOR); ++YYCURSOR; - YYDEBUG(486, *YYCURSOR); + YYDEBUG(490, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1217 "Zend/zend_language_scanner.l" { return T_PAAMAYIM_NEKUDOTAYIM; } -#line 5213 "Zend/zend_language_scanner.c" -yy487: - YYDEBUG(487, *YYCURSOR); +#line 5235 "Zend/zend_language_scanner.c" +yy491: + YYDEBUG(491, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy488: - YYDEBUG(488, *YYCURSOR); +yy492: + YYDEBUG(492, *YYCURSOR); if (yych <= '\f') { if (yych <= 0x08) goto yy141; - if (yych <= '\n') goto yy487; + if (yych <= '\n') goto yy491; goto yy141; } else { - if (yych <= '\r') goto yy487; - if (yych == ' ') goto yy487; + if (yych <= '\r') goto yy491; + if (yych == ' ') goto yy491; goto yy141; } -yy489: - YYDEBUG(489, *YYCURSOR); +yy493: + YYDEBUG(493, *YYCURSOR); ++YYCURSOR; - YYDEBUG(490, *YYCURSOR); + YYDEBUG(494, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1397 "Zend/zend_language_scanner.l" { return T_MINUS_EQUAL; } -#line 5239 "Zend/zend_language_scanner.c" -yy491: - YYDEBUG(491, *YYCURSOR); +#line 5261 "Zend/zend_language_scanner.c" +yy495: + YYDEBUG(495, *YYCURSOR); ++YYCURSOR; - YYDEBUG(492, *YYCURSOR); + YYDEBUG(496, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1365 "Zend/zend_language_scanner.l" { return T_DEC; } -#line 5249 "Zend/zend_language_scanner.c" -yy493: - YYDEBUG(493, *YYCURSOR); +#line 5271 "Zend/zend_language_scanner.c" +yy497: + YYDEBUG(497, *YYCURSOR); ++YYCURSOR; - YYDEBUG(494, *YYCURSOR); + YYDEBUG(498, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1190 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); return T_OBJECT_OPERATOR; } -#line 5260 "Zend/zend_language_scanner.c" -yy495: - YYDEBUG(495, *YYCURSOR); +#line 5282 "Zend/zend_language_scanner.c" +yy499: + YYDEBUG(499, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'I') goto yy502; + if (yych == 'I') goto yy506; if (yych <= 'N') goto yy187; - goto yy503; + goto yy507; } else { if (yych <= 'i') { if (yych <= 'h') goto yy187; - goto yy502; + goto yy506; } else { - if (yych == 'o') goto yy503; + if (yych == 'o') goto yy507; goto yy187; } } -yy496: - YYDEBUG(496, *YYCURSOR); +yy500: + YYDEBUG(500, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy497; + if (yych == 'B') goto yy501; if (yych != 'b') goto yy187; -yy497: - YYDEBUG(497, *YYCURSOR); +yy501: + YYDEBUG(501, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy498; + if (yych == 'L') goto yy502; if (yych != 'l') goto yy187; -yy498: - YYDEBUG(498, *YYCURSOR); +yy502: + YYDEBUG(502, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy499; + if (yych == 'I') goto yy503; if (yych != 'i') goto yy187; -yy499: - YYDEBUG(499, *YYCURSOR); +yy503: + YYDEBUG(503, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy500; + if (yych == 'C') goto yy504; if (yych != 'c') goto yy187; -yy500: - YYDEBUG(500, *YYCURSOR); +yy504: + YYDEBUG(504, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(501, *YYCURSOR); + YYDEBUG(505, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1337 "Zend/zend_language_scanner.l" { return T_PUBLIC; } -#line 5309 "Zend/zend_language_scanner.c" -yy502: - YYDEBUG(502, *YYCURSOR); +#line 5331 "Zend/zend_language_scanner.c" +yy506: + YYDEBUG(506, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'V') { - if (yych == 'N') goto yy511; + if (yych == 'N') goto yy515; if (yych <= 'U') goto yy187; - goto yy512; + goto yy516; } else { if (yych <= 'n') { if (yych <= 'm') goto yy187; - goto yy511; + goto yy515; } else { - if (yych == 'v') goto yy512; + if (yych == 'v') goto yy516; goto yy187; } } -yy503: - YYDEBUG(503, *YYCURSOR); +yy507: + YYDEBUG(507, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy504; + if (yych == 'T') goto yy508; if (yych != 't') goto yy187; -yy504: - YYDEBUG(504, *YYCURSOR); +yy508: + YYDEBUG(508, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy505; + if (yych == 'E') goto yy509; if (yych != 'e') goto yy187; -yy505: - YYDEBUG(505, *YYCURSOR); +yy509: + YYDEBUG(509, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy506; + if (yych == 'C') goto yy510; if (yych != 'c') goto yy187; -yy506: - YYDEBUG(506, *YYCURSOR); +yy510: + YYDEBUG(510, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy507; + if (yych == 'T') goto yy511; if (yych != 't') goto yy187; -yy507: - YYDEBUG(507, *YYCURSOR); +yy511: + YYDEBUG(511, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy508; + if (yych == 'E') goto yy512; if (yych != 'e') goto yy187; -yy508: - YYDEBUG(508, *YYCURSOR); +yy512: + YYDEBUG(512, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy509; + if (yych == 'D') goto yy513; if (yych != 'd') goto yy187; -yy509: - YYDEBUG(509, *YYCURSOR); +yy513: + YYDEBUG(513, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(510, *YYCURSOR); + YYDEBUG(514, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1333 "Zend/zend_language_scanner.l" { return T_PROTECTED; } -#line 5368 "Zend/zend_language_scanner.c" -yy511: - YYDEBUG(511, *YYCURSOR); +#line 5390 "Zend/zend_language_scanner.c" +yy515: + YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy517; - if (yych == 't') goto yy517; + if (yych == 'T') goto yy521; + if (yych == 't') goto yy521; goto yy187; -yy512: - YYDEBUG(512, *YYCURSOR); +yy516: + YYDEBUG(516, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy513; + if (yych == 'A') goto yy517; if (yych != 'a') goto yy187; -yy513: - YYDEBUG(513, *YYCURSOR); +yy517: + YYDEBUG(517, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy514; + if (yych == 'T') goto yy518; if (yych != 't') goto yy187; -yy514: - YYDEBUG(514, *YYCURSOR); +yy518: + YYDEBUG(518, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy515; + if (yych == 'E') goto yy519; if (yych != 'e') goto yy187; -yy515: - YYDEBUG(515, *YYCURSOR); +yy519: + YYDEBUG(519, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(516, *YYCURSOR); + YYDEBUG(520, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1329 "Zend/zend_language_scanner.l" { return T_PRIVATE; } -#line 5402 "Zend/zend_language_scanner.c" -yy517: - YYDEBUG(517, *YYCURSOR); +#line 5424 "Zend/zend_language_scanner.c" +yy521: + YYDEBUG(521, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(518, *YYCURSOR); + YYDEBUG(522, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1166 "Zend/zend_language_scanner.l" { return T_PRINT; } -#line 5415 "Zend/zend_language_scanner.c" -yy519: - YYDEBUG(519, *YYCURSOR); +#line 5437 "Zend/zend_language_scanner.c" +yy523: + YYDEBUG(523, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy524; - if (yych == 'o') goto yy524; + if (yych == 'O') goto yy528; + if (yych == 'o') goto yy528; goto yy187; -yy520: - YYDEBUG(520, *YYCURSOR); +yy524: + YYDEBUG(524, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy521; + if (yych == 'T') goto yy525; if (yych != 't') goto yy187; -yy521: - YYDEBUG(521, *YYCURSOR); +yy525: + YYDEBUG(525, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy522; + if (yych == 'O') goto yy526; if (yych != 'o') goto yy187; -yy522: - YYDEBUG(522, *YYCURSOR); +yy526: + YYDEBUG(526, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(523, *YYCURSOR); + YYDEBUG(527, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1158 "Zend/zend_language_scanner.l" { return T_GOTO; } -#line 5444 "Zend/zend_language_scanner.c" -yy524: - YYDEBUG(524, *YYCURSOR); +#line 5466 "Zend/zend_language_scanner.c" +yy528: + YYDEBUG(528, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy525; + if (yych == 'B') goto yy529; if (yych != 'b') goto yy187; -yy525: - YYDEBUG(525, *YYCURSOR); +yy529: + YYDEBUG(529, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy526; + if (yych == 'A') goto yy530; if (yych != 'a') goto yy187; -yy526: - YYDEBUG(526, *YYCURSOR); +yy530: + YYDEBUG(530, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy527; + if (yych == 'L') goto yy531; if (yych != 'l') goto yy187; -yy527: - YYDEBUG(527, *YYCURSOR); +yy531: + YYDEBUG(531, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(528, *YYCURSOR); + YYDEBUG(532, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1301 "Zend/zend_language_scanner.l" { return T_GLOBAL; } -#line 5472 "Zend/zend_language_scanner.c" -yy529: - YYDEBUG(529, *YYCURSOR); +#line 5494 "Zend/zend_language_scanner.c" +yy533: + YYDEBUG(533, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '<') goto yy537; + if (yych == '<') goto yy541; goto yy194; -yy530: - YYDEBUG(530, *YYCURSOR); +yy534: + YYDEBUG(534, *YYCURSOR); yych = *++YYCURSOR; goto yy181; -yy531: - YYDEBUG(531, *YYCURSOR); +yy535: + YYDEBUG(535, *YYCURSOR); yych = *++YYCURSOR; goto yy179; -yy532: - YYDEBUG(532, *YYCURSOR); +yy536: + YYDEBUG(536, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy533; + if (yych == 'E') goto yy537; if (yych != 'e') goto yy187; -yy533: - YYDEBUG(533, *YYCURSOR); +yy537: + YYDEBUG(537, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy534; + if (yych == 'A') goto yy538; if (yych != 'a') goto yy187; -yy534: - YYDEBUG(534, *YYCURSOR); +yy538: + YYDEBUG(538, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'K') goto yy535; + if (yych == 'K') goto yy539; if (yych != 'k') goto yy187; -yy535: - YYDEBUG(535, *YYCURSOR); +yy539: + YYDEBUG(539, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(536, *YYCURSOR); + YYDEBUG(540, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1150 "Zend/zend_language_scanner.l" { return T_BREAK; } -#line 5513 "Zend/zend_language_scanner.c" -yy537: - YYDEBUG(537, *YYCURSOR); +#line 5535 "Zend/zend_language_scanner.c" +yy541: + YYDEBUG(541, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '<') goto yy266; + if (yych == '<') goto yy270; goto yy194; -yy538: - YYDEBUG(538, *YYCURSOR); +yy542: + YYDEBUG(542, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy545; - if (yych == 'a') goto yy545; + if (yych == 'A') goto yy549; + if (yych == 'a') goto yy549; goto yy187; -yy539: - YYDEBUG(539, *YYCURSOR); +yy543: + YYDEBUG(543, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy540; + if (yych == 'I') goto yy544; if (yych != 'i') goto yy187; -yy540: - YYDEBUG(540, *YYCURSOR); +yy544: + YYDEBUG(544, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy541; + if (yych == 'T') goto yy545; if (yych != 't') goto yy187; -yy541: - YYDEBUG(541, *YYCURSOR); +yy545: + YYDEBUG(545, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy542; + if (yych == 'C') goto yy546; if (yych != 'c') goto yy187; -yy542: - YYDEBUG(542, *YYCURSOR); +yy546: + YYDEBUG(546, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy543; + if (yych == 'H') goto yy547; if (yych != 'h') goto yy187; -yy543: - YYDEBUG(543, *YYCURSOR); +yy547: + YYDEBUG(547, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(544, *YYCURSOR); + YYDEBUG(548, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1134 "Zend/zend_language_scanner.l" { return T_SWITCH; } -#line 5557 "Zend/zend_language_scanner.c" -yy545: - YYDEBUG(545, *YYCURSOR); +#line 5579 "Zend/zend_language_scanner.c" +yy549: + YYDEBUG(549, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy546; + if (yych == 'T') goto yy550; if (yych != 't') goto yy187; -yy546: - YYDEBUG(546, *YYCURSOR); +yy550: + YYDEBUG(550, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy547; + if (yych == 'I') goto yy551; if (yych != 'i') goto yy187; -yy547: - YYDEBUG(547, *YYCURSOR); +yy551: + YYDEBUG(551, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy548; + if (yych == 'C') goto yy552; if (yych != 'c') goto yy187; -yy548: - YYDEBUG(548, *YYCURSOR); +yy552: + YYDEBUG(552, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(549, *YYCURSOR); + YYDEBUG(553, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1317 "Zend/zend_language_scanner.l" { return T_STATIC; } -#line 5585 "Zend/zend_language_scanner.c" -yy550: - YYDEBUG(550, *YYCURSOR); +#line 5607 "Zend/zend_language_scanner.c" +yy554: + YYDEBUG(554, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy561; - if (yych == 's') goto yy561; + if (yych == 'S') goto yy565; + if (yych == 's') goto yy565; goto yy187; -yy551: - YYDEBUG(551, *YYCURSOR); +yy555: + YYDEBUG(555, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy559; - if (yych == 'd') goto yy559; + if (yych == 'D') goto yy563; + if (yych == 'd') goto yy563; goto yy187; -yy552: - YYDEBUG(552, *YYCURSOR); +yy556: + YYDEBUG(556, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy555; - if (yych == 'r') goto yy555; + if (yych == 'R') goto yy559; + if (yych == 'r') goto yy559; goto yy187; -yy553: - YYDEBUG(553, *YYCURSOR); +yy557: + YYDEBUG(557, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(554, *YYCURSOR); + YYDEBUG(558, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1130 "Zend/zend_language_scanner.l" { return T_AS; } -#line 5616 "Zend/zend_language_scanner.c" -yy555: - YYDEBUG(555, *YYCURSOR); +#line 5638 "Zend/zend_language_scanner.c" +yy559: + YYDEBUG(559, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy556; + if (yych == 'A') goto yy560; if (yych != 'a') goto yy187; -yy556: - YYDEBUG(556, *YYCURSOR); +yy560: + YYDEBUG(560, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy557; + if (yych == 'Y') goto yy561; if (yych != 'y') goto yy187; -yy557: - YYDEBUG(557, *YYCURSOR); +yy561: + YYDEBUG(561, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(558, *YYCURSOR); + YYDEBUG(562, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1353 "Zend/zend_language_scanner.l" { return T_ARRAY; } -#line 5639 "Zend/zend_language_scanner.c" -yy559: - YYDEBUG(559, *YYCURSOR); +#line 5661 "Zend/zend_language_scanner.c" +yy563: + YYDEBUG(563, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(560, *YYCURSOR); + YYDEBUG(564, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1449 "Zend/zend_language_scanner.l" +#line 1457 "Zend/zend_language_scanner.l" { return T_LOGICAL_AND; } -#line 5652 "Zend/zend_language_scanner.c" -yy561: - YYDEBUG(561, *YYCURSOR); +#line 5674 "Zend/zend_language_scanner.c" +yy565: + YYDEBUG(565, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy562; + if (yych == 'T') goto yy566; if (yych != 't') goto yy187; -yy562: - YYDEBUG(562, *YYCURSOR); +yy566: + YYDEBUG(566, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy563; + if (yych == 'R') goto yy567; if (yych != 'r') goto yy187; -yy563: - YYDEBUG(563, *YYCURSOR); +yy567: + YYDEBUG(567, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy564; + if (yych == 'A') goto yy568; if (yych != 'a') goto yy187; -yy564: - YYDEBUG(564, *YYCURSOR); +yy568: + YYDEBUG(568, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy565; + if (yych == 'C') goto yy569; if (yych != 'c') goto yy187; -yy565: - YYDEBUG(565, *YYCURSOR); +yy569: + YYDEBUG(569, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy566; + if (yych == 'T') goto yy570; if (yych != 't') goto yy187; -yy566: - YYDEBUG(566, *YYCURSOR); +yy570: + YYDEBUG(570, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(567, *YYCURSOR); + YYDEBUG(571, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1321 "Zend/zend_language_scanner.l" { return T_ABSTRACT; } -#line 5690 "Zend/zend_language_scanner.c" -yy568: - YYDEBUG(568, *YYCURSOR); +#line 5712 "Zend/zend_language_scanner.c" +yy572: + YYDEBUG(572, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy569; + if (yych == 'I') goto yy573; if (yych != 'i') goto yy187; -yy569: - YYDEBUG(569, *YYCURSOR); +yy573: + YYDEBUG(573, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy570; + if (yych == 'L') goto yy574; if (yych != 'l') goto yy187; -yy570: - YYDEBUG(570, *YYCURSOR); +yy574: + YYDEBUG(574, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy571; + if (yych == 'E') goto yy575; if (yych != 'e') goto yy187; -yy571: - YYDEBUG(571, *YYCURSOR); +yy575: + YYDEBUG(575, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(572, *YYCURSOR); + YYDEBUG(576, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1090 "Zend/zend_language_scanner.l" { return T_WHILE; } -#line 5718 "Zend/zend_language_scanner.c" -yy573: - YYDEBUG(573, *YYCURSOR); +#line 5740 "Zend/zend_language_scanner.c" +yy577: + YYDEBUG(577, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(574, *YYCURSOR); + YYDEBUG(578, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1074 "Zend/zend_language_scanner.l" { return T_IF; } -#line 5731 "Zend/zend_language_scanner.c" -yy575: - YYDEBUG(575, *YYCURSOR); +#line 5753 "Zend/zend_language_scanner.c" +yy579: + YYDEBUG(579, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy617; - if (yych == 'p') goto yy617; + if (yych == 'P') goto yy621; + if (yych == 'p') goto yy621; goto yy187; -yy576: - YYDEBUG(576, *YYCURSOR); +yy580: + YYDEBUG(580, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= 'C') { if (yych <= 'B') goto yy187; - goto yy584; + goto yy588; } else { if (yych <= 'R') goto yy187; - if (yych <= 'S') goto yy582; - goto yy583; + if (yych <= 'S') goto yy586; + goto yy587; } } else { if (yych <= 'r') { - if (yych == 'c') goto yy584; + if (yych == 'c') goto yy588; goto yy187; } else { - if (yych <= 's') goto yy582; - if (yych <= 't') goto yy583; + if (yych <= 's') goto yy586; + if (yych <= 't') goto yy587; goto yy187; } } -yy577: - YYDEBUG(577, *YYCURSOR); +yy581: + YYDEBUG(581, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy578; + if (yych == 'S') goto yy582; if (yych != 's') goto yy187; -yy578: - YYDEBUG(578, *YYCURSOR); +yy582: + YYDEBUG(582, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy579; + if (yych == 'E') goto yy583; if (yych != 'e') goto yy187; -yy579: - YYDEBUG(579, *YYCURSOR); +yy583: + YYDEBUG(583, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy580; + if (yych == 'T') goto yy584; if (yych != 't') goto yy187; -yy580: - YYDEBUG(580, *YYCURSOR); +yy584: + YYDEBUG(584, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(581, *YYCURSOR); + YYDEBUG(585, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1305 "Zend/zend_language_scanner.l" { return T_ISSET; } -#line 5787 "Zend/zend_language_scanner.c" -yy582: - YYDEBUG(582, *YYCURSOR); +#line 5809 "Zend/zend_language_scanner.c" +yy586: + YYDEBUG(586, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy603; - if (yych == 't') goto yy603; + if (yych == 'T') goto yy607; + if (yych == 't') goto yy607; goto yy187; -yy583: - YYDEBUG(583, *YYCURSOR); +yy587: + YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy596; - if (yych == 'e') goto yy596; + if (yych == 'E') goto yy600; + if (yych == 'e') goto yy600; goto yy187; -yy584: - YYDEBUG(584, *YYCURSOR); +yy588: + YYDEBUG(588, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy585; + if (yych == 'L') goto yy589; if (yych != 'l') goto yy187; -yy585: - YYDEBUG(585, *YYCURSOR); +yy589: + YYDEBUG(589, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy586; + if (yych == 'U') goto yy590; if (yych != 'u') goto yy187; -yy586: - YYDEBUG(586, *YYCURSOR); +yy590: + YYDEBUG(590, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy587; + if (yych == 'D') goto yy591; if (yych != 'd') goto yy187; -yy587: - YYDEBUG(587, *YYCURSOR); +yy591: + YYDEBUG(591, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy588; + if (yych == 'E') goto yy592; if (yych != 'e') goto yy187; -yy588: - YYDEBUG(588, *YYCURSOR); +yy592: + YYDEBUG(592, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '9') { if (yych >= '0') goto yy186; } else { - if (yych <= '@') goto yy589; + if (yych <= '@') goto yy593; if (yych <= 'Z') goto yy186; } } else { if (yych <= '`') { - if (yych <= '_') goto yy590; + if (yych <= '_') goto yy594; } else { if (yych <= 'z') goto yy186; if (yych >= 0x7F) goto yy186; } } -yy589: - YYDEBUG(589, *YYCURSOR); +yy593: + YYDEBUG(593, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1273 "Zend/zend_language_scanner.l" { return T_INCLUDE; } -#line 5845 "Zend/zend_language_scanner.c" -yy590: - YYDEBUG(590, *YYCURSOR); +#line 5867 "Zend/zend_language_scanner.c" +yy594: + YYDEBUG(594, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy591; + if (yych == 'O') goto yy595; if (yych != 'o') goto yy187; -yy591: - YYDEBUG(591, *YYCURSOR); +yy595: + YYDEBUG(595, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy592; + if (yych == 'N') goto yy596; if (yych != 'n') goto yy187; -yy592: - YYDEBUG(592, *YYCURSOR); +yy596: + YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy593; + if (yych == 'C') goto yy597; if (yych != 'c') goto yy187; -yy593: - YYDEBUG(593, *YYCURSOR); +yy597: + YYDEBUG(597, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy594; + if (yych == 'E') goto yy598; if (yych != 'e') goto yy187; -yy594: - YYDEBUG(594, *YYCURSOR); +yy598: + YYDEBUG(598, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(595, *YYCURSOR); + YYDEBUG(599, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1277 "Zend/zend_language_scanner.l" { return T_INCLUDE_ONCE; } -#line 5878 "Zend/zend_language_scanner.c" -yy596: - YYDEBUG(596, *YYCURSOR); +#line 5900 "Zend/zend_language_scanner.c" +yy600: + YYDEBUG(600, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy597; + if (yych == 'R') goto yy601; if (yych != 'r') goto yy187; -yy597: - YYDEBUG(597, *YYCURSOR); +yy601: + YYDEBUG(601, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy598; + if (yych == 'F') goto yy602; if (yych != 'f') goto yy187; -yy598: - YYDEBUG(598, *YYCURSOR); +yy602: + YYDEBUG(602, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy599; + if (yych == 'A') goto yy603; if (yych != 'a') goto yy187; -yy599: - YYDEBUG(599, *YYCURSOR); +yy603: + YYDEBUG(603, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy600; + if (yych == 'C') goto yy604; if (yych != 'c') goto yy187; -yy600: - YYDEBUG(600, *YYCURSOR); +yy604: + YYDEBUG(604, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy601; + if (yych == 'E') goto yy605; if (yych != 'e') goto yy187; -yy601: - YYDEBUG(601, *YYCURSOR); +yy605: + YYDEBUG(605, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(602, *YYCURSOR); + YYDEBUG(606, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1174 "Zend/zend_language_scanner.l" { return T_INTERFACE; } -#line 5916 "Zend/zend_language_scanner.c" -yy603: - YYDEBUG(603, *YYCURSOR); +#line 5938 "Zend/zend_language_scanner.c" +yy607: + YYDEBUG(607, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'E') { - if (yych == 'A') goto yy604; + if (yych == 'A') goto yy608; if (yych <= 'D') goto yy187; - goto yy605; + goto yy609; } else { if (yych <= 'a') { if (yych <= '`') goto yy187; } else { - if (yych == 'e') goto yy605; + if (yych == 'e') goto yy609; goto yy187; } } -yy604: - YYDEBUG(604, *YYCURSOR); +yy608: + YYDEBUG(608, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy611; - if (yych == 'n') goto yy611; + if (yych == 'N') goto yy615; + if (yych == 'n') goto yy615; goto yy187; -yy605: - YYDEBUG(605, *YYCURSOR); +yy609: + YYDEBUG(609, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy606; + if (yych == 'A') goto yy610; if (yych != 'a') goto yy187; -yy606: - YYDEBUG(606, *YYCURSOR); +yy610: + YYDEBUG(610, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy607; + if (yych == 'D') goto yy611; if (yych != 'd') goto yy187; -yy607: - YYDEBUG(607, *YYCURSOR); +yy611: + YYDEBUG(611, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy608; + if (yych == 'O') goto yy612; if (yych != 'o') goto yy187; -yy608: - YYDEBUG(608, *YYCURSOR); +yy612: + YYDEBUG(612, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy609; + if (yych == 'F') goto yy613; if (yych != 'f') goto yy187; -yy609: - YYDEBUG(609, *YYCURSOR); +yy613: + YYDEBUG(613, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(610, *YYCURSOR); + YYDEBUG(614, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1297 "Zend/zend_language_scanner.l" { return T_INSTEADOF; } -#line 5970 "Zend/zend_language_scanner.c" -yy611: - YYDEBUG(611, *YYCURSOR); +#line 5992 "Zend/zend_language_scanner.c" +yy615: + YYDEBUG(615, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy612; + if (yych == 'C') goto yy616; if (yych != 'c') goto yy187; -yy612: - YYDEBUG(612, *YYCURSOR); +yy616: + YYDEBUG(616, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy613; + if (yych == 'E') goto yy617; if (yych != 'e') goto yy187; -yy613: - YYDEBUG(613, *YYCURSOR); +yy617: + YYDEBUG(617, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy614; + if (yych == 'O') goto yy618; if (yych != 'o') goto yy187; -yy614: - YYDEBUG(614, *YYCURSOR); +yy618: + YYDEBUG(618, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy615; + if (yych == 'F') goto yy619; if (yych != 'f') goto yy187; -yy615: - YYDEBUG(615, *YYCURSOR); +yy619: + YYDEBUG(619, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(616, *YYCURSOR); + YYDEBUG(620, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1126 "Zend/zend_language_scanner.l" { return T_INSTANCEOF; } -#line 6003 "Zend/zend_language_scanner.c" -yy617: - YYDEBUG(617, *YYCURSOR); +#line 6025 "Zend/zend_language_scanner.c" +yy621: + YYDEBUG(621, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy618; + if (yych == 'L') goto yy622; if (yych != 'l') goto yy187; -yy618: - YYDEBUG(618, *YYCURSOR); +yy622: + YYDEBUG(622, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy619; + if (yych == 'E') goto yy623; if (yych != 'e') goto yy187; -yy619: - YYDEBUG(619, *YYCURSOR); +yy623: + YYDEBUG(623, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy620; + if (yych == 'M') goto yy624; if (yych != 'm') goto yy187; -yy620: - YYDEBUG(620, *YYCURSOR); +yy624: + YYDEBUG(624, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy621; + if (yych == 'E') goto yy625; if (yych != 'e') goto yy187; -yy621: - YYDEBUG(621, *YYCURSOR); +yy625: + YYDEBUG(625, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy622; + if (yych == 'N') goto yy626; if (yych != 'n') goto yy187; -yy622: - YYDEBUG(622, *YYCURSOR); +yy626: + YYDEBUG(626, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy623; + if (yych == 'T') goto yy627; if (yych != 't') goto yy187; -yy623: - YYDEBUG(623, *YYCURSOR); +yy627: + YYDEBUG(627, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy624; + if (yych == 'S') goto yy628; if (yych != 's') goto yy187; -yy624: - YYDEBUG(624, *YYCURSOR); +yy628: + YYDEBUG(628, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(625, *YYCURSOR); + YYDEBUG(629, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1186 "Zend/zend_language_scanner.l" { return T_IMPLEMENTS; } -#line 6051 "Zend/zend_language_scanner.c" -yy626: - YYDEBUG(626, *YYCURSOR); +#line 6073 "Zend/zend_language_scanner.c" +yy630: + YYDEBUG(630, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy634; - if (yych == 'r') goto yy634; + if (yych == 'R') goto yy638; + if (yych == 'r') goto yy638; goto yy187; -yy627: - YYDEBUG(627, *YYCURSOR); +yy631: + YYDEBUG(631, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'Y') { - if (yych == 'A') goto yy630; + if (yych == 'A') goto yy634; if (yych <= 'X') goto yy187; } else { if (yych <= 'a') { if (yych <= '`') goto yy187; - goto yy630; + goto yy634; } else { if (yych != 'y') goto yy187; } } - YYDEBUG(628, *YYCURSOR); + YYDEBUG(632, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(629, *YYCURSOR); + YYDEBUG(633, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1058 "Zend/zend_language_scanner.l" { return T_TRY; } -#line 6083 "Zend/zend_language_scanner.c" -yy630: - YYDEBUG(630, *YYCURSOR); +#line 6105 "Zend/zend_language_scanner.c" +yy634: + YYDEBUG(634, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy631; + if (yych == 'I') goto yy635; if (yych != 'i') goto yy187; -yy631: - YYDEBUG(631, *YYCURSOR); +yy635: + YYDEBUG(635, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy632; + if (yych == 'T') goto yy636; if (yych != 't') goto yy187; -yy632: - YYDEBUG(632, *YYCURSOR); +yy636: + YYDEBUG(636, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(633, *YYCURSOR); + YYDEBUG(637, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1178 "Zend/zend_language_scanner.l" { return T_TRAIT; } -#line 6106 "Zend/zend_language_scanner.c" -yy634: - YYDEBUG(634, *YYCURSOR); +#line 6128 "Zend/zend_language_scanner.c" +yy638: + YYDEBUG(638, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy635; + if (yych == 'O') goto yy639; if (yych != 'o') goto yy187; -yy635: - YYDEBUG(635, *YYCURSOR); +yy639: + YYDEBUG(639, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'W') goto yy636; + if (yych == 'W') goto yy640; if (yych != 'w') goto yy187; -yy636: - YYDEBUG(636, *YYCURSOR); +yy640: + YYDEBUG(640, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(637, *YYCURSOR); + YYDEBUG(641, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1070 "Zend/zend_language_scanner.l" { return T_THROW; } -#line 6129 "Zend/zend_language_scanner.c" -yy638: - YYDEBUG(638, *YYCURSOR); +#line 6151 "Zend/zend_language_scanner.c" +yy642: + YYDEBUG(642, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy639; + if (yych == 'E') goto yy643; if (yych != 'e') goto yy187; -yy639: - YYDEBUG(639, *YYCURSOR); +yy643: + YYDEBUG(643, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy640; + if (yych == 'L') goto yy644; if (yych != 'l') goto yy187; -yy640: - YYDEBUG(640, *YYCURSOR); +yy644: + YYDEBUG(644, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy641; + if (yych == 'D') goto yy645; if (yych != 'd') goto yy187; -yy641: - YYDEBUG(641, *YYCURSOR); +yy645: + YYDEBUG(645, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(642, *YYCURSOR); + YYDEBUG(646, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1054 "Zend/zend_language_scanner.l" { return T_YIELD; } -#line 6157 "Zend/zend_language_scanner.c" -yy643: - YYDEBUG(643, *YYCURSOR); +#line 6179 "Zend/zend_language_scanner.c" +yy647: + YYDEBUG(647, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'T') { - if (yych == 'Q') goto yy645; + if (yych == 'Q') goto yy649; if (yych <= 'S') goto yy187; } else { if (yych <= 'q') { if (yych <= 'p') goto yy187; - goto yy645; + goto yy649; } else { if (yych != 't') goto yy187; } } - YYDEBUG(644, *YYCURSOR); + YYDEBUG(648, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy657; - if (yych == 'u') goto yy657; + if (yych == 'U') goto yy661; + if (yych == 'u') goto yy661; goto yy187; -yy645: - YYDEBUG(645, *YYCURSOR); +yy649: + YYDEBUG(649, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy646; + if (yych == 'U') goto yy650; if (yych != 'u') goto yy187; -yy646: - YYDEBUG(646, *YYCURSOR); +yy650: + YYDEBUG(650, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy647; + if (yych == 'I') goto yy651; if (yych != 'i') goto yy187; -yy647: - YYDEBUG(647, *YYCURSOR); +yy651: + YYDEBUG(651, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy648; + if (yych == 'R') goto yy652; if (yych != 'r') goto yy187; -yy648: - YYDEBUG(648, *YYCURSOR); +yy652: + YYDEBUG(652, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy649; + if (yych == 'E') goto yy653; if (yych != 'e') goto yy187; -yy649: - YYDEBUG(649, *YYCURSOR); +yy653: + YYDEBUG(653, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '9') { if (yych >= '0') goto yy186; } else { - if (yych <= '@') goto yy650; + if (yych <= '@') goto yy654; if (yych <= 'Z') goto yy186; } } else { if (yych <= '`') { - if (yych <= '_') goto yy651; + if (yych <= '_') goto yy655; } else { if (yych <= 'z') goto yy186; if (yych >= 0x7F) goto yy186; } } -yy650: - YYDEBUG(650, *YYCURSOR); +yy654: + YYDEBUG(654, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1281 "Zend/zend_language_scanner.l" { return T_REQUIRE; } -#line 6222 "Zend/zend_language_scanner.c" -yy651: - YYDEBUG(651, *YYCURSOR); +#line 6244 "Zend/zend_language_scanner.c" +yy655: + YYDEBUG(655, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy652; + if (yych == 'O') goto yy656; if (yych != 'o') goto yy187; -yy652: - YYDEBUG(652, *YYCURSOR); +yy656: + YYDEBUG(656, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy653; + if (yych == 'N') goto yy657; if (yych != 'n') goto yy187; -yy653: - YYDEBUG(653, *YYCURSOR); +yy657: + YYDEBUG(657, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy654; + if (yych == 'C') goto yy658; if (yych != 'c') goto yy187; -yy654: - YYDEBUG(654, *YYCURSOR); +yy658: + YYDEBUG(658, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy655; + if (yych == 'E') goto yy659; if (yych != 'e') goto yy187; -yy655: - YYDEBUG(655, *YYCURSOR); +yy659: + YYDEBUG(659, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(656, *YYCURSOR); + YYDEBUG(660, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1285 "Zend/zend_language_scanner.l" { return T_REQUIRE_ONCE; } -#line 6255 "Zend/zend_language_scanner.c" -yy657: - YYDEBUG(657, *YYCURSOR); +#line 6277 "Zend/zend_language_scanner.c" +yy661: + YYDEBUG(661, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy658; + if (yych == 'R') goto yy662; if (yych != 'r') goto yy187; -yy658: - YYDEBUG(658, *YYCURSOR); +yy662: + YYDEBUG(662, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy659; + if (yych == 'N') goto yy663; if (yych != 'n') goto yy187; -yy659: - YYDEBUG(659, *YYCURSOR); +yy663: + YYDEBUG(663, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(660, *YYCURSOR); + YYDEBUG(664, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1050 "Zend/zend_language_scanner.l" { return T_RETURN; } -#line 6278 "Zend/zend_language_scanner.c" -yy661: - YYDEBUG(661, *YYCURSOR); +#line 6300 "Zend/zend_language_scanner.c" +yy665: + YYDEBUG(665, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= 'L') { if (yych <= 'K') goto yy187; - goto yy684; + goto yy688; } else { if (yych <= 'R') goto yy187; - if (yych <= 'S') goto yy683; - goto yy682; + if (yych <= 'S') goto yy687; + goto yy686; } } else { if (yych <= 'r') { - if (yych == 'l') goto yy684; + if (yych == 'l') goto yy688; goto yy187; } else { - if (yych <= 's') goto yy683; - if (yych <= 't') goto yy682; + if (yych <= 's') goto yy687; + if (yych <= 't') goto yy686; goto yy187; } } -yy662: - YYDEBUG(662, *YYCURSOR); +yy666: + YYDEBUG(666, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'A') goto yy674; + if (yych == 'A') goto yy678; if (yych <= 'N') goto yy187; - goto yy675; + goto yy679; } else { if (yych <= 'a') { if (yych <= '`') goto yy187; - goto yy674; + goto yy678; } else { - if (yych == 'o') goto yy675; + if (yych == 'o') goto yy679; goto yy187; } } -yy663: - YYDEBUG(663, *YYCURSOR); +yy667: + YYDEBUG(667, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy664; + if (yych == 'N') goto yy668; if (yych != 'n') goto yy187; -yy664: - YYDEBUG(664, *YYCURSOR); +yy668: + YYDEBUG(668, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= 'R') goto yy187; - if (yych >= 'T') goto yy666; + if (yych >= 'T') goto yy670; } else { if (yych <= 'r') goto yy187; - if (yych <= 's') goto yy665; - if (yych <= 't') goto yy666; + if (yych <= 's') goto yy669; + if (yych <= 't') goto yy670; goto yy187; } -yy665: - YYDEBUG(665, *YYCURSOR); +yy669: + YYDEBUG(669, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy672; - if (yych == 't') goto yy672; + if (yych == 'T') goto yy676; + if (yych == 't') goto yy676; goto yy187; -yy666: - YYDEBUG(666, *YYCURSOR); +yy670: + YYDEBUG(670, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy667; + if (yych == 'I') goto yy671; if (yych != 'i') goto yy187; -yy667: - YYDEBUG(667, *YYCURSOR); +yy671: + YYDEBUG(671, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy668; + if (yych == 'N') goto yy672; if (yych != 'n') goto yy187; -yy668: - YYDEBUG(668, *YYCURSOR); +yy672: + YYDEBUG(672, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy669; + if (yych == 'U') goto yy673; if (yych != 'u') goto yy187; -yy669: - YYDEBUG(669, *YYCURSOR); +yy673: + YYDEBUG(673, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy670; + if (yych == 'E') goto yy674; if (yych != 'e') goto yy187; -yy670: - YYDEBUG(670, *YYCURSOR); +yy674: + YYDEBUG(674, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(671, *YYCURSOR); + YYDEBUG(675, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1154 "Zend/zend_language_scanner.l" { return T_CONTINUE; } -#line 6372 "Zend/zend_language_scanner.c" -yy672: - YYDEBUG(672, *YYCURSOR); +#line 6394 "Zend/zend_language_scanner.c" +yy676: + YYDEBUG(676, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(673, *YYCURSOR); + YYDEBUG(677, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1046 "Zend/zend_language_scanner.l" { return T_CONST; } -#line 6385 "Zend/zend_language_scanner.c" -yy674: - YYDEBUG(674, *YYCURSOR); +#line 6407 "Zend/zend_language_scanner.c" +yy678: + YYDEBUG(678, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy679; - if (yych == 's') goto yy679; + if (yych == 'S') goto yy683; + if (yych == 's') goto yy683; goto yy187; -yy675: - YYDEBUG(675, *YYCURSOR); +yy679: + YYDEBUG(679, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy676; + if (yych == 'N') goto yy680; if (yych != 'n') goto yy187; -yy676: - YYDEBUG(676, *YYCURSOR); +yy680: + YYDEBUG(680, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy677; + if (yych == 'E') goto yy681; if (yych != 'e') goto yy187; -yy677: - YYDEBUG(677, *YYCURSOR); +yy681: + YYDEBUG(681, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(678, *YYCURSOR); + YYDEBUG(682, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1233 "Zend/zend_language_scanner.l" { return T_CLONE; } -#line 6414 "Zend/zend_language_scanner.c" -yy679: - YYDEBUG(679, *YYCURSOR); +#line 6436 "Zend/zend_language_scanner.c" +yy683: + YYDEBUG(683, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy680; + if (yych == 'S') goto yy684; if (yych != 's') goto yy187; -yy680: - YYDEBUG(680, *YYCURSOR); +yy684: + YYDEBUG(684, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(681, *YYCURSOR); + YYDEBUG(685, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1170 "Zend/zend_language_scanner.l" { return T_CLASS; } -#line 6432 "Zend/zend_language_scanner.c" -yy682: - YYDEBUG(682, *YYCURSOR); +#line 6454 "Zend/zend_language_scanner.c" +yy686: + YYDEBUG(686, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy693; - if (yych == 'c') goto yy693; + if (yych == 'C') goto yy697; + if (yych == 'c') goto yy697; goto yy187; -yy683: - YYDEBUG(683, *YYCURSOR); +yy687: + YYDEBUG(687, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy691; - if (yych == 'e') goto yy691; + if (yych == 'E') goto yy695; + if (yych == 'e') goto yy695; goto yy187; -yy684: - YYDEBUG(684, *YYCURSOR); +yy688: + YYDEBUG(688, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy685; + if (yych == 'L') goto yy689; if (yych != 'l') goto yy187; -yy685: - YYDEBUG(685, *YYCURSOR); +yy689: + YYDEBUG(689, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy686; + if (yych == 'A') goto yy690; if (yych != 'a') goto yy187; -yy686: - YYDEBUG(686, *YYCURSOR); +yy690: + YYDEBUG(690, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'B') goto yy687; + if (yych == 'B') goto yy691; if (yych != 'b') goto yy187; -yy687: - YYDEBUG(687, *YYCURSOR); +yy691: + YYDEBUG(691, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy688; + if (yych == 'L') goto yy692; if (yych != 'l') goto yy187; -yy688: - YYDEBUG(688, *YYCURSOR); +yy692: + YYDEBUG(692, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy689; + if (yych == 'E') goto yy693; if (yych != 'e') goto yy187; -yy689: - YYDEBUG(689, *YYCURSOR); +yy693: + YYDEBUG(693, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(690, *YYCURSOR); + YYDEBUG(694, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1357 "Zend/zend_language_scanner.l" { return T_CALLABLE; } -#line 6482 "Zend/zend_language_scanner.c" -yy691: - YYDEBUG(691, *YYCURSOR); +#line 6504 "Zend/zend_language_scanner.c" +yy695: + YYDEBUG(695, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(692, *YYCURSOR); + YYDEBUG(696, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1142 "Zend/zend_language_scanner.l" { return T_CASE; } -#line 6495 "Zend/zend_language_scanner.c" -yy693: - YYDEBUG(693, *YYCURSOR); +#line 6517 "Zend/zend_language_scanner.c" +yy697: + YYDEBUG(697, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy694; + if (yych == 'H') goto yy698; if (yych != 'h') goto yy187; -yy694: - YYDEBUG(694, *YYCURSOR); +yy698: + YYDEBUG(698, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(695, *YYCURSOR); + YYDEBUG(699, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1062 "Zend/zend_language_scanner.l" { return T_CATCH; } -#line 6513 "Zend/zend_language_scanner.c" -yy696: - YYDEBUG(696, *YYCURSOR); +#line 6535 "Zend/zend_language_scanner.c" +yy700: + YYDEBUG(700, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy713; - if (yych == 'n') goto yy713; + if (yych == 'N') goto yy717; + if (yych == 'n') goto yy717; goto yy187; -yy697: - YYDEBUG(697, *YYCURSOR); +yy701: + YYDEBUG(701, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy706; - if (yych == 'r') goto yy706; + if (yych == 'R') goto yy710; + if (yych == 'r') goto yy710; goto yy187; -yy698: - YYDEBUG(698, *YYCURSOR); +yy702: + YYDEBUG(702, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy699; + if (yych == 'N') goto yy703; if (yych != 'n') goto yy187; -yy699: - YYDEBUG(699, *YYCURSOR); +yy703: + YYDEBUG(703, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy700; + if (yych == 'C') goto yy704; if (yych != 'c') goto yy187; -yy700: - YYDEBUG(700, *YYCURSOR); +yy704: + YYDEBUG(704, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy701; + if (yych == 'T') goto yy705; if (yych != 't') goto yy187; -yy701: - YYDEBUG(701, *YYCURSOR); +yy705: + YYDEBUG(705, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy702; + if (yych == 'I') goto yy706; if (yych != 'i') goto yy187; -yy702: - YYDEBUG(702, *YYCURSOR); +yy706: + YYDEBUG(706, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy703; + if (yych == 'O') goto yy707; if (yych != 'o') goto yy187; -yy703: - YYDEBUG(703, *YYCURSOR); +yy707: + YYDEBUG(707, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy704; + if (yych == 'N') goto yy708; if (yych != 'n') goto yy187; -yy704: - YYDEBUG(704, *YYCURSOR); +yy708: + YYDEBUG(708, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(705, *YYCURSOR); + YYDEBUG(709, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1042 "Zend/zend_language_scanner.l" { return T_FUNCTION; } -#line 6568 "Zend/zend_language_scanner.c" -yy706: - YYDEBUG(706, *YYCURSOR); +#line 6590 "Zend/zend_language_scanner.c" +yy710: + YYDEBUG(710, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '@') { - if (yych <= '/') goto yy707; + if (yych <= '/') goto yy711; if (yych <= '9') goto yy186; } else { - if (yych == 'E') goto yy708; + if (yych == 'E') goto yy712; if (yych <= 'Z') goto yy186; } } else { if (yych <= 'd') { if (yych != '`') goto yy186; } else { - if (yych <= 'e') goto yy708; + if (yych <= 'e') goto yy712; if (yych <= 'z') goto yy186; if (yych >= 0x7F) goto yy186; } } -yy707: - YYDEBUG(707, *YYCURSOR); +yy711: + YYDEBUG(711, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1102 "Zend/zend_language_scanner.l" { return T_FOR; } -#line 6596 "Zend/zend_language_scanner.c" -yy708: - YYDEBUG(708, *YYCURSOR); +#line 6618 "Zend/zend_language_scanner.c" +yy712: + YYDEBUG(712, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy709; + if (yych == 'A') goto yy713; if (yych != 'a') goto yy187; -yy709: - YYDEBUG(709, *YYCURSOR); +yy713: + YYDEBUG(713, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy710; + if (yych == 'C') goto yy714; if (yych != 'c') goto yy187; -yy710: - YYDEBUG(710, *YYCURSOR); +yy714: + YYDEBUG(714, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy711; + if (yych == 'H') goto yy715; if (yych != 'h') goto yy187; -yy711: - YYDEBUG(711, *YYCURSOR); +yy715: + YYDEBUG(715, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(712, *YYCURSOR); + YYDEBUG(716, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1110 "Zend/zend_language_scanner.l" { return T_FOREACH; } -#line 6624 "Zend/zend_language_scanner.c" -yy713: - YYDEBUG(713, *YYCURSOR); +#line 6646 "Zend/zend_language_scanner.c" +yy717: + YYDEBUG(717, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy714; + if (yych == 'A') goto yy718; if (yych != 'a') goto yy187; -yy714: - YYDEBUG(714, *YYCURSOR); +yy718: + YYDEBUG(718, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy715; + if (yych == 'L') goto yy719; if (yych != 'l') goto yy187; -yy715: - YYDEBUG(715, *YYCURSOR); +yy719: + YYDEBUG(719, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '@') { - if (yych <= '/') goto yy716; + if (yych <= '/') goto yy720; if (yych <= '9') goto yy186; } else { - if (yych == 'L') goto yy717; + if (yych == 'L') goto yy721; if (yych <= 'Z') goto yy186; } } else { if (yych <= 'k') { if (yych != '`') goto yy186; } else { - if (yych <= 'l') goto yy717; + if (yych <= 'l') goto yy721; if (yych <= 'z') goto yy186; if (yych >= 0x7F) goto yy186; } } -yy716: - YYDEBUG(716, *YYCURSOR); +yy720: + YYDEBUG(720, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1325 "Zend/zend_language_scanner.l" { return T_FINAL; } -#line 6662 "Zend/zend_language_scanner.c" -yy717: - YYDEBUG(717, *YYCURSOR); +#line 6684 "Zend/zend_language_scanner.c" +yy721: + YYDEBUG(721, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy718; + if (yych == 'Y') goto yy722; if (yych != 'y') goto yy187; -yy718: - YYDEBUG(718, *YYCURSOR); +yy722: + YYDEBUG(722, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(719, *YYCURSOR); + YYDEBUG(723, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1066 "Zend/zend_language_scanner.l" { return T_FINALLY; } -#line 6680 "Zend/zend_language_scanner.c" -yy720: - YYDEBUG(720, *YYCURSOR); +#line 6702 "Zend/zend_language_scanner.c" +yy724: + YYDEBUG(724, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'F') { - if (yych == 'C') goto yy726; + if (yych == 'C') goto yy730; if (yych <= 'E') goto yy187; - goto yy727; + goto yy731; } else { if (yych <= 'c') { if (yych <= 'b') goto yy187; - goto yy726; + goto yy730; } else { - if (yych == 'f') goto yy727; + if (yych == 'f') goto yy731; goto yy187; } } -yy721: - YYDEBUG(721, *YYCURSOR); +yy725: + YYDEBUG(725, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy724; - if (yych == 'e') goto yy724; + if (yych == 'E') goto yy728; + if (yych == 'e') goto yy728; goto yy187; -yy722: - YYDEBUG(722, *YYCURSOR); +yy726: + YYDEBUG(726, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(723, *YYCURSOR); + YYDEBUG(727, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1098 "Zend/zend_language_scanner.l" { return T_DO; } -#line 6715 "Zend/zend_language_scanner.c" -yy724: - YYDEBUG(724, *YYCURSOR); +#line 6737 "Zend/zend_language_scanner.c" +yy728: + YYDEBUG(728, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(725, *YYCURSOR); + YYDEBUG(729, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1038 "Zend/zend_language_scanner.l" { return T_EXIT; } -#line 6728 "Zend/zend_language_scanner.c" -yy726: - YYDEBUG(726, *YYCURSOR); +#line 6750 "Zend/zend_language_scanner.c" +yy730: + YYDEBUG(730, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy733; - if (yych == 'l') goto yy733; + if (yych == 'L') goto yy737; + if (yych == 'l') goto yy737; goto yy187; -yy727: - YYDEBUG(727, *YYCURSOR); +yy731: + YYDEBUG(731, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy728; + if (yych == 'A') goto yy732; if (yych != 'a') goto yy187; -yy728: - YYDEBUG(728, *YYCURSOR); +yy732: + YYDEBUG(732, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy729; + if (yych == 'U') goto yy733; if (yych != 'u') goto yy187; -yy729: - YYDEBUG(729, *YYCURSOR); +yy733: + YYDEBUG(733, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy730; + if (yych == 'L') goto yy734; if (yych != 'l') goto yy187; -yy730: - YYDEBUG(730, *YYCURSOR); +yy734: + YYDEBUG(734, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy731; + if (yych == 'T') goto yy735; if (yych != 't') goto yy187; -yy731: - YYDEBUG(731, *YYCURSOR); +yy735: + YYDEBUG(735, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(732, *YYCURSOR); + YYDEBUG(736, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1146 "Zend/zend_language_scanner.l" { return T_DEFAULT; } -#line 6767 "Zend/zend_language_scanner.c" -yy733: - YYDEBUG(733, *YYCURSOR); +#line 6789 "Zend/zend_language_scanner.c" +yy737: + YYDEBUG(737, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy734; + if (yych == 'A') goto yy738; if (yych != 'a') goto yy187; -yy734: - YYDEBUG(734, *YYCURSOR); +yy738: + YYDEBUG(738, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy735; + if (yych == 'R') goto yy739; if (yych != 'r') goto yy187; -yy735: - YYDEBUG(735, *YYCURSOR); +yy739: + YYDEBUG(739, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy736; + if (yych == 'E') goto yy740; if (yych != 'e') goto yy187; -yy736: - YYDEBUG(736, *YYCURSOR); +yy740: + YYDEBUG(740, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(737, *YYCURSOR); + YYDEBUG(741, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1118 "Zend/zend_language_scanner.l" { return T_DECLARE; } -#line 6795 "Zend/zend_language_scanner.c" -yy738: - YYDEBUG(738, *YYCURSOR); +#line 6817 "Zend/zend_language_scanner.c" +yy742: + YYDEBUG(742, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy800; - if (yych == 'h') goto yy800; + if (yych == 'H') goto yy804; + if (yych == 'h') goto yy804; goto yy187; -yy739: - YYDEBUG(739, *YYCURSOR); +yy743: + YYDEBUG(743, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy794; - if (yych == 's') goto yy794; + if (yych == 'S') goto yy798; + if (yych == 's') goto yy798; goto yy187; -yy740: - YYDEBUG(740, *YYCURSOR); +yy744: + YYDEBUG(744, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy790; - if (yych == 'p') goto yy790; + if (yych == 'P') goto yy794; + if (yych == 'p') goto yy794; goto yy187; -yy741: - YYDEBUG(741, *YYCURSOR); +yy745: + YYDEBUG(745, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy756; - if (yych == 'd') goto yy756; + if (yych == 'D') goto yy760; + if (yych == 'd') goto yy760; goto yy187; -yy742: - YYDEBUG(742, *YYCURSOR); +yy746: + YYDEBUG(746, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy753; - if (yych == 'a') goto yy753; + if (yych == 'A') goto yy757; + if (yych == 'a') goto yy757; goto yy187; -yy743: - YYDEBUG(743, *YYCURSOR); +yy747: + YYDEBUG(747, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'T') { - if (yych == 'I') goto yy744; + if (yych == 'I') goto yy748; if (yych <= 'S') goto yy187; - goto yy745; + goto yy749; } else { if (yych <= 'i') { if (yych <= 'h') goto yy187; } else { - if (yych == 't') goto yy745; + if (yych == 't') goto yy749; goto yy187; } } -yy744: - YYDEBUG(744, *YYCURSOR); +yy748: + YYDEBUG(748, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy751; - if (yych == 't') goto yy751; + if (yych == 'T') goto yy755; + if (yych == 't') goto yy755; goto yy187; -yy745: - YYDEBUG(745, *YYCURSOR); +yy749: + YYDEBUG(749, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy746; + if (yych == 'E') goto yy750; if (yych != 'e') goto yy187; -yy746: - YYDEBUG(746, *YYCURSOR); +yy750: + YYDEBUG(750, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy747; + if (yych == 'N') goto yy751; if (yych != 'n') goto yy187; -yy747: - YYDEBUG(747, *YYCURSOR); +yy751: + YYDEBUG(751, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy748; + if (yych == 'D') goto yy752; if (yych != 'd') goto yy187; -yy748: - YYDEBUG(748, *YYCURSOR); +yy752: + YYDEBUG(752, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy749; + if (yych == 'S') goto yy753; if (yych != 's') goto yy187; -yy749: - YYDEBUG(749, *YYCURSOR); +yy753: + YYDEBUG(753, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(750, *YYCURSOR); + YYDEBUG(754, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1182 "Zend/zend_language_scanner.l" { return T_EXTENDS; } -#line 6879 "Zend/zend_language_scanner.c" -yy751: - YYDEBUG(751, *YYCURSOR); +#line 6901 "Zend/zend_language_scanner.c" +yy755: + YYDEBUG(755, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(752, *YYCURSOR); + YYDEBUG(756, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1034 "Zend/zend_language_scanner.l" { return T_EXIT; } -#line 6892 "Zend/zend_language_scanner.c" -yy753: - YYDEBUG(753, *YYCURSOR); +#line 6914 "Zend/zend_language_scanner.c" +yy757: + YYDEBUG(757, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy754; + if (yych == 'L') goto yy758; if (yych != 'l') goto yy187; -yy754: - YYDEBUG(754, *YYCURSOR); +yy758: + YYDEBUG(758, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(755, *YYCURSOR); + YYDEBUG(759, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1269 "Zend/zend_language_scanner.l" { return T_EVAL; } -#line 6910 "Zend/zend_language_scanner.c" -yy756: - YYDEBUG(756, *YYCURSOR); +#line 6932 "Zend/zend_language_scanner.c" +yy760: + YYDEBUG(760, *YYCURSOR); yych = *++YYCURSOR; YYDEBUG(-1, yych); switch (yych) { case 'D': - case 'd': goto yy757; + case 'd': goto yy761; case 'F': - case 'f': goto yy758; + case 'f': goto yy762; case 'I': - case 'i': goto yy759; + case 'i': goto yy763; case 'S': - case 's': goto yy760; + case 's': goto yy764; case 'W': - case 'w': goto yy761; + case 'w': goto yy765; default: goto yy187; } -yy757: - YYDEBUG(757, *YYCURSOR); +yy761: + YYDEBUG(761, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy783; - if (yych == 'e') goto yy783; + if (yych == 'E') goto yy787; + if (yych == 'e') goto yy787; goto yy187; -yy758: - YYDEBUG(758, *YYCURSOR); +yy762: + YYDEBUG(762, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy775; - if (yych == 'o') goto yy775; + if (yych == 'O') goto yy779; + if (yych == 'o') goto yy779; goto yy187; -yy759: - YYDEBUG(759, *YYCURSOR); +yy763: + YYDEBUG(763, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy773; - if (yych == 'f') goto yy773; + if (yych == 'F') goto yy777; + if (yych == 'f') goto yy777; goto yy187; -yy760: - YYDEBUG(760, *YYCURSOR); +yy764: + YYDEBUG(764, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'W') goto yy767; - if (yych == 'w') goto yy767; + if (yych == 'W') goto yy771; + if (yych == 'w') goto yy771; goto yy187; -yy761: - YYDEBUG(761, *YYCURSOR); +yy765: + YYDEBUG(765, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy762; + if (yych == 'H') goto yy766; if (yych != 'h') goto yy187; -yy762: - YYDEBUG(762, *YYCURSOR); +yy766: + YYDEBUG(766, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy763; + if (yych == 'I') goto yy767; if (yych != 'i') goto yy187; -yy763: - YYDEBUG(763, *YYCURSOR); +yy767: + YYDEBUG(767, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy764; + if (yych == 'L') goto yy768; if (yych != 'l') goto yy187; -yy764: - YYDEBUG(764, *YYCURSOR); +yy768: + YYDEBUG(768, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy765; + if (yych == 'E') goto yy769; if (yych != 'e') goto yy187; -yy765: - YYDEBUG(765, *YYCURSOR); +yy769: + YYDEBUG(769, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(766, *YYCURSOR); + YYDEBUG(770, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1094 "Zend/zend_language_scanner.l" { return T_ENDWHILE; } -#line 6984 "Zend/zend_language_scanner.c" -yy767: - YYDEBUG(767, *YYCURSOR); +#line 7006 "Zend/zend_language_scanner.c" +yy771: + YYDEBUG(771, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy768; + if (yych == 'I') goto yy772; if (yych != 'i') goto yy187; -yy768: - YYDEBUG(768, *YYCURSOR); +yy772: + YYDEBUG(772, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy769; + if (yych == 'T') goto yy773; if (yych != 't') goto yy187; -yy769: - YYDEBUG(769, *YYCURSOR); +yy773: + YYDEBUG(773, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy770; + if (yych == 'C') goto yy774; if (yych != 'c') goto yy187; -yy770: - YYDEBUG(770, *YYCURSOR); +yy774: + YYDEBUG(774, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy771; + if (yych == 'H') goto yy775; if (yych != 'h') goto yy187; -yy771: - YYDEBUG(771, *YYCURSOR); +yy775: + YYDEBUG(775, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(772, *YYCURSOR); + YYDEBUG(776, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1138 "Zend/zend_language_scanner.l" { return T_ENDSWITCH; } -#line 7017 "Zend/zend_language_scanner.c" -yy773: - YYDEBUG(773, *YYCURSOR); +#line 7039 "Zend/zend_language_scanner.c" +yy777: + YYDEBUG(777, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(774, *YYCURSOR); + YYDEBUG(778, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1082 "Zend/zend_language_scanner.l" { return T_ENDIF; } -#line 7030 "Zend/zend_language_scanner.c" -yy775: - YYDEBUG(775, *YYCURSOR); +#line 7052 "Zend/zend_language_scanner.c" +yy779: + YYDEBUG(779, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy776; + if (yych == 'R') goto yy780; if (yych != 'r') goto yy187; -yy776: - YYDEBUG(776, *YYCURSOR); +yy780: + YYDEBUG(780, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '@') { - if (yych <= '/') goto yy777; + if (yych <= '/') goto yy781; if (yych <= '9') goto yy186; } else { - if (yych == 'E') goto yy778; + if (yych == 'E') goto yy782; if (yych <= 'Z') goto yy186; } } else { if (yych <= 'd') { if (yych != '`') goto yy186; } else { - if (yych <= 'e') goto yy778; + if (yych <= 'e') goto yy782; if (yych <= 'z') goto yy186; if (yych >= 0x7F) goto yy186; } } -yy777: - YYDEBUG(777, *YYCURSOR); +yy781: + YYDEBUG(781, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1106 "Zend/zend_language_scanner.l" { return T_ENDFOR; } -#line 7063 "Zend/zend_language_scanner.c" -yy778: - YYDEBUG(778, *YYCURSOR); +#line 7085 "Zend/zend_language_scanner.c" +yy782: + YYDEBUG(782, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy779; + if (yych == 'A') goto yy783; if (yych != 'a') goto yy187; -yy779: - YYDEBUG(779, *YYCURSOR); +yy783: + YYDEBUG(783, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy780; + if (yych == 'C') goto yy784; if (yych != 'c') goto yy187; -yy780: - YYDEBUG(780, *YYCURSOR); +yy784: + YYDEBUG(784, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy781; + if (yych == 'H') goto yy785; if (yych != 'h') goto yy187; -yy781: - YYDEBUG(781, *YYCURSOR); +yy785: + YYDEBUG(785, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(782, *YYCURSOR); + YYDEBUG(786, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1114 "Zend/zend_language_scanner.l" { return T_ENDFOREACH; } -#line 7091 "Zend/zend_language_scanner.c" -yy783: - YYDEBUG(783, *YYCURSOR); +#line 7113 "Zend/zend_language_scanner.c" +yy787: + YYDEBUG(787, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy784; + if (yych == 'C') goto yy788; if (yych != 'c') goto yy187; -yy784: - YYDEBUG(784, *YYCURSOR); +yy788: + YYDEBUG(788, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy785; + if (yych == 'L') goto yy789; if (yych != 'l') goto yy187; -yy785: - YYDEBUG(785, *YYCURSOR); +yy789: + YYDEBUG(789, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy786; + if (yych == 'A') goto yy790; if (yych != 'a') goto yy187; -yy786: - YYDEBUG(786, *YYCURSOR); +yy790: + YYDEBUG(790, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy787; + if (yych == 'R') goto yy791; if (yych != 'r') goto yy187; -yy787: - YYDEBUG(787, *YYCURSOR); +yy791: + YYDEBUG(791, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy788; + if (yych == 'E') goto yy792; if (yych != 'e') goto yy187; -yy788: - YYDEBUG(788, *YYCURSOR); +yy792: + YYDEBUG(792, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(789, *YYCURSOR); + YYDEBUG(793, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1122 "Zend/zend_language_scanner.l" { return T_ENDDECLARE; } -#line 7129 "Zend/zend_language_scanner.c" -yy790: - YYDEBUG(790, *YYCURSOR); +#line 7151 "Zend/zend_language_scanner.c" +yy794: + YYDEBUG(794, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy791; + if (yych == 'T') goto yy795; if (yych != 't') goto yy187; -yy791: - YYDEBUG(791, *YYCURSOR); +yy795: + YYDEBUG(795, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy792; + if (yych == 'Y') goto yy796; if (yych != 'y') goto yy187; -yy792: - YYDEBUG(792, *YYCURSOR); +yy796: + YYDEBUG(796, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(793, *YYCURSOR); + YYDEBUG(797, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1309 "Zend/zend_language_scanner.l" { return T_EMPTY; } -#line 7152 "Zend/zend_language_scanner.c" -yy794: - YYDEBUG(794, *YYCURSOR); +#line 7174 "Zend/zend_language_scanner.c" +yy798: + YYDEBUG(798, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy795; + if (yych == 'E') goto yy799; if (yych != 'e') goto yy187; -yy795: - YYDEBUG(795, *YYCURSOR); +yy799: + YYDEBUG(799, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '@') { - if (yych <= '/') goto yy796; + if (yych <= '/') goto yy800; if (yych <= '9') goto yy186; } else { - if (yych == 'I') goto yy797; + if (yych == 'I') goto yy801; if (yych <= 'Z') goto yy186; } } else { if (yych <= 'h') { if (yych != '`') goto yy186; } else { - if (yych <= 'i') goto yy797; + if (yych <= 'i') goto yy801; if (yych <= 'z') goto yy186; if (yych >= 0x7F) goto yy186; } } -yy796: - YYDEBUG(796, *YYCURSOR); +yy800: + YYDEBUG(800, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1086 "Zend/zend_language_scanner.l" { return T_ELSE; } -#line 7185 "Zend/zend_language_scanner.c" -yy797: - YYDEBUG(797, *YYCURSOR); +#line 7207 "Zend/zend_language_scanner.c" +yy801: + YYDEBUG(801, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy798; + if (yych == 'F') goto yy802; if (yych != 'f') goto yy187; -yy798: - YYDEBUG(798, *YYCURSOR); +yy802: + YYDEBUG(802, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(799, *YYCURSOR); + YYDEBUG(803, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1078 "Zend/zend_language_scanner.l" { return T_ELSEIF; } -#line 7203 "Zend/zend_language_scanner.c" -yy800: - YYDEBUG(800, *YYCURSOR); +#line 7225 "Zend/zend_language_scanner.c" +yy804: + YYDEBUG(804, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy801; + if (yych == 'O') goto yy805; if (yych != 'o') goto yy187; -yy801: - YYDEBUG(801, *YYCURSOR); +yy805: + YYDEBUG(805, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 4) { goto yy186; } - YYDEBUG(802, *YYCURSOR); + YYDEBUG(806, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1162 "Zend/zend_language_scanner.l" { return T_ECHO; } -#line 7221 "Zend/zend_language_scanner.c" +#line 7243 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -7256,39 +7278,39 @@ yyc_ST_LOOKING_FOR_PROPERTY: 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, }; - YYDEBUG(803, *YYCURSOR); + YYDEBUG(807, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yych <= '-') { if (yych <= '\r') { - if (yych <= 0x08) goto yy811; - if (yych <= '\n') goto yy805; - if (yych <= '\f') goto yy811; + if (yych <= 0x08) goto yy815; + if (yych <= '\n') goto yy809; + if (yych <= '\f') goto yy815; } else { - if (yych == ' ') goto yy805; - if (yych <= ',') goto yy811; - goto yy807; + if (yych == ' ') goto yy809; + if (yych <= ',') goto yy815; + goto yy811; } } else { if (yych <= '_') { - if (yych <= '@') goto yy811; - if (yych <= 'Z') goto yy809; - if (yych <= '^') goto yy811; - goto yy809; + if (yych <= '@') goto yy815; + if (yych <= 'Z') goto yy813; + if (yych <= '^') goto yy815; + goto yy813; } else { - if (yych <= '`') goto yy811; - if (yych <= 'z') goto yy809; - if (yych <= '~') goto yy811; - goto yy809; + if (yych <= '`') goto yy815; + if (yych <= 'z') goto yy813; + if (yych <= '~') goto yy815; + goto yy813; } } -yy805: - YYDEBUG(805, *YYCURSOR); +yy809: + YYDEBUG(809, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy817; -yy806: - YYDEBUG(806, *YYCURSOR); + goto yy821; +yy810: + YYDEBUG(810, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1195 "Zend/zend_language_scanner.l" { @@ -7296,13 +7318,13 @@ yy806: HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 7300 "Zend/zend_language_scanner.c" -yy807: - YYDEBUG(807, *YYCURSOR); +#line 7322 "Zend/zend_language_scanner.c" +yy811: + YYDEBUG(811, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '>') goto yy814; -yy808: - YYDEBUG(808, *YYCURSOR); + if ((yych = *YYCURSOR) == '>') goto yy818; +yy812: + YYDEBUG(812, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1211 "Zend/zend_language_scanner.l" { @@ -7310,14 +7332,14 @@ yy808: yy_pop_state(TSRMLS_C); goto restart; } -#line 7314 "Zend/zend_language_scanner.c" -yy809: - YYDEBUG(809, *YYCURSOR); +#line 7336 "Zend/zend_language_scanner.c" +yy813: + YYDEBUG(813, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy813; -yy810: - YYDEBUG(810, *YYCURSOR); + goto yy817; +yy814: + YYDEBUG(814, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1205 "Zend/zend_language_scanner.l" { @@ -7325,43 +7347,43 @@ yy810: zend_copy_value(zendlval, yytext, yyleng); return T_STRING; } -#line 7329 "Zend/zend_language_scanner.c" -yy811: - YYDEBUG(811, *YYCURSOR); +#line 7351 "Zend/zend_language_scanner.c" +yy815: + YYDEBUG(815, *YYCURSOR); yych = *++YYCURSOR; - goto yy808; -yy812: - YYDEBUG(812, *YYCURSOR); + goto yy812; +yy816: + YYDEBUG(816, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy813: - YYDEBUG(813, *YYCURSOR); +yy817: + YYDEBUG(817, *YYCURSOR); if (yybm[0+yych] & 64) { - goto yy812; + goto yy816; } - goto yy810; -yy814: - YYDEBUG(814, *YYCURSOR); + goto yy814; +yy818: + YYDEBUG(818, *YYCURSOR); ++YYCURSOR; - YYDEBUG(815, *YYCURSOR); + YYDEBUG(819, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); #line 1201 "Zend/zend_language_scanner.l" { return T_OBJECT_OPERATOR; } -#line 7354 "Zend/zend_language_scanner.c" -yy816: - YYDEBUG(816, *YYCURSOR); +#line 7376 "Zend/zend_language_scanner.c" +yy820: + YYDEBUG(820, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy817: - YYDEBUG(817, *YYCURSOR); +yy821: + YYDEBUG(821, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy816; + goto yy820; } - goto yy806; + goto yy810; } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -7400,74 +7422,74 @@ yyc_ST_LOOKING_FOR_VARNAME: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(818, *YYCURSOR); + YYDEBUG(822, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yych <= '_') { - if (yych <= '@') goto yy822; - if (yych <= 'Z') goto yy820; - if (yych <= '^') goto yy822; + if (yych <= '@') goto yy826; + if (yych <= 'Z') goto yy824; + if (yych <= '^') goto yy826; } else { - if (yych <= '`') goto yy822; - if (yych <= 'z') goto yy820; - if (yych <= '~') goto yy822; + if (yych <= '`') goto yy826; + if (yych <= 'z') goto yy824; + if (yych <= '~') goto yy826; } -yy820: - YYDEBUG(820, *YYCURSOR); +yy824: + YYDEBUG(824, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '_') { if (yych <= '@') { - if (yych <= '/') goto yy821; - if (yych <= '9') goto yy824; + if (yych <= '/') goto yy825; + if (yych <= '9') goto yy828; } else { - if (yych <= '[') goto yy824; - if (yych >= '_') goto yy824; + if (yych <= '[') goto yy828; + if (yych >= '_') goto yy828; } } else { if (yych <= '|') { - if (yych <= '`') goto yy821; - if (yych <= 'z') goto yy824; + if (yych <= '`') goto yy825; + if (yych <= 'z') goto yy828; } else { - if (yych != '~') goto yy824; + if (yych != '~') goto yy828; } } -yy821: - YYDEBUG(821, *YYCURSOR); +yy825: + YYDEBUG(825, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1500 "Zend/zend_language_scanner.l" +#line 1508 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); goto restart; } -#line 7446 "Zend/zend_language_scanner.c" -yy822: - YYDEBUG(822, *YYCURSOR); +#line 7468 "Zend/zend_language_scanner.c" +yy826: + YYDEBUG(826, *YYCURSOR); yych = *++YYCURSOR; - goto yy821; -yy823: - YYDEBUG(823, *YYCURSOR); + goto yy825; +yy827: + YYDEBUG(827, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy824: - YYDEBUG(824, *YYCURSOR); +yy828: + YYDEBUG(828, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy823; + goto yy827; } - if (yych == '[') goto yy826; - if (yych == '}') goto yy826; - YYDEBUG(825, *YYCURSOR); + if (yych == '[') goto yy830; + if (yych == '}') goto yy830; + YYDEBUG(829, *YYCURSOR); YYCURSOR = YYMARKER; - goto yy821; -yy826: - YYDEBUG(826, *YYCURSOR); + goto yy825; +yy830: + YYDEBUG(830, *YYCURSOR); ++YYCURSOR; - YYDEBUG(827, *YYCURSOR); + YYDEBUG(831, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1491 "Zend/zend_language_scanner.l" +#line 1499 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); zend_copy_value(zendlval, yytext, yyleng); @@ -7475,18 +7497,18 @@ yy826: yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return T_STRING_VARNAME; } -#line 7479 "Zend/zend_language_scanner.c" +#line 7501 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_NOWDOC: - YYDEBUG(828, *YYCURSOR); + YYDEBUG(832, *YYCURSOR); YYFILL(1); yych = *YYCURSOR; - YYDEBUG(830, *YYCURSOR); + YYDEBUG(834, *YYCURSOR); ++YYCURSOR; - YYDEBUG(831, *YYCURSOR); + YYDEBUG(835, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2331 "Zend/zend_language_scanner.l" +#line 2339 "Zend/zend_language_scanner.l" { int newline = 0; @@ -7542,7 +7564,7 @@ nowdoc_scan_done: HANDLE_NEWLINES(yytext, yyleng - newline); return T_ENCAPSED_AND_WHITESPACE; } -#line 7546 "Zend/zend_language_scanner.c" +#line 7568 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_VAR_OFFSET: { @@ -7580,76 +7602,76 @@ yyc_ST_VAR_OFFSET: 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, }; - YYDEBUG(832, *YYCURSOR); + YYDEBUG(836, *YYCURSOR); YYFILL(3); yych = *YYCURSOR; if (yych <= '/') { if (yych <= ' ') { if (yych <= '\f') { - if (yych <= 0x08) goto yy846; - if (yych <= '\n') goto yy842; - goto yy846; + if (yych <= 0x08) goto yy850; + if (yych <= '\n') goto yy846; + goto yy850; } else { - if (yych <= '\r') goto yy842; - if (yych <= 0x1F) goto yy846; - goto yy842; + if (yych <= '\r') goto yy846; + if (yych <= 0x1F) goto yy850; + goto yy846; } } else { if (yych <= '$') { - if (yych <= '"') goto yy841; - if (yych <= '#') goto yy842; - goto yy837; - } else { - if (yych == '\'') goto yy842; + if (yych <= '"') goto yy845; + if (yych <= '#') goto yy846; goto yy841; + } else { + if (yych == '\'') goto yy846; + goto yy845; } } } else { if (yych <= '\\') { if (yych <= '@') { - if (yych <= '0') goto yy834; - if (yych <= '9') goto yy836; - goto yy841; + if (yych <= '0') goto yy838; + if (yych <= '9') goto yy840; + goto yy845; } else { - if (yych <= 'Z') goto yy844; - if (yych <= '[') goto yy841; - goto yy842; + if (yych <= 'Z') goto yy848; + if (yych <= '[') goto yy845; + goto yy846; } } else { if (yych <= '_') { - if (yych <= ']') goto yy839; - if (yych <= '^') goto yy841; - goto yy844; + if (yych <= ']') goto yy843; + if (yych <= '^') goto yy845; + goto yy848; } else { - if (yych <= '`') goto yy841; - if (yych <= 'z') goto yy844; - if (yych <= '~') goto yy841; - goto yy844; + if (yych <= '`') goto yy845; + if (yych <= 'z') goto yy848; + if (yych <= '~') goto yy845; + goto yy848; } } } -yy834: - YYDEBUG(834, *YYCURSOR); +yy838: + YYDEBUG(838, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'W') { if (yych <= '9') { - if (yych >= '0') goto yy858; + if (yych >= '0') goto yy862; } else { - if (yych == 'B') goto yy855; + if (yych == 'B') goto yy859; } } else { if (yych <= 'b') { - if (yych <= 'X') goto yy857; - if (yych >= 'b') goto yy855; + if (yych <= 'X') goto yy861; + if (yych >= 'b') goto yy859; } else { - if (yych == 'x') goto yy857; + if (yych == 'x') goto yy861; } } -yy835: - YYDEBUG(835, *YYCURSOR); +yy839: + YYDEBUG(839, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1571 "Zend/zend_language_scanner.l" +#line 1579 "Zend/zend_language_scanner.l" { /* Offset could be treated as a long */ if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) { ZVAL_LONG(zendlval, strtol(yytext, NULL, 10)); @@ -7658,80 +7680,80 @@ yy835: } return T_NUM_STRING; } -#line 7662 "Zend/zend_language_scanner.c" -yy836: - YYDEBUG(836, *YYCURSOR); +#line 7684 "Zend/zend_language_scanner.c" +yy840: + YYDEBUG(840, *YYCURSOR); yych = *++YYCURSOR; - goto yy854; -yy837: - YYDEBUG(837, *YYCURSOR); + goto yy858; +yy841: + YYDEBUG(841, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '_') { - if (yych <= '@') goto yy838; - if (yych <= 'Z') goto yy850; - if (yych >= '_') goto yy850; + if (yych <= '@') goto yy842; + if (yych <= 'Z') goto yy854; + if (yych >= '_') goto yy854; } else { - if (yych <= '`') goto yy838; - if (yych <= 'z') goto yy850; - if (yych >= 0x7F) goto yy850; + if (yych <= '`') goto yy842; + if (yych <= 'z') goto yy854; + if (yych >= 0x7F) goto yy854; } -yy838: - YYDEBUG(838, *YYCURSOR); +yy842: + YYDEBUG(842, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1863 "Zend/zend_language_scanner.l" +#line 1871 "Zend/zend_language_scanner.l" { /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */ return yytext[0]; } -#line 7687 "Zend/zend_language_scanner.c" -yy839: - YYDEBUG(839, *YYCURSOR); +#line 7709 "Zend/zend_language_scanner.c" +yy843: + YYDEBUG(843, *YYCURSOR); ++YYCURSOR; - YYDEBUG(840, *YYCURSOR); + YYDEBUG(844, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1858 "Zend/zend_language_scanner.l" +#line 1866 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); return ']'; } -#line 7698 "Zend/zend_language_scanner.c" -yy841: - YYDEBUG(841, *YYCURSOR); +#line 7720 "Zend/zend_language_scanner.c" +yy845: + YYDEBUG(845, *YYCURSOR); yych = *++YYCURSOR; - goto yy838; -yy842: - YYDEBUG(842, *YYCURSOR); + goto yy842; +yy846: + YYDEBUG(846, *YYCURSOR); ++YYCURSOR; - YYDEBUG(843, *YYCURSOR); + YYDEBUG(847, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1868 "Zend/zend_language_scanner.l" +#line 1876 "Zend/zend_language_scanner.l" { /* Invalid rule to return a more explicit parse error with proper line number */ yyless(0); yy_pop_state(TSRMLS_C); return T_ENCAPSED_AND_WHITESPACE; } -#line 7715 "Zend/zend_language_scanner.c" -yy844: - YYDEBUG(844, *YYCURSOR); +#line 7737 "Zend/zend_language_scanner.c" +yy848: + YYDEBUG(848, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy849; -yy845: - YYDEBUG(845, *YYCURSOR); + goto yy853; +yy849: + YYDEBUG(849, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1875 "Zend/zend_language_scanner.l" +#line 1883 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, yytext, yyleng); return T_STRING; } -#line 7729 "Zend/zend_language_scanner.c" -yy846: - YYDEBUG(846, *YYCURSOR); +#line 7751 "Zend/zend_language_scanner.c" +yy850: + YYDEBUG(850, *YYCURSOR); ++YYCURSOR; - YYDEBUG(847, *YYCURSOR); + YYDEBUG(851, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2388 "Zend/zend_language_scanner.l" +#line 2396 "Zend/zend_language_scanner.l" { if (YYCURSOR > YYLIMIT) { return 0; @@ -7740,115 +7762,115 @@ yy846: zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 7744 "Zend/zend_language_scanner.c" -yy848: - YYDEBUG(848, *YYCURSOR); +#line 7766 "Zend/zend_language_scanner.c" +yy852: + YYDEBUG(852, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy849: - YYDEBUG(849, *YYCURSOR); +yy853: + YYDEBUG(853, *YYCURSOR); if (yybm[0+yych] & 16) { - goto yy848; + goto yy852; } - goto yy845; -yy850: - YYDEBUG(850, *YYCURSOR); + goto yy849; +yy854: + YYDEBUG(854, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(851, *YYCURSOR); + YYDEBUG(855, *YYCURSOR); if (yych <= '^') { if (yych <= '9') { - if (yych >= '0') goto yy850; + if (yych >= '0') goto yy854; } else { - if (yych <= '@') goto yy852; - if (yych <= 'Z') goto yy850; + if (yych <= '@') goto yy856; + if (yych <= 'Z') goto yy854; } } else { if (yych <= '`') { - if (yych <= '_') goto yy850; + if (yych <= '_') goto yy854; } else { - if (yych <= 'z') goto yy850; - if (yych >= 0x7F) goto yy850; + if (yych <= 'z') goto yy854; + if (yych >= 0x7F) goto yy854; } } -yy852: - YYDEBUG(852, *YYCURSOR); +yy856: + YYDEBUG(856, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1853 "Zend/zend_language_scanner.l" +#line 1861 "Zend/zend_language_scanner.l" { zend_copy_value(zendlval, (yytext+1), (yyleng-1)); return T_VARIABLE; } -#line 7785 "Zend/zend_language_scanner.c" -yy853: - YYDEBUG(853, *YYCURSOR); +#line 7807 "Zend/zend_language_scanner.c" +yy857: + YYDEBUG(857, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy854: - YYDEBUG(854, *YYCURSOR); +yy858: + YYDEBUG(858, *YYCURSOR); if (yybm[0+yych] & 32) { - goto yy853; + goto yy857; } - goto yy835; -yy855: - YYDEBUG(855, *YYCURSOR); + goto yy839; +yy859: + YYDEBUG(859, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 128) { - goto yy863; + goto yy867; } -yy856: - YYDEBUG(856, *YYCURSOR); +yy860: + YYDEBUG(860, *YYCURSOR); YYCURSOR = YYMARKER; - goto yy835; -yy857: - YYDEBUG(857, *YYCURSOR); + goto yy839; +yy861: + YYDEBUG(861, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 64) { - goto yy861; + goto yy865; } - goto yy856; -yy858: - YYDEBUG(858, *YYCURSOR); + goto yy860; +yy862: + YYDEBUG(862, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(859, *YYCURSOR); - if (yych <= '/') goto yy860; - if (yych <= '9') goto yy858; -yy860: - YYDEBUG(860, *YYCURSOR); + YYDEBUG(863, *YYCURSOR); + if (yych <= '/') goto yy864; + if (yych <= '9') goto yy862; +yy864: + YYDEBUG(864, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1580 "Zend/zend_language_scanner.l" +#line 1588 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ ZVAL_STRINGL(zendlval, yytext, yyleng); return T_NUM_STRING; } -#line 7830 "Zend/zend_language_scanner.c" -yy861: - YYDEBUG(861, *YYCURSOR); +#line 7852 "Zend/zend_language_scanner.c" +yy865: + YYDEBUG(865, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(862, *YYCURSOR); + YYDEBUG(866, *YYCURSOR); if (yybm[0+yych] & 64) { - goto yy861; + goto yy865; } - goto yy860; -yy863: - YYDEBUG(863, *YYCURSOR); + goto yy864; +yy867: + YYDEBUG(867, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(864, *YYCURSOR); + YYDEBUG(868, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy863; + goto yy867; } - goto yy860; + goto yy864; } } -#line 2397 "Zend/zend_language_scanner.l" +#line 2405 "Zend/zend_language_scanner.l" } diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 02401df2a9..2204adf064 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1402,6 +1402,14 @@ NEWLINE ("\r"|"\n"|"\r\n") return T_MUL_EQUAL; } +<ST_IN_SCRIPTING>"*\*" { + return T_POW; +} + +<ST_IN_SCRIPTING>"*\*=" { + return T_POW_EQUAL; +} + <ST_IN_SCRIPTING>"/=" { return T_DIV_EQUAL; } diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c index 9ec102fb15..a41452dae8 100644 --- a/Zend/zend_object_handlers.c +++ b/Zend/zend_object_handlers.c @@ -137,8 +137,39 @@ ZEND_API HashTable *zend_std_get_gc(zval *object, zval **table, int *n TSRMLS_DC ZEND_API HashTable *zend_std_get_debug_info(zval *object, int *is_temp TSRMLS_DC) /* {{{ */ { - *is_temp = 0; - return zend_std_get_properties(object TSRMLS_CC); + zend_class_entry *ce = Z_OBJCE_P(object); + zval retval; + HashTable *ht; + + if (!ce->__debugInfo) { + *is_temp = 0; + return Z_OBJ_HANDLER_P(object, get_properties) + ? Z_OBJ_HANDLER_P(object, get_properties)(object TSRMLS_CC) + : NULL; + } + + zend_call_method_with_0_params(object, ce, &ce->__debugInfo, ZEND_DEBUGINFO_FUNC_NAME, &retval); + if (Z_TYPE(retval) == IS_ARRAY) { + if (Z_REFCOUNT(retval) <= 1) { + *is_temp = 1; + ALLOC_HASHTABLE(ht); + *ht = *Z_ARRVAL(retval); + efree(Z_ARR(retval)); + return ht; + } else { + *is_temp = 0; + zval_ptr_dtor(&retval); + } + } else if (Z_TYPE(retval) == IS_NULL) { + *is_temp = 1; + ALLOC_HASHTABLE(ht); + zend_hash_init(ht, 0, NULL, ZVAL_PTR_DTOR, 0); + return ht; + } + + zend_error_noreturn(E_ERROR, ZEND_DEBUGINFO_FUNC_NAME "() must return an array"); + + return NULL; /* Compilers are dumb and don't understand that noreturn means that the function does NOT need a return value... */ } /* }}} */ @@ -1623,7 +1654,7 @@ ZEND_API zend_object_handlers std_object_handlers = { zend_std_compare_objects, /* compare_objects */ zend_std_cast_object_tostring, /* cast_object */ NULL, /* count_elements */ - NULL, /* get_debug_info */ + zend_std_get_debug_info, /* get_debug_info */ zend_std_get_closure, /* get_closure */ zend_std_get_gc, /* get_gc */ NULL, /* do_operation */ diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c index 1987d819b8..e38a32a851 100644 --- a/Zend/zend_opcode.c +++ b/Zend/zend_opcode.c @@ -749,6 +749,9 @@ ZEND_API binary_op_type get_binary_op(int opcode) case ZEND_ASSIGN_MUL: return (binary_op_type) mul_function; break; + case ZEND_POW: + return (binary_op_type) pow_function; + break; case ZEND_DIV: case ZEND_ASSIGN_DIV: return (binary_op_type) div_function; diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index 397f8f60d7..764396aa03 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -1126,6 +1126,89 @@ ZEND_API int mul_function(zval *result, zval *op1, zval *op2 TSRMLS_DC) /* {{{ * } /* }}} */ +ZEND_API int pow_function(zval *result, zval *op1, zval *op2 TSRMLS_DC) +{ + zval op1_copy, op2_copy; + int converted = 0; + + while (1) { + switch (TYPE_PAIR(Z_TYPE_P(op1), Z_TYPE_P(op2))) { + case TYPE_PAIR(IS_LONG, IS_LONG): + if (Z_LVAL_P(op2) >= 0) { + long l1 = 1, l2 = Z_LVAL_P(op1), i = Z_LVAL_P(op2); + + if (i == 0) { + ZVAL_LONG(result, 1L); + return SUCCESS; + } else if (l2 == 0) { + ZVAL_LONG(result, 0); + return SUCCESS; + } + + while (i >= 1) { + long overflow; + double dval = 0.0; + + if (i % 2) { + --i; + ZEND_SIGNED_MULTIPLY_LONG(l1, l2, l1, dval, overflow); + if (overflow) { + ZVAL_DOUBLE(result, dval * pow(l2, i)); + return SUCCESS; + } + } else { + i /= 2; + ZEND_SIGNED_MULTIPLY_LONG(l2, l2, l2, dval, overflow); + if (overflow) { + ZVAL_DOUBLE(result, (double)l1 * pow(dval, i)); + return SUCCESS; + } + } + } + /* i == 0 */ + ZVAL_LONG(result, l1); + } else { + ZVAL_DOUBLE(result, pow((double)Z_LVAL_P(op1), (double)Z_LVAL_P(op2))); + } + return SUCCESS; + + case TYPE_PAIR(IS_LONG, IS_DOUBLE): + ZVAL_DOUBLE(result, pow((double)Z_LVAL_P(op1), Z_DVAL_P(op2))); + return SUCCESS; + + case TYPE_PAIR(IS_DOUBLE, IS_LONG): + ZVAL_DOUBLE(result, pow(Z_DVAL_P(op1), (double)Z_LVAL_P(op2))); + return SUCCESS; + + case TYPE_PAIR(IS_DOUBLE, IS_DOUBLE): + ZVAL_DOUBLE(result, pow(Z_DVAL_P(op1), Z_DVAL_P(op2))); + return SUCCESS; + + default: + if (!converted) { + ZEND_TRY_BINARY_OBJECT_OPERATION(ZEND_POW); + + if (Z_TYPE_P(op1) == IS_ARRAY) { + ZVAL_LONG(result, 0); + return SUCCESS; + } else { + zendi_convert_scalar_to_number(op1, op1_copy, result); + } + if (Z_TYPE_P(op2) == IS_ARRAY) { + ZVAL_LONG(result, 1L); + return SUCCESS; + } else { + zendi_convert_scalar_to_number(op2, op2_copy, result); + } + converted = 1; + } else { + zend_error(E_ERROR, "Unsupported operand types"); + return FAILURE; + } + } + } +} + ZEND_API int div_function(zval *result, zval *op1, zval *op2 TSRMLS_DC) /* {{{ */ { zval op1_copy, op2_copy; diff --git a/Zend/zend_operators.h b/Zend/zend_operators.h index f026ae1dbc..a727df6707 100644 --- a/Zend/zend_operators.h +++ b/Zend/zend_operators.h @@ -47,6 +47,7 @@ BEGIN_EXTERN_C() ZEND_API int add_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API int sub_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API int mul_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); +ZEND_API int pow_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API int div_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API int mod_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); ZEND_API int boolean_xor_function(zval *result, zval *op1, zval *op2 TSRMLS_DC); diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 2d4771c004..812a2acaf9 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -1194,7 +1194,7 @@ ZEND_VM_HELPER_EX(zend_fetch_var_address_helper, CONST|TMP|VAR|CV, UNUSED|CONST| } } if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) == ZEND_FETCH_STATIC) { - zval_update_constant(retval, (void*) 1 TSRMLS_CC); + zval_update_constant(retval, 1 TSRMLS_CC); } else if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) != ZEND_FETCH_GLOBAL_LOCK) { FREE_OP1(); } @@ -2992,9 +2992,8 @@ ZEND_VM_HANDLER(65, ZEND_SEND_VAL, CONST|TMP, ANY) SAVE_OPLINE(); if (opline->extended_value == ZEND_DO_FCALL_BY_NAME) { - int arg_num = opline->op2.num + EX(call)->num_additional_args; - if (ARG_MUST_BE_SENT_BY_REF(EX(call)->fbc, arg_num)) { - zend_error_noreturn(E_ERROR, "Cannot pass parameter %d by reference", arg_num); + if (ARG_MUST_BE_SENT_BY_REF(EX(call)->fbc, opline->op2.num)) { + zend_error_noreturn(E_ERROR, "Cannot pass parameter %d by reference", opline->op2.num); } } @@ -3032,7 +3031,6 @@ ZEND_VM_HANDLER(106, ZEND_SEND_VAR_NO_REF, VAR|CV, ANY) USE_OPLINE zend_free_op free_op1; zval *varptr, *top; - int arg_num; SAVE_OPLINE(); if (opline->extended_value & ZEND_ARG_COMPILE_TIME_BOUND) { /* Had function_ptr at compile_time */ @@ -3040,8 +3038,7 @@ ZEND_VM_HANDLER(106, ZEND_SEND_VAR_NO_REF, VAR|CV, ANY) ZEND_VM_DISPATCH_TO_HELPER(zend_send_by_var_helper); } } else { - arg_num = opline->op2.num + EX(call)->num_additional_args; - if (!ARG_SHOULD_BE_SENT_BY_REF(EX(call)->fbc, arg_num)) { + if (!ARG_SHOULD_BE_SENT_BY_REF(EX(call)->fbc, opline->op2.num)) { ZEND_VM_DISPATCH_TO_HELPER(zend_send_by_var_helper); } } @@ -3064,7 +3061,7 @@ ZEND_VM_HANDLER(106, ZEND_SEND_VAR_NO_REF, VAR|CV, ANY) } else { if ((opline->extended_value & ZEND_ARG_COMPILE_TIME_BOUND) ? !(opline->extended_value & ZEND_ARG_SEND_SILENT) : - !ARG_MAY_BE_SENT_BY_REF(EX(call)->fbc, arg_num)) { + !ARG_MAY_BE_SENT_BY_REF(EX(call)->fbc, opline->op2.num)) { zend_error(E_STRICT, "Only variables should be passed by reference"); } top = zend_vm_stack_top_inc(TSRMLS_C); @@ -3119,8 +3116,7 @@ ZEND_VM_HANDLER(66, ZEND_SEND_VAR, VAR|CV, ANY) zend_free_op free_op1; if (opline->extended_value == ZEND_DO_FCALL_BY_NAME) { - int arg_num = opline->op2.num + EX(call)->num_additional_args; - if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->fbc, arg_num)) { + if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->fbc, opline->op2.num)) { ZEND_VM_DISPATCH_TO_HANDLER(ZEND_SEND_REF); } } @@ -3607,8 +3603,6 @@ ZEND_VM_HANDLER(99, ZEND_FETCH_CONSTANT, VAR|CONST|UNUSED, CONST) } retval = EX_VAR(opline->result.var); ZVAL_DUP(retval, &c->value); - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); } else { /* class constant */ zend_class_entry *ce; @@ -3618,8 +3612,7 @@ ZEND_VM_HANDLER(99, ZEND_FETCH_CONSTANT, VAR|CONST|UNUSED, CONST) if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { value = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); ZVAL_DUP(EX_VAR(opline->result.var), value); - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + goto constant_fetch_end; } else if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) { ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv)); } else { @@ -3636,8 +3629,7 @@ ZEND_VM_HANDLER(99, ZEND_FETCH_CONSTANT, VAR|CONST|UNUSED, CONST) ce = Z_CE_P(EX_VAR(opline->op1.var)); if ((value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce)) != NULL) { ZVAL_DUP(EX_VAR(opline->result.var), value); - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + goto constant_fetch_end; } } @@ -3649,7 +3641,7 @@ ZEND_VM_HANDLER(99, ZEND_FETCH_CONSTANT, VAR|CONST|UNUSED, CONST) zend_class_entry *old_scope = EG(scope); EG(scope) = ce; - zval_update_constant(value, (void *) 1 TSRMLS_CC); + zval_update_constant(value, 1 TSRMLS_CC); EG(scope) = old_scope; } if (OP1_TYPE == IS_CONST) { @@ -3665,10 +3657,10 @@ ZEND_VM_HANDLER(99, ZEND_FETCH_CONSTANT, VAR|CONST|UNUSED, CONST) } else { zend_error_noreturn(E_ERROR, "Undefined class constant '%s'", Z_STRVAL_P(opline->op2.zv)); } - - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); } +constant_fetch_end: + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); } ZEND_VM_HANDLER(72, ZEND_ADD_ARRAY_ELEMENT, CONST|TMP|VAR|CV, CONST|TMP|VAR|UNUSED|CV) @@ -5264,7 +5256,7 @@ ZEND_VM_HANDLER(143, ZEND_DECLARE_CONST, CONST, CONST) if (Z_TYPE_P(val) == IS_CONSTANT_ARRAY) { zval_opt_copy_ctor(&c.value); } - zval_update_constant(&c.value, NULL TSRMLS_CC); + zval_update_constant(&c.value, 0 TSRMLS_CC); } else { /* IS_CONST can't be IS_OBJECT, IS_RESOURCE or IS_REFERENCE */ if (UNEXPECTED(Z_OPT_COPYABLE(c.value))) { @@ -5505,4 +5497,24 @@ ZEND_VM_HANDLER(163, ZEND_FAST_RET, ANY, ANY) } } +ZEND_VM_HANDLER(166, ZEND_POW, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV) +{ + USE_OPLINE + zend_free_op free_op1, free_op2; + + SAVE_OPLINE(); + pow_function(EX_VAR(opline->result.var), + GET_OP1_ZVAL_PTR_DEREF(BP_VAR_R), + GET_OP2_ZVAL_PTR_DEREF(BP_VAR_R) TSRMLS_CC); + FREE_OP1(); + FREE_OP2(); + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + +ZEND_VM_HANDLER(167, ZEND_ASSIGN_POW, VAR|UNUSED|CV, CONST|TMP|VAR|UNUSED|CV) +{ + ZEND_VM_DISPATCH_TO_HELPER_EX(zend_binary_assign_op_helper, binary_op,pow_function); +} + ZEND_VM_EXPORT_HELPER(zend_do_fcall, zend_do_fcall_common_helper) diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 1ec6d97343..f09990fb49 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -2687,9 +2687,8 @@ static int ZEND_FASTCALL ZEND_SEND_VAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_A SAVE_OPLINE(); if (opline->extended_value == ZEND_DO_FCALL_BY_NAME) { - int arg_num = opline->op2.num + EX(call)->num_additional_args; - if (ARG_MUST_BE_SENT_BY_REF(EX(call)->fbc, arg_num)) { - zend_error_noreturn(E_ERROR, "Cannot pass parameter %d by reference", arg_num); + if (ARG_MUST_BE_SENT_BY_REF(EX(call)->fbc, opline->op2.num)) { + zend_error_noreturn(E_ERROR, "Cannot pass parameter %d by reference", opline->op2.num); } } @@ -3622,7 +3621,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_CONST(int type } } if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) == ZEND_FETCH_STATIC) { - zval_update_constant(retval, (void*) 1 TSRMLS_CC); + zval_update_constant(retval, 1 TSRMLS_CC); } else if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) != ZEND_FETCH_GLOBAL_LOCK) { } @@ -3881,8 +3880,6 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_CONST_CONST_HANDLER(ZEND_OPCO } retval = EX_VAR(opline->result.var); ZVAL_DUP(retval, &c->value); - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); } else { /* class constant */ zend_class_entry *ce; @@ -3892,8 +3889,7 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_CONST_CONST_HANDLER(ZEND_OPCO if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { value = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); ZVAL_DUP(EX_VAR(opline->result.var), value); - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + goto constant_fetch_end; } else if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) { ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv)); } else { @@ -3910,8 +3906,7 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_CONST_CONST_HANDLER(ZEND_OPCO ce = Z_CE_P(EX_VAR(opline->op1.var)); if ((value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce)) != NULL) { ZVAL_DUP(EX_VAR(opline->result.var), value); - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + goto constant_fetch_end; } } @@ -3923,7 +3918,7 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_CONST_CONST_HANDLER(ZEND_OPCO zend_class_entry *old_scope = EG(scope); EG(scope) = ce; - zval_update_constant(value, (void *) 1 TSRMLS_CC); + zval_update_constant(value, 1 TSRMLS_CC); EG(scope) = old_scope; } if (IS_CONST == IS_CONST) { @@ -3939,10 +3934,10 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_CONST_CONST_HANDLER(ZEND_OPCO } else { zend_error_noreturn(E_ERROR, "Undefined class constant '%s'", Z_STRVAL_P(opline->op2.zv)); } - - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); } +constant_fetch_end: + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); } static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) @@ -4223,7 +4218,7 @@ static int ZEND_FASTCALL ZEND_DECLARE_CONST_SPEC_CONST_CONST_HANDLER(ZEND_OPCOD if (Z_TYPE_P(val) == IS_CONSTANT_ARRAY) { zval_opt_copy_ctor(&c.value); } - zval_update_constant(&c.value, NULL TSRMLS_CC); + zval_update_constant(&c.value, 0 TSRMLS_CC); } else { /* IS_CONST can't be IS_OBJECT, IS_RESOURCE or IS_REFERENCE */ if (UNEXPECTED(Z_OPT_COPYABLE(c.value))) { @@ -4372,6 +4367,21 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLE ZEND_VM_RETURN(); } +static int ZEND_FASTCALL ZEND_POW_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + + SAVE_OPLINE(); + pow_function(EX_VAR(opline->result.var), + opline->op1.zv, + opline->op2.zv TSRMLS_CC); + + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + static int ZEND_FASTCALL ZEND_ADD_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -5035,6 +5045,21 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ ZEND_VM_RETURN(); } +static int ZEND_FASTCALL ZEND_POW_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + zend_free_op free_op2; + + SAVE_OPLINE(); + pow_function(EX_VAR(opline->result.var), + opline->op1.zv, + _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC); + + zval_dtor(free_op2.var); + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + static int ZEND_FASTCALL ZEND_ADD_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -5398,7 +5423,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_VAR(int type, } } if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) == ZEND_FETCH_STATIC) { - zval_update_constant(retval, (void*) 1 TSRMLS_CC); + zval_update_constant(retval, 1 TSRMLS_CC); } else if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) != ZEND_FETCH_GLOBAL_LOCK) { } @@ -5995,6 +6020,21 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ ZEND_VM_RETURN(); } +static int ZEND_FASTCALL ZEND_POW_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + zend_free_op free_op2; + + SAVE_OPLINE(); + pow_function(EX_VAR(opline->result.var), + opline->op1.zv, + _get_zval_ptr_var_deref(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC); + + zval_ptr_dtor_nogc(free_op2.var); + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_UNUSED(int type, ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -6082,7 +6122,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_UNUSED(int typ } } if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) == ZEND_FETCH_STATIC) { - zval_update_constant(retval, (void*) 1 TSRMLS_CC); + zval_update_constant(retval, 1 TSRMLS_CC); } else if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) != ZEND_FETCH_GLOBAL_LOCK) { } @@ -7379,6 +7419,21 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_A ZEND_VM_RETURN(); } +static int ZEND_FASTCALL ZEND_POW_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + + SAVE_OPLINE(); + pow_function(EX_VAR(opline->result.var), + opline->op1.zv, + _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC); + + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + static int ZEND_FASTCALL ZEND_BW_NOT_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -7722,9 +7777,8 @@ static int ZEND_FASTCALL ZEND_SEND_VAL_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARG SAVE_OPLINE(); if (opline->extended_value == ZEND_DO_FCALL_BY_NAME) { - int arg_num = opline->op2.num + EX(call)->num_additional_args; - if (ARG_MUST_BE_SENT_BY_REF(EX(call)->fbc, arg_num)) { - zend_error_noreturn(E_ERROR, "Cannot pass parameter %d by reference", arg_num); + if (ARG_MUST_BE_SENT_BY_REF(EX(call)->fbc, opline->op2.num)) { + zend_error_noreturn(E_ERROR, "Cannot pass parameter %d by reference", opline->op2.num); } } @@ -8708,7 +8762,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMP_CONST(int type, } } if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) == ZEND_FETCH_STATIC) { - zval_update_constant(retval, (void*) 1 TSRMLS_CC); + zval_update_constant(retval, 1 TSRMLS_CC); } else if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) != ZEND_FETCH_GLOBAL_LOCK) { zval_dtor(free_op1.var); } @@ -9319,6 +9373,21 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ ZEND_VM_RETURN(); } +static int ZEND_FASTCALL ZEND_POW_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + zend_free_op free_op1; + + SAVE_OPLINE(); + pow_function(EX_VAR(opline->result.var), + _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC), + opline->op2.zv TSRMLS_CC); + zval_dtor(free_op1.var); + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + static int ZEND_FASTCALL ZEND_ADD_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -9982,6 +10051,21 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_AR ZEND_VM_RETURN(); } +static int ZEND_FASTCALL ZEND_POW_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + zend_free_op free_op1, free_op2; + + SAVE_OPLINE(); + pow_function(EX_VAR(opline->result.var), + _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC), + _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC); + zval_dtor(free_op1.var); + zval_dtor(free_op2.var); + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + static int ZEND_FASTCALL ZEND_ADD_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -10345,7 +10429,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMP_VAR(int type, ZE } } if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) == ZEND_FETCH_STATIC) { - zval_update_constant(retval, (void*) 1 TSRMLS_CC); + zval_update_constant(retval, 1 TSRMLS_CC); } else if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) != ZEND_FETCH_GLOBAL_LOCK) { zval_dtor(free_op1.var); } @@ -10942,6 +11026,21 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_AR ZEND_VM_RETURN(); } +static int ZEND_FASTCALL ZEND_POW_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + zend_free_op free_op1, free_op2; + + SAVE_OPLINE(); + pow_function(EX_VAR(opline->result.var), + _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC), + _get_zval_ptr_var_deref(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC); + zval_dtor(free_op1.var); + zval_ptr_dtor_nogc(free_op2.var); + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMP_UNUSED(int type, ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -11029,7 +11128,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMP_UNUSED(int type, } } if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) == ZEND_FETCH_STATIC) { - zval_update_constant(retval, (void*) 1 TSRMLS_CC); + zval_update_constant(retval, 1 TSRMLS_CC); } else if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) != ZEND_FETCH_GLOBAL_LOCK) { zval_dtor(free_op1.var); } @@ -12139,6 +12238,21 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARG ZEND_VM_RETURN(); } +static int ZEND_FASTCALL ZEND_POW_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + zend_free_op free_op1; + + SAVE_OPLINE(); + pow_function(EX_VAR(opline->result.var), + _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC), + _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC); + zval_dtor(free_op1.var); + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + static int ZEND_FASTCALL ZEND_BW_NOT_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -12724,7 +12838,6 @@ static int ZEND_FASTCALL ZEND_SEND_VAR_NO_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HAND USE_OPLINE zend_free_op free_op1; zval *varptr, *top; - int arg_num; SAVE_OPLINE(); if (opline->extended_value & ZEND_ARG_COMPILE_TIME_BOUND) { /* Had function_ptr at compile_time */ @@ -12732,8 +12845,7 @@ static int ZEND_FASTCALL ZEND_SEND_VAR_NO_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HAND return zend_send_by_var_helper_SPEC_VAR(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } } else { - arg_num = opline->op2.num + EX(call)->num_additional_args; - if (!ARG_SHOULD_BE_SENT_BY_REF(EX(call)->fbc, arg_num)) { + if (!ARG_SHOULD_BE_SENT_BY_REF(EX(call)->fbc, opline->op2.num)) { return zend_send_by_var_helper_SPEC_VAR(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } } @@ -12756,7 +12868,7 @@ static int ZEND_FASTCALL ZEND_SEND_VAR_NO_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HAND } else { if ((opline->extended_value & ZEND_ARG_COMPILE_TIME_BOUND) ? !(opline->extended_value & ZEND_ARG_SEND_SILENT) : - !ARG_MAY_BE_SENT_BY_REF(EX(call)->fbc, arg_num)) { + !ARG_MAY_BE_SENT_BY_REF(EX(call)->fbc, opline->op2.num)) { zend_error(E_STRICT, "Only variables should be passed by reference"); } top = zend_vm_stack_top_inc(TSRMLS_C); @@ -12811,8 +12923,7 @@ static int ZEND_FASTCALL ZEND_SEND_VAR_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG zend_free_op free_op1; if (opline->extended_value == ZEND_DO_FCALL_BY_NAME) { - int arg_num = opline->op2.num + EX(call)->num_additional_args; - if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->fbc, arg_num)) { + if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->fbc, opline->op2.num)) { return ZEND_SEND_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } } @@ -14454,7 +14565,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_VAR_CONST(int type, } } if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) == ZEND_FETCH_STATIC) { - zval_update_constant(retval, (void*) 1 TSRMLS_CC); + zval_update_constant(retval, 1 TSRMLS_CC); } else if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) != ZEND_FETCH_GLOBAL_LOCK) { zval_ptr_dtor_nogc(free_op1.var); } @@ -15174,8 +15285,6 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE } retval = EX_VAR(opline->result.var); ZVAL_DUP(retval, &c->value); - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); } else { /* class constant */ zend_class_entry *ce; @@ -15185,8 +15294,7 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { value = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); ZVAL_DUP(EX_VAR(opline->result.var), value); - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + goto constant_fetch_end; } else if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) { ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv)); } else { @@ -15203,8 +15311,7 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE ce = Z_CE_P(EX_VAR(opline->op1.var)); if ((value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce)) != NULL) { ZVAL_DUP(EX_VAR(opline->result.var), value); - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + goto constant_fetch_end; } } @@ -15216,7 +15323,7 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE zend_class_entry *old_scope = EG(scope); EG(scope) = ce; - zval_update_constant(value, (void *) 1 TSRMLS_CC); + zval_update_constant(value, 1 TSRMLS_CC); EG(scope) = old_scope; } if (IS_VAR == IS_CONST) { @@ -15232,10 +15339,10 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE } else { zend_error_noreturn(E_ERROR, "Undefined class constant '%s'", Z_STRVAL_P(opline->op2.zv)); } - - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); } +constant_fetch_end: + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); } static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) @@ -15885,6 +15992,26 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ ZEND_VM_RETURN(); } +static int ZEND_FASTCALL ZEND_POW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + zend_free_op free_op1; + + SAVE_OPLINE(); + pow_function(EX_VAR(opline->result.var), + _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC), + opline->op2.zv TSRMLS_CC); + zval_ptr_dtor_nogc(free_op1.var); + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + +static int ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + return zend_binary_assign_op_helper_SPEC_VAR_CONST(pow_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); +} + static int ZEND_FASTCALL ZEND_ADD_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -17825,6 +17952,26 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_AR ZEND_VM_RETURN(); } +static int ZEND_FASTCALL ZEND_POW_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + zend_free_op free_op1, free_op2; + + SAVE_OPLINE(); + pow_function(EX_VAR(opline->result.var), + _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC), + _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC); + zval_ptr_dtor_nogc(free_op1.var); + zval_dtor(free_op2.var); + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + +static int ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + return zend_binary_assign_op_helper_SPEC_VAR_TMP(pow_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); +} + static int ZEND_FASTCALL ZEND_ADD_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -18720,7 +18867,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_VAR_VAR(int type, ZE } } if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) == ZEND_FETCH_STATIC) { - zval_update_constant(retval, (void*) 1 TSRMLS_CC); + zval_update_constant(retval, 1 TSRMLS_CC); } else if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) != ZEND_FETCH_GLOBAL_LOCK) { zval_ptr_dtor_nogc(free_op1.var); } @@ -20126,6 +20273,26 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_AR ZEND_VM_RETURN(); } +static int ZEND_FASTCALL ZEND_POW_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + zend_free_op free_op1, free_op2; + + SAVE_OPLINE(); + pow_function(EX_VAR(opline->result.var), + _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC), + _get_zval_ptr_var_deref(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC); + zval_ptr_dtor_nogc(free_op1.var); + zval_ptr_dtor_nogc(free_op2.var); + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + +static int ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + return zend_binary_assign_op_helper_SPEC_VAR_VAR(pow_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); +} + static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_UNUSED(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -20564,7 +20731,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_VAR_UNUSED(int type, } } if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) == ZEND_FETCH_STATIC) { - zval_update_constant(retval, (void*) 1 TSRMLS_CC); + zval_update_constant(retval, 1 TSRMLS_CC); } else if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) != ZEND_FETCH_GLOBAL_LOCK) { zval_ptr_dtor_nogc(free_op1.var); } @@ -21290,6 +21457,11 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER ZEND_VM_RETURN(); } +static int ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + return zend_binary_assign_op_helper_SPEC_VAR_UNUSED(pow_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); +} + static int ZEND_FASTCALL ZEND_ADD_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -23282,6 +23454,26 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARG ZEND_VM_RETURN(); } +static int ZEND_FASTCALL ZEND_POW_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + zend_free_op free_op1; + + SAVE_OPLINE(); + pow_function(EX_VAR(opline->result.var), + _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC), + _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC); + zval_ptr_dtor_nogc(free_op1.var); + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + +static int ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + return zend_binary_assign_op_helper_SPEC_VAR_CV(pow_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); +} + static int ZEND_FASTCALL ZEND_CLONE_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -24222,8 +24414,6 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPC } retval = EX_VAR(opline->result.var); ZVAL_DUP(retval, &c->value); - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); } else { /* class constant */ zend_class_entry *ce; @@ -24233,8 +24423,7 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPC if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv))) { value = CACHED_PTR(Z_CACHE_SLOT_P(opline->op2.zv)); ZVAL_DUP(EX_VAR(opline->result.var), value); - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + goto constant_fetch_end; } else if (CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv))) { ce = CACHED_PTR(Z_CACHE_SLOT_P(opline->op1.zv)); } else { @@ -24251,8 +24440,7 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPC ce = Z_CE_P(EX_VAR(opline->op1.var)); if ((value = CACHED_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(opline->op2.zv), ce)) != NULL) { ZVAL_DUP(EX_VAR(opline->result.var), value); - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); + goto constant_fetch_end; } } @@ -24264,7 +24452,7 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPC zend_class_entry *old_scope = EG(scope); EG(scope) = ce; - zval_update_constant(value, (void *) 1 TSRMLS_CC); + zval_update_constant(value, 1 TSRMLS_CC); EG(scope) = old_scope; } if (IS_UNUSED == IS_CONST) { @@ -24280,10 +24468,10 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPC } else { zend_error_noreturn(E_ERROR, "Undefined class constant '%s'", Z_STRVAL_P(opline->op2.zv)); } - - CHECK_EXCEPTION(); - ZEND_VM_NEXT_OPCODE(); } +constant_fetch_end: + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); } static int ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) @@ -24702,6 +24890,11 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDL ZEND_VM_RETURN(); } +static int ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + return zend_binary_assign_op_helper_SPEC_UNUSED_CONST(pow_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); +} + static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_TMP(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -25960,6 +26153,11 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER ZEND_VM_RETURN(); } +static int ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + return zend_binary_assign_op_helper_SPEC_UNUSED_TMP(pow_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); +} + static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_VAR(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -27218,6 +27416,11 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER ZEND_VM_RETURN(); } +static int ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + return zend_binary_assign_op_helper_SPEC_UNUSED_VAR(pow_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); +} + static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_UNUSED(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -27729,6 +27932,11 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HAND ZEND_VM_RETURN(); } +static int ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + return zend_binary_assign_op_helper_SPEC_UNUSED_UNUSED(pow_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); +} + static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_CV(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -28978,6 +29186,11 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ ZEND_VM_RETURN(); } +static int ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + return zend_binary_assign_op_helper_SPEC_UNUSED_CV(pow_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); +} + static int ZEND_FASTCALL ZEND_BW_NOT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -29543,7 +29756,6 @@ static int ZEND_FASTCALL ZEND_SEND_VAR_NO_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDL USE_OPLINE zval *varptr, *top; - int arg_num; SAVE_OPLINE(); if (opline->extended_value & ZEND_ARG_COMPILE_TIME_BOUND) { /* Had function_ptr at compile_time */ @@ -29551,8 +29763,7 @@ static int ZEND_FASTCALL ZEND_SEND_VAR_NO_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDL return zend_send_by_var_helper_SPEC_CV(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } } else { - arg_num = opline->op2.num + EX(call)->num_additional_args; - if (!ARG_SHOULD_BE_SENT_BY_REF(EX(call)->fbc, arg_num)) { + if (!ARG_SHOULD_BE_SENT_BY_REF(EX(call)->fbc, opline->op2.num)) { return zend_send_by_var_helper_SPEC_CV(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } } @@ -29575,7 +29786,7 @@ static int ZEND_FASTCALL ZEND_SEND_VAR_NO_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDL } else { if ((opline->extended_value & ZEND_ARG_COMPILE_TIME_BOUND) ? !(opline->extended_value & ZEND_ARG_SEND_SILENT) : - !ARG_MAY_BE_SENT_BY_REF(EX(call)->fbc, arg_num)) { + !ARG_MAY_BE_SENT_BY_REF(EX(call)->fbc, opline->op2.num)) { zend_error(E_STRICT, "Only variables should be passed by reference"); } top = zend_vm_stack_top_inc(TSRMLS_C); @@ -29629,8 +29840,7 @@ static int ZEND_FASTCALL ZEND_SEND_VAR_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS if (opline->extended_value == ZEND_DO_FCALL_BY_NAME) { - int arg_num = opline->op2.num + EX(call)->num_additional_args; - if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->fbc, arg_num)) { + if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->fbc, opline->op2.num)) { return ZEND_SEND_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } } @@ -31118,7 +31328,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_CONST(int type, Z } } if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) == ZEND_FETCH_STATIC) { - zval_update_constant(retval, (void*) 1 TSRMLS_CC); + zval_update_constant(retval, 1 TSRMLS_CC); } else if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) != ZEND_FETCH_GLOBAL_LOCK) { } @@ -32337,6 +32547,26 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_A ZEND_VM_RETURN(); } +static int ZEND_FASTCALL ZEND_POW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + + SAVE_OPLINE(); + pow_function(EX_VAR(opline->result.var), + _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC), + opline->op2.zv TSRMLS_CC); + + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + +static int ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + return zend_binary_assign_op_helper_SPEC_CV_CONST(pow_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); +} + static int ZEND_FASTCALL ZEND_ADD_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -34160,6 +34390,26 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARG ZEND_VM_RETURN(); } +static int ZEND_FASTCALL ZEND_POW_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + zend_free_op free_op2; + + SAVE_OPLINE(); + pow_function(EX_VAR(opline->result.var), + _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC), + _get_zval_ptr_tmp(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC); + + zval_dtor(free_op2.var); + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + +static int ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + return zend_binary_assign_op_helper_SPEC_CV_TMP(pow_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); +} + static int ZEND_FASTCALL ZEND_ADD_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -35054,7 +35304,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_VAR(int type, ZEN } } if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) == ZEND_FETCH_STATIC) { - zval_update_constant(retval, (void*) 1 TSRMLS_CC); + zval_update_constant(retval, 1 TSRMLS_CC); } else if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) != ZEND_FETCH_GLOBAL_LOCK) { } @@ -36343,6 +36593,26 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG ZEND_VM_RETURN(); } +static int ZEND_FASTCALL ZEND_POW_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + zend_free_op free_op2; + + SAVE_OPLINE(); + pow_function(EX_VAR(opline->result.var), + _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC), + _get_zval_ptr_var_deref(opline->op2.var, execute_data, &free_op2 TSRMLS_CC) TSRMLS_CC); + + zval_ptr_dtor_nogc(free_op2.var); + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + +static int ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + return zend_binary_assign_op_helper_SPEC_CV_VAR(pow_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); +} + static int ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_UNUSED(int (*binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC), ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -36780,7 +37050,7 @@ static int ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_UNUSED(int type, } } if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) == ZEND_FETCH_STATIC) { - zval_update_constant(retval, (void*) 1 TSRMLS_CC); + zval_update_constant(retval, 1 TSRMLS_CC); } else if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) != ZEND_FETCH_GLOBAL_LOCK) { } @@ -37373,6 +37643,11 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ ZEND_VM_RETURN(); } +static int ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + return zend_binary_assign_op_helper_SPEC_CV_UNUSED(pow_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); +} + static int ZEND_FASTCALL ZEND_ADD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { USE_OPLINE @@ -39247,6 +39522,26 @@ static int ZEND_FASTCALL ZEND_YIELD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS ZEND_VM_RETURN(); } +static int ZEND_FASTCALL ZEND_POW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + USE_OPLINE + + + SAVE_OPLINE(); + pow_function(EX_VAR(opline->result.var), + _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC), + _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op2.var TSRMLS_CC) TSRMLS_CC); + + + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); +} + +static int ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) +{ + return zend_binary_assign_op_helper_SPEC_CV_CV(pow_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); +} + static int ZEND_FASTCALL ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS) { zend_error_noreturn(E_ERROR, "Invalid opcode %d/%d/%d.", OPLINE->opcode, OPLINE->op1_type, OPLINE->op2_type); @@ -43407,6 +43702,56 @@ void zend_init_opcodes_handlers(void) ZEND_SEND_UNPACK_SPEC_HANDLER, ZEND_SEND_UNPACK_SPEC_HANDLER, ZEND_SEND_UNPACK_SPEC_HANDLER, + ZEND_POW_SPEC_CONST_CONST_HANDLER, + ZEND_POW_SPEC_CONST_TMP_HANDLER, + ZEND_POW_SPEC_CONST_VAR_HANDLER, + ZEND_NULL_HANDLER, + ZEND_POW_SPEC_CONST_CV_HANDLER, + ZEND_POW_SPEC_TMP_CONST_HANDLER, + ZEND_POW_SPEC_TMP_TMP_HANDLER, + ZEND_POW_SPEC_TMP_VAR_HANDLER, + ZEND_NULL_HANDLER, + ZEND_POW_SPEC_TMP_CV_HANDLER, + ZEND_POW_SPEC_VAR_CONST_HANDLER, + ZEND_POW_SPEC_VAR_TMP_HANDLER, + ZEND_POW_SPEC_VAR_VAR_HANDLER, + ZEND_NULL_HANDLER, + ZEND_POW_SPEC_VAR_CV_HANDLER, + ZEND_NULL_HANDLER, + ZEND_NULL_HANDLER, + ZEND_NULL_HANDLER, + ZEND_NULL_HANDLER, + ZEND_NULL_HANDLER, + ZEND_POW_SPEC_CV_CONST_HANDLER, + ZEND_POW_SPEC_CV_TMP_HANDLER, + ZEND_POW_SPEC_CV_VAR_HANDLER, + ZEND_NULL_HANDLER, + ZEND_POW_SPEC_CV_CV_HANDLER, + ZEND_NULL_HANDLER, + ZEND_NULL_HANDLER, + ZEND_NULL_HANDLER, + ZEND_NULL_HANDLER, + ZEND_NULL_HANDLER, + ZEND_NULL_HANDLER, + ZEND_NULL_HANDLER, + ZEND_NULL_HANDLER, + ZEND_NULL_HANDLER, + ZEND_NULL_HANDLER, + ZEND_ASSIGN_POW_SPEC_VAR_CONST_HANDLER, + ZEND_ASSIGN_POW_SPEC_VAR_TMP_HANDLER, + ZEND_ASSIGN_POW_SPEC_VAR_VAR_HANDLER, + ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_HANDLER, + ZEND_ASSIGN_POW_SPEC_VAR_CV_HANDLER, + ZEND_ASSIGN_POW_SPEC_UNUSED_CONST_HANDLER, + ZEND_ASSIGN_POW_SPEC_UNUSED_TMP_HANDLER, + ZEND_ASSIGN_POW_SPEC_UNUSED_VAR_HANDLER, + ZEND_ASSIGN_POW_SPEC_UNUSED_UNUSED_HANDLER, + ZEND_ASSIGN_POW_SPEC_UNUSED_CV_HANDLER, + ZEND_ASSIGN_POW_SPEC_CV_CONST_HANDLER, + ZEND_ASSIGN_POW_SPEC_CV_TMP_HANDLER, + ZEND_ASSIGN_POW_SPEC_CV_VAR_HANDLER, + ZEND_ASSIGN_POW_SPEC_CV_UNUSED_HANDLER, + ZEND_ASSIGN_POW_SPEC_CV_CV_HANDLER, ZEND_NULL_HANDLER }; zend_opcode_handlers = (opcode_handler_t*)labels; diff --git a/Zend/zend_vm_gen.php b/Zend/zend_vm_gen.php index 03d660e2f9..bdc6cc79b8 100644 --- a/Zend/zend_vm_gen.php +++ b/Zend/zend_vm_gen.php @@ -1313,7 +1313,7 @@ function gen_vm($def, $skel) { out($f, "# pragma warning(once : 6285)\n"); // Suppress (<non-zero constant> || <expression>) warnings on windows out($f, "# pragma warning(once : 6286)\n"); - // Suppress constant with constant comparsion warnings on windows + // Suppress constant with constant comparison warnings on windows out($f, "# pragma warning(once : 6326)\n"); } out($f, "#endif\n"); diff --git a/Zend/zend_vm_opcodes.c b/Zend/zend_vm_opcodes.c index d6f51cce5c..23edabc47f 100644 --- a/Zend/zend_vm_opcodes.c +++ b/Zend/zend_vm_opcodes.c @@ -21,7 +21,7 @@ #include <stdio.h> #include <zend.h> -const char *zend_vm_opcodes_map[166] = { +const char *zend_vm_opcodes_map[168] = { "ZEND_NOP", "ZEND_ADD", "ZEND_SUB", @@ -188,6 +188,8 @@ const char *zend_vm_opcodes_map[166] = { "ZEND_FAST_RET", "ZEND_RECV_VARIADIC", "ZEND_SEND_UNPACK", + "ZEND_POW", + "ZEND_ASSIGN_POW", }; ZEND_API const char* zend_get_opcode_name(zend_uchar opcode) { diff --git a/Zend/zend_vm_opcodes.h b/Zend/zend_vm_opcodes.h index 0f75196ffb..f9c30ca126 100644 --- a/Zend/zend_vm_opcodes.h +++ b/Zend/zend_vm_opcodes.h @@ -171,5 +171,7 @@ ZEND_API const char *zend_get_opcode_name(zend_uchar opcode); #define ZEND_FAST_RET 163 #define ZEND_RECV_VARIADIC 164 #define ZEND_SEND_UNPACK 165 +#define ZEND_POW 166 +#define ZEND_ASSIGN_POW 167 #endif |