From: Stanislav Malyshev Date: Thu, 4 Dec 2008 20:12:30 +0000 (+0000) Subject: MF5: Merge namespaces changes X-Git-Tag: php-5.4.0alpha1~191^2~4892 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=636b2c9a6feed3683f44f10953622889a6023e9a;p=php MF5: Merge namespaces changes --- diff --git a/Zend/tests/bug41633_2.phpt b/Zend/tests/bug41633_2.phpt index 23c0e6b649..3deb4516ac 100755 --- a/Zend/tests/bug41633_2.phpt +++ b/Zend/tests/bug41633_2.phpt @@ -8,4 +8,4 @@ class Foo { echo Foo::A."\n"; ?> --EXPECTF-- -Fatal error: Undefined class constant 'B' in %sbug41633_2.php on line 5 +Fatal error: Undefined class constant 'self::B' in %sbug41633_2.php on line 5 diff --git a/Zend/tests/bug42802.phpt b/Zend/tests/bug42802.phpt index 80ae02ba5e..2aa7061f35 100755 --- a/Zend/tests/bug42802.phpt +++ b/Zend/tests/bug42802.phpt @@ -11,35 +11,30 @@ function test1(bar $bar) { echo "ok\n"; } -function test2(foo::bar $bar) { +function test2(\foo\bar $bar) { echo "ok\n"; } -function test3(::foo::bar $bar) { +function test3(\foo\bar $bar) { echo "ok\n"; } -function test4(::Exception $e) { +function test4(\Exception $e) { echo "ok\n"; } -function test5(Exception $e) { - echo "ok\n"; -} -function test6(::bar $bar) { +function test5(\bar $bar) { echo "bug\n"; } $x = new bar(); -$y = new Exception(); +$y = new \Exception(); test1($x); test2($x); test3($x); test4($y); -test5($y); -test6($x); +test5($x); --EXPECTF-- ok ok ok ok -ok -Catchable fatal error: Argument 1 passed to foo::test6() must be an instance of bar, instance of foo::bar given, called in %sbug42802.php on line 23 +Catchable fatal error: Argument 1 passed to foo\test5() must be an instance of bar, instance of foo\bar given, called in %sbug42802.php on line %d and defined in %sbug42802.php on line %d diff --git a/Zend/tests/bug42819.phpt b/Zend/tests/bug42819.phpt index 565a019fac..f4387eb93b 100755 --- a/Zend/tests/bug42819.phpt +++ b/Zend/tests/bug42819.phpt @@ -4,88 +4,100 @@ Bug #42819 (namespaces in indexes of constant arrays) --FILE-- 0); - static $a2 = array(foo::I => 0); - static $a3 = array(foo::foo::I => 0); - static $a4 = array(::foo::I => 0); - static $a5 = array(::foo::foo::I => 0); + static $a2 = array(foo\I => 0); + static $a3 = array(foo\foo::I => 0); + static $a4 = array(\foo\I => 0); + static $a5 = array(\foo\foo::I => 0); static $a6 = array(ArrayObject::STD_PROP_LIST => 0); static $a7 = array(E_ERROR => 0); } class bar2 { static $a1 = array(I => I); - static $a2 = array(foo::I => I); - static $a3 = array(foo::foo::I => I); - static $a4 = array(::foo::I => I); - static $a5 = array(::foo::foo::I => I); + static $a2 = array(foo\I => I); + static $a3 = array(foo\foo::I => I); + static $a4 = array(\foo\I => I); + static $a5 = array(\foo\foo::I => I); static $a6 = array(ArrayObject::STD_PROP_LIST => I); static $a7 = array(E_ERROR => I); } class bar3 { - static $a1 = array(I => foo::I); - static $a2 = array(foo::I => foo::I); - static $a3 = array(foo::foo::I => foo::I); - static $a4 = array(::foo::I => foo::I); - static $a5 = array(::foo::foo::I => foo::I); - static $a6 = array(ArrayObject::STD_PROP_LIST => foo::I); - static $a7 = array(E_ERROR => foo::I); + static $a1 = array(I => foo\I); + static $a2 = array(foo\I => foo\I); + static $a3 = array(foo\foo::I => foo\I); + static $a4 = array(\foo\I => foo\I); + static $a5 = array(\foo\foo::I => foo\I); + static $a6 = array(ArrayObject::STD_PROP_LIST => foo\I); + static $a7 = array(E_ERROR => foo\I); } class bar4 { static $a1 = array(I => ArrayObject::STD_PROP_LIST); - static $a2 = array(foo::I => ArrayObject::STD_PROP_LIST); - static $a3 = array(foo::foo::I => ArrayObject::STD_PROP_LIST); - static $a4 = array(::foo::I => ArrayObject::STD_PROP_LIST); - static $a5 = array(::foo::foo::I => ArrayObject::STD_PROP_LIST); + static $a2 = array(foo\I => ArrayObject::STD_PROP_LIST); + static $a3 = array(foo\foo::I => ArrayObject::STD_PROP_LIST); + static $a4 = array(\foo\I => ArrayObject::STD_PROP_LIST); + static $a5 = array(\foo\foo::I => ArrayObject::STD_PROP_LIST); static $a6 = array(ArrayObject::STD_PROP_LIST => ArrayObject::STD_PROP_LIST); static $a7 = array(E_ERROR => ArrayObject::STD_PROP_LIST); } class bar5 { static $a1 = array(I => E_ERROR); - static $a2 = array(foo::I => E_ERROR); - static $a3 = array(foo::foo::I => E_ERROR); - static $a4 = array(::foo::I => E_ERROR); - static $a5 = array(::foo::foo::I => E_ERROR); + static $a2 = array(foo\I => E_ERROR); + static $a3 = array(foo\foo::I => E_ERROR); + static $a4 = array(\foo\I => E_ERROR); + static $a5 = array(\foo\foo::I => E_ERROR); static $a6 = array(ArrayObject::STD_PROP_LIST => E_ERROR); static $a7 = array(E_ERROR => E_ERROR); } +echo "first\n"; echo C; +echo foo\C; +echo foo\foo::C; echo foo::C; -echo foo::foo::C; -echo ::foo::C; -echo ::foo::foo::C; +echo \foo\foo::C; echo ArrayObject::STD_PROP_LIST . "\n"; echo E_ERROR . "\n"; - -echo foo::foo::C1; -echo foo::foo::C2; -echo foo::foo::C3; -echo foo::foo::C4; -echo foo::foo::C5; -echo foo::foo::C6 . "\n"; -echo foo::foo::C7 . "\n"; +echo "second\n"; +echo \foo\foo::C1; +echo \foo\foo::C2; +echo \foo\foo::C3; +echo \foo\foo::C4; +echo \foo\foo::C5; +echo \foo\foo::C6 . "\n"; +echo \foo\foo::C7 . "\n"; print_r(bar1::$a1); print_r(bar1::$a2); @@ -126,20 +138,24 @@ print_r(bar5::$a4); print_r(bar5::$a5); print_r(bar5::$a6); print_r(bar5::$a7); +function oops($a = array(foo\unknown)){} +oops(); ?> ---EXPECT-- -foo::C -foo::C -foo::foo::C -foo::C -foo::foo::C +--EXPECTF-- +first +foo\C +foo\foo\C +foo\foo\foo::C +foo\foo::C +foo\foo::C 1 1 -foo::C -foo::C -foo::foo::C -foo::C -foo::foo::C +second +foo\C +foo\foo\C +foo\foo\foo::C +foo\C +foo\foo::C 1 1 Array @@ -148,11 +164,11 @@ Array ) Array ( - [11] => 0 + [12] => 0 ) Array ( - [22] => 0 + [32] => 0 ) Array ( @@ -176,11 +192,11 @@ Array ) Array ( - [11] => 11 + [12] => 11 ) Array ( - [22] => 11 + [32] => 11 ) Array ( @@ -200,31 +216,31 @@ Array ) Array ( - [11] => 11 + [11] => 12 ) Array ( - [11] => 11 + [12] => 12 ) Array ( - [22] => 11 + [32] => 12 ) Array ( - [11] => 11 + [11] => 12 ) Array ( - [22] => 11 + [22] => 12 ) Array ( - [1] => 11 + [1] => 12 ) Array ( - [1] => 11 + [1] => 12 ) Array ( @@ -232,11 +248,11 @@ Array ) Array ( - [11] => 1 + [12] => 1 ) Array ( - [22] => 1 + [32] => 1 ) Array ( @@ -260,11 +276,11 @@ Array ) Array ( - [11] => 1 + [12] => 1 ) Array ( - [22] => 1 + [32] => 1 ) Array ( @@ -282,3 +298,5 @@ Array ( [1] => 1 ) + +Fatal error: Undefined constant 'foo\foo\unknown' in %sbug42819.php on line %d \ No newline at end of file diff --git a/Zend/tests/bug42820.phpt b/Zend/tests/bug42820.phpt index c5b13b43eb..921f0090a9 100755 --- a/Zend/tests/bug42820.phpt +++ b/Zend/tests/bug42820.phpt @@ -7,16 +7,16 @@ const ok = 0; class foo { const ok = 0; } -var_dump(defined('ns::ok')); -var_dump(defined('ns::bug')); -var_dump(defined('::ns::ok')); -var_dump(defined('::ns::bug')); -var_dump(defined('ns::foo::ok')); -var_dump(defined('ns::foo::bug')); -var_dump(defined('::ns::foo::ok')); -var_dump(defined('::ns::foo::bug')); -var_dump(defined('ns::bar::bug')); -var_dump(defined('::ns::bar::bug')); +var_dump(defined('ns\\ok')); +var_dump(defined('ns\\bug')); +var_dump(defined('\\ns\\ok')); +var_dump(defined('\\ns\\bug')); +var_dump(defined('ns\\foo::ok')); +var_dump(defined('ns\\foo::bug')); +var_dump(defined('\\ns\\foo::ok')); +var_dump(defined('\\ns\\foo::bug')); +var_dump(defined('ns\\bar::bug')); +var_dump(defined('\\ns\\bar::bug')); --EXPECT-- bool(true) bool(false) @@ -28,3 +28,4 @@ bool(true) bool(false) bool(false) bool(false) + diff --git a/Zend/tests/bug42859.phpt b/Zend/tests/bug42859.phpt index 931e7fe0f7..755f41f8d6 100755 --- a/Zend/tests/bug42859.phpt +++ b/Zend/tests/bug42859.phpt @@ -5,8 +5,8 @@ Bug #42859 (import always conflicts with internal classes) namespace Foo; class Ex {} -use Blah::Exception; -use Blah::Ex; +use Blah\Exception; +use Blah\Ex; ?> --EXPECTF-- -Fatal error: Cannot use Blah::Ex as Ex because the name is already in use in %sbug42859.php on line 6 +Fatal error: Cannot use Blah\Ex as Ex because the name is already in use in %sbug42859.php on line 6 diff --git a/Zend/tests/bug43128.phpt b/Zend/tests/bug43128.phpt index 629f46c594..d492bfe59a 100755 --- a/Zend/tests/bug43128.phpt +++ b/Zend/tests/bug43128.phpt @@ -1,7 +1,7 @@ --TEST-- Bug #43128 (Very long class name causes segfault) --INI-- -memory_limit=128000000 +memory_limit=512000000 --FILE-- bar($foo); // Ok! -$foo->bar(new stdclass); // Error, ok! +$foo->bar(new \stdclass); // Error, ok! --EXPECTF-- -Catchable fatal error: Argument 1 passed to foobar::foo::bar() must be an instance of foobar::foo, instance of stdClass given, called in %sbug43332_1.php on line 10 and defined in %sbug43332_1.php on line 5 +Catchable fatal error: Argument 1 passed to foobar\foo::bar() must be an instance of foobar\foo, instance of stdClass given, called in %sbug43332_1.php on line 10 and defined in %sbug43332_1.php on line 5 diff --git a/Zend/tests/bug43332_2.phpt b/Zend/tests/bug43332_2.phpt index 916f6fa354..b8adef3b13 100644 --- a/Zend/tests/bug43332_2.phpt +++ b/Zend/tests/bug43332_2.phpt @@ -5,11 +5,11 @@ Bug #43332.2 (self and parent as type hint in namespace) namespace foobar; class foo { - public function bar(::self $a) { } + public function bar(\self $a) { } } $foo = new foo; $foo->bar($foo); // Ok! $foo->bar(new stdclass); // Error, ok! --EXPECTF-- -Fatal error: '::self' is a wrong class name in %sbug43332_2.php on line 5 +Fatal error: '\self' is an invalid class name in %sbug43332_2.php on line 5 diff --git a/Zend/tests/bug43343.phpt b/Zend/tests/bug43343.phpt index fa1d993ab8..12f64fbd24 100644 --- a/Zend/tests/bug43343.phpt +++ b/Zend/tests/bug43343.phpt @@ -8,4 +8,4 @@ $foo = 'bar'; var_dump(new namespace::$foo); ?> --EXPECTF-- -Fatal error: Cannot use 'namespace' as a class name in %sbug43343.php on line 5 +Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM, expecting T_NS_SEPARATOR in %sbug43343.php on line 5 diff --git a/Zend/tests/bug43344_10.phpt b/Zend/tests/bug43344_10.phpt index d80a06ba05..e9f918cd61 100644 --- a/Zend/tests/bug43344_10.phpt +++ b/Zend/tests/bug43344_10.phpt @@ -2,7 +2,7 @@ Bug #43344.10 (Wrong error message for undefined namespace constant) --FILE-- --EXPECTF-- Fatal error: Undefined constant 'bar' in %sbug43344_10.php on line %d diff --git a/Zend/tests/bug43344_11.phpt b/Zend/tests/bug43344_11.phpt index 4daa236f87..b55cdccdea 100644 --- a/Zend/tests/bug43344_11.phpt +++ b/Zend/tests/bug43344_11.phpt @@ -2,7 +2,7 @@ Bug #43344.11 (Wrong error message for undefined namespace constant) --FILE-- 0)) { +function f($a=array(namespace\bar=>0)) { reset($a); return key($a); } diff --git a/Zend/tests/bug43344_2.phpt b/Zend/tests/bug43344_2.phpt index 1c55559e26..57766afa94 100644 --- a/Zend/tests/bug43344_2.phpt +++ b/Zend/tests/bug43344_2.phpt @@ -6,4 +6,4 @@ namespace Foo; echo Foo::bar."\n"; ?> --EXPECTF-- -Fatal error: Class 'Foo::Foo' not found in %sbug43344_2.php on line %d +Fatal error: Class 'Foo\Foo' not found in %sbug43344_2.php on line %d diff --git a/Zend/tests/bug43344_3.phpt b/Zend/tests/bug43344_3.phpt index 26a6b46a3b..579ed81ada 100644 --- a/Zend/tests/bug43344_3.phpt +++ b/Zend/tests/bug43344_3.phpt @@ -9,4 +9,4 @@ function f($a=Foo::bar) { echo f()."\n"; ?> --EXPECTF-- -Fatal error: Class 'Foo::Foo' not found in %sbug43344_3.php on line %d +Fatal error: Class 'Foo\Foo' not found in %sbug43344_3.php on line %d diff --git a/Zend/tests/bug43344_4.phpt b/Zend/tests/bug43344_4.phpt index 20feaf9afe..97e08b3664 100644 --- a/Zend/tests/bug43344_4.phpt +++ b/Zend/tests/bug43344_4.phpt @@ -9,4 +9,4 @@ function f($a=array(Foo::bar)) { echo f()."\n"; ?> --EXPECTF-- -Fatal error: Class 'Foo::Foo' not found in %sbug43344_4.php on line %d +Fatal error: Class 'Foo\Foo' not found in %sbug43344_4.php on line %d diff --git a/Zend/tests/bug43344_5.phpt b/Zend/tests/bug43344_5.phpt index 2ccd029825..645ef33e7f 100644 --- a/Zend/tests/bug43344_5.phpt +++ b/Zend/tests/bug43344_5.phpt @@ -10,4 +10,4 @@ function f($a=array(Foo::bar=>0)) { echo f()."\n"; ?> --EXPECTF-- -Fatal error: Class 'Foo::Foo' not found in %sbug43344_5.php on line %d +Fatal error: Class 'Foo\Foo' not found in %sbug43344_5.php on line %d diff --git a/Zend/tests/bug43344_6.phpt b/Zend/tests/bug43344_6.phpt index 0597b585e0..38e1961aad 100644 --- a/Zend/tests/bug43344_6.phpt +++ b/Zend/tests/bug43344_6.phpt @@ -3,7 +3,7 @@ Bug #43344.6 (Wrong error message for undefined namespace constant) --FILE-- --EXPECTF-- -Fatal error: Undefined constant 'Foo::bar' in %sbug43344_6.php on line %d +Fatal error: Undefined constant 'Foo\bar' in %sbug43344_6.php on line %d diff --git a/Zend/tests/bug43344_7.phpt b/Zend/tests/bug43344_7.phpt index fab79feec2..94e00d9e1f 100644 --- a/Zend/tests/bug43344_7.phpt +++ b/Zend/tests/bug43344_7.phpt @@ -3,10 +3,10 @@ Bug #43344.7 (Wrong error message for undefined namespace constant) --FILE-- --EXPECTF-- -Fatal error: Undefined constant 'Foo::bar' in %sbug43344_7.php on line %d +Fatal error: Undefined constant 'Foo\bar' in %sbug43344_7.php on line %d diff --git a/Zend/tests/bug43344_8.phpt b/Zend/tests/bug43344_8.phpt index a9272d7472..eb694f7118 100644 --- a/Zend/tests/bug43344_8.phpt +++ b/Zend/tests/bug43344_8.phpt @@ -3,10 +3,10 @@ Bug #43344.8 (Wrong error message for undefined namespace constant) --FILE-- --EXPECTF-- -Fatal error: Undefined constant 'Foo::bar' in %sbug43344_8.php on line %d +Fatal error: Undefined constant 'Foo\bar' in %sbug43344_8.php on line %d diff --git a/Zend/tests/bug43344_9.phpt b/Zend/tests/bug43344_9.phpt index b3c5dfbdb7..31604e7a94 100644 --- a/Zend/tests/bug43344_9.phpt +++ b/Zend/tests/bug43344_9.phpt @@ -3,11 +3,11 @@ Bug #43344.9 (Wrong error message for undefined namespace constant) --FILE-- 0)) { +function f($a=array(namespace\bar=>0)) { reset($a); return key($a); } echo f()."\n"; ?> --EXPECTF-- -Fatal error: Undefined constant 'Foo::bar' in %sbug43344_9.php on line %d +Fatal error: Undefined constant 'Foo\bar' in %sbug43344_9.php on line %d diff --git a/Zend/tests/bug43651.phpt b/Zend/tests/bug43651.phpt index bce0601abe..ea70cf1039 100644 --- a/Zend/tests/bug43651.phpt +++ b/Zend/tests/bug43651.phpt @@ -6,22 +6,22 @@ class Test { static function foo() {} } -var_dump(is_callable("::")); -var_dump(is_callable(":")); -var_dump(is_callable("x:")); -var_dump(is_callable(":x")); -var_dump(is_callable("x:x")); -var_dump(is_callable("x::")); -var_dump(is_callable("::x")); -var_dump(is_callable("x::x")); +var_dump(is_callable("\\\\")); +var_dump(is_callable("\\")); +var_dump(is_callable("x\\")); +var_dump(is_callable("\\x")); +var_dump(is_callable("x\\x")); +var_dump(is_callable("x\\\\")); +var_dump(is_callable("\\x")); +var_dump(is_callable("x\\\\x")); var_dump(is_callable("cd")); -var_dump(is_callable("Test::")); -var_dump(is_callable("::Test")); -var_dump(is_callable("::Test::")); +var_dump(is_callable("Test\\")); +var_dump(is_callable("\\Test")); +var_dump(is_callable("\\Test\\")); var_dump(is_callable("Test::foo")); -var_dump(is_callable("::Test::foo")); +var_dump(is_callable("\\Test::foo")); var_dump(is_callable("is_string")); -var_dump(is_callable("::is_string")); +var_dump(is_callable("\\is_string")); --EXPECT-- bool(false) bool(false) diff --git a/Zend/tests/bug44653.phpt b/Zend/tests/bug44653.phpt index defdba810a..1abf9747c7 100644 --- a/Zend/tests/bug44653.phpt +++ b/Zend/tests/bug44653.phpt @@ -14,13 +14,17 @@ class B { static function fooBar() { echo "bag2\n"; } } function fooBar() { echo __FUNCTION__ . PHP_EOL; } -var_dump(A::XX); +var_dump(\A\XX); A::fooBar(); -fooBar(); +\A\fooBar(); B::fooBar(); +fooBar(); +\B\fooBar(); ?> --EXPECT-- int(1) -A::fooBar -B::fooBar -B::fooBar +bag1 +A\fooBar +bag2 +B\fooBar +B\fooBar diff --git a/Zend/tests/class_alias_012.phpt b/Zend/tests/class_alias_012.phpt index 01839668b8..dd1c9b1072 100644 --- a/Zend/tests/class_alias_012.phpt +++ b/Zend/tests/class_alias_012.phpt @@ -3,31 +3,31 @@ Testing dynamic alias name --FILE-- --EXPECTF-- -object(test::baz::foo)#%d (0) { +object(test\baz\foo)#%d (0) { } -object(test::baz::foo)#%d (0) { +object(test\baz\foo)#%d (0) { } -object(test::baz::foo)#%d (0) { +object(test\baz\foo)#%d (0) { } -object(test::baz::foo)#%d (0) { +object(test\baz\foo)#%d (0) { } diff --git a/Zend/tests/class_alias_013.phpt b/Zend/tests/class_alias_013.phpt index d032e26541..4991d0fd31 100644 --- a/Zend/tests/class_alias_013.phpt +++ b/Zend/tests/class_alias_013.phpt @@ -3,24 +3,24 @@ Testing alias of alias --FILE-- --EXPECTF-- -object(test::baz::foo)#%d (0) { +object(test\baz\foo)#%d (0) { } -object(test::baz::foo)#%d (0) { +object(test\baz\foo)#%d (0) { } diff --git a/Zend/tests/class_alias_015.phpt b/Zend/tests/class_alias_015.phpt index d694e10752..c79c077187 100644 --- a/Zend/tests/class_alias_015.phpt +++ b/Zend/tests/class_alias_015.phpt @@ -8,11 +8,11 @@ namespace foo; class bar { } -class_alias('foo::bar', 'foo::baz'); +class_alias('foo\bar', 'foo\baz'); -var_dump(new namespace::baz); +var_dump(new namespace\baz); ?> --EXPECTF-- -object(foo::bar)#%d (0) { +object(foo\bar)#%d (0) { } diff --git a/Zend/tests/class_alias_016.phpt b/Zend/tests/class_alias_016.phpt index 6e5c0093e8..930f2ee0e4 100644 --- a/Zend/tests/class_alias_016.phpt +++ b/Zend/tests/class_alias_016.phpt @@ -8,14 +8,14 @@ namespace foo; class bar { } -class_alias('foo::bar', 'foo'); +class_alias('foo\bar', 'foo'); -var_dump(new ::foo); +var_dump(new \foo); var_dump(new foo); ?> --EXPECTF-- -object(foo::bar)#%d (0) { +object(foo\bar)#%d (0) { } -Fatal error: Class 'foo::foo' not found in %s on line %d +Fatal error: Class 'foo\foo' not found in %s on line %d diff --git a/Zend/tests/class_alias_019.phpt b/Zend/tests/class_alias_019.phpt index 4bcc5d9d0c..a0dd249d55 100644 --- a/Zend/tests/class_alias_019.phpt +++ b/Zend/tests/class_alias_019.phpt @@ -9,8 +9,8 @@ namespace foo; class foo { } -class_alias(__NAMESPACE__ .'::foo', 'foo'); -class_alias('::foo', 'foo'); +class_alias(__NAMESPACE__ .'\foo', 'foo'); +class_alias('\foo', 'foo'); ?> --EXPECTF-- diff --git a/Zend/tests/class_alias_020.phpt b/Zend/tests/class_alias_020.phpt index 1c2452cd7f..e2c7d9245e 100644 --- a/Zend/tests/class_alias_020.phpt +++ b/Zend/tests/class_alias_020.phpt @@ -9,25 +9,25 @@ namespace foo; class foo { } -class_alias(__NAMESPACE__ .'::foo', 'foo'); +class_alias(__NAMESPACE__ .'\foo', 'foo'); -namespace foo::bar; +namespace foo\bar; class foo { } -class_alias(__NAMESPACE__ .'::foo', 'bar'); +class_alias(__NAMESPACE__ .'\foo', 'bar'); -var_dump(new ::foo, new ::bar); +var_dump(new \foo, new \bar); -var_dump(new foo::foo, new foo::bar); +var_dump(new \foo\foo, new \foo\bar); ?> --EXPECTF-- -object(foo::foo)#1 (0) { +object(foo\foo)#1 (0) { } -object(foo::bar::foo)#2 (0) { +object(foo\bar\foo)#2 (0) { } -Fatal error: Class 'foo::bar' not found in %s on line %d +Fatal error: Class 'foo\bar' not found in %s on line %d diff --git a/Zend/tests/class_alias_021.phpt b/Zend/tests/class_alias_021.phpt index 79049623f0..dd90e127f4 100644 --- a/Zend/tests/class_alias_021.phpt +++ b/Zend/tests/class_alias_021.phpt @@ -7,19 +7,19 @@ namespace foo; class bar { } -class_alias('foo::bar', 'baz'); +class_alias('foo\bar', 'baz'); -use ::baz as stdClass; +use \baz as stdClass; -var_dump(new foo::bar); +var_dump(new bar); var_dump(new stdClass); -var_dump(new ::baz); +var_dump(new \baz); ?> --EXPECTF-- -object(foo::bar)#%d (0) { +object(foo\bar)#%d (0) { } -object(foo::bar)#%d (0) { +object(foo\bar)#%d (0) { } -object(foo::bar)#%d (0) { +object(foo\bar)#%d (0) { } diff --git a/Zend/tests/class_constants_004.phpt b/Zend/tests/class_constants_004.phpt index 104ceb1bb6..73a42ede7a 100644 --- a/Zend/tests/class_constants_004.phpt +++ b/Zend/tests/class_constants_004.phpt @@ -17,15 +17,15 @@ interface Ifoo { const foo = 4; } -$const = __NAMESPACE__ .'::foo'; // class -$const2 = __NAMESPACE__ .'::Ifoo'; // interface +$const = __NAMESPACE__ .'\\foo'; // class +$const2 = __NAMESPACE__ .'\\Ifoo'; // interface var_dump( foo, - foo::foo, - namespace::foo, - foo::foo::foo, + \foo\foo, + namespace\foo, + \foo\foo::foo, $const::foo, - ::foo, + \foo, constant('foo'), Ifoo::foo, $const2::foo diff --git a/Zend/tests/class_exists_001.phpt b/Zend/tests/class_exists_001.phpt index 4ee1ee2925..8af96a49fc 100644 --- a/Zend/tests/class_exists_001.phpt +++ b/Zend/tests/class_exists_001.phpt @@ -9,13 +9,13 @@ class foo { } -class_alias(__NAMESPACE__ .'::foo', 'bar'); +class_alias(__NAMESPACE__ .'\foo', 'bar'); -var_dump(class_exists('::bar')); +var_dump(class_exists('\bar')); var_dump(class_exists('bar')); -var_dump(class_exists('foo::bar')); -var_dump(class_exists('foo::foo')); +var_dump(class_exists('foo\bar')); +var_dump(class_exists('foo\foo')); var_dump(class_exists('foo')); ?> diff --git a/Zend/tests/constants_003.phpt b/Zend/tests/constants_003.phpt index ec3eb6d4ff..205f95f036 100644 --- a/Zend/tests/constants_003.phpt +++ b/Zend/tests/constants_003.phpt @@ -9,7 +9,7 @@ const foo = 1; define('foo', 2); -var_dump(foo, namespace::foo, foo::foo, ::foo, constant('foo'), constant('foo::foo')); +var_dump(foo, namespace\foo, \foo\foo, \foo, constant('foo'), constant('foo\foo')); ?> --EXPECT-- diff --git a/Zend/tests/constants_004.phpt b/Zend/tests/constants_004.phpt index 787ec26e72..69369aa3d9 100644 --- a/Zend/tests/constants_004.phpt +++ b/Zend/tests/constants_004.phpt @@ -10,4 +10,4 @@ const foo = 2; ?> --EXPECTF-- -Notice: Constant foo::foo already defined in %s on line %d +Notice: Constant foo\foo already defined in %s on line %d diff --git a/Zend/tests/constants_006.phpt b/Zend/tests/constants_006.phpt index 2bd7397a3a..c1e794462b 100644 --- a/Zend/tests/constants_006.phpt +++ b/Zend/tests/constants_006.phpt @@ -23,10 +23,10 @@ var_dump(__namespace__); ?> --EXPECTF-- -unicode(%d) "%s" -unicode(%d) "%s" +string(%d) "%s" +%string|unicode%(%d) "%s" int(%d) -unicode(22) "test::foo::__construct" -unicode(9) "test::foo" -unicode(11) "__construct" -unicode(4) "test" +%string|unicode%(21) "test\foo::__construct" +%string|unicode%(8) "test\foo" +%string|unicode%(11) "__construct" +%string|unicode%(4) "test" diff --git a/Zend/tests/constants_009.phpt b/Zend/tests/constants_009.phpt index c84760be81..ea986dd3c7 100644 --- a/Zend/tests/constants_009.phpt +++ b/Zend/tests/constants_009.phpt @@ -3,7 +3,7 @@ Accessing constants inside namespace --FILE-- --EXPECT-- diff --git a/Zend/tests/inter_02.phpt b/Zend/tests/inter_02.phpt index 18db230b21..34e8baa5dc 100644 --- a/Zend/tests/inter_02.phpt +++ b/Zend/tests/inter_02.phpt @@ -11,7 +11,7 @@ interface foo { const foo = 2; } -function foo($x = foo::foo::foo) { +function foo($x = \foo\foo::foo) { var_dump($x); } diff --git a/Zend/tests/interface_exists_002.phpt b/Zend/tests/interface_exists_002.phpt index f4d8a03cd8..be78784d55 100644 --- a/Zend/tests/interface_exists_002.phpt +++ b/Zend/tests/interface_exists_002.phpt @@ -13,8 +13,8 @@ interface IBar extends IFoo { } var_dump(interface_exists('IFoo')); -var_dump(interface_exists('foo::IFoo')); -var_dump(interface_exists('FOO::ITEST')); +var_dump(interface_exists('foo\\IFoo')); +var_dump(interface_exists('FOO\\ITEST')); ?> --EXPECT-- diff --git a/Zend/tests/ns_001.phpt b/Zend/tests/ns_001.phpt index 6821756a43..67715947af 100755 --- a/Zend/tests/ns_001.phpt +++ b/Zend/tests/ns_001.phpt @@ -2,7 +2,7 @@ 001: Class in namespace --FILE-- bar(); Foo::baz(); -$y = new test::ns1::Foo; +$y = new \test\ns1\Foo; $y->bar(); -test::ns1::Foo::baz(); +\test\ns1\Foo::baz(); --EXPECT-- -test::ns1::Foo -test::ns1::Foo -test::ns1::Foo -test::ns1::Foo -test::ns1::Foo -test::ns1::Foo +test\ns1\Foo +test\ns1\Foo +test\ns1\Foo +test\ns1\Foo +test\ns1\Foo +test\ns1\Foo diff --git a/Zend/tests/ns_002.phpt b/Zend/tests/ns_002.phpt index 7faca97cd3..3d9e09869d 100755 --- a/Zend/tests/ns_002.phpt +++ b/Zend/tests/ns_002.phpt @@ -2,7 +2,7 @@ 002: Import in namespace --FILE-- --EXPECT-- int(2) @@ -41,8 +36,6 @@ int(1) int(2) int(2) int(2) -int(2) int(1) int(2) int(2) -int(2) diff --git a/Zend/tests/ns_037.phpt b/Zend/tests/ns_037.phpt index ed36e0bb57..db0a76e940 100755 --- a/Zend/tests/ns_037.phpt +++ b/Zend/tests/ns_037.phpt @@ -15,35 +15,27 @@ class X { } } new X(); -new X::X(); -new Y::X(); -new ::X::X(); +new Y\X(); +new \X\X(); X::bar(); -X::X::bar(); -Y::X::bar(); -::X::X::bar(); +Y\X::bar(); +\X\X::bar(); echo X::C; -echo X::X::C; -echo Y::X::C; -echo ::X::X::C; +echo Y\X::C; +echo \X\X::C; echo X::$var; -echo X::X::$var; -echo Y::X::$var; -echo ::X::X::$var; +echo Y\X::$var; +echo \X\X::$var; --EXPECT-- class ok class ok class ok -class ok -method ok method ok method ok method ok const ok const ok const ok -const ok -var ok var ok var ok var ok diff --git a/Zend/tests/ns_038.phpt b/Zend/tests/ns_038.phpt index c0ce428f72..f3a8c8cc63 100755 --- a/Zend/tests/ns_038.phpt +++ b/Zend/tests/ns_038.phpt @@ -6,9 +6,10 @@ namespace Exception; function foo() { echo "ok\n"; } -Exception::foo(); -Exception::bar(); +\Exception\foo(); +\Exception::bar(); --EXPECTF-- ok Fatal error: Call to undefined method Exception::bar() in %sns_038.php on line 7 + diff --git a/Zend/tests/ns_040.phpt b/Zend/tests/ns_040.phpt index fb2314466c..42a3ac07e9 100644 --- a/Zend/tests/ns_040.phpt +++ b/Zend/tests/ns_040.phpt @@ -9,13 +9,13 @@ const B = A; function f1($x=A) { echo $x; } -function f2($x=X::A) { +function f2($x=\X\A) { echo $x; } -function f3($x=Y::A) { +function f3($x=Y\A) { echo $x; } -function f4($x=::X::A) { +function f4($x=\X\A) { echo $x; } function f5($x=B) { @@ -31,9 +31,9 @@ function f8($x=array(A=>"aaa\n")) { echo $x["ok\n"]; } echo A; -echo X::A; -echo Y::A; -echo ::X::A; +echo \X\A; +echo Y\A; +echo \X\A; f1(); f2(); f3(); diff --git a/Zend/tests/ns_041.phpt b/Zend/tests/ns_041.phpt index 889f3d82c9..0632fc9815 100644 --- a/Zend/tests/ns_041.phpt +++ b/Zend/tests/ns_041.phpt @@ -2,13 +2,13 @@ 041: Constants in namespace --FILE-- --FILE-- test1($foo); $foo->test2($foo); $foo->test3($ex); -$foo->test4($ex); ?> --EXPECT-- ok ok ok -ok diff --git a/Zend/tests/ns_056.phpt b/Zend/tests/ns_056.phpt index 0bc4f0087d..2390608d4e 100755 --- a/Zend/tests/ns_056.phpt +++ b/Zend/tests/ns_056.phpt @@ -4,15 +4,16 @@ --FILE-- ---EXPECT-- +--EXPECTF-- const ok func ok const ok @@ -54,3 +55,5 @@ const ok const ok class ok ok + +Fatal error: Undefined constant 'Test\ns1\unknown' in %sns_057.php on line %d \ No newline at end of file diff --git a/Zend/tests/ns_058.phpt b/Zend/tests/ns_058.phpt index 6c86f10f9d..7a0cd97d92 100755 --- a/Zend/tests/ns_058.phpt +++ b/Zend/tests/ns_058.phpt @@ -10,7 +10,7 @@ function foo() { class foo { const C = "const ok\n"; - const C2 = namespace::C; + const C2 = namespace\C; static $var = "var ok\n"; function __construct() { echo "class ok\n"; @@ -20,28 +20,29 @@ class foo { } } -function f1($x=namespace::C) { +function f1($x=namespace\C) { return $x; } -function f2($x=namespace::foo::C) { +function f2($x=namespace\foo::C) { return $x; } -function f3(namespace::foo $x) { +function f3(namespace\foo $x) { return "ok\n"; } -echo namespace::C; -echo namespace::foo(); -echo namespace::foo::C; -echo namespace::foo::C2; -echo namespace::foo::$var; -echo namespace::foo::bar(); -echo namespace::f1(); -echo namespace::f2(); -echo namespace::f3(new namespace::foo()); +echo namespace\C; +echo namespace\foo(); +echo namespace\foo::C; +echo namespace\foo::C2; +echo namespace\foo::$var; +echo namespace\foo::bar(); +echo namespace\f1(); +echo namespace\f2(); +echo namespace\f3(new namespace\foo()); +echo namespace\unknown; ?> ---EXPECT-- +--EXPECTF-- const ok func ok const ok @@ -52,3 +53,5 @@ const ok const ok class ok ok + +Fatal error: Undefined constant 'unknown' in %sns_058.php on line %d diff --git a/Zend/tests/ns_059.phpt b/Zend/tests/ns_059.phpt index ae96128f0b..ea66037b43 100755 --- a/Zend/tests/ns_059.phpt +++ b/Zend/tests/ns_059.phpt @@ -5,3 +5,4 @@ const C = array(); --EXPECTF-- Fatal error: Arrays are not allowed as constants in %sns_059.php on line 2 + diff --git a/Zend/tests/ns_060.phpt b/Zend/tests/ns_060.phpt index cc86d0e087..16c8024f00 100644 --- a/Zend/tests/ns_060.phpt +++ b/Zend/tests/ns_060.phpt @@ -3,21 +3,21 @@ --FILE-- a = 1; diff --git a/Zend/tests/ns_065.inc b/Zend/tests/ns_065.inc index a625a4a1b4..963a74e140 100755 --- a/Zend/tests/ns_065.inc +++ b/Zend/tests/ns_065.inc @@ -1,9 +1,9 @@ diff --git a/Zend/tests/ns_071.phpt b/Zend/tests/ns_071.phpt index f31e0cc683..1fdaec9db3 100644 --- a/Zend/tests/ns_071.phpt +++ b/Zend/tests/ns_071.phpt @@ -12,7 +12,7 @@ class bar { } new bar(null); -new bar(new stdclass); +new bar(new \stdclass); ?> --EXPECTF-- diff --git a/Zend/tests/ns_072.phpt b/Zend/tests/ns_072.phpt index aaba0ddb5f..c500bfddb7 100644 --- a/Zend/tests/ns_072.phpt +++ b/Zend/tests/ns_072.phpt @@ -22,7 +22,7 @@ class test implements foo { new bar(new test); new bar(null); -new bar(new stdclass); +new bar(new \stdclass); ?> --EXPECTF-- diff --git a/Zend/tests/ns_073.phpt b/Zend/tests/ns_073.phpt index 4f37aa58b4..bb03308d71 100644 --- a/Zend/tests/ns_073.phpt +++ b/Zend/tests/ns_073.phpt @@ -11,12 +11,9 @@ $x = function (\stdclass $x = NULL) { $x(NULL); $x(new \stdclass); -$x(new stdclass); ?> --EXPECTF-- NULL object(stdClass)#%d (0) { } -object(stdClass)#%d (0) { -} diff --git a/Zend/tests/ns_074.phpt b/Zend/tests/ns_074.phpt index 5b15e3b42f..28d8bf96b6 100644 --- a/Zend/tests/ns_074.phpt +++ b/Zend/tests/ns_074.phpt @@ -9,16 +9,16 @@ $x = function (\stdclass $x = NULL) { var_dump($x); }; -class stdclass { } +class stdclass extends \stdclass { } $x(NULL); $x(new stdclass); -$x(new stdclass); +$x(new \stdclass); ?> --EXPECTF-- NULL -object(foo\stdClass)#%d (0) { +object(foo\stdclass)#%d (0) { } -object(foo\stdClass)#%d (0) { +object(stdClass)#%d (0) { } diff --git a/Zend/tests/ns_075.phpt b/Zend/tests/ns_075.phpt new file mode 100755 index 0000000000..0156e99eb4 --- /dev/null +++ b/Zend/tests/ns_075.phpt @@ -0,0 +1,10 @@ +--TEST-- +075: Redefining compile-time constants +--FILE-- + unknown); + +echo unknown; +echo "\n"; +var_dump($a); +echo \unknown; +--EXPECTF-- +Notice: Use of undefined constant unknown - assumed 'unknown' in %sns_076.php on line %d + +Notice: Use of undefined constant unknown - assumed 'unknown' in %sns_076.php on line %d + +Notice: Use of undefined constant unknown - assumed 'unknown' in %sns_076.php on line %d +unknown +array(1) { + [u"unknown"]=> + %s(7) "unknown" +} + +Fatal error: Undefined constant 'unknown' in %sns_076.php on line %d diff --git a/Zend/tests/ns_077_1.phpt b/Zend/tests/ns_077_1.phpt new file mode 100755 index 0000000000..5a9c4b1539 --- /dev/null +++ b/Zend/tests/ns_077_1.phpt @@ -0,0 +1,13 @@ +--TEST-- +077: Unknown compile-time constants in namespace +--FILE-- + \unknown)) +{ +} + +foo(); +--EXPECTF-- +Fatal error: Undefined constant 'unknown' in %sns_077_%d.php on line %d diff --git a/Zend/tests/ns_077_2.phpt b/Zend/tests/ns_077_2.phpt new file mode 100755 index 0000000000..8c26721855 --- /dev/null +++ b/Zend/tests/ns_077_2.phpt @@ -0,0 +1,13 @@ +--TEST-- +077: Unknown compile-time constants in namespace +--FILE-- + unknown)) +{ +} + +foo(); +--EXPECTF-- +Fatal error: Undefined constant 'unknown' in %sns_077_%d.php on line %d diff --git a/Zend/tests/ns_077_3.phpt b/Zend/tests/ns_077_3.phpt new file mode 100755 index 0000000000..bdeb7924e6 --- /dev/null +++ b/Zend/tests/ns_077_3.phpt @@ -0,0 +1,13 @@ +--TEST-- +077: Unknown compile-time constants in namespace +--FILE-- + unknown)) +{ +} + +foo(); +--EXPECTF-- +Fatal error: Undefined constant 'foo\unknown' in %sns_077_%d.php on line %d diff --git a/Zend/tests/ns_077_4.phpt b/Zend/tests/ns_077_4.phpt new file mode 100755 index 0000000000..aef91fd3e6 --- /dev/null +++ b/Zend/tests/ns_077_4.phpt @@ -0,0 +1,13 @@ +--TEST-- +077: Unknown compile-time constants in namespace +--FILE-- + namespace\unknown)) +{ +} + +foo(); +--EXPECTF-- +Fatal error: Undefined constant 'foo\unknown' in %sns_077_%d.php on line %d diff --git a/Zend/tests/ns_077_5.phpt b/Zend/tests/ns_077_5.phpt new file mode 100755 index 0000000000..17afe03f4b --- /dev/null +++ b/Zend/tests/ns_077_5.phpt @@ -0,0 +1,12 @@ +--TEST-- +077: Unknown compile-time constants in namespace +--FILE-- + \unknown)) +{ +} + +foo(); +--EXPECTF-- +Fatal error: Undefined constant 'unknown' in %sns_077_%d.php on line %d diff --git a/Zend/tests/ns_077_6.phpt b/Zend/tests/ns_077_6.phpt new file mode 100755 index 0000000000..17afe03f4b --- /dev/null +++ b/Zend/tests/ns_077_6.phpt @@ -0,0 +1,12 @@ +--TEST-- +077: Unknown compile-time constants in namespace +--FILE-- + \unknown)) +{ +} + +foo(); +--EXPECTF-- +Fatal error: Undefined constant 'unknown' in %sns_077_%d.php on line %d diff --git a/Zend/tests/ns_077_7.phpt b/Zend/tests/ns_077_7.phpt new file mode 100755 index 0000000000..9bf5baf058 --- /dev/null +++ b/Zend/tests/ns_077_7.phpt @@ -0,0 +1,12 @@ +--TEST-- +077: Unknown compile-time constants in namespace +--FILE-- + namespace\unknown)) +{ +} + +foo(); +--EXPECTF-- +Fatal error: Undefined constant 'unknown' in %sns_077_%d.php on line %d diff --git a/Zend/tests/ns_077_8.phpt b/Zend/tests/ns_077_8.phpt new file mode 100755 index 0000000000..9f9240db07 --- /dev/null +++ b/Zend/tests/ns_077_8.phpt @@ -0,0 +1,12 @@ +--TEST-- +077: Unknown compile-time constants in namespace +--FILE-- + unknown)) +{ +} + +foo(); +--EXPECTF-- +Fatal error: Undefined constant 'unknown' in %sns_077_%d.php on line %d diff --git a/Zend/tests/ns_078.phpt b/Zend/tests/ns_078.phpt new file mode 100755 index 0000000000..ed6770ff47 --- /dev/null +++ b/Zend/tests/ns_078.phpt @@ -0,0 +1,33 @@ +--TEST-- +002: Import - different syntaxes +--FILE-- + +===DONE=== +--EXPECTF-- +Fatal error: Namespace declarations cannot be nested in %s on line %d diff --git a/Zend/tests/ns_080.phpt b/Zend/tests/ns_080.phpt new file mode 100644 index 0000000000..9c81c0d4c8 --- /dev/null +++ b/Zend/tests/ns_080.phpt @@ -0,0 +1,15 @@ +--TEST-- +080: bracketed namespaces and __HALT_COMPILER(); +--FILE-- + +===DONE=== +--EXPECT-- +hi \ No newline at end of file diff --git a/Zend/tests/ns_081.phpt b/Zend/tests/ns_081.phpt new file mode 100644 index 0000000000..e08a8088e0 --- /dev/null +++ b/Zend/tests/ns_081.phpt @@ -0,0 +1,23 @@ +--TEST-- +081: bracketed namespace with nested unbracketed namespace +--FILE-- + +===DONE=== +--EXPECTF-- +Fatal error: Cannot mix bracketed namespace declarations with unbracketed namespace declarations in %sns_081.php on line 9 diff --git a/Zend/tests/ns_082.phpt b/Zend/tests/ns_082.phpt new file mode 100644 index 0000000000..3220974047 --- /dev/null +++ b/Zend/tests/ns_082.phpt @@ -0,0 +1,12 @@ +--TEST-- +082: bracketed namespace with closing tag +--FILE-- + +--EXPECT-- +ok \ No newline at end of file diff --git a/Zend/tests/ns_083.phpt b/Zend/tests/ns_083.phpt new file mode 100644 index 0000000000..4b821dbf0b --- /dev/null +++ b/Zend/tests/ns_083.phpt @@ -0,0 +1,14 @@ +--TEST-- +083: bracketed namespace with junk before the ns declaration +--FILE-- + +--EXPECTF-- +Fatal error: Namespace declaration statement has to be the very first statement in the script in %s on line %d diff --git a/Zend/tests/ns_084.phpt b/Zend/tests/ns_084.phpt new file mode 100644 index 0000000000..cb1ae55e28 --- /dev/null +++ b/Zend/tests/ns_084.phpt @@ -0,0 +1,23 @@ +--TEST-- +084: unbracketed namespace with nested bracketed namespace +--FILE-- + +===DONE=== +--EXPECTF-- +Fatal error: Cannot mix bracketed namespace declarations with unbracketed namespace declarations in %sns_084.php on line 9 diff --git a/Zend/tests/ns_085.phpt b/Zend/tests/ns_085.phpt new file mode 100644 index 0000000000..377da6a8dc --- /dev/null +++ b/Zend/tests/ns_085.phpt @@ -0,0 +1,27 @@ +--TEST-- +085: bracketed namespace +--FILE-- +function_handler = NULL; if (!ce_org) { - /* Skip leading :: */ + /* Skip leading \ */ if (Z_TYPE_P(callable) == IS_UNICODE && - Z_USTRVAL_P(callable)[0] == ':' && - Z_USTRVAL_P(callable)[1] == ':' - ) { - mlen = Z_USTRLEN_P(callable) - 2; - mname.u = Z_USTRVAL_P(callable) + 2; + Z_USTRVAL_P(callable)[0] == '\\') { + mlen = Z_USTRLEN_P(callable) - 1; + mname.u = Z_USTRVAL_P(callable) + 1; lmname = zend_u_str_case_fold(IS_UNICODE, mname, mlen, 1, &lmlen); } else if (Z_TYPE_P(callable) == IS_STRING && - Z_STRVAL_P(callable)[0] == ':' && - Z_STRVAL_P(callable)[1] == ':' - ) { - mlen = Z_USTRLEN_P(callable) - 2; - mname.u = Z_USTRVAL_P(callable) + 2; + Z_STRVAL_P(callable)[0] == '\\') { + mlen = Z_USTRLEN_P(callable) - 1; + mname.u = Z_USTRVAL_P(callable) + 1; lmname = zend_u_str_case_fold(IS_STRING, mname, mlen, 1, &lmlen); } else { mlen = Z_UNILEN_P(callable); diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index ca3695f9bf..a7dd2688a4 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -165,6 +165,8 @@ void zend_init_compiler_data_structures(TSRMLS_D) /* {{{ */ zend_stack_init(&CG(labels_stack)); CG(labels) = NULL; CG(current_namespace) = NULL; + CG(in_namespace) = 0; + CG(has_bracketed_namespaces) = 0; CG(current_import) = NULL; } /* }}} */ @@ -662,10 +664,13 @@ void zend_do_assign(znode *result, znode *variable, const znode *value TSRMLS_DC last_op->result.u.var == variable->u.var) { if (last_op->opcode == ZEND_FETCH_OBJ_W) { if (n > 0) { + int opline_no = (opline-CG(active_op_array)->opcodes)/sizeof(*opline); *opline = *last_op; MAKE_NOP(last_op); - last_op = opline; + /* last_op = opline; */ opline = get_next_op(CG(active_op_array) TSRMLS_CC); + /* get_next_op can realloc, we need to move last_op */ + last_op = &CG(active_op_array)->opcodes[opline_no]; } last_op->opcode = ZEND_ASSIGN_OBJ; zend_do_op_data(opline, value TSRMLS_CC); @@ -674,10 +679,13 @@ void zend_do_assign(znode *result, znode *variable, const znode *value TSRMLS_DC return; } else if (last_op->opcode == ZEND_FETCH_DIM_W) { if (n > 0) { + int opline_no = (opline-CG(active_op_array)->opcodes)/sizeof(*opline); *opline = *last_op; MAKE_NOP(last_op); - last_op = opline; + /* last_op = opline; */ opline = get_next_op(CG(active_op_array) TSRMLS_CC); + /* get_next_op can realloc, we need to move last_op */ + last_op = &CG(active_op_array)->opcodes[opline_no]; } last_op->opcode = ZEND_ASSIGN_DIM; zend_do_op_data(opline, value TSRMLS_CC); @@ -1308,17 +1316,17 @@ void zend_do_begin_function_declaration(znode *function_token, znode *function_n zstr short_class_lcname; if (UG(unicode)) { - if ((short_class_name.u = u_memrchr(CG(active_class_entry)->name.u, ':', CG(active_class_entry)->name_length))) { + if ((short_class_name.u = u_memrchr(CG(active_class_entry)->name.u, '\\', CG(active_class_entry)->name_length))) { + short_class_name_length = CG(active_class_entry)->name_length - (short_class_name.u - CG(active_class_entry)->name.u) - 1; short_class_name.u++; - short_class_name_length = CG(active_class_entry)->name_length - (short_class_name.u - CG(active_class_entry)->name.u); } else { short_class_name = CG(active_class_entry)->name; short_class_name_length = CG(active_class_entry)->name_length; } } else { - if ((short_class_name.s = zend_memrchr(CG(active_class_entry)->name.s, ':', CG(active_class_entry)->name_length))) { + if ((short_class_name.s = zend_memrchr(CG(active_class_entry)->name.s, '\\', CG(active_class_entry)->name_length))) { + short_class_name_length = CG(active_class_entry)->name_length - (short_class_name.s - CG(active_class_entry)->name.s) - 1; short_class_name.s++; - short_class_name_length = CG(active_class_entry)->name_length - (short_class_name.s - CG(active_class_entry)->name.s); } else { short_class_name = CG(active_class_entry)->name; short_class_name_length = CG(active_class_entry)->name_length; @@ -1637,29 +1645,30 @@ int zend_do_begin_function_call(znode *function_name, zend_bool check_namespace zend_function *function; unsigned int lcname_len; zstr lcname; - int prefix_len = 0; + zstr is_compound; + + if(Z_TYPE(function_name->u.constant) == IS_UNICODE) { + is_compound.u = u_memchr(Z_USTRVAL(function_name->u.constant), '\\', Z_USTRLEN(function_name->u.constant)); + } else { + is_compound.s = memchr(Z_STRVAL(function_name->u.constant), '\\', Z_STRLEN(function_name->u.constant)); + } + + zend_resolve_non_class_name(function_name, check_namespace TSRMLS_CC); - if (check_namespace && CG(current_namespace)) { + if (check_namespace && CG(current_namespace) && !is_compound.v) { /* We assume we call function from the current namespace if it is not prefixed. */ - znode tmp; - - tmp.op_type = IS_CONST; - tmp.u.constant = *CG(current_namespace); - zval_copy_ctor(&tmp.u.constant); - zend_do_build_namespace_name(&tmp, &tmp, function_name TSRMLS_CC); - *function_name = tmp; - /* In run-time PHP will check for function with full name and internal function with short name */ - prefix_len = Z_UNILEN_P(CG(current_namespace)) + 2; + zend_do_begin_dynamic_function_call(function_name, 1 TSRMLS_CC); + return 1; } lcname = zend_u_str_case_fold(Z_TYPE(function_name->u.constant), Z_UNIVAL(function_name->u.constant), Z_UNILEN(function_name->u.constant), 0, &lcname_len); if ((zend_u_hash_find(CG(function_table), Z_TYPE(function_name->u.constant), lcname, lcname_len+1, (void **) &function)==FAILURE) || ((CG(compiler_options) & ZEND_COMPILE_IGNORE_INTERNAL_FUNCTIONS) && (function->type == ZEND_INTERNAL_FUNCTION))) { - zend_do_begin_dynamic_function_call(function_name, prefix_len TSRMLS_CC); + zend_do_begin_dynamic_function_call(function_name, 0 TSRMLS_CC); efree(lcname.v); return 1; /* Dynamic */ } @@ -1739,39 +1748,52 @@ void zend_do_clone(znode *result, const znode *expr TSRMLS_DC) /* {{{ */ } /* }}} */ -void zend_do_begin_dynamic_function_call(znode *function_name, int prefix_len TSRMLS_DC) /* {{{ */ +void zend_do_begin_dynamic_function_call(znode *function_name, int ns_call TSRMLS_DC) /* {{{ */ { unsigned char *ptr = NULL; unsigned int len; - zend_op *opline; + zend_op *opline, *opline2; opline = get_next_op(CG(active_op_array) TSRMLS_CC); - if (prefix_len) { + if (ns_call) { + zstr slash; + unsigned int prefix_len, name_len; + int type; /* In run-time PHP will check for function with full name and internal function with short name */ opline->opcode = ZEND_INIT_NS_FCALL_BY_NAME; opline->op2 = *function_name; opline->extended_value = 0; opline->op1.op_type = IS_CONST; - Z_TYPE(opline->op1.u.constant) = Z_TYPE(opline->op2.u.constant); + type = Z_TYPE(opline->op1.u.constant) = Z_TYPE(opline->op2.u.constant); Z_UNIVAL(opline->op1.u.constant) = zend_u_str_case_fold(Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant), Z_UNILEN(opline->op2.u.constant), 0, &len); Z_UNILEN(opline->op1.u.constant) = len; opline->extended_value = zend_u_hash_func(Z_TYPE(opline->op1.u.constant), Z_UNIVAL(opline->op1.u.constant), Z_UNILEN(opline->op1.u.constant) + 1); - opline = get_next_op(CG(active_op_array) TSRMLS_CC); - opline->opcode = ZEND_OP_DATA; - opline->op1.op_type = IS_CONST; - if (Z_TYPE(function_name->u.constant) == IS_UNICODE) { - Z_TYPE(opline->op1.u.constant) = IS_UNICODE; - Z_UNIVAL(opline->op1.u.constant) = zend_u_str_case_fold(IS_UNICODE, ZSTR(Z_USTRVAL(function_name->u.constant) + prefix_len), Z_USTRLEN(function_name->u.constant) - prefix_len, 0, &len); - Z_UNILEN(opline->op1.u.constant) = len; + if(Z_TYPE(opline->op1.u.constant) == IS_UNICODE) { + slash.u = u_memrchr(Z_USTRVAL(opline->op1.u.constant), '\\', Z_USTRLEN(opline->op1.u.constant)); + if(!slash.u) { + zend_error(E_CORE_ERROR, "Namespaced name %R should contain slash", Z_UNIVAL(opline->op1.u.constant)); + } + slash.u++; + prefix_len = slash.u-Z_USTRVAL(opline->op1.u.constant); + name_len = Z_USTRLEN(opline->op1.u.constant)-prefix_len; } else { - Z_TYPE(opline->op1.u.constant) = IS_STRING; - Z_STRLEN(opline->op1.u.constant) = Z_STRLEN(function_name->u.constant) - prefix_len; - Z_STRVAL(opline->op1.u.constant) = zend_str_tolower_dup(Z_STRVAL(function_name->u.constant) + prefix_len, Z_STRLEN(opline->op1.u.constant)); - } - opline->extended_value = zend_u_hash_func(Z_TYPE(opline->op1.u.constant), Z_UNIVAL(opline->op1.u.constant), Z_UNILEN(opline->op1.u.constant) + 1); - SET_UNUSED(opline->op2); + slash.s = zend_memrchr(Z_STRVAL(opline->op1.u.constant), '\\', Z_STRLEN(opline->op1.u.constant)); + if(!slash.s) { + zend_error(E_CORE_ERROR, "Namespaced name %R should contain slash", Z_UNIVAL(opline->op1.u.constant)); + } + slash.s++; + prefix_len = slash.s-Z_STRVAL(opline->op1.u.constant); + name_len = Z_STRLEN(opline->op1.u.constant)-prefix_len; + } + opline2 = get_next_op(CG(active_op_array) TSRMLS_CC); + opline2->opcode = ZEND_OP_DATA; + opline2->op1.op_type = IS_CONST; + /* this is the length of namespace prefix */ + Z_LVAL(opline2->op1.u.constant) = prefix_len; + /* this is the hash of the non-prefixed part, lowercased */ + opline2->extended_value = zend_u_hash_func(type, slash, name_len+1); } else { opline->opcode = ZEND_INIT_FCALL_BY_NAME; opline->op2 = *function_name; @@ -1792,6 +1814,74 @@ void zend_do_begin_dynamic_function_call(znode *function_name, int prefix_len TS } /* }}} */ +void zend_resolve_non_class_name(znode *element_name, zend_bool check_namespace TSRMLS_DC) +{ + znode tmp; + int len; + zval **ns; + zstr lcname; + zstr compound; + unsigned int lcname_len; + + if (Z_TYPE(element_name->u.constant) == IS_UNICODE) { + compound.u = u_memchr(Z_USTRVAL(element_name->u.constant), '\\', Z_USTRLEN(element_name->u.constant)); + } else { + compound.s = memchr(Z_STRVAL(element_name->u.constant), '\\', Z_STRLEN(element_name->u.constant)); + } + + if (Z_TYPE(element_name->u.constant) == IS_UNICODE && Z_USTRVAL(element_name->u.constant)[0] == '\\') { + /* name starts with \ so it is known and unambiguos, nothing to do here but shorten it */ + memmove(Z_USTRVAL(element_name->u.constant), Z_USTRVAL(element_name->u.constant)+1, UBYTES(Z_USTRLEN(element_name->u.constant))); + --Z_USTRLEN(element_name->u.constant); + return; + } else if (Z_TYPE(element_name->u.constant) == IS_STRING && Z_STRVAL(element_name->u.constant)[0] == '\\') { + /* name starts with \ so it is known and unambiguos, nothing to do here but shorten it */ + memmove(Z_STRVAL(element_name->u.constant), Z_STRVAL(element_name->u.constant)+1, Z_STRLEN(element_name->u.constant)); + --Z_STRLEN(element_name->u.constant); + return; + } + + if(!check_namespace) { + return; + } + + if (compound.v != NULL && CG(current_import)) { + if (Z_TYPE(element_name->u.constant) == IS_UNICODE) { + len = compound.u - Z_USTRVAL(element_name->u.constant); + } else { + len = compound.s - Z_STRVAL(element_name->u.constant); + } + lcname = zend_u_str_case_fold(Z_TYPE(element_name->u.constant), Z_UNIVAL(element_name->u.constant), len , 0, &lcname_len); + /* Check if first part of compound name is an import name */ + if (zend_u_hash_find(CG(current_import), Z_TYPE(element_name->u.constant), lcname, lcname_len+1, (void**)&ns) == SUCCESS) { + /* Substitute import name */ + tmp.op_type = IS_CONST; + tmp.u.constant = **ns; + zval_copy_ctor(&tmp.u.constant); + len += 1; + Z_UNILEN(element_name->u.constant) -= len; + if (Z_TYPE(element_name->u.constant) == IS_UNICODE) { + memmove(Z_USTRVAL(element_name->u.constant), Z_USTRVAL(element_name->u.constant)+len, UBYTES(Z_USTRLEN(element_name->u.constant)+1)); + } else { + memmove(Z_STRVAL(element_name->u.constant), Z_STRVAL(element_name->u.constant)+len, Z_STRLEN(element_name->u.constant)+1); + } + zend_do_build_namespace_name(&tmp, &tmp, element_name TSRMLS_CC); + *element_name = tmp; + efree(lcname.v); + return; + } + efree(lcname.v); + } + + if (CG(current_namespace)) { + tmp.op_type = IS_CONST; + tmp.u.constant = *CG(current_namespace); + zval_copy_ctor(&tmp.u.constant); + zend_do_build_namespace_name(&tmp, &tmp, element_name TSRMLS_CC); + *element_name = tmp; + } +} + void zend_resolve_class_name(znode *class_name, ulong *fetch_type, int check_ns_name TSRMLS_DC) /* {{{ */ { zstr compound; @@ -1802,62 +1892,74 @@ void zend_resolve_class_name(znode *class_name, ulong *fetch_type, int check_ns_ int len; if (Z_TYPE(class_name->u.constant) == IS_UNICODE) { - compound.u = u_memchr(Z_USTRVAL(class_name->u.constant), ':', Z_USTRLEN(class_name->u.constant)); + compound.u = u_memchr(Z_USTRVAL(class_name->u.constant), '\\', Z_USTRLEN(class_name->u.constant)); } else { - compound.s = memchr(Z_STRVAL(class_name->u.constant), ':', Z_STRLEN(class_name->u.constant)); + compound.s = memchr(Z_STRVAL(class_name->u.constant), '\\', Z_STRLEN(class_name->u.constant)); } if (compound.v) { /* This is a compound class name that cotains namespace prefix */ if (Z_TYPE(class_name->u.constant) == IS_UNICODE && - Z_USTRVAL(class_name->u.constant)[0] == ':') { - /* The unicode name has "::" prefix */ - Z_USTRLEN(class_name->u.constant) -= 2; - memmove(Z_USTRVAL(class_name->u.constant), Z_USTRVAL(class_name->u.constant)+2, UBYTES(Z_USTRLEN(class_name->u.constant)+1)); + Z_USTRVAL(class_name->u.constant)[0] == '\\') { + /* The unicode name has \ prefix */ + Z_USTRLEN(class_name->u.constant) -= 1; + memmove(Z_USTRVAL(class_name->u.constant), Z_USTRVAL(class_name->u.constant)+1, UBYTES(Z_USTRLEN(class_name->u.constant)+1)); Z_USTRVAL(class_name->u.constant) = eurealloc( Z_USTRVAL(class_name->u.constant), Z_USTRLEN(class_name->u.constant) + 1); if (ZEND_FETCH_CLASS_DEFAULT != zend_get_class_fetch_type(Z_TYPE(class_name->u.constant), Z_UNIVAL(class_name->u.constant), Z_UNILEN(class_name->u.constant))) { - zend_error(E_COMPILE_ERROR, "'::%R' is a wrong class name", Z_TYPE(class_name->u.constant), Z_UNIVAL(class_name->u.constant)); + zend_error(E_COMPILE_ERROR, "'\\%R' is an invalid class name", Z_TYPE(class_name->u.constant), Z_UNIVAL(class_name->u.constant)); } } else if (Z_TYPE(class_name->u.constant) == IS_STRING && - Z_STRVAL(class_name->u.constant)[0] == ':') { - /* The STRING name has "::" prefix */ - Z_STRLEN(class_name->u.constant) -= 2; - memmove(Z_STRVAL(class_name->u.constant), Z_STRVAL(class_name->u.constant)+2, Z_STRLEN(class_name->u.constant)+1); + Z_STRVAL(class_name->u.constant)[0] == '\\') { + /* The STRING name has \ prefix */ + Z_STRLEN(class_name->u.constant) -= 1; + memmove(Z_STRVAL(class_name->u.constant), Z_STRVAL(class_name->u.constant)+1, Z_STRLEN(class_name->u.constant)+1); Z_STRVAL(class_name->u.constant) = erealloc( Z_STRVAL(class_name->u.constant), Z_STRLEN(class_name->u.constant) + 1); if (ZEND_FETCH_CLASS_DEFAULT != zend_get_class_fetch_type(Z_TYPE(class_name->u.constant), Z_UNIVAL(class_name->u.constant), Z_UNILEN(class_name->u.constant))) { - zend_error(E_COMPILE_ERROR, "'::%R' is a wrong class name", Z_TYPE(class_name->u.constant), Z_UNIVAL(class_name->u.constant)); + zend_error(E_COMPILE_ERROR, "'\\%R' is an invalid class name", Z_TYPE(class_name->u.constant), Z_UNIVAL(class_name->u.constant)); } - } else if (CG(current_import)) { - if (Z_TYPE(class_name->u.constant) == IS_UNICODE) { - len = compound.u - Z_USTRVAL(class_name->u.constant); + } else { + if (CG(current_import)) { + if (Z_TYPE(class_name->u.constant) == IS_UNICODE) { + len = compound.u - Z_USTRVAL(class_name->u.constant); + } else { + len = compound.s - Z_STRVAL(class_name->u.constant); + } lcname = zend_u_str_case_fold(Z_TYPE(class_name->u.constant), Z_UNIVAL(class_name->u.constant), len, 0, &lcname_len); - } else { - len = compound.s - Z_STRVAL(class_name->u.constant); - lcname = zend_u_str_case_fold(Z_TYPE(class_name->u.constant), Z_UNIVAL(class_name->u.constant), len , 0, &lcname_len); + /* Check if first part of compound name is an import name */ + if (zend_u_hash_find(CG(current_import), Z_TYPE(class_name->u.constant), lcname, lcname_len+1, (void**)&ns) == SUCCESS) { + /* Substitute import name */ + tmp.op_type = IS_CONST; + tmp.u.constant = **ns; + zval_copy_ctor(&tmp.u.constant); + len += 1; + Z_UNILEN(class_name->u.constant) -= len; + if (Z_TYPE(class_name->u.constant) == IS_UNICODE) { + memmove(Z_USTRVAL(class_name->u.constant), Z_USTRVAL(class_name->u.constant)+len, UBYTES(Z_USTRLEN(class_name->u.constant)+1)); + } else { + memmove(Z_STRVAL(class_name->u.constant), Z_STRVAL(class_name->u.constant)+len, Z_STRLEN(class_name->u.constant)+1); + } + zend_do_build_namespace_name(&tmp, &tmp, class_name TSRMLS_CC); + *class_name = tmp; + efree(lcname.v); + return; + } + efree(lcname.v); } - /* Check if first part of compound name is an import name */ - if (zend_u_hash_find(CG(current_import), Z_TYPE(class_name->u.constant), lcname, lcname_len+1, (void**)&ns) == SUCCESS) { - /* Substitute import name */ + + /* Here name is not prefixed with \ and not imported */ + if (CG(current_namespace)) { tmp.op_type = IS_CONST; - tmp.u.constant = **ns; + tmp.u.constant = *CG(current_namespace); zval_copy_ctor(&tmp.u.constant); - len += 2; - Z_UNILEN(class_name->u.constant) -= len; - if (Z_TYPE(class_name->u.constant) == IS_UNICODE) { - memmove(Z_USTRVAL(class_name->u.constant), Z_USTRVAL(class_name->u.constant)+len, UBYTES(Z_USTRLEN(class_name->u.constant)+1)); - } else { - memmove(Z_STRVAL(class_name->u.constant), Z_STRVAL(class_name->u.constant)+len, Z_STRLEN(class_name->u.constant)+1); - } zend_do_build_namespace_name(&tmp, &tmp, class_name TSRMLS_CC); *class_name = tmp; } - efree(lcname.v); } } else if (CG(current_import) || CG(current_namespace)) { - /* this is a plain name (without ::) */ + /* this is a plain name (without \) */ lcname = zend_u_str_case_fold(Z_TYPE(class_name->u.constant), Z_UNIVAL(class_name->u.constant), Z_UNILEN(class_name->u.constant), 0, &lcname_len); if (CG(current_import) && @@ -1867,23 +1969,6 @@ void zend_resolve_class_name(znode *class_name, ulong *fetch_type, int check_ns_ class_name->u.constant = **ns; zval_copy_ctor(&class_name->u.constant); } else if (CG(current_namespace)) { - zend_class_entry **pce; - - if (check_ns_name) { - /* PHP will need to perform additional cheks at run-time to - determine if we assume namespace or class name. */ - *fetch_type |= ZEND_FETCH_CLASS_RT_NS_NAME; - } - - if ((CG(compiler_options) & ZEND_COMPILE_IGNORE_INTERNAL_CLASSES) || - (zend_u_hash_find(CG(class_table), Z_TYPE(class_name->u.constant), lcname, lcname_len+1, (void**)&pce) == SUCCESS && - (*pce)->type == ZEND_INTERNAL_CLASS)) { - /* There is an internal class with the same name exists. - PHP will need to perform additional cheks at run-time to - determine if we assume class in current namespace or - internal one. */ - *fetch_type |= ZEND_FETCH_CLASS_RT_NS_CHECK; - } tmp.op_type = IS_CONST; tmp.u.constant = *CG(current_namespace); zval_copy_ctor(&tmp.u.constant); @@ -1944,7 +2029,7 @@ void zend_do_fetch_class(znode *result, znode *class_name TSRMLS_DC) /* {{{ */ } /* }}} */ -void zend_do_build_full_name(znode *result, znode *prefix, znode *name TSRMLS_DC) /* {{{ */ +void zend_do_build_full_name(znode *result, znode *prefix, znode *name, int is_class_member TSRMLS_DC) /* {{{ */ { zend_uint length; @@ -1954,20 +2039,36 @@ void zend_do_build_full_name(znode *result, znode *prefix, znode *name TSRMLS_DC *result = *prefix; } - length = sizeof("::")-1 + Z_UNILEN(result->u.constant) + Z_UNILEN(name->u.constant); - if (Z_TYPE(result->u.constant) == IS_UNICODE) { - Z_USTRVAL(result->u.constant) = erealloc(Z_USTRVAL(result->u.constant), UBYTES(length+1)); - Z_USTRVAL(result->u.constant)[Z_USTRLEN(result->u.constant)] = ':'; - Z_USTRVAL(result->u.constant)[Z_USTRLEN(result->u.constant)+1] = ':'; - memcpy(&Z_USTRVAL(result->u.constant)[Z_USTRLEN(result->u.constant) + sizeof("::")-1], Z_STRVAL(name->u.constant), UBYTES(Z_USTRLEN(name->u.constant)+1)); - STR_FREE(Z_USTRVAL(name->u.constant)); + if(is_class_member) { + length = sizeof("::")-1 + Z_UNILEN(result->u.constant) + Z_UNILEN(name->u.constant); + if (Z_TYPE(result->u.constant) == IS_UNICODE) { + Z_USTRVAL(result->u.constant) = erealloc(Z_USTRVAL(result->u.constant), UBYTES(length+1)); + Z_USTRVAL(result->u.constant)[Z_USTRLEN(result->u.constant)] = ':'; + Z_USTRVAL(result->u.constant)[Z_USTRLEN(result->u.constant)+1] = ':'; + memcpy(&Z_USTRVAL(result->u.constant)[Z_USTRLEN(result->u.constant) + sizeof("::")-1], Z_STRVAL(name->u.constant), UBYTES(Z_USTRLEN(name->u.constant)+1)); + STR_FREE(Z_USTRVAL(name->u.constant)); + } else { + Z_STRVAL(result->u.constant) = erealloc(Z_STRVAL(result->u.constant), length+1); + memcpy(&Z_STRVAL(result->u.constant)[Z_STRLEN(result->u.constant)], "::", sizeof("::")-1); + memcpy(&Z_STRVAL(result->u.constant)[Z_STRLEN(result->u.constant) + sizeof("::")-1], Z_STRVAL(name->u.constant), Z_STRLEN(name->u.constant)+1); + STR_FREE(Z_STRVAL(name->u.constant)); + } + Z_UNILEN(result->u.constant) = length; } else { - Z_STRVAL(result->u.constant) = erealloc(Z_STRVAL(result->u.constant), length+1); - memcpy(&Z_STRVAL(result->u.constant)[Z_STRLEN(result->u.constant)], "::", sizeof("::")-1); - memcpy(&Z_STRVAL(result->u.constant)[Z_STRLEN(result->u.constant) + sizeof("::")-1], Z_STRVAL(name->u.constant), Z_STRLEN(name->u.constant)+1); - STR_FREE(Z_STRVAL(name->u.constant)); + length = sizeof("\\")-1 + Z_UNILEN(result->u.constant) + Z_UNILEN(name->u.constant); + if (Z_TYPE(result->u.constant) == IS_UNICODE) { + Z_USTRVAL(result->u.constant) = erealloc(Z_USTRVAL(result->u.constant), UBYTES(length+1)); + Z_USTRVAL(result->u.constant)[Z_USTRLEN(result->u.constant)] = '\\'; + memcpy(&Z_USTRVAL(result->u.constant)[Z_USTRLEN(result->u.constant) + sizeof("\\")-1], Z_USTRVAL(name->u.constant), UBYTES(Z_USTRLEN(name->u.constant)+1)); + STR_FREE(Z_USTRVAL(name->u.constant)); + } else { + Z_STRVAL(result->u.constant) = erealloc(Z_STRVAL(result->u.constant), length+1); + memcpy(&Z_STRVAL(result->u.constant)[Z_STRLEN(result->u.constant)], "\\", sizeof("\\")-1); + memcpy(&Z_STRVAL(result->u.constant)[Z_STRLEN(result->u.constant) + sizeof("\\")-1], Z_STRVAL(name->u.constant), Z_STRLEN(name->u.constant)+1); + STR_FREE(Z_STRVAL(name->u.constant)); + } + Z_UNILEN(result->u.constant) = length; } - Z_UNILEN(result->u.constant) = length; } /* }}} */ @@ -1978,23 +2079,6 @@ int zend_do_begin_class_member_function_call(znode *class_name, znode *method_na zend_op *opline; ulong fetch_type = 0; - if (class_name->op_type == IS_CONST && - Z_TYPE(class_name->u.constant) == ZEND_STR_TYPE && - Z_UNILEN(class_name->u.constant) == 0) { - /* namespace::func() not in namespace */ - zval_dtor(&class_name->u.constant); - if (CG(current_namespace)) { - znode tmp; - - tmp.op_type = IS_CONST; - tmp.u.constant = *CG(current_namespace); - zval_copy_ctor(&tmp.u.constant); - zend_do_build_namespace_name(&tmp, &tmp, method_name TSRMLS_CC); - *method_name = tmp; - } - return zend_do_begin_function_call(method_name, 0 TSRMLS_CC); - } - if (method_name->op_type == IS_CONST) { zstr lcname; unsigned int lcname_len; @@ -2020,13 +2104,12 @@ int zend_do_begin_class_member_function_call(znode *class_name, znode *method_na } opline = get_next_op(CG(active_op_array) TSRMLS_CC); opline->opcode = ZEND_INIT_STATIC_METHOD_CALL; - opline->extended_value = fetch_type & ~ZEND_FETCH_CLASS_RT_NS_NAME; opline->op1 = class_node; opline->op2 = *method_name; if (class_node.op_type == IS_CONST && method_name->op_type == IS_CONST) { - /* Prebuild ns::func name to speedup run-time check. + /* Prebuild ns\func name to speedup run-time check. The additional names are stored in additional OP_DATA opcode. */ zstr nsname, fname, lcname; unsigned int nsname_len, len, lcname_len; @@ -2038,23 +2121,12 @@ int zend_do_begin_class_member_function_call(znode *class_name, znode *method_na nsname = Z_UNIVAL(class_node.u.constant); nsname_len = Z_UNILEN(class_node.u.constant); - if (fetch_type & ZEND_FETCH_CLASS_RT_NS_NAME) { - /* Remove namespace name */ - if (UG(unicode)) { - nsname.u = u_memchr(nsname.u, ':', nsname_len) + 2; - nsname_len -= (nsname.u - Z_USTRVAL(class_node.u.constant)); - } else { - nsname.s = (char *)memchr(nsname.s, ':', nsname_len) + 2; - nsname_len -= (nsname.s - Z_STRVAL(class_node.u.constant)); - } - } - len = nsname_len + 2 + Z_UNILEN(method_name->u.constant); + len = nsname_len + 1 + Z_UNILEN(method_name->u.constant); if (UG(unicode)) { fname.u = eumalloc(len + 1); memcpy(fname.u, nsname.u, UBYTES(nsname_len)); - fname.u[nsname_len] = ':'; - fname.u[nsname_len + 1] = ':'; - memcpy(fname.u + nsname_len + 2, + fname.u[nsname_len] = '\\'; + memcpy(fname.u + nsname_len + 1, Z_USTRVAL(method_name->u.constant), UBYTES(Z_USTRLEN(method_name->u.constant)+1)); lcname = zend_u_str_case_fold(IS_UNICODE, fname, len, 1, &lcname_len); @@ -2063,9 +2135,8 @@ int zend_do_begin_class_member_function_call(znode *class_name, znode *method_na } else { fname.s = emalloc(len + 1); memcpy(fname.s, nsname.s, nsname_len); - fname.s[nsname_len] = ':'; - fname.s[nsname_len + 1] = ':'; - memcpy(fname.s + nsname_len + 2, + fname.s[nsname_len] = '\\'; + memcpy(fname.s + nsname_len + 1, Z_STRVAL(method_name->u.constant), Z_STRLEN(method_name->u.constant)+1); lcname = zend_u_str_case_fold(IS_STRING, fname, len, 1, &lcname_len); @@ -3524,13 +3595,7 @@ void zend_do_begin_class_declaration(const znode *class_token, znode *class_name opline->opcode = ZEND_DECLARE_CLASS; } - if (Z_TYPE(opline->op2.u.constant) == IS_UNICODE) { - Z_USTRVAL(opline->op2.u.constant) = lcname.u; - Z_USTRLEN(opline->op2.u.constant) = lcname_len; - } else { - Z_STRVAL(opline->op2.u.constant) = lcname.s; - Z_STRLEN(opline->op2.u.constant) = lcname_len; - } + ZVAL_ZSTRL(&opline->op2.u.constant, Z_TYPE(opline->op2.u.constant), lcname, lcname_len, 0); zend_u_hash_update(CG(class_table), Z_TYPE(opline->op1.u.constant), Z_UNIVAL(opline->op1.u.constant), Z_UNILEN(opline->op1.u.constant), &new_class_entry, sizeof(zend_class_entry *), NULL); CG(active_class_entry) = new_class_entry; @@ -3974,10 +4039,31 @@ void zend_do_end_new_object(znode *result, const znode *new_token, const znode * static zend_constant* zend_get_ct_const(const zval *const_name, int all_internal_constants_substitution TSRMLS_DC) /* {{{ */ { zend_constant *c = NULL; - - if (zend_u_hash_find(EG(zend_constants), Z_TYPE_P(const_name), Z_UNIVAL_P(const_name), Z_UNILEN_P(const_name)+1, (void **) &c) == FAILURE) { + zstr lookup_name; + + lookup_name.v = NULL; + if(Z_TYPE_P(const_name) == IS_UNICODE && Z_USTRVAL_P(const_name)[0] == '\\') { + lookup_name.u = Z_USTRVAL_P(const_name)+1; + } else if(Z_TYPE_P(const_name) == IS_STRING && Z_STRVAL_P(const_name)[0] == '\\') { + lookup_name.s = Z_STRVAL_P(const_name)+1; + } + if(lookup_name.v != NULL) { + if (zend_u_hash_find(EG(zend_constants), Z_TYPE_P(const_name), lookup_name, Z_UNILEN_P(const_name), (void **) &c) == FAILURE) { + unsigned int lookup_name_len; + lookup_name = zend_u_str_case_fold(Z_TYPE_P(const_name), lookup_name, Z_UNILEN_P(const_name)-1, 1, &lookup_name_len); + + if (zend_u_hash_find(EG(zend_constants), Z_TYPE_P(const_name), lookup_name, lookup_name_len+1, (void **) &c)==SUCCESS) { + if ((c->flags & CONST_CT_SUBST) && !(c->flags & CONST_CS)) { + efree(lookup_name.v); + return c; + } + } + efree(lookup_name.v); + return NULL; + } + } else if (zend_u_hash_find(EG(zend_constants), Z_TYPE_P(const_name), Z_UNIVAL_P(const_name), Z_UNILEN_P(const_name)+1, (void **) &c) == FAILURE) { unsigned int lookup_name_len; - zstr lookup_name = zend_u_str_case_fold(Z_TYPE_P(const_name), Z_UNIVAL_P(const_name), Z_UNILEN_P(const_name), 1, &lookup_name_len); + lookup_name = zend_u_str_case_fold(Z_TYPE_P(const_name), Z_UNIVAL_P(const_name), Z_UNILEN_P(const_name), 1, &lookup_name_len); if (zend_u_hash_find(EG(zend_constants), Z_TYPE_P(const_name), lookup_name, lookup_name_len+1, (void **) &c)==SUCCESS) { if ((c->flags & CONST_CT_SUBST) && !(c->flags & CONST_CS)) { @@ -3997,7 +4083,7 @@ static zend_constant* zend_get_ct_const(const zval *const_name, int all_internal Z_TYPE(c->value) != IS_CONSTANT && Z_TYPE(c->value) != IS_CONSTANT_ARRAY) { return c; - } + } return NULL; } /* }}} */ @@ -4022,126 +4108,97 @@ void zend_do_fetch_constant(znode *result, znode *constant_container, znode *con { ulong fetch_type = 0; znode tmp; + zend_op *opline; + int type; + zstr compound; - if (constant_container && - constant_container->op_type == IS_CONST && - Z_TYPE(constant_container->u.constant) == ZEND_STR_TYPE && - Z_UNILEN(constant_container->u.constant) == 0) { - /* namespace::const */ - zval_dtor(&constant_container->u.constant); - check_namespace = 1; - constant_container = NULL; - fetch_type = ZEND_FETCH_CLASS_RT_NS_CHECK | IS_CONSTANT_RT_NS_CHECK; - } - - switch (mode) { - case ZEND_CT: - if (constant_container) { - int type = zend_get_class_fetch_type(Z_TYPE(constant_container->u.constant), Z_UNIVAL(constant_container->u.constant), Z_UNILEN(constant_container->u.constant)); + if (constant_container) { + switch (mode) { + case ZEND_CT: + type = zend_get_class_fetch_type(Z_TYPE(constant_container->u.constant), Z_UNIVAL(constant_container->u.constant), Z_UNILEN(constant_container->u.constant)); if (ZEND_FETCH_CLASS_STATIC == type) { zend_error(E_ERROR, "\"static::\" is not allowed in compile-time constants"); } else if (ZEND_FETCH_CLASS_DEFAULT == type) { zend_resolve_class_name(constant_container, &fetch_type, 1 TSRMLS_CC); } - zend_do_build_full_name(NULL, constant_container, constant_name TSRMLS_CC); + zend_do_build_full_name(NULL, constant_container, constant_name, 1 TSRMLS_CC); *result = *constant_container; result->u.constant.type = IS_CONSTANT | fetch_type; - } else if (fetch_type || !zend_constant_ct_subst(result, &constant_name->u.constant, 0 TSRMLS_CC)) { - if (check_namespace && CG(current_namespace)) { - /* We assume we use constant from the current namespace - if it is not prefixed. */ - tmp.op_type = IS_CONST; - tmp.u.constant = *CG(current_namespace); - zval_copy_ctor(&tmp.u.constant); - zend_do_build_namespace_name(&tmp, &tmp, constant_name TSRMLS_CC); - *constant_name = tmp; - fetch_type |= IS_CONSTANT_RT_NS_CHECK; - } - *result = *constant_name; - result->u.constant.type = IS_CONSTANT | fetch_type; - } - break; - case ZEND_RT: - if (constant_container || - !zend_constant_ct_subst(result, &constant_name->u.constant, (!CG(current_namespace) || !check_namespace) TSRMLS_CC)) { - zend_op *opline; - - if (constant_container) { - if (constant_container->op_type == IS_CONST && - ZEND_FETCH_CLASS_DEFAULT == zend_get_class_fetch_type(Z_TYPE(constant_container->u.constant), Z_UNIVAL(constant_container->u.constant), Z_UNILEN(constant_container->u.constant))) { - zend_resolve_class_name(constant_container, &fetch_type, 1 TSRMLS_CC); - } else { - zend_do_fetch_class(&tmp, constant_container TSRMLS_CC); - constant_container = &tmp; - } - } else if (check_namespace && CG(current_namespace)) { - /* We assume we use constant from the current namespace - if it is not prefixed. */ - tmp.op_type = IS_CONST; - tmp.u.constant = *CG(current_namespace); - zval_copy_ctor(&tmp.u.constant); + break; + case ZEND_RT: + if (constant_container->op_type == IS_CONST && + ZEND_FETCH_CLASS_DEFAULT == zend_get_class_fetch_type(Z_TYPE(constant_container->u.constant), Z_UNIVAL(constant_container->u.constant), Z_UNILEN(constant_container->u.constant))) { + zend_resolve_class_name(constant_container, &fetch_type, 1 TSRMLS_CC); + } else { + zend_do_fetch_class(&tmp, constant_container TSRMLS_CC); constant_container = &tmp; - fetch_type |= IS_CONSTANT_RT_NS_CHECK; } opline = get_next_op(CG(active_op_array) TSRMLS_CC); opline->opcode = ZEND_FETCH_CONSTANT; - opline->extended_value = fetch_type & ~ZEND_FETCH_CLASS_RT_NS_NAME; + opline->extended_value = fetch_type; opline->result.op_type = IS_TMP_VAR; opline->result.u.var = get_temporary_variable(CG(active_op_array)); - if (constant_container) { - opline->op1 = *constant_container; - } else { - SET_UNUSED(opline->op1); - } + opline->op1 = *constant_container; opline->op2 = *constant_name; *result = opline->result; + break; + } + return; + } + /* namespace constant */ + /* only one that did not contain \ from the start can be converted to string if unknown */ + switch (mode) { + case ZEND_CT: + if(Z_TYPE(constant_name->u.constant) == IS_UNICODE) { + compound.u = u_memchr(Z_USTRVAL(constant_name->u.constant), '\\', Z_USTRLEN(constant_name->u.constant)); + } else { + compound.s = memchr(Z_STRVAL(constant_name->u.constant), '\\', Z_STRLEN(constant_name->u.constant)); + } + /* this is a namespace constant, or an unprefixed constant */ - if (opline->op1.op_type == IS_CONST) { - /* Prebuild ns::func name to speedup run-time check. - The additional names are stored in additional OP_DATA opcode. */ - zstr nsname; - unsigned int nsname_len; - unsigned int len; + if (zend_constant_ct_subst(result, &constant_name->u.constant, 0 TSRMLS_CC)) { + break; + } - opline = get_next_op(CG(active_op_array) TSRMLS_CC); - opline->opcode = ZEND_OP_DATA; - opline->op1.op_type = IS_CONST; - SET_UNUSED(opline->op2); + zend_resolve_non_class_name(constant_name, check_namespace TSRMLS_CC); - nsname = Z_UNIVAL(constant_container->u.constant); - nsname_len = Z_UNILEN(constant_container->u.constant); - if (fetch_type & ZEND_FETCH_CLASS_RT_NS_NAME) { - /* Remove namespace name */ - if (Z_TYPE(constant_container->u.constant) == IS_UNICODE) { - nsname.u = u_memchr(nsname.u, ':', nsname_len) + 2; - nsname_len -= (nsname.u - Z_USTRVAL(constant_container->u.constant)); - } else { - nsname.s = (char *)memchr(nsname.s, ':', nsname_len) + 2; - nsname_len -= (nsname.s - Z_STRVAL(constant_container->u.constant)); - } - } + if(!compound.v) { + fetch_type |= IS_CONSTANT_UNQUALIFIED; + } - Z_TYPE(opline->op1.u.constant) = Z_TYPE(constant_container->u.constant); - Z_UNIVAL(opline->op1.u.constant) = zend_u_str_case_fold(Z_TYPE(constant_container->u.constant), nsname, nsname_len, 0, &len); - Z_UNILEN(opline->op1.u.constant) = len; - if (UG(unicode)) { - Z_USTRVAL(opline->op1.u.constant) = erealloc(Z_USTRVAL(opline->op1.u.constant), UBYTES(Z_USTRLEN(opline->op1.u.constant) + 2 + Z_USTRLEN(constant_name->u.constant) + 1)); - Z_USTRVAL(opline->op1.u.constant)[Z_USTRLEN(opline->op1.u.constant)] = ':'; - Z_USTRVAL(opline->op1.u.constant)[Z_USTRLEN(opline->op1.u.constant)+1] = ':'; - memcpy(Z_USTRVAL(opline->op1.u.constant)+Z_USTRLEN(opline->op1.u.constant)+2, Z_USTRVAL(constant_name->u.constant), UBYTES(Z_USTRLEN(constant_name->u.constant) + 1)); - } else { - Z_STRVAL(opline->op1.u.constant) = erealloc(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant) + 2 + Z_STRLEN(constant_name->u.constant) + 1); - Z_STRVAL(opline->op1.u.constant)[Z_STRLEN(opline->op1.u.constant)] = ':'; - Z_STRVAL(opline->op1.u.constant)[Z_STRLEN(opline->op1.u.constant)+1] = ':'; - memcpy(Z_STRVAL(opline->op1.u.constant)+Z_STRLEN(opline->op1.u.constant)+2, Z_STRVAL(constant_name->u.constant), Z_STRLEN(constant_name->u.constant) + 1); - } - Z_UNILEN(opline->op1.u.constant) += 2 + Z_UNILEN(constant_name->u.constant); - opline->extended_value = zend_u_hash_func(Z_TYPE(opline->op1.u.constant), Z_UNIVAL(opline->op1.u.constant), Z_UNILEN(opline->op1.u.constant) + 1); - } + *result = *constant_name; + result->u.constant.type = IS_CONSTANT | fetch_type; + break; + case ZEND_RT: + if(Z_TYPE(constant_name->u.constant) == IS_UNICODE) { + compound.u = u_memchr(Z_USTRVAL(constant_name->u.constant), '\\', Z_USTRLEN(constant_name->u.constant)); + } else { + compound.s = memchr(Z_STRVAL(constant_name->u.constant), '\\', Z_STRLEN(constant_name->u.constant)); + } + + zend_resolve_non_class_name(constant_name, check_namespace TSRMLS_CC); + + if(zend_constant_ct_subst(result, &constant_name->u.constant, 1 TSRMLS_CC)) { + break; } + + opline = get_next_op(CG(active_op_array) TSRMLS_CC); + opline->opcode = ZEND_FETCH_CONSTANT; + opline->result.op_type = IS_TMP_VAR; + opline->result.u.var = get_temporary_variable(CG(active_op_array)); + *result = opline->result; + SET_UNUSED(opline->op1); + if(compound.v != NULL) { + /* the name is unambiguous */ + opline->extended_value = 0; + } else { + opline->extended_value = IS_CONSTANT_UNQUALIFIED; + } + opline->op2 = *constant_name; break; } + } /* }}} */ @@ -5130,6 +5187,9 @@ again: if (LANG_SCNG(yy_text)[LANG_SCNG(yy_leng)-1] != '>') { CG(increment_lineno) = 1; } + if (CG(has_bracketed_namespaces) && !CG(in_namespace)) { + goto again; + } retval = ';'; /* implicit ; */ break; case T_OPEN_TAG_WITH_ECHO: @@ -5367,7 +5427,7 @@ void zend_do_build_namespace_name(znode *result, znode *prefix, znode *name TSRM *result = *prefix; if (Z_TYPE(result->u.constant) == ZEND_STR_TYPE && Z_UNILEN(result->u.constant) == 0) { - /* namespace:: */ + /* namespace\ */ if (CG(current_namespace)) { znode tmp; @@ -5385,16 +5445,33 @@ void zend_do_build_namespace_name(znode *result, znode *prefix, znode *name TSRM Z_UNILEN(result->u.constant) = 0; } /* prefix = result */ - zend_do_build_full_name(NULL, result, name TSRMLS_CC); + zend_do_build_full_name(NULL, result, name, 0 TSRMLS_CC); } /* }}} */ -void zend_do_namespace(const znode *name TSRMLS_DC) /* {{{ */ +void zend_do_begin_namespace(const znode *name, zend_bool with_bracket TSRMLS_DC) /* {{{ */ { unsigned int lcname_len; zstr lcname; - if (CG(active_op_array)->last > 0) { + /* handle mixed syntax declaration or nested namespaces */ + if (!CG(has_bracketed_namespaces)) { + if (CG(current_namespace)) { + /* previous namespace declarations were unbracketed */ + if (with_bracket) { + zend_error(E_COMPILE_ERROR, "Cannot mix bracketed namespace declarations with unbracketed namespace declarations"); + } + } + } else { + /* previous namespace declarations were bracketed */ + if (!with_bracket) { + zend_error(E_COMPILE_ERROR, "Cannot mix bracketed namespace declarations with unbracketed namespace declarations"); + } else if (CG(current_namespace) || CG(in_namespace)) { + zend_error(E_COMPILE_ERROR, "Namespace declarations cannot be nested"); + } + } + + if (((!with_bracket && !CG(current_namespace)) || (with_bracket && !CG(has_bracketed_namespaces))) && CG(active_op_array)->last > 0) { /* ignore ZEND_EXT_STMT and ZEND_TICKS */ int num = CG(active_op_array)->last; while (num > 0 && @@ -5402,31 +5479,43 @@ void zend_do_namespace(const znode *name TSRMLS_DC) /* {{{ */ CG(active_op_array)->opcodes[num-1].opcode == ZEND_TICKS)) { --num; } - if (!CG(current_namespace) && num > 0) { + if (num > 0) { zend_error(E_COMPILE_ERROR, "Namespace declaration statement has to be the very first statement in the script"); } } - lcname = zend_u_str_case_fold(Z_TYPE(name->u.constant), Z_UNIVAL(name->u.constant), Z_UNILEN(name->u.constant), 0, &lcname_len); - if (((lcname_len == sizeof("self")-1) && - ZEND_U_EQUAL(Z_TYPE(name->u.constant), lcname, lcname_len, "self", sizeof("self")-1)) || - ((lcname_len == sizeof("parent")-1) && - ZEND_U_EQUAL(Z_TYPE(name->u.constant), lcname, lcname_len, "parent", sizeof("parent")-1))) { - zend_error(E_COMPILE_ERROR, "Cannot use '%R' as namespace name", Z_TYPE(name->u.constant), Z_UNIVAL(name->u.constant)); + CG(in_namespace) = 1; + if (with_bracket) { + CG(has_bracketed_namespaces) = 1; } - efree(lcname.v); - if (CG(current_namespace)) { - zval_dtor(CG(current_namespace)); + if(name) { + lcname = zend_u_str_case_fold(Z_TYPE(name->u.constant), Z_UNIVAL(name->u.constant), Z_UNILEN(name->u.constant), 0, &lcname_len); + if (((lcname_len == sizeof("self")-1) && + ZEND_U_EQUAL(Z_TYPE(name->u.constant), lcname, lcname_len, "self", sizeof("self")-1)) || + ((lcname_len == sizeof("parent")-1) && + ZEND_U_EQUAL(Z_TYPE(name->u.constant), lcname, lcname_len, "parent", sizeof("parent")-1))) { + zend_error(E_COMPILE_ERROR, "Cannot use '%R' as namespace name", Z_TYPE(name->u.constant), Z_UNIVAL(name->u.constant)); + } + efree(lcname.v); + + if (CG(current_namespace)) { + zval_dtor(CG(current_namespace)); + } else { + ALLOC_ZVAL(CG(current_namespace)); + } + *CG(current_namespace) = name->u.constant; } else { - ALLOC_ZVAL(CG(current_namespace)); + if (CG(current_namespace)) { + zval_dtor(CG(current_namespace)); + FREE_ZVAL(CG(current_namespace)); + CG(current_namespace) = NULL; + } } if (CG(current_import)) { zend_hash_destroy(CG(current_import)); efree(CG(current_import)); CG(current_import) = NULL; } - - *CG(current_namespace) = name->u.constant; } /* }}} */ @@ -5448,11 +5537,11 @@ void zend_do_use(znode *ns_name, znode *new_name, int is_global TSRMLS_DC) /* {{ if (new_name) { name = &new_name->u.constant; } else { - /* The form "use A::B" is eqivalent to "use A::B as B". + /* The form "use A\B" is eqivalent to "use A\B as B". So we extract the last part of compound name to use as a new_name */ name = &tmp; if (UG(unicode)) { - UChar *p = u_memrchr(Z_USTRVAL_P(ns), ':', Z_USTRLEN_P(ns)); + UChar *p = u_memrchr(Z_USTRVAL_P(ns), '\\', Z_USTRLEN_P(ns)); if (p) { ZVAL_UNICODE(name, p+1, 1); } else { @@ -5461,7 +5550,7 @@ void zend_do_use(znode *ns_name, znode *new_name, int is_global TSRMLS_DC) /* {{ warn = !is_global; } } else { - char *p = zend_memrchr(Z_STRVAL_P(ns), ':', Z_STRLEN_P(ns)); + char *p = zend_memrchr(Z_STRVAL_P(ns), '\\', Z_STRLEN_P(ns)); if (p) { ZVAL_STRING(name, p+1, 1); } else { @@ -5487,21 +5576,19 @@ void zend_do_use(znode *ns_name, znode *new_name, int is_global TSRMLS_DC) /* {{ zstr ns_name = zend_u_str_case_fold(Z_TYPE_P(CG(current_namespace)), Z_UNIVAL_P(CG(current_namespace)), Z_UNILEN_P(CG(current_namespace)), 0, &ns_name_len); if (Z_TYPE_P(CG(current_namespace)) == IS_UNICODE) { - ns_name.u = eurealloc(ns_name.u, ns_name_len + 2 + lcname_len + 1); - ns_name.u[ns_name_len] = ':'; - ns_name.u[ns_name_len+1] = ':'; - memcpy(ns_name.u + ns_name_len + 2, lcname.u, UBYTES(lcname_len + 1)); + ns_name.u = eurealloc(ns_name.u, ns_name_len + 1 + lcname_len + 1); + ns_name.u[ns_name_len] = '\\'; + memcpy(ns_name.u + ns_name_len + 1, lcname.u, UBYTES(lcname_len + 1)); } else { - ns_name.s = erealloc(ns_name.s, ns_name_len + 2 + lcname_len + 1); - ns_name.s[ns_name_len] = ':'; - ns_name.s[ns_name_len+1] = ':'; - memcpy(ns_name.s + ns_name_len + 2, lcname.s, lcname_len + 1); + ns_name.s = erealloc(ns_name.s, ns_name_len + 1 + lcname_len + 1); + ns_name.s[ns_name_len] = '\\'; + memcpy(ns_name.s + ns_name_len + 1, lcname.s, lcname_len + 1); } - if (zend_u_hash_exists(CG(class_table), Z_TYPE_P(CG(current_namespace)), ns_name, ns_name_len + 2 + lcname_len + 1)) { + if (zend_u_hash_exists(CG(class_table), Z_TYPE_P(CG(current_namespace)), ns_name, ns_name_len + 1 + lcname_len + 1)) { unsigned int tmp_len; zstr tmp = zend_u_str_case_fold(Z_TYPE_P(ns), Z_UNIVAL_P(ns), Z_UNILEN_P(ns), 0, &tmp_len); - if (tmp_len != ns_name_len + 2 + lcname_len || + if (tmp_len != ns_name_len + 1 + lcname_len || memcmp(tmp.v, ns_name.v, UG(unicode)?UBYTES(tmp_len):tmp_len)) { zend_error(E_COMPILE_ERROR, "Cannot use %R as %R because the name is already in use", Z_TYPE_P(ns), Z_UNIVAL_P(ns), Z_TYPE_P(name), Z_UNIVAL_P(name)); } @@ -5545,7 +5632,7 @@ void zend_do_declare_constant(znode *name, znode *value TSRMLS_DC) /* {{{ */ } if (CG(current_namespace)) { - /* Prefix constant name with name of current namespace */ + /* Prefix constant name with name of current namespace, lowercased */ znode tmp; zstr lcname; uint lcname_len; @@ -5567,6 +5654,30 @@ void zend_do_declare_constant(znode *name, znode *value TSRMLS_DC) /* {{{ */ } /* }}} */ +void zend_verify_namespace(TSRMLS_D) /* {{{ */ +{ + if (CG(has_bracketed_namespaces) && !CG(in_namespace)) { + zend_error(E_COMPILE_ERROR, "No code may exist outside of namespace {}"); + } +} +/* }}} */ + +void zend_do_end_namespace(TSRMLS_D) /* {{{ */ +{ + CG(in_namespace) = 0; + if (CG(current_namespace)) { + zval_dtor(CG(current_namespace)); + FREE_ZVAL(CG(current_namespace)); + CG(current_namespace) = NULL; + } + if (CG(current_import)) { + zend_hash_destroy(CG(current_import)); + efree(CG(current_import)); + CG(current_import) = NULL; + } +} +/* }}} */ + void zend_do_end_compilation(TSRMLS_D) /* {{{ */ { if (CG(current_namespace)) { diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h index 83d9cb5bb3..3560c67e11 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -346,6 +346,7 @@ void init_compiler(TSRMLS_D); void shutdown_compiler(TSRMLS_D); void zend_init_compiler_data_structures(TSRMLS_D); +void zend_resolve_non_class_name(znode *element_name, zend_bool check_namespace TSRMLS_DC); void zend_resolve_class_name(znode *class_name, ulong *fetch_type, int check_ns_name TSRMLS_DC); extern ZEND_API zend_op_array *(*zend_compile_file)(zend_file_handle *file_handle, int type TSRMLS_DC); @@ -435,7 +436,7 @@ void zend_do_begin_method_call(znode *left_bracket TSRMLS_DC); void zend_do_clone(znode *result, const znode *expr TSRMLS_DC); void zend_do_begin_dynamic_function_call(znode *function_name, int prefix_len TSRMLS_DC); void zend_do_fetch_class(znode *result, znode *class_name TSRMLS_DC); -void zend_do_build_full_name(znode *result, znode *prefix, znode *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_return(znode *expr, int do_end_vparse TSRMLS_DC); @@ -544,7 +545,9 @@ void zend_do_abstract_method(const znode *function_name, znode *modifiers, const void zend_do_declare_constant(znode *name, znode *value TSRMLS_DC); void zend_do_build_namespace_name(znode *result, znode *prefix, znode *name TSRMLS_DC); -void zend_do_namespace(const znode *name TSRMLS_DC); +void zend_do_begin_namespace(const znode *name, zend_bool with_brackets TSRMLS_DC); +void zend_do_end_namespace(TSRMLS_D); +void zend_verify_namespace(TSRMLS_D); void zend_do_use(znode *name, znode *new_name, int is_global TSRMLS_DC); void zend_do_end_compilation(TSRMLS_D); @@ -658,9 +661,6 @@ int zendlex(znode *zendlval TSRMLS_DC); #define ZEND_FETCH_CLASS_INTERFACE 6 #define ZEND_FETCH_CLASS_STATIC 7 #define ZEND_FETCH_CLASS_MASK 0x0f -#define ZEND_FETCH_CLASS_NO_NORMALIZE 0x10 -#define ZEND_FETCH_CLASS_RT_NS_CHECK 0x20 -#define ZEND_FETCH_CLASS_RT_NS_NAME 0x40 #define ZEND_FETCH_CLASS_NO_AUTOLOAD 0x80 #define ZEND_FETCH_CLASS_SILENT 0x0100 diff --git a/Zend/zend_constants.c b/Zend/zend_constants.c index a617adcc7c..aaa42437fd 100644 --- a/Zend/zend_constants.c +++ b/Zend/zend_constants.c @@ -322,30 +322,26 @@ ZEND_API int zend_u_get_constant_ex(zend_uchar type, zstr name, uint name_len, z zend_constant *c; int retval = 1; zstr colon; + zend_class_entry *ce = NULL; + zval **ret_constant; - /* Skip leading :: */ + /* Skip leading \ */ if (type == IS_UNICODE && - name.u[0] == ':' && - name.u[1] == ':') { - name.u += 2; - name_len -= 2; - flags &= ZEND_FETCH_CLASS_SILENT; + name.u[0] == '\\') { + name.u += 1; + name_len -= 1; } else if (type == IS_STRING && - name.s[0] == ':' && - name.s[1] == ':') { - name.s += 2; - name_len -= 2; - flags &= ZEND_FETCH_CLASS_SILENT; + name.s[0] == '\\') { + name.s += 1; + name_len -= 1; } if ((type == IS_UNICODE && (colon.u = u_memrchr(name.u, ':', name_len)) && colon.u > name.u && *(colon.u-1) == ':') || (!type == IS_STRING && (colon.s = zend_memrchr(name.s, ':', name_len))&& colon.s > name.s && *(colon.s-1) == ':')) { /* compound constant name */ - zend_class_entry *ce = NULL; int class_name_len = (type == IS_UNICODE) ? colon.u-name.u-1 : colon.s-name.s-1; int const_name_len = name_len - class_name_len - 2; zstr constant_name, class_name; - zval **ret_constant; zstr lcname; unsigned int lcname_len; @@ -382,6 +378,7 @@ ZEND_API int zend_u_get_constant_ex(zend_uchar type, zstr name, uint name_len, z efree(lcname.v); } else if (lcname_len == sizeof("parent")-1 && ZEND_U_EQUAL(type, lcname, lcname_len, "parent", sizeof("parent")-1)) { + efree(lcname.v); if (!scope) { zend_error(E_ERROR, "Cannot access parent:: when no class scope is active"); } else if (!scope->parent) { @@ -389,85 +386,82 @@ ZEND_API int zend_u_get_constant_ex(zend_uchar type, zstr name, uint name_len, z } else { ce = scope->parent; } - efree(lcname.v); } else if (lcname_len == sizeof("static")-1 && ZEND_U_EQUAL(type, lcname, lcname_len, "static", sizeof("static")-1)) { + efree(lcname.v); if (EG(called_scope)) { ce = EG(called_scope); } else { zend_error(E_ERROR, "Cannot access static:: when no class scope is active"); } - efree(lcname.v); } else { - /* Check for namespace constant */ - zstr nsname; - unsigned int nsname_len; - - /* Concatenate lowercase namespace name and constant name */ - if (type == IS_UNICODE) { - lcname.u = erealloc(lcname.u, UBYTES(lcname_len + 2 + const_name_len + 1)); - lcname.u[lcname_len] = ':'; - lcname.u[lcname_len+1] = ':'; - memcpy(lcname.u+lcname_len+2, constant_name.u, UBYTES(const_name_len + 1)); - } else { - lcname.s = erealloc(lcname.s, lcname_len + 2 + const_name_len + 1); - lcname.s[lcname_len] = ':'; - lcname.s[lcname_len+1] = ':'; - memcpy(lcname.s+lcname_len+2, constant_name.s, const_name_len + 1); - } - lcname_len += 2 + const_name_len; - - nsname = lcname; - nsname_len = lcname_len; - if (flags & ZEND_FETCH_CLASS_RT_NS_NAME) { - /* Remove namespace name */ - if (type == IS_UNICODE) { - nsname.u = u_memchr(nsname.u, ':', nsname_len) + 2; - nsname_len -= (nsname.u - lcname.u); - } else { - nsname.s = (char *)memchr(nsname.s, ':', nsname_len) + 2; - nsname_len -= (nsname.s - lcname.s); - } - } - - if (zend_u_hash_find(EG(zend_constants), type, nsname, nsname_len+1, (void **) &c) == SUCCESS) { - efree(lcname.v); - efree(class_name.v); - *result = c->value; - zval_update_constant_ex(&result, (void*)1, NULL TSRMLS_CC); - zval_copy_ctor(result); - Z_SET_REFCOUNT_P(result, 1); - Z_UNSET_ISREF_P(result); - return 1; - } efree(lcname.v); - - if ((flags & IS_CONSTANT_RT_NS_CHECK) == 0) { - /* Check for class */ - ce = zend_u_fetch_class(type, class_name, class_name_len, flags TSRMLS_CC); - } + ce = zend_u_fetch_class(type, class_name, class_name_len, flags TSRMLS_CC); } if (retval && ce) { if (zend_u_hash_find(&ce->constants_table, type, constant_name, const_name_len+1, (void **) &ret_constant) != SUCCESS) { retval = 0; - } - } else { - if ((flags & ZEND_FETCH_CLASS_RT_NS_NAME) == 0) { - if ((flags & IS_CONSTANT_RT_NS_CHECK) != 0) { - name = constant_name; - name_len = const_name_len; - efree(class_name.v); - return zend_u_get_constant(type, name, name_len, result TSRMLS_CC); - } if ((flags & ZEND_FETCH_CLASS_SILENT) == 0) { - zend_error(E_ERROR, "Class '%R' not found", type, class_name); + zend_error(E_ERROR, "Undefined class constant '%R::%R'", type, class_name, type, constant_name); } } + } else if (!ce) { retval = 0; } efree(class_name.v); + goto finish; + } + /* non-class constant */ + if(type == IS_UNICODE) { + colon.u = u_memrchr(name.u, '\\', name_len); + } else { + colon.s = zend_memrchr(name.s, '\\', name_len); + } + if(colon.v != NULL) { + /* compound constant name */ + zstr lcname, constant_name; + unsigned int lcname_len, prefix_len, const_name_len; + + if(type == IS_UNICODE) { + prefix_len = colon.u - name.u; + constant_name.u = colon.u+1; + } else { + prefix_len = colon.s - name.s; + constant_name.s = colon.s+1; + } + const_name_len = name_len - prefix_len - 1; + + lcname = zend_u_str_case_fold(type, name, prefix_len, 0, &lcname_len); + if(type == IS_UNICODE) { + lcname.u = erealloc(lcname.u, UBYTES(const_name_len + 1 + lcname_len + 1)); + lcname.u[lcname_len] = '\\'; + memcpy(lcname.u+lcname_len+1, constant_name.u, UBYTES(const_name_len + 1)); + } else { + lcname.s = erealloc(lcname.s, const_name_len + 1 + lcname_len + 1); + lcname.s[lcname_len] = '\\'; + memcpy(lcname.s+lcname_len+1, constant_name.s, const_name_len + 1); + } + + if (zend_u_hash_find(EG(zend_constants), type, lcname, const_name_len + 1 + lcname_len + 1, (void **) &c) == SUCCESS) { + efree(lcname.v); + *result = c->value; + zval_update_constant_ex(&result, (void*)1, NULL TSRMLS_CC); + zval_copy_ctor(result); + Z_SET_REFCOUNT_P(result, 1); + Z_UNSET_ISREF_P(result); + return 1; + } + efree(lcname.v); + /* name requires runtime resolution, need to check non-namespaced name */ + if ((flags & IS_CONSTANT_UNQUALIFIED) != 0) { + name = constant_name; + name_len = const_name_len; + return zend_u_get_constant(type, name, name_len, result TSRMLS_CC); + } + retval = 0; +finish: if (retval) { zval_update_constant_ex(ret_constant, (void*)1, ce TSRMLS_CC); *result = **ret_constant; diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 2ce48737c8..22f0d71cac 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -530,45 +530,79 @@ ZEND_API int zval_update_constant_ex(zval **pp, void *arg, zend_class_entry *sco is_ref = Z_ISREF_P(p); if (!zend_u_get_constant_ex(ZEND_STR_TYPE, Z_UNIVAL_P(p), Z_UNILEN_P(p), &const_value, scope, Z_REAL_TYPE_P(p) TSRMLS_CC)) { + zstr actual = Z_UNIVAL_P(p); if ((UG(unicode) && (colon.u = u_memrchr(Z_USTRVAL_P(p), ':', Z_USTRLEN_P(p))) && colon.u > Z_USTRVAL_P(p) && *(colon.u - 1) == ':') || (!UG(unicode) && (colon.s = zend_memrchr(Z_STRVAL_P(p), ':', Z_STRLEN_P(p))) && colon.s > Z_STRVAL_P(p) && *(colon.s - 1) == ':') ) { - if (UG(unicode)) { - colon.u++; + zend_error(E_ERROR, "Undefined class constant '%v'", actual); + } else { + zstr save = actual, slash; + int actual_len = Z_UNILEN_P(p); + if(ZEND_STR_TYPE == IS_UNICODE) { + slash.u = u_memrchr(actual.u, '\\', actual_len); } else { - colon.s++; + slash.s = zend_memrchr(actual.s, '\\', actual_len); } - if ((Z_TYPE_P(p) & IS_CONSTANT_RT_NS_CHECK) == 0) { - zend_error(E_ERROR, "Undefined class constant '%v'", colon); - } else if (Z_TYPE_P(p) & ZEND_FETCH_CLASS_RT_NS_CHECK) { - zend_error(E_ERROR, "Undefined constant '%v'", Z_STRVAL_P(p)); + if ((Z_TYPE_P(p) & IS_CONSTANT_UNQUALIFIED) && slash.v != NULL) { + if(ZEND_STR_TYPE == IS_UNICODE) { + actual.u = slash.u + 1; + actual_len -= (actual.u - Z_USTRVAL_P(p)); + } else { + actual.s = slash.s + 1; + actual_len -= (actual.s - Z_STRVAL_P(p)); + } + + if (inline_change) { + int type = Z_TYPE_P(p); + ZVAL_ZSTRL(p, ZEND_STR_TYPE, actual, actual_len, 1); + Z_TYPE_P(p) = type; + actual = Z_UNIVAL_P(p); + } } - if (UG(unicode)) { - Z_USTRLEN_P(p) -= ((colon.u - Z_USTRVAL_P(p))); + if(ZEND_STR_TYPE == IS_UNICODE && actual.u[0] == '\\') { if (inline_change) { - colon.u = eustrndup(colon.u, Z_USTRLEN_P(p)); - efree(Z_USTRVAL_P(p)); - Z_USTRVAL_P(p) = colon.u; + memmove(Z_USTRVAL_P(p), Z_USTRVAL_P(p)+1, UBYTES(Z_USTRLEN_P(p))); + --Z_USTRLEN_P(p); } else { - Z_USTRVAL_P(p) = colon.u; + ++actual.u; } - } else { - Z_STRLEN_P(p) -= ((colon.s - Z_STRVAL_P(p))); + --actual_len; + } else if(ZEND_STR_TYPE == IS_STRING && actual.s[0] == '\\') { if (inline_change) { - colon.s = estrndup(colon.s, Z_STRLEN_P(p)); - efree(Z_STRVAL_P(p)); - Z_STRVAL_P(p) = colon.s; + memmove(Z_STRVAL_P(p), Z_STRVAL_P(p)+1, Z_STRLEN_P(p)); + --Z_STRLEN_P(p); } else { - Z_STRVAL_P(p) = colon.s; + ++actual.s; } + --actual_len; + } + if ((Z_TYPE_P(p) & IS_CONSTANT_UNQUALIFIED) == 0) { + int fix_save = 0; + if (ZEND_STR_TYPE == IS_UNICODE && save.u[0] == '\\') { + save.u++; + fix_save = 1; + } else if (ZEND_STR_TYPE == IS_STRING && save.s[0] == '\\') { + save.s++; + fix_save = 1; + } + zend_error(E_ERROR, "Undefined constant '%v'", save); + if (fix_save) { + (ZEND_STR_TYPE == IS_UNICODE)?--save.u:--save.s; + } + if (inline_change) { + efree(save.v); + } + save.v = NULL; + } + if (inline_change && save.v && save.v != actual.v) { + efree(save.v); + } + zend_error(E_NOTICE, "Use of undefined constant %v - assumed '%v'", actual, actual); + Z_TYPE_P(p) = UG(unicode) ? IS_UNICODE : IS_STRING; + if (!inline_change) { + ZVAL_ZSTRL(p, Z_TYPE_P(p), actual, actual_len, 0); + zval_copy_ctor(p); } - } else if (Z_TYPE_P(p) & ZEND_FETCH_CLASS_RT_NS_CHECK) { - zend_error(E_ERROR, "Undefined constant '%v'", Z_UNIVAL_P(p)); - } - zend_error(E_NOTICE, "Use of undefined constant %v - assumed '%v'", Z_UNIVAL_P(p), Z_UNIVAL_P(p)); - Z_TYPE_P(p) = UG(unicode) ? IS_UNICODE : IS_STRING; - if (!inline_change) { - zval_copy_ctor(p); } } else { if (inline_change) { @@ -614,28 +648,50 @@ ZEND_API int zval_update_constant_ex(zval **pp, void *arg, zend_class_entry *sco } if (!zend_u_get_constant_ex(ZEND_STR_TYPE, str_index, str_index_len - 3, &const_value, scope, (UG(unicode) ? str_index.u[str_index_len-2] : str_index.s[str_index_len-2]) TSRMLS_CC)) { if (UG(unicode)) { + UChar *actual, *save = str_index.u; if ((colon.u = u_memrchr(str_index.u, ':', str_index_len - 3)) && colon.u > str_index.u && *(colon.u-1) == ':') { - if ((str_index.u[str_index_len - 2] & IS_CONSTANT_RT_NS_CHECK) == 0) { - zend_error(E_ERROR, "Undefined class constant '%v'", str_index); - } else if (str_index.u[str_index_len - 2] & ZEND_FETCH_CLASS_RT_NS_CHECK) { - zend_error(E_ERROR, "Undefined constant '%v'", str_index); - } + zend_error(E_ERROR, "Undefined class constant '%v'", str_index); str_index_len -= ((colon.u - str_index.u) + 1); str_index.u = colon.u + 1; - } else if (str_index.u[str_index_len - 2] & ZEND_FETCH_CLASS_RT_NS_CHECK) { - zend_error(E_ERROR, "Undefined constant '%v'", str_index); + } else { + if (str_index.u[str_index_len - 2] & IS_CONSTANT_UNQUALIFIED) { + actual = (UChar *)u_memrchr(str_index.u, '\\', str_index_len - 3) + 1; + str_index_len -= (actual - str_index.u); + str_index.u = actual; + } + if (str_index.u[0] == '\\') { + ++str_index.u; + --str_index_len; + } + if (save[0] == '\\') { + ++save; + } + if ((str_index.u[str_index_len - 2] & IS_CONSTANT_UNQUALIFIED) == 0) { + zend_error(E_ERROR, "Undefined constant '%r'", save); + } } } else { + char *actual, *save = str_index.s; if ((colon.s = zend_memrchr(str_index.s, ':', str_index_len - 3)) && colon.s > str_index.s && *(colon.s-1) == ':') { - if ((str_index.s[str_index_len - 2] & IS_CONSTANT_RT_NS_CHECK) == 0) { - zend_error(E_ERROR, "Undefined class constant '%v'", str_index); - } else if (str_index.s[str_index_len - 2] & ZEND_FETCH_CLASS_RT_NS_CHECK) { - zend_error(E_ERROR, "Undefined constant '%v'", str_index); - } + zend_error(E_ERROR, "Undefined class constant '%v'", str_index); str_index_len -= ((colon.s - str_index.s) + 1); str_index.s = colon.s + 1; - } else if (str_index.s[str_index_len - 2] & ZEND_FETCH_CLASS_RT_NS_CHECK) { - zend_error(E_ERROR, "Undefined constant '%v'", str_index); + } else { + if (str_index.s[str_index_len - 2] & IS_CONSTANT_UNQUALIFIED) { + actual = (char *)zend_memrchr(str_index.s, '\\', str_index_len - 3) + 1; + str_index_len -= (actual - str_index.s); + str_index.s = actual; + } + if (str_index.s[0] == '\\') { + ++str_index.s; + --str_index_len; + } + if (save[0] == '\\') { + ++save; + } + if ((str_index.s[str_index_len - 2] & IS_CONSTANT_UNQUALIFIED) == 0) { + zend_error(E_ERROR, "Undefined constant '%s'", save); + } } } zend_error(E_NOTICE, "Use of undefined constant %v - assumed '%v'", str_index, str_index); @@ -1042,19 +1098,15 @@ ZEND_API int zend_u_lookup_class_ex(zend_uchar type, zstr name, int name_length, lc_name_len = name_length; } - /* Ignore leading "::" */ + /* Ignore leading "\" */ if (type == IS_UNICODE && - lc_name.u[0] == ':' && - lc_name.u[1] == ':' - ) { - lc_name.u += 2; - lc_name_len -= 2; + lc_name.u[0] == '\\') { + lc_name.u += 1; + lc_name_len -= 1; } else if (type == IS_STRING && - lc_name.s[0] == ':' && - lc_name.s[1] == ':' - ) { - lc_name.s += 2; - lc_name_len -= 2; + lc_name.s[0] == '\\') { + lc_name.s += 1; + lc_name_len -= 1; } if (zend_u_hash_find(EG(class_table), type, lc_name, lc_name_len + 1, (void **) ce) == SUCCESS) { @@ -1090,7 +1142,7 @@ ZEND_API int zend_u_lookup_class_ex(zend_uchar type, zstr name, int name_length, ALLOC_ZVAL(class_name_ptr); INIT_PZVAL(class_name_ptr); - ZVAL_ZSTRL(class_name_ptr, type, autoload_name, lc_name_len, 1); + ZVAL_ZSTRL(class_name_ptr, type, autoload_name, name_length, 1); args[0] = &class_name_ptr; @@ -1547,8 +1599,6 @@ ZEND_API zend_class_entry *zend_u_fetch_class(zend_uchar type, zstr class_name, { zend_class_entry **pce; int use_autoload = (fetch_type & ZEND_FETCH_CLASS_NO_AUTOLOAD) ? 0 : 1; - int do_normalize = (fetch_type & ZEND_FETCH_CLASS_NO_NORMALIZE) ? 0 : 1; - int rt_ns_check = (fetch_type & ZEND_FETCH_CLASS_RT_NS_CHECK) ? 1 : 0; int silent = (fetch_type & ZEND_FETCH_CLASS_SILENT) != 0; zstr lcname = class_name; @@ -1575,10 +1625,6 @@ check_fetch_type: } return EG(called_scope); case ZEND_FETCH_CLASS_AUTO: { - if (do_normalize) { - lcname = zend_u_str_case_fold(type, class_name, class_name_len, 1, &class_name_len); - do_normalize = 0; /* we've normalized it already, don't do it twice */ - } fetch_type = zend_get_class_fetch_type(type, lcname, class_name_len); if (fetch_type!=ZEND_FETCH_CLASS_DEFAULT) { if (lcname.v != class_name.v) { @@ -1590,46 +1636,8 @@ check_fetch_type: break; } - if (do_normalize) { - lcname = zend_u_str_case_fold(type, class_name, class_name_len, 1, &class_name_len); - } - - if (zend_u_lookup_class_ex(type, lcname, class_name_len, ((!rt_ns_check && use_autoload) ? class_name : NULL_ZSTR), 0, &pce TSRMLS_CC) == FAILURE) { - if (rt_ns_check) { - /* Check if we have internal class with the same name */ - zstr php_name = NULL_ZSTR; - uint php_name_len; - - if (type == IS_UNICODE) { - php_name.u = u_memrchr(lcname.u, ':', class_name_len); - if (php_name.u) { - php_name.u++; - php_name_len = class_name_len-(php_name.u-lcname.u); - } - } else { - php_name.s = zend_memrchr(lcname.s, ':', class_name_len); - if (php_name.s) { - php_name.s++; - php_name_len = class_name_len-(php_name.s-lcname.s); - } - } - if (php_name.v && - zend_u_hash_find(EG(class_table), type, php_name, php_name_len + 1, (void **) &pce) == SUCCESS && - (*pce)->type == ZEND_INTERNAL_CLASS - ) { - if (lcname.v != class_name.v) { - efree(lcname.v); - } - return *pce; - } - } + if (zend_u_lookup_class_ex(type, lcname, class_name_len, (use_autoload ? class_name : NULL_ZSTR), 1, &pce TSRMLS_CC) == FAILURE) { if (use_autoload) { - if (rt_ns_check && zend_u_lookup_class_ex(type, lcname, class_name_len, class_name, 0, &pce TSRMLS_CC) == SUCCESS) { - if (lcname.v != class_name.v) { - efree(lcname.v); - } - return *pce; - } if (!silent && !EG(exception)) { if (fetch_type == ZEND_FETCH_CLASS_INTERFACE) { zend_error(E_ERROR, "Interface '%R' not found", type, class_name); @@ -1638,16 +1646,9 @@ check_fetch_type: } } } - if (lcname.v != class_name.v) { - efree(lcname.v); - } return NULL; - } else { - if (lcname.v != class_name.v) { - efree(lcname.v); - } - return *pce; } + return *pce; } /* }}} */ diff --git a/Zend/zend_globals.h b/Zend/zend_globals.h index ea26e3f210..4309cd0fe6 100644 --- a/Zend/zend_globals.h +++ b/Zend/zend_globals.h @@ -139,6 +139,8 @@ struct _zend_compiler_globals { zval *current_namespace; HashTable *current_import; + zend_bool in_namespace; + zend_bool has_bracketed_namespaces; #ifdef ZTS HashTable **static_members; diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index 1e872547c7..421450ed36 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -149,6 +149,7 @@ %token T_NAMESPACE %token T_NS_C %token T_DIR +%token T_NS_SEPARATOR %% /* Rules */ @@ -163,17 +164,21 @@ top_statement_list: namespace_name: T_STRING { $$ = $1; } - | namespace_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_build_namespace_name(&$$, &$1, &$3 TSRMLS_CC); } + | namespace_name T_NS_SEPARATOR T_STRING { zend_do_build_namespace_name(&$$, &$1, &$3 TSRMLS_CC); } ; top_statement: - statement - | function_declaration_statement { zend_do_early_binding(TSRMLS_C); } - | class_declaration_statement { zend_do_early_binding(TSRMLS_C); } + statement { zend_verify_namespace(TSRMLS_C); } + | function_declaration_statement { zend_verify_namespace(TSRMLS_C); zend_do_early_binding(TSRMLS_C); } + | class_declaration_statement { zend_verify_namespace(TSRMLS_C); zend_do_early_binding(TSRMLS_C); } | T_HALT_COMPILER '(' ')' ';' { zend_do_halt_compiler_register(TSRMLS_C); YYACCEPT; } - | T_NAMESPACE namespace_name ';' { zend_do_namespace(&$2 TSRMLS_CC); } - | T_USE use_declarations ';' - | constant_declaration ';' + | T_NAMESPACE namespace_name ';' { zend_do_begin_namespace(&$2, 0 TSRMLS_CC); } + | T_NAMESPACE namespace_name '{' { zend_do_begin_namespace(&$2, 1 TSRMLS_CC); } + top_statement_list '}' { zend_do_end_namespace(TSRMLS_C); } + | T_NAMESPACE '{' { zend_do_begin_namespace(NULL, 1 TSRMLS_CC); } + top_statement_list '}' { zend_do_end_namespace(TSRMLS_C); } + | T_USE use_declarations ';' { zend_verify_namespace(TSRMLS_C); } + | constant_declaration ';' { zend_verify_namespace(TSRMLS_C); } ; use_declarations: @@ -184,8 +189,8 @@ use_declarations: use_declaration: namespace_name { zend_do_use(&$1, NULL, 0 TSRMLS_CC); } | namespace_name T_AS T_STRING { zend_do_use(&$1, &$3, 0 TSRMLS_CC); } - | T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_use(&$2, NULL, 1 TSRMLS_CC); } - | T_PAAMAYIM_NEKUDOTAYIM T_STRING T_AS T_STRING { zend_do_use(&$2, &$4, 1 TSRMLS_CC); } + | T_NS_SEPARATOR namespace_name { zend_do_use(&$2, NULL, 1 TSRMLS_CC); } + | T_NS_SEPARATOR namespace_name T_AS T_STRING { zend_do_use(&$2, &$4, 1 TSRMLS_CC); } ; constant_declaration: @@ -669,12 +674,15 @@ lexical_var_list: ; function_call: - T_STRING '(' { $2.u.opline_num = zend_do_begin_function_call(&$1, 1 TSRMLS_CC); } + namespace_name '(' { $2.u.opline_num = zend_do_begin_function_call(&$1, 1 TSRMLS_CC); } function_call_parameter_list ')' { zend_do_end_function_call(&$1, &$$, &$4, 0, $2.u.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } - | T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' { $3.u.opline_num = zend_do_begin_function_call(&$2, 0 TSRMLS_CC); } - function_call_parameter_list - ')' { zend_do_end_function_call(&$2, &$$, &$5, 0, $3.u.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_TEXT(&$1.u.constant); zend_do_build_namespace_name(&$1, &$1, &$3 TSRMLS_CC); $4.u.opline_num = zend_do_begin_function_call(&$1, 0 TSRMLS_CC); } + function_call_parameter_list + ')' { zend_do_end_function_call(&$1, &$$, &$6, 0, $4.u.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } + | T_NS_SEPARATOR namespace_name '(' { $3.u.opline_num = zend_do_begin_function_call(&$2, 0 TSRMLS_CC); } + function_call_parameter_list + ')' { zend_do_end_function_call(&$2, &$$, &$5, 0, $3.u.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); } | class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' { $4.u.opline_num = zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); } function_call_parameter_list ')' { zend_do_end_function_call($4.u.opline_num?NULL:&$3, &$$, &$6, $4.u.opline_num, $4.u.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);} @@ -693,18 +701,16 @@ function_call: ; class_name: - T_STRING { $$ = $1; } - | T_STATIC { $$.op_type = IS_CONST; ZVAL_ASCII_STRINGL(&$$.u.constant, "static", sizeof("static")-1, 1);} - | T_NAMESPACE { $$.op_type = IS_CONST; ZVAL_EMPTY_TEXT(&$$.u.constant); } - | T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_build_namespace_name(&$$, NULL, &$2 TSRMLS_CC); } - | class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_build_namespace_name(&$$, &$1, &$3 TSRMLS_CC); } + T_STATIC { $$.op_type = IS_CONST; ZVAL_ASCII_STRINGL(&$$.u.constant, "static", sizeof("static")-1, 1);} + | namespace_name { $$ = $1; } + | T_NAMESPACE T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_TEXT(&$$.u.constant); zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); } + | T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_TEXT(&$$.u.constant); zend_do_build_full_name(NULL, &$$, &$2, 0 TSRMLS_CC); } ; fully_qualified_class_name: - T_STRING { $$ = $1; } - | T_NAMESPACE { $$.op_type = IS_CONST; ZVAL_EMPTY_TEXT(&$$.u.constant); } - | T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_build_namespace_name(&$$, NULL, &$2 TSRMLS_CC); } - | fully_qualified_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_build_namespace_name(&$$, &$1, &$3 TSRMLS_CC); } + namespace_name { $$ = $1; } + | T_NAMESPACE T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_TEXT(&$$.u.constant); zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); } + | T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_TEXT(&$$.u.constant); zend_do_build_full_name(NULL, &$$, &$2, 0 TSRMLS_CC); } ; @@ -774,8 +780,9 @@ start_heredoc: static_scalar: /* compile-time evaluated scalars */ common_scalar { $$ = $1; } - | T_STRING { zend_do_fetch_constant(&$$, NULL, &$1, ZEND_CT, 1 TSRMLS_CC); } - | T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_fetch_constant(&$$, NULL, &$2, ZEND_CT, 0 TSRMLS_CC); } + | namespace_name { zend_do_fetch_constant(&$$, NULL, &$1, ZEND_CT, 1 TSRMLS_CC); } + | T_NAMESPACE T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_TEXT(&$$.u.constant); zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); $3 = $$; zend_do_fetch_constant(&$$, NULL, &$3, ZEND_CT, 0 TSRMLS_CC); } + | T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_TEXT(&$$.u.constant); zend_do_build_full_name(NULL, &$$, &$2, 0 TSRMLS_CC); $2 = $$;zend_do_fetch_constant(&$$, NULL, &$2, ZEND_CT, 0 TSRMLS_CC); } | '+' static_scalar { ZVAL_LONG(&$1.u.constant, 0); add_function(&$2.u.constant, &$1.u.constant, &$2.u.constant TSRMLS_CC); $$ = $2; } | '-' static_scalar { ZVAL_LONG(&$1.u.constant, 0); sub_function(&$2.u.constant, &$1.u.constant, &$2.u.constant TSRMLS_CC); $$ = $2; } | T_ARRAY '(' static_array_pair_list ')' { $$ = $3; Z_TYPE($$.u.constant) = IS_CONSTANT_ARRAY; } @@ -787,10 +794,11 @@ static_class_constant: ; scalar: - T_STRING { zend_do_fetch_constant(&$$, NULL, &$1, ZEND_RT, 1 TSRMLS_CC); } - | T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_fetch_constant(&$$, NULL, &$2, ZEND_RT, 0 TSRMLS_CC); } - | T_STRING_VARNAME { $$ = $1; } - | class_constant { $$ = $1; } + T_STRING_VARNAME { $$ = $1; } + | class_constant { $$ = $1; } + | namespace_name { zend_do_fetch_constant(&$$, NULL, &$1, ZEND_RT, 1 TSRMLS_CC); } + | T_NAMESPACE T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_TEXT(&$$.u.constant); zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); $3 = $$; zend_do_fetch_constant(&$$, NULL, &$3, ZEND_RT, 0 TSRMLS_CC); } + | T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_TEXT(&$$.u.constant); zend_do_build_full_name(NULL, &$$, &$2, 0 TSRMLS_CC); $2 = $$; zend_do_fetch_constant(&$$, NULL, &$2, ZEND_RT, 0 TSRMLS_CC); } | common_scalar { $$ = $1; } | '"' { CG(literal_type) = UG(unicode)?IS_UNICODE:IS_STRING; } encaps_list '"' { $$ = $3; } | T_BINARY_DOUBLE { CG(literal_type) = IS_STRING; } encaps_list '"' { $$ = $3; } diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index c8048137e9..7948d19c27 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 on Fri Aug 15 14:35:03 2008 */ +/* Generated by re2c 0.13.5 on Tue Dec 2 17:02:51 2008 */ #line 1 "Zend/zend_language_scanner.l" /* +----------------------------------------------------------------------+ @@ -594,7 +594,7 @@ ZEND_API int zend_convert_scanner_output(UConverter *conv, UChar **target, int * int zend_unicode_yyinput(zend_file_handle *file_handle, char *buf, size_t len TSRMLS_DC) { - size_t n; + size_t n = len; const char *src = buf; #ifdef scottmac_0 @@ -616,10 +616,11 @@ int zend_unicode_yyinput(zend_file_handle *file_handle, char *buf, size_t len TS n = zend_stream_read(file_handle, buf, len TSRMLS_CC); } #endif + /* Don't make any conversions if unicode=off */ - if (!UG(unicode)) { - return n; - } + if (!UG(unicode)) { + return n; + } /* Autodetect encoding */ if (!SCNG(encoding_checked)) { @@ -1359,7 +1360,7 @@ yymore_restart: } -#line 1363 "Zend/zend_language_scanner.c" +#line 1364 "Zend/zend_language_scanner.c" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1470,7 +1471,7 @@ yyc_INITIAL: yy3: YYDEBUG(3, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2164 "Zend/zend_language_scanner.l" +#line 2169 "Zend/zend_language_scanner.l" { inline_char_handler: @@ -1501,7 +1502,7 @@ inline_char_handler: HANDLE_NEWLINES(yytext, yyleng); return T_INLINE_HTML; } -#line 1505 "Zend/zend_language_scanner.c" +#line 1506 "Zend/zend_language_scanner.c" yy4: YYDEBUG(4, *YYCURSOR); yych = *++YYCURSOR; @@ -1519,7 +1520,7 @@ yy5: yy6: YYDEBUG(6, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2152 "Zend/zend_language_scanner.l" +#line 2157 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ @@ -1531,14 +1532,14 @@ yy6: goto inline_char_handler; } } -#line 1535 "Zend/zend_language_scanner.c" +#line 1536 "Zend/zend_language_scanner.c" yy7: YYDEBUG(7, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy43; YYDEBUG(8, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2129 "Zend/zend_language_scanner.l" +#line 2134 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ @@ -1550,7 +1551,7 @@ yy7: goto inline_char_handler; } } -#line 1554 "Zend/zend_language_scanner.c" +#line 1555 "Zend/zend_language_scanner.c" yy9: YYDEBUG(9, *YYCURSOR); yych = *++YYCURSOR; @@ -1736,7 +1737,7 @@ yy35: ++YYCURSOR; YYDEBUG(38, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2094 "Zend/zend_language_scanner.l" +#line 2099 "Zend/zend_language_scanner.l" { HANDLE_NEWLINES(yytext, yyleng); Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ @@ -1745,7 +1746,7 @@ yy35: BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG; } -#line 1749 "Zend/zend_language_scanner.c" +#line 1750 "Zend/zend_language_scanner.c" yy39: YYDEBUG(39, *YYCURSOR); yych = *++YYCURSOR; @@ -1772,7 +1773,7 @@ yy43: ++YYCURSOR; YYDEBUG(44, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2103 "Zend/zend_language_scanner.l" +#line 2108 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ @@ -1784,13 +1785,13 @@ yy43: goto inline_char_handler; } } -#line 1788 "Zend/zend_language_scanner.c" +#line 1789 "Zend/zend_language_scanner.c" yy45: YYDEBUG(45, *YYCURSOR); ++YYCURSOR; YYDEBUG(46, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2116 "Zend/zend_language_scanner.l" +#line 2121 "Zend/zend_language_scanner.l" { if (CG(short_tags)) { Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ @@ -1802,7 +1803,7 @@ yy45: goto inline_char_handler; } } -#line 1806 "Zend/zend_language_scanner.c" +#line 1807 "Zend/zend_language_scanner.c" yy47: YYDEBUG(47, *YYCURSOR); yych = *++YYCURSOR; @@ -1829,7 +1830,7 @@ yy50: yy51: YYDEBUG(51, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2142 "Zend/zend_language_scanner.l" +#line 2147 "Zend/zend_language_scanner.l" { Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ Z_STRLEN_P(zendlval) = yyleng; @@ -1838,7 +1839,7 @@ yy51: BEGIN(ST_IN_SCRIPTING); return T_OPEN_TAG; } -#line 1842 "Zend/zend_language_scanner.c" +#line 1843 "Zend/zend_language_scanner.c" yy52: YYDEBUG(52, *YYCURSOR); ++YYCURSOR; @@ -1929,13 +1930,13 @@ yy56: yy57: YYDEBUG(57, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2540 "Zend/zend_language_scanner.l" +#line 2545 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return T_CURLY_OPEN; } -#line 1939 "Zend/zend_language_scanner.c" +#line 1940 "Zend/zend_language_scanner.c" yy58: YYDEBUG(58, *YYCURSOR); yyaccept = 1; @@ -1953,7 +1954,7 @@ yy59: yy60: YYDEBUG(60, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2574 "Zend/zend_language_scanner.l" +#line 2579 "Zend/zend_language_scanner.l" { if (CG(literal_type) == IS_UNICODE) { return zend_scan_unicode_escape_string(zendlval, yytext, yyleng, 0x60 /*'`'*/, T_ENCAPSED_AND_WHITESPACE TSRMLS_CC); @@ -1962,7 +1963,7 @@ yy60: return T_ENCAPSED_AND_WHITESPACE; } } -#line 1966 "Zend/zend_language_scanner.c" +#line 1967 "Zend/zend_language_scanner.c" yy61: YYDEBUG(61, *YYCURSOR); ++YYCURSOR; @@ -1974,12 +1975,12 @@ yy62: ++YYCURSOR; YYDEBUG(63, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2671 "Zend/zend_language_scanner.l" +#line 2676 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '`'; } -#line 1983 "Zend/zend_language_scanner.c" +#line 1984 "Zend/zend_language_scanner.c" yy64: YYDEBUG(64, *YYCURSOR); ++YYCURSOR; @@ -2067,7 +2068,7 @@ yy68: yy70: YYDEBUG(70, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2583 "Zend/zend_language_scanner.l" +#line 2588 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); @@ -2078,7 +2079,7 @@ yy70: return T_ENCAPSED_AND_WHITESPACE; } } -#line 2082 "Zend/zend_language_scanner.c" +#line 2083 "Zend/zend_language_scanner.c" yy71: YYDEBUG(71, *YYCURSOR); yych = *++YYCURSOR; @@ -2112,7 +2113,7 @@ yy74: yy76: YYDEBUG(76, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2226 "Zend/zend_language_scanner.l" +#line 2231 "Zend/zend_language_scanner.l" { if (!zend_copy_scanner_string(zendlval, (yytext+1), (yyleng-1), UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { return 0; @@ -2122,18 +2123,18 @@ yy76: } return T_VARIABLE; } -#line 2126 "Zend/zend_language_scanner.c" +#line 2127 "Zend/zend_language_scanner.c" yy77: YYDEBUG(77, *YYCURSOR); ++YYCURSOR; YYDEBUG(78, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1859 "Zend/zend_language_scanner.l" +#line 1864 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 2137 "Zend/zend_language_scanner.c" +#line 2138 "Zend/zend_language_scanner.c" yy79: YYDEBUG(79, *YYCURSOR); yych = *++YYCURSOR; @@ -2144,7 +2145,7 @@ yy80: ++YYCURSOR; YYDEBUG(81, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2213 "Zend/zend_language_scanner.l" +#line 2218 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2157,7 +2158,7 @@ yy80: } return T_VARIABLE; } -#line 2161 "Zend/zend_language_scanner.c" +#line 2162 "Zend/zend_language_scanner.c" yy82: YYDEBUG(82, *YYCURSOR); yych = *++YYCURSOR; @@ -2175,7 +2176,7 @@ yy83: ++YYCURSOR; YYDEBUG(84, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2198 "Zend/zend_language_scanner.l" +#line 2203 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2188,7 +2189,7 @@ yy83: } return T_VARIABLE; } -#line 2192 "Zend/zend_language_scanner.c" +#line 2193 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_COMMENT: @@ -2245,34 +2246,34 @@ yy87: } YYDEBUG(89, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2333 "Zend/zend_language_scanner.l" +#line 2338 "Zend/zend_language_scanner.l" { yymore(); } -#line 2253 "Zend/zend_language_scanner.c" +#line 2254 "Zend/zend_language_scanner.c" yy90: YYDEBUG(90, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '/') goto yy92; YYDEBUG(91, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2356 "Zend/zend_language_scanner.l" +#line 2361 "Zend/zend_language_scanner.l" { yymore(); } -#line 2264 "Zend/zend_language_scanner.c" +#line 2265 "Zend/zend_language_scanner.c" yy92: YYDEBUG(92, *YYCURSOR); ++YYCURSOR; YYDEBUG(93, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2350 "Zend/zend_language_scanner.l" +#line 2355 "Zend/zend_language_scanner.l" { HANDLE_NEWLINES(yytext, yyleng); BEGIN(ST_IN_SCRIPTING); return T_COMMENT; } -#line 2276 "Zend/zend_language_scanner.c" +#line 2277 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOC_COMMENT: @@ -2329,28 +2330,28 @@ yy96: } YYDEBUG(98, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2333 "Zend/zend_language_scanner.l" +#line 2338 "Zend/zend_language_scanner.l" { yymore(); } -#line 2337 "Zend/zend_language_scanner.c" +#line 2338 "Zend/zend_language_scanner.c" yy99: YYDEBUG(99, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) == '/') goto yy101; YYDEBUG(100, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2356 "Zend/zend_language_scanner.l" +#line 2361 "Zend/zend_language_scanner.l" { yymore(); } -#line 2348 "Zend/zend_language_scanner.c" +#line 2349 "Zend/zend_language_scanner.c" yy101: YYDEBUG(101, *YYCURSOR); ++YYCURSOR; YYDEBUG(102, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2337 "Zend/zend_language_scanner.l" +#line 2342 "Zend/zend_language_scanner.l" { zval temp; @@ -2363,7 +2364,7 @@ yy101: BEGIN(ST_IN_SCRIPTING); return T_DOC_COMMENT; } -#line 2367 "Zend/zend_language_scanner.c" +#line 2368 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_DOUBLE_QUOTES: @@ -2450,13 +2451,13 @@ yy106: yy107: YYDEBUG(107, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2540 "Zend/zend_language_scanner.l" +#line 2545 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return T_CURLY_OPEN; } -#line 2460 "Zend/zend_language_scanner.c" +#line 2461 "Zend/zend_language_scanner.c" yy108: YYDEBUG(108, *YYCURSOR); yyaccept = 1; @@ -2475,7 +2476,7 @@ yy109: yy110: YYDEBUG(110, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2547 "Zend/zend_language_scanner.l" +#line 2552 "Zend/zend_language_scanner.l" { if (CG(literal_type) == IS_UNICODE) { return zend_scan_unicode_escape_string(zendlval, yytext, yyleng, 0x22 /*'"'*/, T_ENCAPSED_AND_WHITESPACE TSRMLS_CC); @@ -2484,7 +2485,7 @@ yy110: return T_ENCAPSED_AND_WHITESPACE; } } -#line 2488 "Zend/zend_language_scanner.c" +#line 2489 "Zend/zend_language_scanner.c" yy111: YYDEBUG(111, *YYCURSOR); ++YYCURSOR; @@ -2496,12 +2497,12 @@ yy112: ++YYCURSOR; YYDEBUG(113, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2665 "Zend/zend_language_scanner.l" +#line 2670 "Zend/zend_language_scanner.l" { BEGIN(ST_IN_SCRIPTING); return '"'; } -#line 2505 "Zend/zend_language_scanner.c" +#line 2506 "Zend/zend_language_scanner.c" yy114: YYDEBUG(114, *YYCURSOR); ++YYCURSOR; @@ -2592,7 +2593,7 @@ yy118: yy120: YYDEBUG(120, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2562 "Zend/zend_language_scanner.l" +#line 2567 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); @@ -2603,7 +2604,7 @@ yy120: return T_ENCAPSED_AND_WHITESPACE; } } -#line 2607 "Zend/zend_language_scanner.c" +#line 2608 "Zend/zend_language_scanner.c" yy121: YYDEBUG(121, *YYCURSOR); yych = *++YYCURSOR; @@ -2637,7 +2638,7 @@ yy124: yy126: YYDEBUG(126, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2226 "Zend/zend_language_scanner.l" +#line 2231 "Zend/zend_language_scanner.l" { if (!zend_copy_scanner_string(zendlval, (yytext+1), (yyleng-1), UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { return 0; @@ -2647,18 +2648,18 @@ yy126: } return T_VARIABLE; } -#line 2651 "Zend/zend_language_scanner.c" +#line 2652 "Zend/zend_language_scanner.c" yy127: YYDEBUG(127, *YYCURSOR); ++YYCURSOR; YYDEBUG(128, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1859 "Zend/zend_language_scanner.l" +#line 1864 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 2662 "Zend/zend_language_scanner.c" +#line 2663 "Zend/zend_language_scanner.c" yy129: YYDEBUG(129, *YYCURSOR); yych = *++YYCURSOR; @@ -2669,7 +2670,7 @@ yy130: ++YYCURSOR; YYDEBUG(131, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2213 "Zend/zend_language_scanner.l" +#line 2218 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -2682,7 +2683,7 @@ yy130: } return T_VARIABLE; } -#line 2686 "Zend/zend_language_scanner.c" +#line 2687 "Zend/zend_language_scanner.c" yy132: YYDEBUG(132, *YYCURSOR); yych = *++YYCURSOR; @@ -2700,7 +2701,7 @@ yy133: ++YYCURSOR; YYDEBUG(134, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2198 "Zend/zend_language_scanner.l" +#line 2203 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -2713,7 +2714,7 @@ yy133: } return T_VARIABLE; } -#line 2717 "Zend/zend_language_scanner.c" +#line 2718 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_END_HEREDOC: @@ -2724,7 +2725,7 @@ yyc_ST_END_HEREDOC: ++YYCURSOR; YYDEBUG(138, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2526 "Zend/zend_language_scanner.l" +#line 2531 "Zend/zend_language_scanner.l" { YYCURSOR += CG(heredoc_len) - 1; yyleng = CG(heredoc_len); @@ -2736,7 +2737,7 @@ yyc_ST_END_HEREDOC: BEGIN(ST_IN_SCRIPTING); return T_END_HEREDOC; } -#line 2740 "Zend/zend_language_scanner.c" +#line 2741 "Zend/zend_language_scanner.c" /* *********************************** */ yyc_ST_HEREDOC: { @@ -2793,7 +2794,7 @@ yyc_ST_HEREDOC: yy141: YYDEBUG(141, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2602 "Zend/zend_language_scanner.l" +#line 2607 "Zend/zend_language_scanner.l" { if (CG(literal_type) == IS_UNICODE) { return zend_scan_unicode_escape_string(zendlval, yytext, yyleng, 0, T_ENCAPSED_AND_WHITESPACE TSRMLS_CC); @@ -2802,7 +2803,7 @@ yy141: return T_ENCAPSED_AND_WHITESPACE; } } -#line 2806 "Zend/zend_language_scanner.c" +#line 2807 "Zend/zend_language_scanner.c" yy142: YYDEBUG(142, *YYCURSOR); yych = *++YYCURSOR; @@ -2848,13 +2849,13 @@ yy143: yy144: YYDEBUG(144, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2540 "Zend/zend_language_scanner.l" +#line 2545 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = (long) '{'; yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return T_CURLY_OPEN; } -#line 2858 "Zend/zend_language_scanner.c" +#line 2859 "Zend/zend_language_scanner.c" yy145: YYDEBUG(145, *YYCURSOR); yyaccept = 0; @@ -3105,7 +3106,7 @@ yy161: yy163: YYDEBUG(163, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2611 "Zend/zend_language_scanner.l" +#line 2616 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); @@ -3116,7 +3117,7 @@ yy163: return T_ENCAPSED_AND_WHITESPACE; } } -#line 3120 "Zend/zend_language_scanner.c" +#line 3121 "Zend/zend_language_scanner.c" yy164: YYDEBUG(164, *YYCURSOR); yyaccept = 2; @@ -3215,7 +3216,7 @@ yy170: ++YYCURSOR; YYDEBUG(171, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2484 "Zend/zend_language_scanner.l" +#line 2489 "Zend/zend_language_scanner.l" { char *end = yytext + yyleng - 1; @@ -3257,7 +3258,7 @@ yy170: yymore(); } } -#line 3261 "Zend/zend_language_scanner.c" +#line 3262 "Zend/zend_language_scanner.c" yy172: YYDEBUG(172, *YYCURSOR); yyaccept = 2; @@ -3517,7 +3518,7 @@ yy191: yy193: YYDEBUG(193, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2226 "Zend/zend_language_scanner.l" +#line 2231 "Zend/zend_language_scanner.l" { if (!zend_copy_scanner_string(zendlval, (yytext+1), (yyleng-1), UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { return 0; @@ -3527,18 +3528,18 @@ yy193: } return T_VARIABLE; } -#line 3531 "Zend/zend_language_scanner.c" +#line 3532 "Zend/zend_language_scanner.c" yy194: YYDEBUG(194, *YYCURSOR); ++YYCURSOR; YYDEBUG(195, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1859 "Zend/zend_language_scanner.l" +#line 1864 "Zend/zend_language_scanner.l" { yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC); return T_DOLLAR_OPEN_CURLY_BRACES; } -#line 3542 "Zend/zend_language_scanner.c" +#line 3543 "Zend/zend_language_scanner.c" yy196: YYDEBUG(196, *YYCURSOR); yych = *++YYCURSOR; @@ -3549,7 +3550,7 @@ yy197: ++YYCURSOR; YYDEBUG(198, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2213 "Zend/zend_language_scanner.l" +#line 2218 "Zend/zend_language_scanner.l" { yyless(yyleng - 1); yy_push_state(ST_VAR_OFFSET TSRMLS_CC); @@ -3562,7 +3563,7 @@ yy197: } return T_VARIABLE; } -#line 3566 "Zend/zend_language_scanner.c" +#line 3567 "Zend/zend_language_scanner.c" yy199: YYDEBUG(199, *YYCURSOR); yych = *++YYCURSOR; @@ -3580,7 +3581,7 @@ yy200: ++YYCURSOR; YYDEBUG(201, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2198 "Zend/zend_language_scanner.l" +#line 2203 "Zend/zend_language_scanner.l" { yyless(yyleng - 3); yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); @@ -3593,7 +3594,7 @@ yy200: } return T_VARIABLE; } -#line 3597 "Zend/zend_language_scanner.c" +#line 3598 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_IN_SCRIPTING: @@ -3699,33 +3700,32 @@ yyc_ST_IN_SCRIPTING: case 0x1C: case 0x1D: case 0x1E: - case 0x1F: - case '\\': goto yy262; + case 0x1F: goto yy264; case '\t': case '\n': case '\r': case ' ': goto yy220; - case '!': goto yy231; - case '"': goto yy256; - case '#': goto yy254; - case '$': goto yy243; - case '%': goto yy237; - case '&': goto yy238; - case '\'': goto yy258; - case '(': goto yy225; + case '!': goto yy233; + case '"': goto yy258; + case '#': goto yy256; + case '$': goto yy245; + case '%': goto yy239; + case '&': goto yy240; + case '\'': goto yy260; + case '(': goto yy227; case ')': case ',': case ';': case '@': case '[': case ']': - case '~': goto yy244; - case '*': goto yy234; - case '+': goto yy230; + case '~': goto yy246; + case '*': goto yy236; + case '+': goto yy232; case '-': goto yy218; - case '.': goto yy236; - case '/': goto yy235; - case '0': goto yy250; + case '.': goto yy238; + case '/': goto yy237; + case '0': goto yy252; case '1': case '2': case '3': @@ -3734,12 +3734,12 @@ yyc_ST_IN_SCRIPTING: case '6': case '7': case '8': - case '9': goto yy252; + case '9': goto yy254; case ':': goto yy222; - case '<': goto yy232; - case '=': goto yy228; - case '>': goto yy233; - case '?': goto yy245; + case '<': goto yy234; + case '=': goto yy230; + case '>': goto yy235; + case '?': goto yy247; case 'A': case 'a': goto yy213; case 'B': @@ -3757,11 +3757,11 @@ yyc_ST_IN_SCRIPTING: case 'I': case 'i': goto yy211; case 'L': - case 'l': goto yy229; + case 'l': goto yy231; case 'N': - case 'n': goto yy223; + case 'n': goto yy225; case 'O': - case 'o': goto yy241; + case 'o': goto yy243; case 'P': case 'p': goto yy217; case 'R': @@ -3771,20 +3771,21 @@ yyc_ST_IN_SCRIPTING: case 'T': case 't': goto yy210; case 'U': - case 'u': goto yy226; + case 'u': goto yy228; case 'V': - case 'v': goto yy224; + case 'v': goto yy226; case 'W': case 'w': goto yy212; case 'X': - case 'x': goto yy242; - case '^': goto yy240; - case '_': goto yy227; - case '`': goto yy260; - case '{': goto yy246; - case '|': goto yy239; - case '}': goto yy248; - default: goto yy253; + case 'x': goto yy244; + case '\\': goto yy223; + case '^': goto yy242; + case '_': goto yy229; + case '`': goto yy262; + case '{': goto yy248; + case '|': goto yy241; + case '}': goto yy250; + default: goto yy255; } yy204: YYDEBUG(204, *YYCURSOR); @@ -3792,23 +3793,23 @@ yy204: YYDEBUG(-1, yych); switch ((yych = *YYCURSOR)) { case 'C': - case 'c': goto yy818; + case 'c': goto yy820; case 'L': - case 'l': goto yy819; + case 'l': goto yy821; case 'M': - case 'm': goto yy820; + case 'm': goto yy822; case 'N': - case 'n': goto yy821; + case 'n': goto yy823; case 'V': - case 'v': goto yy822; + case 'v': goto yy824; case 'X': - case 'x': goto yy823; - default: goto yy280; + case 'x': goto yy825; + default: goto yy282; } yy205: YYDEBUG(205, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2254 "Zend/zend_language_scanner.l" +#line 2259 "Zend/zend_language_scanner.l" { if (!zend_copy_scanner_string(zendlval, yytext, yyleng, UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { return 0; @@ -3818,27 +3819,27 @@ yy205: } return T_STRING; } -#line 3822 "Zend/zend_language_scanner.c" +#line 3823 "Zend/zend_language_scanner.c" yy206: YYDEBUG(206, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= 'H') { - if (yych == 'E') goto yy800; - goto yy280; + if (yych == 'E') goto yy802; + goto yy282; } else { - if (yych <= 'I') goto yy801; - if (yych <= 'N') goto yy280; - goto yy802; + if (yych <= 'I') goto yy803; + if (yych <= 'N') goto yy282; + goto yy804; } } else { if (yych <= 'h') { - if (yych == 'e') goto yy800; - goto yy280; + if (yych == 'e') goto yy802; + goto yy282; } else { - if (yych <= 'i') goto yy801; - if (yych == 'o') goto yy802; - goto yy280; + if (yych <= 'i') goto yy803; + if (yych == 'o') goto yy804; + goto yy282; } } yy207: @@ -3846,21 +3847,21 @@ yy207: yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= 'N') { - if (yych == 'I') goto yy779; - goto yy280; + if (yych == 'I') goto yy781; + goto yy282; } else { - if (yych <= 'O') goto yy780; - if (yych <= 'T') goto yy280; - goto yy781; + if (yych <= 'O') goto yy782; + if (yych <= 'T') goto yy282; + goto yy783; } } else { if (yych <= 'n') { - if (yych == 'i') goto yy779; - goto yy280; + if (yych == 'i') goto yy781; + goto yy282; } else { - if (yych <= 'o') goto yy780; - if (yych == 'u') goto yy781; - goto yy280; + if (yych <= 'o') goto yy782; + if (yych == 'u') goto yy783; + goto yy282; } } yy208: @@ -3868,43 +3869,43 @@ yy208: yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= 'K') { - if (yych == 'A') goto yy751; - goto yy280; + if (yych == 'A') goto yy753; + goto yy282; } else { - if (yych <= 'L') goto yy752; - if (yych <= 'N') goto yy280; - goto yy753; + if (yych <= 'L') goto yy754; + if (yych <= 'N') goto yy282; + goto yy755; } } else { if (yych <= 'k') { - if (yych == 'a') goto yy751; - goto yy280; + if (yych == 'a') goto yy753; + goto yy282; } else { - if (yych <= 'l') goto yy752; - if (yych == 'o') goto yy753; - goto yy280; + if (yych <= 'l') goto yy754; + if (yych == 'o') goto yy755; + goto yy282; } } yy209: YYDEBUG(209, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy733; - if (yych == 'e') goto yy733; - goto yy280; + if (yych == 'E') goto yy735; + if (yych == 'e') goto yy735; + goto yy282; yy210: YYDEBUG(210, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'R') { - if (yych == 'H') goto yy725; - if (yych <= 'Q') goto yy280; - goto yy726; + if (yych == 'H') goto yy727; + if (yych <= 'Q') goto yy282; + goto yy728; } else { if (yych <= 'h') { - if (yych <= 'g') goto yy280; - goto yy725; + if (yych <= 'g') goto yy282; + goto yy727; } else { - if (yych == 'r') goto yy726; - goto yy280; + if (yych == 'r') goto yy728; + goto yy282; } } yy211: @@ -3912,70 +3913,70 @@ yy211: yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= 'L') { - if (yych == 'F') goto yy678; - goto yy280; + if (yych == 'F') goto yy680; + goto yy282; } else { - if (yych <= 'M') goto yy680; - if (yych <= 'N') goto yy681; - if (yych <= 'R') goto yy280; - goto yy682; + if (yych <= 'M') goto yy682; + if (yych <= 'N') goto yy683; + if (yych <= 'R') goto yy282; + goto yy684; } } else { if (yych <= 'm') { - if (yych == 'f') goto yy678; - if (yych <= 'l') goto yy280; - goto yy680; + if (yych == 'f') goto yy680; + if (yych <= 'l') goto yy282; + goto yy682; } else { - if (yych <= 'n') goto yy681; - if (yych == 's') goto yy682; - goto yy280; + if (yych <= 'n') goto yy683; + if (yych == 's') goto yy684; + goto yy282; } } yy212: YYDEBUG(212, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy673; - if (yych == 'h') goto yy673; - goto yy280; + if (yych == 'H') goto yy675; + if (yych == 'h') goto yy675; + goto yy282; yy213: YYDEBUG(213, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= 'M') { - if (yych == 'B') goto yy655; - goto yy280; + if (yych == 'B') goto yy657; + goto yy282; } else { - if (yych <= 'N') goto yy656; - if (yych <= 'Q') goto yy280; - if (yych <= 'R') goto yy657; - goto yy658; + if (yych <= 'N') goto yy658; + if (yych <= 'Q') goto yy282; + if (yych <= 'R') goto yy659; + goto yy660; } } else { if (yych <= 'n') { - if (yych == 'b') goto yy655; - if (yych <= 'm') goto yy280; - goto yy656; + if (yych == 'b') goto yy657; + if (yych <= 'm') goto yy282; + goto yy658; } else { - if (yych <= 'q') goto yy280; - if (yych <= 'r') goto yy657; - if (yych <= 's') goto yy658; - goto yy280; + if (yych <= 'q') goto yy282; + if (yych <= 'r') goto yy659; + if (yych <= 's') goto yy660; + goto yy282; } } yy214: YYDEBUG(214, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'W') { - if (yych == 'T') goto yy643; - if (yych <= 'V') goto yy280; - goto yy644; + if (yych == 'T') goto yy645; + if (yych <= 'V') goto yy282; + goto yy646; } else { if (yych <= 't') { - if (yych <= 's') goto yy280; - goto yy643; + if (yych <= 's') goto yy282; + goto yy645; } else { - if (yych == 'w') goto yy644; - goto yy280; + if (yych == 'w') goto yy646; + goto yy282; } } yy215: @@ -3986,38 +3987,38 @@ yy215: if (yych <= '/') { if (yych <= '"') { if (yych <= '!') goto yy205; - goto yy620; + goto yy622; } else { - if (yych == '\'') goto yy622; + if (yych == '\'') goto yy624; goto yy205; } } else { if (yych <= ';') { - if (yych <= '9') goto yy279; + if (yych <= '9') goto yy281; goto yy205; } else { - if (yych <= '<') goto yy619; + if (yych <= '<') goto yy621; if (yych <= '@') goto yy205; - goto yy279; + goto yy281; } } } else { if (yych <= '`') { if (yych <= 'Z') { - if (yych <= 'R') goto yy624; - goto yy279; + if (yych <= 'R') goto yy626; + goto yy281; } else { - if (yych == '_') goto yy279; + if (yych == '_') goto yy281; goto yy205; } } else { if (yych <= 'r') { - if (yych <= 'q') goto yy279; - goto yy624; + if (yych <= 'q') goto yy281; + goto yy626; } else { - if (yych <= 'z') goto yy279; + if (yych <= 'z') goto yy281; if (yych <= '~') goto yy205; - goto yy279; + goto yy281; } } } @@ -4025,60 +4026,60 @@ yy216: YYDEBUG(216, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'L') goto yy609; - if (yych <= 'N') goto yy280; - goto yy610; + if (yych == 'L') goto yy611; + if (yych <= 'N') goto yy282; + goto yy612; } else { if (yych <= 'l') { - if (yych <= 'k') goto yy280; - goto yy609; + if (yych <= 'k') goto yy282; + goto yy611; } else { - if (yych == 'o') goto yy610; - goto yy280; + if (yych == 'o') goto yy612; + goto yy282; } } yy217: YYDEBUG(217, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'R') goto yy585; - if (yych <= 'T') goto yy280; - goto yy586; + if (yych == 'R') goto yy587; + if (yych <= 'T') goto yy282; + goto yy588; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy280; - goto yy585; + if (yych <= 'q') goto yy282; + goto yy587; } else { - if (yych == 'u') goto yy586; - goto yy280; + if (yych == 'u') goto yy588; + goto yy282; } } yy218: YYDEBUG(218, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '<') { - if (yych == '-') goto yy581; + if (yych == '-') goto yy583; } else { - if (yych <= '=') goto yy579; - if (yych <= '>') goto yy583; + if (yych <= '=') goto yy581; + if (yych <= '>') goto yy585; } yy219: YYDEBUG(219, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1848 "Zend/zend_language_scanner.l" +#line 1853 "Zend/zend_language_scanner.l" { return yytext[0]; } -#line 4073 "Zend/zend_language_scanner.c" +#line 4074 "Zend/zend_language_scanner.c" yy220: YYDEBUG(220, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy578; + goto yy580; yy221: YYDEBUG(221, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1579 "Zend/zend_language_scanner.l" +#line 1580 "Zend/zend_language_scanner.l" { Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ Z_STRLEN_P(zendlval) = yyleng; @@ -4086,251 +4087,261 @@ yy221: HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 4090 "Zend/zend_language_scanner.c" +#line 4091 "Zend/zend_language_scanner.c" yy222: YYDEBUG(222, *YYCURSOR); yych = *++YYCURSOR; - if (yych == ':') goto yy575; + if (yych == ':') goto yy577; goto yy219; yy223: YYDEBUG(223, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(224, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1613 "Zend/zend_language_scanner.l" + { + return T_NS_SEPARATOR; +} +#line 4106 "Zend/zend_language_scanner.c" +yy225: + YYDEBUG(225, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'E') { - if (yych == 'A') goto yy563; - if (yych <= 'D') goto yy280; - goto yy564; + if (yych == 'A') goto yy565; + if (yych <= 'D') goto yy282; + goto yy566; } else { if (yych <= 'a') { - if (yych <= '`') goto yy280; - goto yy563; + if (yych <= '`') goto yy282; + goto yy565; } else { - if (yych == 'e') goto yy564; - goto yy280; + if (yych == 'e') goto yy566; + goto yy282; } } -yy224: - YYDEBUG(224, *YYCURSOR); +yy226: + YYDEBUG(226, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy560; - if (yych == 'a') goto yy560; - goto yy280; -yy225: - YYDEBUG(225, *YYCURSOR); + if (yych == 'A') goto yy562; + if (yych == 'a') goto yy562; + goto yy282; +yy227: + YYDEBUG(227, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { if (yych <= 'D') { if (yych <= ' ') { - if (yych == '\t') goto yy473; + if (yych == '\t') goto yy475; if (yych <= 0x1F) goto yy219; - goto yy473; + goto yy475; } else { if (yych <= '@') goto yy219; if (yych == 'C') goto yy219; - goto yy473; + goto yy475; } } else { if (yych <= 'I') { - if (yych == 'F') goto yy473; + if (yych == 'F') goto yy475; if (yych <= 'H') goto yy219; - goto yy473; + goto yy475; } else { - if (yych == 'O') goto yy473; + if (yych == 'O') goto yy475; if (yych <= 'Q') goto yy219; - goto yy473; + goto yy475; } } } else { if (yych <= 'f') { if (yych <= 'b') { - if (yych == 'U') goto yy473; + if (yych == 'U') goto yy475; if (yych <= '`') goto yy219; - goto yy473; + goto yy475; } else { - if (yych == 'd') goto yy473; + if (yych == 'd') goto yy475; if (yych <= 'e') goto yy219; - goto yy473; + goto yy475; } } else { if (yych <= 'o') { - if (yych == 'i') goto yy473; + if (yych == 'i') goto yy475; if (yych <= 'n') goto yy219; - goto yy473; + goto yy475; } else { if (yych <= 's') { if (yych <= 'q') goto yy219; - goto yy473; + goto yy475; } else { - if (yych == 'u') goto yy473; + if (yych == 'u') goto yy475; goto yy219; } } } } -yy226: - YYDEBUG(226, *YYCURSOR); +yy228: + YYDEBUG(228, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'S') { - if (yych == 'N') goto yy464; - if (yych <= 'R') goto yy280; - goto yy465; + if (yych == 'N') goto yy466; + if (yych <= 'R') goto yy282; + goto yy467; } else { if (yych <= 'n') { - if (yych <= 'm') goto yy280; - goto yy464; + if (yych <= 'm') goto yy282; + goto yy466; } else { - if (yych == 's') goto yy465; - goto yy280; + if (yych == 's') goto yy467; + goto yy282; } } -yy227: - YYDEBUG(227, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '_') goto yy390; - goto yy280; -yy228: - YYDEBUG(228, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '<') goto yy219; - if (yych <= '=') goto yy384; - if (yych <= '>') goto yy386; - goto yy219; yy229: YYDEBUG(229, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy380; - if (yych == 'i') goto yy380; - goto yy280; + if (yych == '_') goto yy392; + goto yy282; yy230: YYDEBUG(230, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '+') goto yy378; - if (yych == '=') goto yy376; + if (yych <= '<') goto yy219; + if (yych <= '=') goto yy386; + if (yych <= '>') goto yy388; goto yy219; yy231: YYDEBUG(231, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy373; - goto yy219; + if (yych == 'I') goto yy382; + if (yych == 'i') goto yy382; + goto yy282; yy232: YYDEBUG(232, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '+') goto yy380; + if (yych == '=') goto yy378; + goto yy219; +yy233: + YYDEBUG(233, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '=') goto yy375; + goto yy219; +yy234: + YYDEBUG(234, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ';') { - if (yych == '/') goto yy345; + if (yych == '/') goto yy347; goto yy219; } else { - if (yych <= '<') goto yy343; - if (yych <= '=') goto yy346; - if (yych <= '>') goto yy348; + if (yych <= '<') goto yy345; + if (yych <= '=') goto yy348; + if (yych <= '>') goto yy350; goto yy219; } -yy233: - YYDEBUG(233, *YYCURSOR); +yy235: + YYDEBUG(235, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '<') goto yy219; - if (yych <= '=') goto yy339; - if (yych <= '>') goto yy337; + if (yych <= '=') goto yy341; + if (yych <= '>') goto yy339; goto yy219; -yy234: - YYDEBUG(234, *YYCURSOR); +yy236: + YYDEBUG(236, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy335; + if (yych == '=') goto yy337; goto yy219; -yy235: - YYDEBUG(235, *YYCURSOR); +yy237: + YYDEBUG(237, *YYCURSOR); yych = *++YYCURSOR; if (yych <= '.') { - if (yych == '*') goto yy326; + if (yych == '*') goto yy328; goto yy219; } else { - if (yych <= '/') goto yy328; - if (yych == '=') goto yy329; + if (yych <= '/') goto yy330; + if (yych == '=') goto yy331; goto yy219; } -yy236: - YYDEBUG(236, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '/') goto yy219; - if (yych <= '9') goto yy322; - if (yych == '=') goto yy324; - goto yy219; -yy237: - YYDEBUG(237, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= '<') goto yy219; - if (yych <= '=') goto yy318; - if (yych <= '>') goto yy316; - goto yy219; yy238: YYDEBUG(238, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '&') goto yy312; - if (yych == '=') goto yy314; + if (yych <= '/') goto yy219; + if (yych <= '9') goto yy324; + if (yych == '=') goto yy326; goto yy219; yy239: YYDEBUG(239, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy310; - if (yych == '|') goto yy308; + if (yych <= '<') goto yy219; + if (yych <= '=') goto yy320; + if (yych <= '>') goto yy318; goto yy219; yy240: YYDEBUG(240, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '=') goto yy306; + if (yych == '&') goto yy314; + if (yych == '=') goto yy316; goto yy219; yy241: YYDEBUG(241, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy304; - if (yych == 'r') goto yy304; - goto yy280; + if (yych == '=') goto yy312; + if (yych == '|') goto yy310; + goto yy219; yy242: YYDEBUG(242, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy301; - if (yych == 'o') goto yy301; - goto yy280; + if (yych == '=') goto yy308; + goto yy219; yy243: YYDEBUG(243, *YYCURSOR); yych = *++YYCURSOR; + if (yych == 'R') goto yy306; + if (yych == 'r') goto yy306; + goto yy282; +yy244: + YYDEBUG(244, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy303; + if (yych == 'o') goto yy303; + goto yy282; +yy245: + YYDEBUG(245, *YYCURSOR); + yych = *++YYCURSOR; if (yych <= '_') { if (yych <= '@') goto yy219; - if (yych <= 'Z') goto yy298; + if (yych <= 'Z') goto yy300; if (yych <= '^') goto yy219; - goto yy298; + goto yy300; } else { if (yych <= '`') goto yy219; - if (yych <= 'z') goto yy298; + if (yych <= 'z') goto yy300; if (yych <= '~') goto yy219; - goto yy298; + goto yy300; } -yy244: - YYDEBUG(244, *YYCURSOR); +yy246: + YYDEBUG(246, *YYCURSOR); yych = *++YYCURSOR; goto yy219; -yy245: - YYDEBUG(245, *YYCURSOR); +yy247: + YYDEBUG(247, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '>') goto yy294; + if (yych == '>') goto yy296; goto yy219; -yy246: - YYDEBUG(246, *YYCURSOR); +yy248: + YYDEBUG(248, *YYCURSOR); ++YYCURSOR; - YYDEBUG(247, *YYCURSOR); + YYDEBUG(249, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1853 "Zend/zend_language_scanner.l" +#line 1858 "Zend/zend_language_scanner.l" { yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return '{'; } -#line 4328 "Zend/zend_language_scanner.c" -yy248: - YYDEBUG(248, *YYCURSOR); +#line 4339 "Zend/zend_language_scanner.c" +yy250: + YYDEBUG(250, *YYCURSOR); ++YYCURSOR; - YYDEBUG(249, *YYCURSOR); + YYDEBUG(251, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1865 "Zend/zend_language_scanner.l" +#line 1870 "Zend/zend_language_scanner.l" { RESET_DOC_COMMENT(); if (!zend_stack_is_empty(&SCNG(state_stack))) { @@ -4338,30 +4349,30 @@ yy248: } return '}'; } -#line 4342 "Zend/zend_language_scanner.c" -yy250: - YYDEBUG(250, *YYCURSOR); +#line 4353 "Zend/zend_language_scanner.c" +yy252: + YYDEBUG(252, *YYCURSOR); yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'E') { if (yych <= '/') { - if (yych == '.') goto yy281; + if (yych == '.') goto yy283; } else { - if (yych <= '9') goto yy284; - if (yych >= 'E') goto yy286; + if (yych <= '9') goto yy286; + if (yych >= 'E') goto yy288; } } else { if (yych <= 'd') { - if (yych == 'X') goto yy290; + if (yych == 'X') goto yy292; } else { - if (yych <= 'e') goto yy286; - if (yych == 'x') goto yy290; + if (yych <= 'e') goto yy288; + if (yych == 'x') goto yy292; } } -yy251: - YYDEBUG(251, *YYCURSOR); +yy253: + YYDEBUG(253, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1895 "Zend/zend_language_scanner.l" +#line 1900 "Zend/zend_language_scanner.l" { if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */ Z_LVAL_P(zendlval) = strtol(yytext, NULL, 0); @@ -4382,105 +4393,105 @@ yy251: Z_TYPE_P(zendlval) = IS_LONG; return T_LNUMBER; } -#line 4386 "Zend/zend_language_scanner.c" -yy252: - YYDEBUG(252, *YYCURSOR); +#line 4397 "Zend/zend_language_scanner.c" +yy254: + YYDEBUG(254, *YYCURSOR); yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { - if (yych == '.') goto yy281; - if (yych <= '/') goto yy251; - goto yy284; + if (yych == '.') goto yy283; + if (yych <= '/') goto yy253; + goto yy286; } else { if (yych <= 'E') { - if (yych <= 'D') goto yy251; - goto yy286; + if (yych <= 'D') goto yy253; + goto yy288; } else { - if (yych == 'e') goto yy286; - goto yy251; + if (yych == 'e') goto yy288; + goto yy253; } } -yy253: - YYDEBUG(253, *YYCURSOR); - yych = *++YYCURSOR; - goto yy280; -yy254: - YYDEBUG(254, *YYCURSOR); - ++YYCURSOR; yy255: YYDEBUG(255, *YYCURSOR); + yych = *++YYCURSOR; + goto yy282; +yy256: + YYDEBUG(256, *YYCURSOR); + ++YYCURSOR; +yy257: + YYDEBUG(257, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2272 "Zend/zend_language_scanner.l" +#line 2277 "Zend/zend_language_scanner.l" { BEGIN(ST_ONE_LINE_COMMENT); yymore(); } -#line 4419 "Zend/zend_language_scanner.c" -yy256: - YYDEBUG(256, *YYCURSOR); +#line 4430 "Zend/zend_language_scanner.c" +yy258: + YYDEBUG(258, *YYCURSOR); yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); - goto yy272; -yy257: - YYDEBUG(257, *YYCURSOR); + goto yy274; +yy259: + YYDEBUG(259, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2417 "Zend/zend_language_scanner.l" +#line 2422 "Zend/zend_language_scanner.l" { BEGIN(ST_DOUBLE_QUOTES); return '"'; } -#line 4433 "Zend/zend_language_scanner.c" -yy258: - YYDEBUG(258, *YYCURSOR); +#line 4444 "Zend/zend_language_scanner.c" +yy260: + YYDEBUG(260, *YYCURSOR); yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); - goto yy264; -yy259: - YYDEBUG(259, *YYCURSOR); + goto yy266; +yy261: + YYDEBUG(261, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2677 "Zend/zend_language_scanner.l" +#line 2682 "Zend/zend_language_scanner.l" { zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 4447 "Zend/zend_language_scanner.c" -yy260: - YYDEBUG(260, *YYCURSOR); +#line 4458 "Zend/zend_language_scanner.c" +yy262: + YYDEBUG(262, *YYCURSOR); ++YYCURSOR; - YYDEBUG(261, *YYCURSOR); + YYDEBUG(263, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2472 "Zend/zend_language_scanner.l" +#line 2477 "Zend/zend_language_scanner.l" { BEGIN(ST_BACKQUOTE); return '`'; } -#line 4458 "Zend/zend_language_scanner.c" -yy262: - YYDEBUG(262, *YYCURSOR); +#line 4469 "Zend/zend_language_scanner.c" +yy264: + YYDEBUG(264, *YYCURSOR); yych = *++YYCURSOR; - goto yy259; -yy263: - YYDEBUG(263, *YYCURSOR); + goto yy261; +yy265: + YYDEBUG(265, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy264: - YYDEBUG(264, *YYCURSOR); +yy266: + YYDEBUG(266, *YYCURSOR); if (yybm[256+yych] & 128) { - goto yy263; + goto yy265; } - if (yych <= '[') goto yy266; - YYDEBUG(265, *YYCURSOR); + if (yych <= '[') goto yy268; + YYDEBUG(267, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - goto yy263; -yy266: - YYDEBUG(266, *YYCURSOR); + goto yy265; +yy268: + YYDEBUG(268, *YYCURSOR); ++YYCURSOR; - YYDEBUG(267, *YYCURSOR); + YYDEBUG(269, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2401 "Zend/zend_language_scanner.l" +#line 2406 "Zend/zend_language_scanner.l" { if (UG(unicode)) { return zend_scan_unicode_single_string(zendlval TSRMLS_CC); @@ -4489,22 +4500,22 @@ yy266: return T_CONSTANT_ENCAPSED_STRING; } } -#line 4493 "Zend/zend_language_scanner.c" -yy268: - YYDEBUG(268, *YYCURSOR); +#line 4504 "Zend/zend_language_scanner.c" +yy270: + YYDEBUG(270, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(269, *YYCURSOR); + YYDEBUG(271, *YYCURSOR); if (yybm[0+yych] & 2) { - goto yy271; + goto yy273; } - if (yych <= '#') goto yy276; - if (yych <= '$') goto yy270; - if (yych <= 'z') goto yy273; - goto yy268; -yy270: - YYDEBUG(270, *YYCURSOR); + if (yych <= '#') goto yy278; + if (yych <= '$') goto yy272; + if (yych <= 'z') goto yy275; + goto yy270; +yy272: + YYDEBUG(272, *YYCURSOR); YYCURSOR = YYMARKER; if (yyaccept <= 4) { if (yyaccept <= 2) { @@ -4515,82 +4526,82 @@ yy270: goto yy219; } } else { - goto yy251; + goto yy253; } } else { if (yyaccept <= 3) { - goto yy257; - } else { goto yy259; + } else { + goto yy261; } } } else { if (yyaccept <= 6) { if (yyaccept <= 5) { - goto yy283; + goto yy285; } else { - goto yy327; + goto yy329; } } else { if (yyaccept <= 7) { - goto yy344; + goto yy346; } else { - goto yy621; + goto yy623; } } } -yy271: - YYDEBUG(271, *YYCURSOR); +yy273: + YYDEBUG(273, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy272: - YYDEBUG(272, *YYCURSOR); +yy274: + YYDEBUG(274, *YYCURSOR); if (yybm[0+yych] & 2) { - goto yy271; + goto yy273; } - if (yych <= '#') goto yy276; - if (yych <= '$') goto yy274; - if (yych >= '{') goto yy268; -yy273: - YYDEBUG(273, *YYCURSOR); + if (yych <= '#') goto yy278; + if (yych <= '$') goto yy276; + if (yych >= '{') goto yy270; +yy275: + YYDEBUG(275, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - goto yy271; -yy274: - YYDEBUG(274, *YYCURSOR); + goto yy273; +yy276: + YYDEBUG(276, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(275, *YYCURSOR); + YYDEBUG(277, *YYCURSOR); if (yybm[0+yych] & 4) { - goto yy274; + goto yy276; } if (yych <= '\\') { if (yych <= '@') { - if (yych != '"') goto yy271; + if (yych != '"') goto yy273; } else { - if (yych <= 'Z') goto yy270; - if (yych <= '[') goto yy271; - goto yy278; + if (yych <= 'Z') goto yy272; + if (yych <= '[') goto yy273; + goto yy280; } } else { if (yych <= '`') { - if (yych == '_') goto yy270; - goto yy271; + if (yych == '_') goto yy272; + goto yy273; } else { - if (yych <= '{') goto yy270; - if (yych <= '~') goto yy271; - goto yy270; + if (yych <= '{') goto yy272; + if (yych <= '~') goto yy273; + goto yy272; } } -yy276: - YYDEBUG(276, *YYCURSOR); +yy278: + YYDEBUG(278, *YYCURSOR); ++YYCURSOR; - YYDEBUG(277, *YYCURSOR); + YYDEBUG(279, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2385 "Zend/zend_language_scanner.l" +#line 2390 "Zend/zend_language_scanner.l" { if (UG(unicode)) { return zend_scan_unicode_escape_string(zendlval, yytext+1, yyleng-2, 0x22 /*'"'*/, T_CONSTANT_ENCAPSED_STRING TSRMLS_CC); @@ -4599,108 +4610,108 @@ yy276: return T_CONSTANT_ENCAPSED_STRING; } } -#line 4603 "Zend/zend_language_scanner.c" -yy278: - YYDEBUG(278, *YYCURSOR); +#line 4614 "Zend/zend_language_scanner.c" +yy280: + YYDEBUG(280, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - goto yy271; -yy279: - YYDEBUG(279, *YYCURSOR); + goto yy273; +yy281: + YYDEBUG(281, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy280: - YYDEBUG(280, *YYCURSOR); +yy282: + YYDEBUG(282, *YYCURSOR); if (yybm[0+yych] & 8) { - goto yy279; + goto yy281; } goto yy205; -yy281: - YYDEBUG(281, *YYCURSOR); +yy283: + YYDEBUG(283, *YYCURSOR); yyaccept = 5; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(282, *YYCURSOR); + YYDEBUG(284, *YYCURSOR); if (yybm[0+yych] & 16) { - goto yy281; + goto yy283; } - if (yych == 'E') goto yy286; - if (yych == 'e') goto yy286; -yy283: - YYDEBUG(283, *YYCURSOR); + if (yych == 'E') goto yy288; + if (yych == 'e') goto yy288; +yy285: + YYDEBUG(285, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1956 "Zend/zend_language_scanner.l" +#line 1961 "Zend/zend_language_scanner.l" { Z_DVAL_P(zendlval) = zend_strtod(yytext, NULL); Z_TYPE_P(zendlval) = IS_DOUBLE; return T_DNUMBER; } -#line 4642 "Zend/zend_language_scanner.c" -yy284: - YYDEBUG(284, *YYCURSOR); +#line 4653 "Zend/zend_language_scanner.c" +yy286: + YYDEBUG(286, *YYCURSOR); yyaccept = 2; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(285, *YYCURSOR); + YYDEBUG(287, *YYCURSOR); if (yych <= '9') { - if (yych == '.') goto yy281; - if (yych <= '/') goto yy251; - goto yy284; + if (yych == '.') goto yy283; + if (yych <= '/') goto yy253; + goto yy286; } else { if (yych <= 'E') { - if (yych <= 'D') goto yy251; + if (yych <= 'D') goto yy253; } else { - if (yych != 'e') goto yy251; + if (yych != 'e') goto yy253; } } -yy286: - YYDEBUG(286, *YYCURSOR); +yy288: + YYDEBUG(288, *YYCURSOR); yych = *++YYCURSOR; if (yych <= ',') { - if (yych != '+') goto yy270; + if (yych != '+') goto yy272; } else { - if (yych <= '-') goto yy287; - if (yych <= '/') goto yy270; - if (yych <= '9') goto yy288; - goto yy270; + if (yych <= '-') goto yy289; + if (yych <= '/') goto yy272; + if (yych <= '9') goto yy290; + goto yy272; } -yy287: - YYDEBUG(287, *YYCURSOR); +yy289: + YYDEBUG(289, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= '/') goto yy270; - if (yych >= ':') goto yy270; -yy288: - YYDEBUG(288, *YYCURSOR); + if (yych <= '/') goto yy272; + if (yych >= ':') goto yy272; +yy290: + YYDEBUG(290, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(289, *YYCURSOR); - if (yych <= '/') goto yy283; - if (yych <= '9') goto yy288; - goto yy283; -yy290: - YYDEBUG(290, *YYCURSOR); + YYDEBUG(291, *YYCURSOR); + if (yych <= '/') goto yy285; + if (yych <= '9') goto yy290; + goto yy285; +yy292: + YYDEBUG(292, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 32) { - goto yy291; + goto yy293; } - goto yy270; -yy291: - YYDEBUG(291, *YYCURSOR); + goto yy272; +yy293: + YYDEBUG(293, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(292, *YYCURSOR); + YYDEBUG(294, *YYCURSOR); if (yybm[0+yych] & 32) { - goto yy291; + goto yy293; } - YYDEBUG(293, *YYCURSOR); + YYDEBUG(295, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1916 "Zend/zend_language_scanner.l" +#line 1921 "Zend/zend_language_scanner.l" { char *hex = yytext + 2; /* Skip "0x" */ int len = yyleng - 2; @@ -4721,16 +4732,16 @@ yy291: return T_DNUMBER; } } -#line 4725 "Zend/zend_language_scanner.c" -yy294: - YYDEBUG(294, *YYCURSOR); +#line 4736 "Zend/zend_language_scanner.c" +yy296: + YYDEBUG(296, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '\n') goto yy296; - if (yych == '\r') goto yy297; -yy295: - YYDEBUG(295, *YYCURSOR); + if ((yych = *YYCURSOR) == '\n') goto yy298; + if (yych == '\r') goto yy299; +yy297: + YYDEBUG(297, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2360 "Zend/zend_language_scanner.l" +#line 2365 "Zend/zend_language_scanner.l" { Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ Z_STRLEN_P(zendlval) = yyleng; @@ -4738,41 +4749,41 @@ yy295: BEGIN(INITIAL); return T_CLOSE_TAG; /* implicit ';' at php-end tag */ } -#line 4742 "Zend/zend_language_scanner.c" -yy296: - YYDEBUG(296, *YYCURSOR); - yych = *++YYCURSOR; - goto yy295; -yy297: - YYDEBUG(297, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy296; - goto yy295; +#line 4753 "Zend/zend_language_scanner.c" yy298: YYDEBUG(298, *YYCURSOR); + yych = *++YYCURSOR; + goto yy297; +yy299: + YYDEBUG(299, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\n') goto yy298; + goto yy297; +yy300: + YYDEBUG(300, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(299, *YYCURSOR); + YYDEBUG(301, *YYCURSOR); if (yych <= '^') { if (yych <= '9') { - if (yych >= '0') goto yy298; + if (yych >= '0') goto yy300; } else { - if (yych <= '@') goto yy300; - if (yych <= 'Z') goto yy298; + if (yych <= '@') goto yy302; + if (yych <= 'Z') goto yy300; } } else { if (yych <= '`') { - if (yych <= '_') goto yy298; + if (yych <= '_') goto yy300; } else { - if (yych <= 'z') goto yy298; - if (yych >= 0x7F) goto yy298; + if (yych <= 'z') goto yy300; + if (yych >= 0x7F) goto yy300; } } -yy300: - YYDEBUG(300, *YYCURSOR); +yy302: + YYDEBUG(302, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2226 "Zend/zend_language_scanner.l" +#line 2231 "Zend/zend_language_scanner.l" { if (!zend_copy_scanner_string(zendlval, (yytext+1), (yyleng-1), UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { return 0; @@ -4782,97 +4793,97 @@ yy300: } return T_VARIABLE; } -#line 4786 "Zend/zend_language_scanner.c" -yy301: - YYDEBUG(301, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy302; - if (yych != 'r') goto yy280; -yy302: - YYDEBUG(302, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; - } +#line 4797 "Zend/zend_language_scanner.c" +yy303: YYDEBUG(303, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1836 "Zend/zend_language_scanner.l" - { - return T_LOGICAL_XOR; -} -#line 4804 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'R') goto yy304; + if (yych != 'r') goto yy282; yy304: YYDEBUG(304, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } YYDEBUG(305, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1828 "Zend/zend_language_scanner.l" +#line 1841 "Zend/zend_language_scanner.l" { - return T_LOGICAL_OR; + return T_LOGICAL_XOR; } -#line 4817 "Zend/zend_language_scanner.c" +#line 4815 "Zend/zend_language_scanner.c" yy306: YYDEBUG(306, *YYCURSOR); ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 8) { + goto yy281; + } YYDEBUG(307, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1816 "Zend/zend_language_scanner.l" +#line 1833 "Zend/zend_language_scanner.l" { - return T_XOR_EQUAL; + return T_LOGICAL_OR; } -#line 4827 "Zend/zend_language_scanner.c" +#line 4828 "Zend/zend_language_scanner.c" yy308: YYDEBUG(308, *YYCURSOR); ++YYCURSOR; YYDEBUG(309, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1820 "Zend/zend_language_scanner.l" +#line 1821 "Zend/zend_language_scanner.l" { - return T_BOOLEAN_OR; + return T_XOR_EQUAL; } -#line 4837 "Zend/zend_language_scanner.c" +#line 4838 "Zend/zend_language_scanner.c" yy310: YYDEBUG(310, *YYCURSOR); ++YYCURSOR; YYDEBUG(311, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1812 "Zend/zend_language_scanner.l" +#line 1825 "Zend/zend_language_scanner.l" { - return T_OR_EQUAL; + return T_BOOLEAN_OR; } -#line 4847 "Zend/zend_language_scanner.c" +#line 4848 "Zend/zend_language_scanner.c" yy312: YYDEBUG(312, *YYCURSOR); ++YYCURSOR; YYDEBUG(313, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1824 "Zend/zend_language_scanner.l" +#line 1817 "Zend/zend_language_scanner.l" { - return T_BOOLEAN_AND; + return T_OR_EQUAL; } -#line 4857 "Zend/zend_language_scanner.c" +#line 4858 "Zend/zend_language_scanner.c" yy314: YYDEBUG(314, *YYCURSOR); ++YYCURSOR; YYDEBUG(315, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1808 "Zend/zend_language_scanner.l" +#line 1829 "Zend/zend_language_scanner.l" { - return T_AND_EQUAL; + return T_BOOLEAN_AND; } -#line 4867 "Zend/zend_language_scanner.c" +#line 4868 "Zend/zend_language_scanner.c" yy316: YYDEBUG(316, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '\n') goto yy320; - if (yych == '\r') goto yy321; -yy317: YYDEBUG(317, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2369 "Zend/zend_language_scanner.l" +#line 1813 "Zend/zend_language_scanner.l" + { + return T_AND_EQUAL; +} +#line 4878 "Zend/zend_language_scanner.c" +yy318: + YYDEBUG(318, *YYCURSOR); + ++YYCURSOR; + if ((yych = *YYCURSOR) == '\n') goto yy322; + if (yych == '\r') goto yy323; +yy319: + YYDEBUG(319, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 2374 "Zend/zend_language_scanner.l" { if (CG(asp_tags)) { BEGIN(INITIAL); @@ -4885,348 +4896,348 @@ yy317: return yytext[0]; } } -#line 4889 "Zend/zend_language_scanner.c" -yy318: - YYDEBUG(318, *YYCURSOR); +#line 4900 "Zend/zend_language_scanner.c" +yy320: + YYDEBUG(320, *YYCURSOR); ++YYCURSOR; - YYDEBUG(319, *YYCURSOR); + YYDEBUG(321, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1796 "Zend/zend_language_scanner.l" +#line 1801 "Zend/zend_language_scanner.l" { return T_MOD_EQUAL; } -#line 4899 "Zend/zend_language_scanner.c" -yy320: - YYDEBUG(320, *YYCURSOR); - yych = *++YYCURSOR; - goto yy317; -yy321: - YYDEBUG(321, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy320; - goto yy317; +#line 4910 "Zend/zend_language_scanner.c" yy322: YYDEBUG(322, *YYCURSOR); + yych = *++YYCURSOR; + goto yy319; +yy323: + YYDEBUG(323, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\n') goto yy322; + goto yy319; +yy324: + YYDEBUG(324, *YYCURSOR); yyaccept = 5; YYMARKER = ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(323, *YYCURSOR); + YYDEBUG(325, *YYCURSOR); if (yych <= 'D') { - if (yych <= '/') goto yy283; - if (yych <= '9') goto yy322; - goto yy283; + if (yych <= '/') goto yy285; + if (yych <= '9') goto yy324; + goto yy285; } else { - if (yych <= 'E') goto yy286; - if (yych == 'e') goto yy286; - goto yy283; + if (yych <= 'E') goto yy288; + if (yych == 'e') goto yy288; + goto yy285; } -yy324: - YYDEBUG(324, *YYCURSOR); +yy326: + YYDEBUG(326, *YYCURSOR); ++YYCURSOR; - YYDEBUG(325, *YYCURSOR); + YYDEBUG(327, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1792 "Zend/zend_language_scanner.l" +#line 1797 "Zend/zend_language_scanner.l" { return T_CONCAT_EQUAL; } -#line 4934 "Zend/zend_language_scanner.c" -yy326: - YYDEBUG(326, *YYCURSOR); +#line 4945 "Zend/zend_language_scanner.c" +yy328: + YYDEBUG(328, *YYCURSOR); yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '*') goto yy331; -yy327: - YYDEBUG(327, *YYCURSOR); + if (yych == '*') goto yy333; +yy329: + YYDEBUG(329, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2327 "Zend/zend_language_scanner.l" +#line 2332 "Zend/zend_language_scanner.l" { BEGIN(ST_COMMENT); yymore(); } -#line 4948 "Zend/zend_language_scanner.c" -yy328: - YYDEBUG(328, *YYCURSOR); +#line 4959 "Zend/zend_language_scanner.c" +yy330: + YYDEBUG(330, *YYCURSOR); yych = *++YYCURSOR; - goto yy255; -yy329: - YYDEBUG(329, *YYCURSOR); + goto yy257; +yy331: + YYDEBUG(331, *YYCURSOR); ++YYCURSOR; - YYDEBUG(330, *YYCURSOR); + YYDEBUG(332, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1788 "Zend/zend_language_scanner.l" +#line 1793 "Zend/zend_language_scanner.l" { return T_DIV_EQUAL; } -#line 4962 "Zend/zend_language_scanner.c" -yy331: - YYDEBUG(331, *YYCURSOR); +#line 4973 "Zend/zend_language_scanner.c" +yy333: + YYDEBUG(333, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 64) { - goto yy332; + goto yy334; } - goto yy270; -yy332: - YYDEBUG(332, *YYCURSOR); + goto yy272; +yy334: + YYDEBUG(334, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(333, *YYCURSOR); + YYDEBUG(335, *YYCURSOR); if (yybm[0+yych] & 64) { - goto yy332; + goto yy334; } - YYDEBUG(334, *YYCURSOR); + YYDEBUG(336, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2321 "Zend/zend_language_scanner.l" +#line 2326 "Zend/zend_language_scanner.l" { RESET_DOC_COMMENT(); BEGIN(ST_DOC_COMMENT); yymore(); } -#line 4987 "Zend/zend_language_scanner.c" -yy335: - YYDEBUG(335, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(336, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1784 "Zend/zend_language_scanner.l" - { - return T_MUL_EQUAL; -} -#line 4997 "Zend/zend_language_scanner.c" +#line 4998 "Zend/zend_language_scanner.c" yy337: YYDEBUG(337, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy341; YYDEBUG(338, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1844 "Zend/zend_language_scanner.l" +#line 1789 "Zend/zend_language_scanner.l" { - return T_SR; + return T_MUL_EQUAL; } #line 5008 "Zend/zend_language_scanner.c" yy339: YYDEBUG(339, *YYCURSOR); ++YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy343; YYDEBUG(340, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1772 "Zend/zend_language_scanner.l" +#line 1849 "Zend/zend_language_scanner.l" { - return T_IS_GREATER_OR_EQUAL; + return T_SR; } -#line 5018 "Zend/zend_language_scanner.c" +#line 5019 "Zend/zend_language_scanner.c" yy341: YYDEBUG(341, *YYCURSOR); ++YYCURSOR; YYDEBUG(342, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1804 "Zend/zend_language_scanner.l" +#line 1777 "Zend/zend_language_scanner.l" { - return T_SR_EQUAL; + return T_IS_GREATER_OR_EQUAL; } -#line 5028 "Zend/zend_language_scanner.c" +#line 5029 "Zend/zend_language_scanner.c" yy343: YYDEBUG(343, *YYCURSOR); - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ';') goto yy344; - if (yych <= '<') goto yy359; - if (yych <= '=') goto yy357; -yy344: + ++YYCURSOR; YYDEBUG(344, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1840 "Zend/zend_language_scanner.l" +#line 1809 "Zend/zend_language_scanner.l" { - return T_SL; + return T_SR_EQUAL; } -#line 5043 "Zend/zend_language_scanner.c" +#line 5039 "Zend/zend_language_scanner.c" yy345: YYDEBUG(345, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy350; - if (yych == 's') goto yy350; - goto yy270; + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ';') goto yy346; + if (yych <= '<') goto yy361; + if (yych <= '=') goto yy359; yy346: YYDEBUG(346, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(347, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1768 "Zend/zend_language_scanner.l" +#line 1845 "Zend/zend_language_scanner.l" { - return T_IS_SMALLER_OR_EQUAL; + return T_SL; } -#line 5059 "Zend/zend_language_scanner.c" +#line 5054 "Zend/zend_language_scanner.c" +yy347: + YYDEBUG(347, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy352; + if (yych == 's') goto yy352; + goto yy272; yy348: YYDEBUG(348, *YYCURSOR); ++YYCURSOR; -yy349: YYDEBUG(349, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1764 "Zend/zend_language_scanner.l" +#line 1773 "Zend/zend_language_scanner.l" { - return T_IS_NOT_EQUAL; + return T_IS_SMALLER_OR_EQUAL; } #line 5070 "Zend/zend_language_scanner.c" yy350: YYDEBUG(350, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy351; - if (yych != 'c') goto yy270; + ++YYCURSOR; yy351: YYDEBUG(351, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy352; - if (yych != 'r') goto yy270; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1769 "Zend/zend_language_scanner.l" + { + return T_IS_NOT_EQUAL; +} +#line 5081 "Zend/zend_language_scanner.c" yy352: YYDEBUG(352, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy353; - if (yych != 'i') goto yy270; + if (yych == 'C') goto yy353; + if (yych != 'c') goto yy272; yy353: YYDEBUG(353, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy354; - if (yych != 'p') goto yy270; + if (yych == 'R') goto yy354; + if (yych != 'r') goto yy272; yy354: YYDEBUG(354, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy355; - if (yych != 't') goto yy270; + if (yych == 'I') goto yy355; + if (yych != 'i') goto yy272; yy355: YYDEBUG(355, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'P') goto yy356; + if (yych != 'p') goto yy272; +yy356: + YYDEBUG(356, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy357; + if (yych != 't') goto yy272; +yy357: + YYDEBUG(357, *YYCURSOR); ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; - YYDEBUG(356, *YYCURSOR); + YYDEBUG(358, *YYCURSOR); if (yych <= '\r') { - if (yych <= 0x08) goto yy270; - if (yych <= '\n') goto yy355; - if (yych <= '\f') goto yy270; - goto yy355; + if (yych <= 0x08) goto yy272; + if (yych <= '\n') goto yy357; + if (yych <= '\f') goto yy272; + goto yy357; } else { if (yych <= ' ') { - if (yych <= 0x1F) goto yy270; - goto yy355; + if (yych <= 0x1F) goto yy272; + goto yy357; } else { - if (yych == '>') goto yy294; - goto yy270; + if (yych == '>') goto yy296; + goto yy272; } } -yy357: - YYDEBUG(357, *YYCURSOR); +yy359: + YYDEBUG(359, *YYCURSOR); ++YYCURSOR; - YYDEBUG(358, *YYCURSOR); + YYDEBUG(360, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1800 "Zend/zend_language_scanner.l" +#line 1805 "Zend/zend_language_scanner.l" { return T_SL_EQUAL; } -#line 5125 "Zend/zend_language_scanner.c" -yy359: - YYDEBUG(359, *YYCURSOR); +#line 5136 "Zend/zend_language_scanner.c" +yy361: + YYDEBUG(361, *YYCURSOR); ++YYCURSOR; YYFILL(2); yych = *YYCURSOR; - YYDEBUG(360, *YYCURSOR); + YYDEBUG(362, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy359; + goto yy361; } if (yych <= 'Z') { if (yych <= '&') { - if (yych == '"') goto yy364; - goto yy270; + if (yych == '"') goto yy366; + goto yy272; } else { - if (yych <= '\'') goto yy363; - if (yych <= '@') goto yy270; + if (yych <= '\'') goto yy365; + if (yych <= '@') goto yy272; } } else { if (yych <= '`') { - if (yych != '_') goto yy270; + if (yych != '_') goto yy272; } else { - if (yych <= 'z') goto yy361; - if (yych <= '~') goto yy270; + if (yych <= 'z') goto yy363; + if (yych <= '~') goto yy272; } } -yy361: - YYDEBUG(361, *YYCURSOR); +yy363: + YYDEBUG(363, *YYCURSOR); ++YYCURSOR; YYFILL(2); yych = *YYCURSOR; - YYDEBUG(362, *YYCURSOR); + YYDEBUG(364, *YYCURSOR); if (yych <= '@') { if (yych <= '\f') { - if (yych == '\n') goto yy368; - goto yy270; + if (yych == '\n') goto yy370; + goto yy272; } else { - if (yych <= '\r') goto yy370; - if (yych <= '/') goto yy270; - if (yych <= '9') goto yy361; - goto yy270; + if (yych <= '\r') goto yy372; + if (yych <= '/') goto yy272; + if (yych <= '9') goto yy363; + goto yy272; } } else { if (yych <= '_') { - if (yych <= 'Z') goto yy361; - if (yych <= '^') goto yy270; - goto yy361; + if (yych <= 'Z') goto yy363; + if (yych <= '^') goto yy272; + goto yy363; } else { - if (yych <= '`') goto yy270; - if (yych <= 'z') goto yy361; - if (yych <= '~') goto yy270; - goto yy361; + if (yych <= '`') goto yy272; + if (yych <= 'z') goto yy363; + if (yych <= '~') goto yy272; + goto yy363; } } -yy363: - YYDEBUG(363, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\'') goto yy270; - if (yych <= '/') goto yy372; - if (yych <= '9') goto yy270; - goto yy372; -yy364: - YYDEBUG(364, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '"') goto yy270; - if (yych <= '/') goto yy366; - if (yych <= '9') goto yy270; - goto yy366; yy365: YYDEBUG(365, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\'') goto yy272; + if (yych <= '/') goto yy374; + if (yych <= '9') goto yy272; + goto yy374; +yy366: + YYDEBUG(366, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '"') goto yy272; + if (yych <= '/') goto yy368; + if (yych <= '9') goto yy272; + goto yy368; +yy367: + YYDEBUG(367, *YYCURSOR); ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; -yy366: - YYDEBUG(366, *YYCURSOR); +yy368: + YYDEBUG(368, *YYCURSOR); if (yych <= 'Z') { if (yych <= '/') { - if (yych != '"') goto yy270; + if (yych != '"') goto yy272; } else { - if (yych <= '9') goto yy365; - if (yych <= '@') goto yy270; - goto yy365; + if (yych <= '9') goto yy367; + if (yych <= '@') goto yy272; + goto yy367; } } else { if (yych <= '`') { - if (yych == '_') goto yy365; - goto yy270; + if (yych == '_') goto yy367; + goto yy272; } else { - if (yych <= 'z') goto yy365; - if (yych <= '~') goto yy270; - goto yy365; + if (yych <= 'z') goto yy367; + if (yych <= '~') goto yy272; + goto yy367; } } -yy367: - YYDEBUG(367, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '\n') goto yy368; - if (yych == '\r') goto yy370; - goto yy270; -yy368: - YYDEBUG(368, *YYCURSOR); - ++YYCURSOR; yy369: YYDEBUG(369, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '\n') goto yy370; + if (yych == '\r') goto yy372; + goto yy272; +yy370: + YYDEBUG(370, *YYCURSOR); + ++YYCURSOR; +yy371: + YYDEBUG(371, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2427 "Zend/zend_language_scanner.l" +#line 2432 "Zend/zend_language_scanner.l" { char *s; int bprefix = (yytext[0] != '<') ? 1 : 0; @@ -5270,247 +5281,247 @@ yy369: return bprefix ? T_BINARY_HEREDOC : T_START_HEREDOC; } -#line 5274 "Zend/zend_language_scanner.c" -yy370: - YYDEBUG(370, *YYCURSOR); +#line 5285 "Zend/zend_language_scanner.c" +yy372: + YYDEBUG(372, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '\n') goto yy368; - goto yy369; -yy371: - YYDEBUG(371, *YYCURSOR); + if (yych == '\n') goto yy370; + goto yy371; +yy373: + YYDEBUG(373, *YYCURSOR); ++YYCURSOR; YYFILL(3); yych = *YYCURSOR; -yy372: - YYDEBUG(372, *YYCURSOR); +yy374: + YYDEBUG(374, *YYCURSOR); if (yych <= 'Z') { if (yych <= '/') { - if (yych == '\'') goto yy367; - goto yy270; + if (yych == '\'') goto yy369; + goto yy272; } else { - if (yych <= '9') goto yy371; - if (yych <= '@') goto yy270; - goto yy371; + if (yych <= '9') goto yy373; + if (yych <= '@') goto yy272; + goto yy373; } } else { if (yych <= '`') { - if (yych == '_') goto yy371; - goto yy270; + if (yych == '_') goto yy373; + goto yy272; } else { - if (yych <= 'z') goto yy371; - if (yych <= '~') goto yy270; - goto yy371; + if (yych <= 'z') goto yy373; + if (yych <= '~') goto yy272; + goto yy373; } } -yy373: - YYDEBUG(373, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '=') goto yy349; - YYDEBUG(374, *YYCURSOR); - ++YYCURSOR; +yy375: YYDEBUG(375, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1756 "Zend/zend_language_scanner.l" - { - return T_IS_NOT_IDENTICAL; -} -#line 5318 "Zend/zend_language_scanner.c" -yy376: + yych = *++YYCURSOR; + if (yych != '=') goto yy351; YYDEBUG(376, *YYCURSOR); ++YYCURSOR; YYDEBUG(377, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1776 "Zend/zend_language_scanner.l" +#line 1761 "Zend/zend_language_scanner.l" { - return T_PLUS_EQUAL; + return T_IS_NOT_IDENTICAL; } -#line 5328 "Zend/zend_language_scanner.c" +#line 5329 "Zend/zend_language_scanner.c" yy378: YYDEBUG(378, *YYCURSOR); ++YYCURSOR; YYDEBUG(379, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1744 "Zend/zend_language_scanner.l" +#line 1781 "Zend/zend_language_scanner.l" { - return T_INC; + return T_PLUS_EQUAL; } -#line 5338 "Zend/zend_language_scanner.c" +#line 5339 "Zend/zend_language_scanner.c" yy380: YYDEBUG(380, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy381; - if (yych != 's') goto yy280; -yy381: + ++YYCURSOR; YYDEBUG(381, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy382; - if (yych != 't') goto yy280; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1749 "Zend/zend_language_scanner.l" + { + return T_INC; +} +#line 5349 "Zend/zend_language_scanner.c" yy382: YYDEBUG(382, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy383; + if (yych != 's') goto yy282; +yy383: + YYDEBUG(383, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy384; + if (yych != 't') goto yy282; +yy384: + YYDEBUG(384, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(383, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1736 "Zend/zend_language_scanner.l" - { - return T_LIST; -} -#line 5361 "Zend/zend_language_scanner.c" -yy384: - YYDEBUG(384, *YYCURSOR); - ++YYCURSOR; - if ((yych = *YYCURSOR) == '=') goto yy388; YYDEBUG(385, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1760 "Zend/zend_language_scanner.l" +#line 1741 "Zend/zend_language_scanner.l" { - return T_IS_EQUAL; + return T_LIST; } #line 5372 "Zend/zend_language_scanner.c" yy386: YYDEBUG(386, *YYCURSOR); ++YYCURSOR; + if ((yych = *YYCURSOR) == '=') goto yy390; YYDEBUG(387, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1732 "Zend/zend_language_scanner.l" +#line 1765 "Zend/zend_language_scanner.l" { - return T_DOUBLE_ARROW; + return T_IS_EQUAL; } -#line 5382 "Zend/zend_language_scanner.c" +#line 5383 "Zend/zend_language_scanner.c" yy388: YYDEBUG(388, *YYCURSOR); ++YYCURSOR; YYDEBUG(389, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1752 "Zend/zend_language_scanner.l" +#line 1737 "Zend/zend_language_scanner.l" { - return T_IS_IDENTICAL; + return T_DOUBLE_ARROW; } -#line 5392 "Zend/zend_language_scanner.c" +#line 5393 "Zend/zend_language_scanner.c" yy390: YYDEBUG(390, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(391, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1757 "Zend/zend_language_scanner.l" + { + return T_IS_IDENTICAL; +} +#line 5403 "Zend/zend_language_scanner.c" +yy392: + YYDEBUG(392, *YYCURSOR); yych = *++YYCURSOR; YYDEBUG(-1, yych); switch (yych) { case 'C': - case 'c': goto yy392; + case 'c': goto yy394; case 'D': - case 'd': goto yy396; + case 'd': goto yy398; case 'F': - case 'f': goto yy393; + case 'f': goto yy395; case 'H': - case 'h': goto yy391; + case 'h': goto yy393; case 'L': - case 'l': goto yy395; + case 'l': goto yy397; case 'M': - case 'm': goto yy394; + case 'm': goto yy396; case 'N': - case 'n': goto yy397; - default: goto yy280; + case 'n': goto yy399; + default: goto yy282; } -yy391: - YYDEBUG(391, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy451; - if (yych == 'a') goto yy451; - goto yy280; -yy392: - YYDEBUG(392, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy444; - if (yych == 'l') goto yy444; - goto yy280; yy393: YYDEBUG(393, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'I') goto yy428; - if (yych <= 'T') goto yy280; - goto yy429; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy280; - goto yy428; - } else { - if (yych == 'u') goto yy429; - goto yy280; - } - } + if (yych == 'A') goto yy453; + if (yych == 'a') goto yy453; + goto yy282; yy394: YYDEBUG(394, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy420; - if (yych == 'e') goto yy420; - goto yy280; + if (yych == 'L') goto yy446; + if (yych == 'l') goto yy446; + goto yy282; yy395: YYDEBUG(395, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy414; - if (yych == 'i') goto yy414; - goto yy280; + if (yych <= 'U') { + if (yych == 'I') goto yy430; + if (yych <= 'T') goto yy282; + goto yy431; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy282; + goto yy430; + } else { + if (yych == 'u') goto yy431; + goto yy282; + } + } yy396: YYDEBUG(396, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy409; - if (yych == 'i') goto yy409; - goto yy280; + if (yych == 'E') goto yy422; + if (yych == 'e') goto yy422; + goto yy282; yy397: YYDEBUG(397, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy398; - if (yych != 'a') goto yy280; + if (yych == 'I') goto yy416; + if (yych == 'i') goto yy416; + goto yy282; yy398: YYDEBUG(398, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy399; - if (yych != 'm') goto yy280; + if (yych == 'I') goto yy411; + if (yych == 'i') goto yy411; + goto yy282; yy399: YYDEBUG(399, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy400; - if (yych != 'e') goto yy280; + if (yych == 'A') goto yy400; + if (yych != 'a') goto yy282; yy400: YYDEBUG(400, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy401; - if (yych != 's') goto yy280; + if (yych == 'M') goto yy401; + if (yych != 'm') goto yy282; yy401: YYDEBUG(401, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy402; - if (yych != 'p') goto yy280; + if (yych == 'E') goto yy402; + if (yych != 'e') goto yy282; yy402: YYDEBUG(402, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy403; - if (yych != 'a') goto yy280; + if (yych == 'S') goto yy403; + if (yych != 's') goto yy282; yy403: YYDEBUG(403, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy404; - if (yych != 'c') goto yy280; + if (yych == 'P') goto yy404; + if (yych != 'p') goto yy282; yy404: YYDEBUG(404, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy405; - if (yych != 'e') goto yy280; + if (yych == 'A') goto yy405; + if (yych != 'a') goto yy282; yy405: YYDEBUG(405, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy280; + if (yych == 'C') goto yy406; + if (yych != 'c') goto yy282; +yy406: YYDEBUG(406, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy280; + if (yych == 'E') goto yy407; + if (yych != 'e') goto yy282; +yy407: YYDEBUG(407, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy282; + YYDEBUG(408, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy282; + YYDEBUG(409, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(408, *YYCURSOR); + YYDEBUG(410, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2084 "Zend/zend_language_scanner.l" +#line 2089 "Zend/zend_language_scanner.l" { if (CG(current_namespace)) { *zendlval = *CG(current_namespace); @@ -5520,27 +5531,27 @@ yy405: } return T_NS_C; } -#line 5524 "Zend/zend_language_scanner.c" -yy409: - YYDEBUG(409, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy410; - if (yych != 'r') goto yy280; -yy410: - YYDEBUG(410, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy280; +#line 5535 "Zend/zend_language_scanner.c" +yy411: YYDEBUG(411, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy280; + if (yych == 'R') goto yy412; + if (yych != 'r') goto yy282; +yy412: YYDEBUG(412, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy282; + YYDEBUG(413, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy282; + YYDEBUG(414, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(413, *YYCURSOR); + YYDEBUG(415, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2057 "Zend/zend_language_scanner.l" +#line 2062 "Zend/zend_language_scanner.l" { char *filename = zend_get_compiled_filename(TSRMLS_C); const size_t filename_len = strlen(filename); @@ -5567,73 +5578,73 @@ yy410: zendlval->type = IS_STRING; return T_DIR; } -#line 5571 "Zend/zend_language_scanner.c" -yy414: - YYDEBUG(414, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy415; - if (yych != 'n') goto yy280; -yy415: - YYDEBUG(415, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy416; - if (yych != 'e') goto yy280; +#line 5582 "Zend/zend_language_scanner.c" yy416: YYDEBUG(416, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy280; + if (yych == 'N') goto yy417; + if (yych != 'n') goto yy282; +yy417: YYDEBUG(417, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy280; + if (yych == 'E') goto yy418; + if (yych != 'e') goto yy282; +yy418: YYDEBUG(418, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy282; + YYDEBUG(419, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy282; + YYDEBUG(420, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(419, *YYCURSOR); + YYDEBUG(421, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2041 "Zend/zend_language_scanner.l" +#line 2046 "Zend/zend_language_scanner.l" { Z_LVAL_P(zendlval) = CG(zend_lineno); Z_TYPE_P(zendlval) = IS_LONG; return T_LINE; } -#line 5602 "Zend/zend_language_scanner.c" -yy420: - YYDEBUG(420, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy421; - if (yych != 't') goto yy280; -yy421: - YYDEBUG(421, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy422; - if (yych != 'h') goto yy280; +#line 5613 "Zend/zend_language_scanner.c" yy422: YYDEBUG(422, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy423; - if (yych != 'o') goto yy280; + if (yych == 'T') goto yy423; + if (yych != 't') goto yy282; yy423: YYDEBUG(423, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy424; - if (yych != 'd') goto yy280; + if (yych == 'H') goto yy424; + if (yych != 'h') goto yy282; yy424: YYDEBUG(424, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy280; + if (yych == 'O') goto yy425; + if (yych != 'o') goto yy282; +yy425: YYDEBUG(425, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy280; + if (yych == 'D') goto yy426; + if (yych != 'd') goto yy282; +yy426: YYDEBUG(426, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy282; + YYDEBUG(427, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy282; + YYDEBUG(428, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(427, *YYCURSOR); + YYDEBUG(429, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1992 "Zend/zend_language_scanner.l" +#line 1997 "Zend/zend_language_scanner.l" { zstr class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL_ZSTR; zstr func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL_ZSTR; @@ -5682,58 +5693,58 @@ yy424: } return T_METHOD_C; } -#line 5686 "Zend/zend_language_scanner.c" -yy428: - YYDEBUG(428, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy439; - if (yych == 'l') goto yy439; - goto yy280; -yy429: - YYDEBUG(429, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy430; - if (yych != 'n') goto yy280; +#line 5697 "Zend/zend_language_scanner.c" yy430: YYDEBUG(430, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy431; - if (yych != 'c') goto yy280; + if (yych == 'L') goto yy441; + if (yych == 'l') goto yy441; + goto yy282; yy431: YYDEBUG(431, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy432; - if (yych != 't') goto yy280; + if (yych == 'N') goto yy432; + if (yych != 'n') goto yy282; yy432: YYDEBUG(432, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy433; - if (yych != 'i') goto yy280; + if (yych == 'C') goto yy433; + if (yych != 'c') goto yy282; yy433: YYDEBUG(433, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy434; - if (yych != 'o') goto yy280; + if (yych == 'T') goto yy434; + if (yych != 't') goto yy282; yy434: YYDEBUG(434, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy435; - if (yych != 'n') goto yy280; + if (yych == 'I') goto yy435; + if (yych != 'i') goto yy282; yy435: YYDEBUG(435, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy280; + if (yych == 'O') goto yy436; + if (yych != 'o') goto yy282; +yy436: YYDEBUG(436, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy280; + if (yych == 'N') goto yy437; + if (yych != 'n') goto yy282; +yy437: YYDEBUG(437, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy282; + YYDEBUG(438, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy282; + YYDEBUG(439, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(438, *YYCURSOR); + YYDEBUG(440, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1977 "Zend/zend_language_scanner.l" +#line 1982 "Zend/zend_language_scanner.l" { zstr func_name = NULL_ZSTR; @@ -5748,27 +5759,27 @@ yy435: } return T_FUNC_C; } -#line 5752 "Zend/zend_language_scanner.c" -yy439: - YYDEBUG(439, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy440; - if (yych != 'e') goto yy280; -yy440: - YYDEBUG(440, *YYCURSOR); - yych = *++YYCURSOR; - if (yych != '_') goto yy280; +#line 5763 "Zend/zend_language_scanner.c" +yy441: YYDEBUG(441, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy280; + if (yych == 'E') goto yy442; + if (yych != 'e') goto yy282; +yy442: YYDEBUG(442, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy282; + YYDEBUG(443, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy282; + YYDEBUG(444, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(443, *YYCURSOR); + YYDEBUG(445, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2047 "Zend/zend_language_scanner.l" +#line 2052 "Zend/zend_language_scanner.l" { char *filename = zend_get_compiled_filename(TSRMLS_C); @@ -5778,37 +5789,37 @@ yy440: ZVAL_RT_STRING(zendlval, filename, 1); return T_FILE; } -#line 5782 "Zend/zend_language_scanner.c" -yy444: - YYDEBUG(444, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy445; - if (yych != 'a') goto yy280; -yy445: - YYDEBUG(445, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy446; - if (yych != 's') goto yy280; +#line 5793 "Zend/zend_language_scanner.c" yy446: YYDEBUG(446, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy447; - if (yych != 's') goto yy280; + if (yych == 'A') goto yy447; + if (yych != 'a') goto yy282; yy447: YYDEBUG(447, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy280; + if (yych == 'S') goto yy448; + if (yych != 's') goto yy282; +yy448: YYDEBUG(448, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy280; + if (yych == 'S') goto yy449; + if (yych != 's') goto yy282; +yy449: YYDEBUG(449, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy282; + YYDEBUG(450, *YYCURSOR); + yych = *++YYCURSOR; + if (yych != '_') goto yy282; + YYDEBUG(451, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(450, *YYCURSOR); + YYDEBUG(452, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1962 "Zend/zend_language_scanner.l" +#line 1967 "Zend/zend_language_scanner.l" { zstr class_name = NULL_ZSTR; @@ -5823,2714 +5834,2714 @@ yy447: } return T_CLASS_C; } -#line 5827 "Zend/zend_language_scanner.c" -yy451: - YYDEBUG(451, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy452; - if (yych != 'l') goto yy280; -yy452: - YYDEBUG(452, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy453; - if (yych != 't') goto yy280; +#line 5838 "Zend/zend_language_scanner.c" yy453: YYDEBUG(453, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '_') goto yy280; + if (yych == 'L') goto yy454; + if (yych != 'l') goto yy282; +yy454: YYDEBUG(454, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy455; - if (yych != 'c') goto yy280; + if (yych == 'T') goto yy455; + if (yych != 't') goto yy282; yy455: YYDEBUG(455, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy456; - if (yych != 'o') goto yy280; -yy456: + if (yych != '_') goto yy282; YYDEBUG(456, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy457; - if (yych != 'm') goto yy280; + if (yych == 'C') goto yy457; + if (yych != 'c') goto yy282; yy457: YYDEBUG(457, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy458; - if (yych != 'p') goto yy280; + if (yych == 'O') goto yy458; + if (yych != 'o') goto yy282; yy458: YYDEBUG(458, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy459; - if (yych != 'i') goto yy280; + if (yych == 'M') goto yy459; + if (yych != 'm') goto yy282; yy459: YYDEBUG(459, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy460; - if (yych != 'l') goto yy280; + if (yych == 'P') goto yy460; + if (yych != 'p') goto yy282; yy460: YYDEBUG(460, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy461; - if (yych != 'e') goto yy280; + if (yych == 'I') goto yy461; + if (yych != 'i') goto yy282; yy461: YYDEBUG(461, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy462; - if (yych != 'r') goto yy280; + if (yych == 'L') goto yy462; + if (yych != 'l') goto yy282; yy462: YYDEBUG(462, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy463; + if (yych != 'e') goto yy282; +yy463: + YYDEBUG(463, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy464; + if (yych != 'r') goto yy282; +yy464: + YYDEBUG(464, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(463, *YYCURSOR); + YYDEBUG(465, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1700 "Zend/zend_language_scanner.l" +#line 1705 "Zend/zend_language_scanner.l" { return T_HALT_COMPILER; } -#line 5893 "Zend/zend_language_scanner.c" -yy464: - YYDEBUG(464, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy468; - if (yych == 's') goto yy468; - goto yy280; -yy465: - YYDEBUG(465, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy466; - if (yych != 'e') goto yy280; +#line 5904 "Zend/zend_language_scanner.c" yy466: YYDEBUG(466, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy470; + if (yych == 's') goto yy470; + goto yy282; +yy467: + YYDEBUG(467, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy468; + if (yych != 'e') goto yy282; +yy468: + YYDEBUG(468, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(467, *YYCURSOR); + YYDEBUG(469, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1684 "Zend/zend_language_scanner.l" +#line 1689 "Zend/zend_language_scanner.l" { return T_USE; } -#line 5917 "Zend/zend_language_scanner.c" -yy468: - YYDEBUG(468, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy469; - if (yych != 'e') goto yy280; -yy469: - YYDEBUG(469, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy470; - if (yych != 't') goto yy280; +#line 5928 "Zend/zend_language_scanner.c" yy470: YYDEBUG(470, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy471; + if (yych != 'e') goto yy282; +yy471: + YYDEBUG(471, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy472; + if (yych != 't') goto yy282; +yy472: + YYDEBUG(472, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(471, *YYCURSOR); + YYDEBUG(473, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1728 "Zend/zend_language_scanner.l" +#line 1733 "Zend/zend_language_scanner.l" { return T_UNSET; } -#line 5940 "Zend/zend_language_scanner.c" -yy472: - YYDEBUG(472, *YYCURSOR); +#line 5951 "Zend/zend_language_scanner.c" +yy474: + YYDEBUG(474, *YYCURSOR); ++YYCURSOR; YYFILL(7); yych = *YYCURSOR; -yy473: - YYDEBUG(473, *YYCURSOR); +yy475: + YYDEBUG(475, *YYCURSOR); if (yych <= 'S') { if (yych <= 'D') { if (yych <= ' ') { - if (yych == '\t') goto yy472; - if (yych <= 0x1F) goto yy270; - goto yy472; + if (yych == '\t') goto yy474; + if (yych <= 0x1F) goto yy272; + goto yy474; } else { if (yych <= 'A') { - if (yych <= '@') goto yy270; - goto yy477; + if (yych <= '@') goto yy272; + goto yy479; } else { - if (yych <= 'B') goto yy475; - if (yych <= 'C') goto yy270; - goto yy480; + if (yych <= 'B') goto yy477; + if (yych <= 'C') goto yy272; + goto yy482; } } } else { if (yych <= 'I') { - if (yych == 'F') goto yy481; - if (yych <= 'H') goto yy270; - goto yy482; + if (yych == 'F') goto yy483; + if (yych <= 'H') goto yy272; + goto yy484; } else { if (yych <= 'O') { - if (yych <= 'N') goto yy270; - goto yy476; - } else { - if (yych <= 'Q') goto yy270; - if (yych <= 'R') goto yy479; + if (yych <= 'N') goto yy272; goto yy478; + } else { + if (yych <= 'Q') goto yy272; + if (yych <= 'R') goto yy481; + goto yy480; } } } } else { if (yych <= 'f') { if (yych <= 'a') { - if (yych == 'U') goto yy474; - if (yych <= '`') goto yy270; - goto yy477; + if (yych == 'U') goto yy476; + if (yych <= '`') goto yy272; + goto yy479; } else { if (yych <= 'c') { - if (yych <= 'b') goto yy475; - goto yy270; + if (yych <= 'b') goto yy477; + goto yy272; } else { - if (yych <= 'd') goto yy480; - if (yych <= 'e') goto yy270; - goto yy481; + if (yych <= 'd') goto yy482; + if (yych <= 'e') goto yy272; + goto yy483; } } } else { if (yych <= 'q') { if (yych <= 'i') { - if (yych <= 'h') goto yy270; - goto yy482; + if (yych <= 'h') goto yy272; + goto yy484; } else { - if (yych == 'o') goto yy476; - goto yy270; + if (yych == 'o') goto yy478; + goto yy272; } } else { if (yych <= 's') { - if (yych <= 'r') goto yy479; - goto yy478; + if (yych <= 'r') goto yy481; + goto yy480; } else { - if (yych != 'u') goto yy270; + if (yych != 'u') goto yy272; } } } } -yy474: - YYDEBUG(474, *YYCURSOR); +yy476: + YYDEBUG(476, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy545; - if (yych == 'n') goto yy545; - goto yy270; -yy475: - YYDEBUG(475, *YYCURSOR); + if (yych == 'N') goto yy547; + if (yych == 'n') goto yy547; + goto yy272; +yy477: + YYDEBUG(477, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'I') goto yy528; - if (yych <= 'N') goto yy270; - goto yy529; + if (yych == 'I') goto yy530; + if (yych <= 'N') goto yy272; + goto yy531; } else { if (yych <= 'i') { - if (yych <= 'h') goto yy270; - goto yy528; + if (yych <= 'h') goto yy272; + goto yy530; } else { - if (yych == 'o') goto yy529; - goto yy270; + if (yych == 'o') goto yy531; + goto yy272; } } -yy476: - YYDEBUG(476, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy520; - if (yych == 'b') goto yy520; - goto yy270; -yy477: - YYDEBUG(477, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy513; - if (yych == 'r') goto yy513; - goto yy270; yy478: YYDEBUG(478, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy505; - if (yych == 't') goto yy505; - goto yy270; + if (yych == 'B') goto yy522; + if (yych == 'b') goto yy522; + goto yy272; yy479: YYDEBUG(479, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy503; - if (yych == 'e') goto yy503; - goto yy270; + if (yych == 'R') goto yy515; + if (yych == 'r') goto yy515; + goto yy272; yy480: YYDEBUG(480, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy499; - if (yych == 'o') goto yy499; - goto yy270; + if (yych == 'T') goto yy507; + if (yych == 't') goto yy507; + goto yy272; yy481: YYDEBUG(481, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy492; - if (yych == 'l') goto yy492; - goto yy270; + if (yych == 'E') goto yy505; + if (yych == 'e') goto yy505; + goto yy272; yy482: YYDEBUG(482, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy483; - if (yych != 'n') goto yy270; + if (yych == 'O') goto yy501; + if (yych == 'o') goto yy501; + goto yy272; yy483: YYDEBUG(483, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy484; - if (yych != 't') goto yy270; + if (yych == 'L') goto yy494; + if (yych == 'l') goto yy494; + goto yy272; yy484: YYDEBUG(484, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy485; - if (yych != 'e') goto yy487; + if (yych == 'N') goto yy485; + if (yych != 'n') goto yy272; yy485: YYDEBUG(485, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy490; - if (yych == 'g') goto yy490; - goto yy270; + if (yych == 'T') goto yy486; + if (yych != 't') goto yy272; yy486: YYDEBUG(486, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy487; + if (yych != 'e') goto yy489; +yy487: + YYDEBUG(487, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy492; + if (yych == 'g') goto yy492; + goto yy272; +yy488: + YYDEBUG(488, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy487: - YYDEBUG(487, *YYCURSOR); +yy489: + YYDEBUG(489, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy486; - goto yy270; + if (yych == '\t') goto yy488; + goto yy272; } else { - if (yych <= ' ') goto yy486; - if (yych != ')') goto yy270; + if (yych <= ' ') goto yy488; + if (yych != ')') goto yy272; } - YYDEBUG(488, *YYCURSOR); + YYDEBUG(490, *YYCURSOR); ++YYCURSOR; - YYDEBUG(489, *YYCURSOR); + YYDEBUG(491, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1624 "Zend/zend_language_scanner.l" +#line 1629 "Zend/zend_language_scanner.l" { return T_INT_CAST; } -#line 6116 "Zend/zend_language_scanner.c" -yy490: - YYDEBUG(490, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy491; - if (yych != 'e') goto yy270; -yy491: - YYDEBUG(491, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy486; - if (yych == 'r') goto yy486; - goto yy270; +#line 6127 "Zend/zend_language_scanner.c" yy492: YYDEBUG(492, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy493; - if (yych != 'o') goto yy270; + if (yych == 'E') goto yy493; + if (yych != 'e') goto yy272; yy493: YYDEBUG(493, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy494; - if (yych != 'a') goto yy270; + if (yych == 'R') goto yy488; + if (yych == 'r') goto yy488; + goto yy272; yy494: YYDEBUG(494, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy495; - if (yych != 't') goto yy270; + if (yych == 'O') goto yy495; + if (yych != 'o') goto yy272; yy495: YYDEBUG(495, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy496; + if (yych != 'a') goto yy272; +yy496: + YYDEBUG(496, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy497; + if (yych != 't') goto yy272; +yy497: + YYDEBUG(497, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(496, *YYCURSOR); + YYDEBUG(498, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy495; - goto yy270; + if (yych == '\t') goto yy497; + goto yy272; } else { - if (yych <= ' ') goto yy495; - if (yych != ')') goto yy270; + if (yych <= ' ') goto yy497; + if (yych != ')') goto yy272; } - YYDEBUG(497, *YYCURSOR); + YYDEBUG(499, *YYCURSOR); ++YYCURSOR; - YYDEBUG(498, *YYCURSOR); + YYDEBUG(500, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1628 "Zend/zend_language_scanner.l" +#line 1633 "Zend/zend_language_scanner.l" { return T_DOUBLE_CAST; } -#line 6164 "Zend/zend_language_scanner.c" -yy499: - YYDEBUG(499, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy500; - if (yych != 'u') goto yy270; -yy500: - YYDEBUG(500, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy501; - if (yych != 'b') goto yy270; +#line 6175 "Zend/zend_language_scanner.c" yy501: YYDEBUG(501, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy502; - if (yych != 'l') goto yy270; + if (yych == 'U') goto yy502; + if (yych != 'u') goto yy272; yy502: YYDEBUG(502, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy495; - if (yych == 'e') goto yy495; - goto yy270; + if (yych == 'B') goto yy503; + if (yych != 'b') goto yy272; yy503: YYDEBUG(503, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy504; - if (yych != 'a') goto yy270; + if (yych == 'L') goto yy504; + if (yych != 'l') goto yy272; yy504: YYDEBUG(504, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy495; - if (yych == 'l') goto yy495; - goto yy270; + if (yych == 'E') goto yy497; + if (yych == 'e') goto yy497; + goto yy272; yy505: YYDEBUG(505, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy506; - if (yych != 'r') goto yy270; + if (yych == 'A') goto yy506; + if (yych != 'a') goto yy272; yy506: YYDEBUG(506, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy507; - if (yych != 'i') goto yy270; + if (yych == 'L') goto yy497; + if (yych == 'l') goto yy497; + goto yy272; yy507: YYDEBUG(507, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy508; - if (yych != 'n') goto yy270; + if (yych == 'R') goto yy508; + if (yych != 'r') goto yy272; yy508: YYDEBUG(508, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'G') goto yy509; - if (yych != 'g') goto yy270; + if (yych == 'I') goto yy509; + if (yych != 'i') goto yy272; yy509: YYDEBUG(509, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy510; + if (yych != 'n') goto yy272; +yy510: + YYDEBUG(510, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'G') goto yy511; + if (yych != 'g') goto yy272; +yy511: + YYDEBUG(511, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(510, *YYCURSOR); + YYDEBUG(512, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy509; - goto yy270; + if (yych == '\t') goto yy511; + goto yy272; } else { - if (yych <= ' ') goto yy509; - if (yych != ')') goto yy270; + if (yych <= ' ') goto yy511; + if (yych != ')') goto yy272; } - YYDEBUG(511, *YYCURSOR); + YYDEBUG(513, *YYCURSOR); ++YYCURSOR; - YYDEBUG(512, *YYCURSOR); + YYDEBUG(514, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1632 "Zend/zend_language_scanner.l" +#line 1637 "Zend/zend_language_scanner.l" { return T_STRING_CAST; } -#line 6238 "Zend/zend_language_scanner.c" -yy513: - YYDEBUG(513, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy514; - if (yych != 'r') goto yy270; -yy514: - YYDEBUG(514, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy515; - if (yych != 'a') goto yy270; +#line 6249 "Zend/zend_language_scanner.c" yy515: YYDEBUG(515, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy516; - if (yych != 'y') goto yy270; + if (yych == 'R') goto yy516; + if (yych != 'r') goto yy272; yy516: YYDEBUG(516, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy517; + if (yych != 'a') goto yy272; +yy517: + YYDEBUG(517, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy518; + if (yych != 'y') goto yy272; +yy518: + YYDEBUG(518, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(517, *YYCURSOR); + YYDEBUG(519, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy516; - goto yy270; + if (yych == '\t') goto yy518; + goto yy272; } else { - if (yych <= ' ') goto yy516; - if (yych != ')') goto yy270; + if (yych <= ' ') goto yy518; + if (yych != ')') goto yy272; } - YYDEBUG(518, *YYCURSOR); + YYDEBUG(520, *YYCURSOR); ++YYCURSOR; - YYDEBUG(519, *YYCURSOR); + YYDEBUG(521, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1644 "Zend/zend_language_scanner.l" +#line 1649 "Zend/zend_language_scanner.l" { return T_ARRAY_CAST; } -#line 6275 "Zend/zend_language_scanner.c" -yy520: - YYDEBUG(520, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'J') goto yy521; - if (yych != 'j') goto yy270; -yy521: - YYDEBUG(521, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy522; - if (yych != 'e') goto yy270; +#line 6286 "Zend/zend_language_scanner.c" yy522: YYDEBUG(522, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy523; - if (yych != 'c') goto yy270; + if (yych == 'J') goto yy523; + if (yych != 'j') goto yy272; yy523: YYDEBUG(523, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy524; - if (yych != 't') goto yy270; + if (yych == 'E') goto yy524; + if (yych != 'e') goto yy272; yy524: YYDEBUG(524, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy525; + if (yych != 'c') goto yy272; +yy525: + YYDEBUG(525, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy526; + if (yych != 't') goto yy272; +yy526: + YYDEBUG(526, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(525, *YYCURSOR); + YYDEBUG(527, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy524; - goto yy270; + if (yych == '\t') goto yy526; + goto yy272; } else { - if (yych <= ' ') goto yy524; - if (yych != ')') goto yy270; + if (yych <= ' ') goto yy526; + if (yych != ')') goto yy272; } - YYDEBUG(526, *YYCURSOR); + YYDEBUG(528, *YYCURSOR); ++YYCURSOR; - YYDEBUG(527, *YYCURSOR); + YYDEBUG(529, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1648 "Zend/zend_language_scanner.l" +#line 1653 "Zend/zend_language_scanner.l" { return T_OBJECT_CAST; } -#line 6317 "Zend/zend_language_scanner.c" -yy528: - YYDEBUG(528, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy538; - if (yych == 'n') goto yy538; - goto yy270; -yy529: - YYDEBUG(529, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy530; - if (yych != 'o') goto yy270; +#line 6328 "Zend/zend_language_scanner.c" yy530: YYDEBUG(530, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy531; - if (yych != 'l') goto yy270; + if (yych == 'N') goto yy540; + if (yych == 'n') goto yy540; + goto yy272; yy531: YYDEBUG(531, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy536; - if (yych == 'e') goto yy536; - goto yy533; + if (yych == 'O') goto yy532; + if (yych != 'o') goto yy272; yy532: YYDEBUG(532, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy533; + if (yych != 'l') goto yy272; +yy533: + YYDEBUG(533, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy538; + if (yych == 'e') goto yy538; + goto yy535; +yy534: + YYDEBUG(534, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy533: - YYDEBUG(533, *YYCURSOR); +yy535: + YYDEBUG(535, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy532; - goto yy270; + if (yych == '\t') goto yy534; + goto yy272; } else { - if (yych <= ' ') goto yy532; - if (yych != ')') goto yy270; + if (yych <= ' ') goto yy534; + if (yych != ')') goto yy272; } - YYDEBUG(534, *YYCURSOR); + YYDEBUG(536, *YYCURSOR); ++YYCURSOR; - YYDEBUG(535, *YYCURSOR); + YYDEBUG(537, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1652 "Zend/zend_language_scanner.l" +#line 1657 "Zend/zend_language_scanner.l" { return T_BOOL_CAST; } -#line 6362 "Zend/zend_language_scanner.c" -yy536: - YYDEBUG(536, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy537; - if (yych != 'a') goto yy270; -yy537: - YYDEBUG(537, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy532; - if (yych == 'n') goto yy532; - goto yy270; +#line 6373 "Zend/zend_language_scanner.c" yy538: YYDEBUG(538, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'A') goto yy539; - if (yych != 'a') goto yy270; + if (yych != 'a') goto yy272; yy539: YYDEBUG(539, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy540; - if (yych != 'r') goto yy270; + if (yych == 'N') goto yy534; + if (yych == 'n') goto yy534; + goto yy272; yy540: YYDEBUG(540, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'Y') goto yy541; - if (yych != 'y') goto yy270; + if (yych == 'A') goto yy541; + if (yych != 'a') goto yy272; yy541: YYDEBUG(541, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy542; + if (yych != 'r') goto yy272; +yy542: + YYDEBUG(542, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy543; + if (yych != 'y') goto yy272; +yy543: + YYDEBUG(543, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(542, *YYCURSOR); + YYDEBUG(544, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy541; - goto yy270; + if (yych == '\t') goto yy543; + goto yy272; } else { - if (yych <= ' ') goto yy541; - if (yych != ')') goto yy270; + if (yych <= ' ') goto yy543; + if (yych != ')') goto yy272; } - YYDEBUG(543, *YYCURSOR); + YYDEBUG(545, *YYCURSOR); ++YYCURSOR; - YYDEBUG(544, *YYCURSOR); + YYDEBUG(546, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1640 "Zend/zend_language_scanner.l" +#line 1645 "Zend/zend_language_scanner.l" { return T_BINARY_CAST; } -#line 6410 "Zend/zend_language_scanner.c" -yy545: - YYDEBUG(545, *YYCURSOR); +#line 6421 "Zend/zend_language_scanner.c" +yy547: + YYDEBUG(547, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'S') { - if (yych == 'I') goto yy547; - if (yych <= 'R') goto yy270; + if (yych == 'I') goto yy549; + if (yych <= 'R') goto yy272; } else { if (yych <= 'i') { - if (yych <= 'h') goto yy270; - goto yy547; + if (yych <= 'h') goto yy272; + goto yy549; } else { - if (yych != 's') goto yy270; + if (yych != 's') goto yy272; } } - YYDEBUG(546, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy555; - if (yych == 'e') goto yy555; - goto yy270; -yy547: - YYDEBUG(547, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy548; - if (yych != 'c') goto yy270; -yy548: YYDEBUG(548, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy549; - if (yych != 'o') goto yy270; + if (yych == 'E') goto yy557; + if (yych == 'e') goto yy557; + goto yy272; yy549: YYDEBUG(549, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy550; - if (yych != 'd') goto yy270; + if (yych == 'C') goto yy550; + if (yych != 'c') goto yy272; yy550: YYDEBUG(550, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy551; - if (yych != 'e') goto yy270; + if (yych == 'O') goto yy551; + if (yych != 'o') goto yy272; yy551: YYDEBUG(551, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy552; + if (yych != 'd') goto yy272; +yy552: + YYDEBUG(552, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy553; + if (yych != 'e') goto yy272; +yy553: + YYDEBUG(553, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(552, *YYCURSOR); + YYDEBUG(554, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy551; - goto yy270; + if (yych == '\t') goto yy553; + goto yy272; } else { - if (yych <= ' ') goto yy551; - if (yych != ')') goto yy270; + if (yych <= ' ') goto yy553; + if (yych != ')') goto yy272; } - YYDEBUG(553, *YYCURSOR); + YYDEBUG(555, *YYCURSOR); ++YYCURSOR; - YYDEBUG(554, *YYCURSOR); + YYDEBUG(556, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1636 "Zend/zend_language_scanner.l" +#line 1641 "Zend/zend_language_scanner.l" { return T_UNICODE_CAST; } -#line 6471 "Zend/zend_language_scanner.c" -yy555: - YYDEBUG(555, *YYCURSOR); +#line 6482 "Zend/zend_language_scanner.c" +yy557: + YYDEBUG(557, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy556; - if (yych != 't') goto yy270; -yy556: - YYDEBUG(556, *YYCURSOR); + if (yych == 'T') goto yy558; + if (yych != 't') goto yy272; +yy558: + YYDEBUG(558, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(557, *YYCURSOR); + YYDEBUG(559, *YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy556; - goto yy270; + if (yych == '\t') goto yy558; + goto yy272; } else { - if (yych <= ' ') goto yy556; - if (yych != ')') goto yy270; + if (yych <= ' ') goto yy558; + if (yych != ')') goto yy272; } - YYDEBUG(558, *YYCURSOR); + YYDEBUG(560, *YYCURSOR); ++YYCURSOR; - YYDEBUG(559, *YYCURSOR); + YYDEBUG(561, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1656 "Zend/zend_language_scanner.l" +#line 1661 "Zend/zend_language_scanner.l" { return T_UNSET_CAST; } -#line 6498 "Zend/zend_language_scanner.c" -yy560: - YYDEBUG(560, *YYCURSOR); +#line 6509 "Zend/zend_language_scanner.c" +yy562: + YYDEBUG(562, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy561; - if (yych != 'r') goto yy280; -yy561: - YYDEBUG(561, *YYCURSOR); + if (yych == 'R') goto yy563; + if (yych != 'r') goto yy282; +yy563: + YYDEBUG(563, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(562, *YYCURSOR); + YYDEBUG(564, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1620 "Zend/zend_language_scanner.l" +#line 1625 "Zend/zend_language_scanner.l" { return T_VAR; } -#line 6516 "Zend/zend_language_scanner.c" -yy563: - YYDEBUG(563, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'M') goto yy567; - if (yych == 'm') goto yy567; - goto yy280; -yy564: - YYDEBUG(564, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'W') goto yy565; - if (yych != 'w') goto yy280; +#line 6527 "Zend/zend_language_scanner.c" yy565: YYDEBUG(565, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'M') goto yy569; + if (yych == 'm') goto yy569; + goto yy282; +yy566: + YYDEBUG(566, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'W') goto yy567; + if (yych != 'w') goto yy282; +yy567: + YYDEBUG(567, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(566, *YYCURSOR); + YYDEBUG(568, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1612 "Zend/zend_language_scanner.l" +#line 1617 "Zend/zend_language_scanner.l" { return T_NEW; } -#line 6540 "Zend/zend_language_scanner.c" -yy567: - YYDEBUG(567, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy568; - if (yych != 'e') goto yy280; -yy568: - YYDEBUG(568, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy569; - if (yych != 's') goto yy280; +#line 6551 "Zend/zend_language_scanner.c" yy569: YYDEBUG(569, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy570; - if (yych != 'p') goto yy280; + if (yych == 'E') goto yy570; + if (yych != 'e') goto yy282; yy570: YYDEBUG(570, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy571; - if (yych != 'a') goto yy280; + if (yych == 'S') goto yy571; + if (yych != 's') goto yy282; yy571: YYDEBUG(571, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy572; - if (yych != 'c') goto yy280; + if (yych == 'P') goto yy572; + if (yych != 'p') goto yy282; yy572: YYDEBUG(572, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy573; - if (yych != 'e') goto yy280; + if (yych == 'A') goto yy573; + if (yych != 'a') goto yy282; yy573: YYDEBUG(573, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy574; + if (yych != 'c') goto yy282; +yy574: + YYDEBUG(574, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy575; + if (yych != 'e') goto yy282; +yy575: + YYDEBUG(575, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(574, *YYCURSOR); + YYDEBUG(576, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1680 "Zend/zend_language_scanner.l" +#line 1685 "Zend/zend_language_scanner.l" { return T_NAMESPACE; } -#line 6583 "Zend/zend_language_scanner.c" -yy575: - YYDEBUG(575, *YYCURSOR); +#line 6594 "Zend/zend_language_scanner.c" +yy577: + YYDEBUG(577, *YYCURSOR); ++YYCURSOR; - YYDEBUG(576, *YYCURSOR); + YYDEBUG(578, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1608 "Zend/zend_language_scanner.l" +#line 1609 "Zend/zend_language_scanner.l" { return T_PAAMAYIM_NEKUDOTAYIM; } -#line 6593 "Zend/zend_language_scanner.c" -yy577: - YYDEBUG(577, *YYCURSOR); +#line 6604 "Zend/zend_language_scanner.c" +yy579: + YYDEBUG(579, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy578: - YYDEBUG(578, *YYCURSOR); +yy580: + YYDEBUG(580, *YYCURSOR); if (yych <= '\f') { if (yych <= 0x08) goto yy221; - if (yych <= '\n') goto yy577; + if (yych <= '\n') goto yy579; goto yy221; } else { - if (yych <= '\r') goto yy577; - if (yych == ' ') goto yy577; + if (yych <= '\r') goto yy579; + if (yych == ' ') goto yy579; goto yy221; } -yy579: - YYDEBUG(579, *YYCURSOR); - ++YYCURSOR; - YYDEBUG(580, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1780 "Zend/zend_language_scanner.l" - { - return T_MINUS_EQUAL; -} -#line 6619 "Zend/zend_language_scanner.c" yy581: YYDEBUG(581, *YYCURSOR); ++YYCURSOR; YYDEBUG(582, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1748 "Zend/zend_language_scanner.l" +#line 1785 "Zend/zend_language_scanner.l" { - return T_DEC; + return T_MINUS_EQUAL; } -#line 6629 "Zend/zend_language_scanner.c" +#line 6630 "Zend/zend_language_scanner.c" yy583: YYDEBUG(583, *YYCURSOR); ++YYCURSOR; YYDEBUG(584, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1574 "Zend/zend_language_scanner.l" +#line 1753 "Zend/zend_language_scanner.l" { - yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); - return T_OBJECT_OPERATOR; + return T_DEC; } #line 6640 "Zend/zend_language_scanner.c" yy585: YYDEBUG(585, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(586, *YYCURSOR); + yyleng = YYCURSOR - SCNG(yy_text); +#line 1575 "Zend/zend_language_scanner.l" + { + yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC); + return T_OBJECT_OPERATOR; +} +#line 6651 "Zend/zend_language_scanner.c" +yy587: + YYDEBUG(587, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'I') goto yy592; - if (yych <= 'N') goto yy280; - goto yy593; + if (yych == 'I') goto yy594; + if (yych <= 'N') goto yy282; + goto yy595; } else { if (yych <= 'i') { - if (yych <= 'h') goto yy280; - goto yy592; + if (yych <= 'h') goto yy282; + goto yy594; } else { - if (yych == 'o') goto yy593; - goto yy280; + if (yych == 'o') goto yy595; + goto yy282; } } -yy586: - YYDEBUG(586, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy587; - if (yych != 'b') goto yy280; -yy587: - YYDEBUG(587, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy588; - if (yych != 'l') goto yy280; yy588: YYDEBUG(588, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy589; - if (yych != 'i') goto yy280; + if (yych == 'B') goto yy589; + if (yych != 'b') goto yy282; yy589: YYDEBUG(589, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy590; - if (yych != 'c') goto yy280; + if (yych == 'L') goto yy590; + if (yych != 'l') goto yy282; yy590: YYDEBUG(590, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy591; + if (yych != 'i') goto yy282; +yy591: + YYDEBUG(591, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy592; + if (yych != 'c') goto yy282; +yy592: + YYDEBUG(592, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(591, *YYCURSOR); + YYDEBUG(593, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1724 "Zend/zend_language_scanner.l" +#line 1729 "Zend/zend_language_scanner.l" { return T_PUBLIC; } -#line 6689 "Zend/zend_language_scanner.c" -yy592: - YYDEBUG(592, *YYCURSOR); +#line 6700 "Zend/zend_language_scanner.c" +yy594: + YYDEBUG(594, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'V') { - if (yych == 'N') goto yy601; - if (yych <= 'U') goto yy280; - goto yy602; + if (yych == 'N') goto yy603; + if (yych <= 'U') goto yy282; + goto yy604; } else { if (yych <= 'n') { - if (yych <= 'm') goto yy280; - goto yy601; + if (yych <= 'm') goto yy282; + goto yy603; } else { - if (yych == 'v') goto yy602; - goto yy280; + if (yych == 'v') goto yy604; + goto yy282; } } -yy593: - YYDEBUG(593, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy594; - if (yych != 't') goto yy280; -yy594: - YYDEBUG(594, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy595; - if (yych != 'e') goto yy280; yy595: YYDEBUG(595, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy596; - if (yych != 'c') goto yy280; + if (yych == 'T') goto yy596; + if (yych != 't') goto yy282; yy596: YYDEBUG(596, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy597; - if (yych != 't') goto yy280; + if (yych == 'E') goto yy597; + if (yych != 'e') goto yy282; yy597: YYDEBUG(597, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy598; - if (yych != 'e') goto yy280; + if (yych == 'C') goto yy598; + if (yych != 'c') goto yy282; yy598: YYDEBUG(598, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy599; - if (yych != 'd') goto yy280; + if (yych == 'T') goto yy599; + if (yych != 't') goto yy282; yy599: YYDEBUG(599, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy600; + if (yych != 'e') goto yy282; +yy600: + YYDEBUG(600, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy601; + if (yych != 'd') goto yy282; +yy601: + YYDEBUG(601, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(600, *YYCURSOR); + YYDEBUG(602, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1720 "Zend/zend_language_scanner.l" +#line 1725 "Zend/zend_language_scanner.l" { return T_PROTECTED; } -#line 6748 "Zend/zend_language_scanner.c" -yy601: - YYDEBUG(601, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy607; - if (yych == 't') goto yy607; - goto yy280; -yy602: - YYDEBUG(602, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy603; - if (yych != 'a') goto yy280; +#line 6759 "Zend/zend_language_scanner.c" yy603: YYDEBUG(603, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy604; - if (yych != 't') goto yy280; + if (yych == 'T') goto yy609; + if (yych == 't') goto yy609; + goto yy282; yy604: YYDEBUG(604, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy605; - if (yych != 'e') goto yy280; + if (yych == 'A') goto yy605; + if (yych != 'a') goto yy282; yy605: YYDEBUG(605, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy606; + if (yych != 't') goto yy282; +yy606: + YYDEBUG(606, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy607; + if (yych != 'e') goto yy282; +yy607: + YYDEBUG(607, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(606, *YYCURSOR); + YYDEBUG(608, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1716 "Zend/zend_language_scanner.l" +#line 1721 "Zend/zend_language_scanner.l" { return T_PRIVATE; } -#line 6782 "Zend/zend_language_scanner.c" -yy607: - YYDEBUG(607, *YYCURSOR); +#line 6793 "Zend/zend_language_scanner.c" +yy609: + YYDEBUG(609, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(608, *YYCURSOR); + YYDEBUG(610, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1554 "Zend/zend_language_scanner.l" +#line 1555 "Zend/zend_language_scanner.l" { return T_PRINT; } -#line 6795 "Zend/zend_language_scanner.c" -yy609: - YYDEBUG(609, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy614; - if (yych == 'o') goto yy614; - goto yy280; -yy610: - YYDEBUG(610, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy611; - if (yych != 't') goto yy280; +#line 6806 "Zend/zend_language_scanner.c" yy611: YYDEBUG(611, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy612; - if (yych != 'o') goto yy280; + if (yych == 'O') goto yy616; + if (yych == 'o') goto yy616; + goto yy282; yy612: YYDEBUG(612, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy613; + if (yych != 't') goto yy282; +yy613: + YYDEBUG(613, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy614; + if (yych != 'o') goto yy282; +yy614: + YYDEBUG(614, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(613, *YYCURSOR); + YYDEBUG(615, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1546 "Zend/zend_language_scanner.l" +#line 1547 "Zend/zend_language_scanner.l" { return T_GOTO; } -#line 6824 "Zend/zend_language_scanner.c" -yy614: - YYDEBUG(614, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'B') goto yy615; - if (yych != 'b') goto yy280; -yy615: - YYDEBUG(615, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy616; - if (yych != 'a') goto yy280; +#line 6835 "Zend/zend_language_scanner.c" yy616: YYDEBUG(616, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy617; - if (yych != 'l') goto yy280; + if (yych == 'B') goto yy617; + if (yych != 'b') goto yy282; yy617: YYDEBUG(617, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy618; + if (yych != 'a') goto yy282; +yy618: + YYDEBUG(618, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy619; + if (yych != 'l') goto yy282; +yy619: + YYDEBUG(619, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(618, *YYCURSOR); + YYDEBUG(620, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1688 "Zend/zend_language_scanner.l" +#line 1693 "Zend/zend_language_scanner.l" { return T_GLOBAL; } -#line 6852 "Zend/zend_language_scanner.c" -yy619: - YYDEBUG(619, *YYCURSOR); +#line 6863 "Zend/zend_language_scanner.c" +yy621: + YYDEBUG(621, *YYCURSOR); yych = *++YYCURSOR; - if (yych == '<') goto yy642; - goto yy270; -yy620: - YYDEBUG(620, *YYCURSOR); + if (yych == '<') goto yy644; + goto yy272; +yy622: + YYDEBUG(622, *YYCURSOR); yyaccept = 8; yych = *(YYMARKER = ++YYCURSOR); - goto yy635; -yy621: - YYDEBUG(621, *YYCURSOR); + goto yy637; +yy623: + YYDEBUG(623, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2422 "Zend/zend_language_scanner.l" +#line 2427 "Zend/zend_language_scanner.l" { BEGIN(ST_DOUBLE_QUOTES); return T_BINARY_DOUBLE; } -#line 6871 "Zend/zend_language_scanner.c" -yy622: - YYDEBUG(622, *YYCURSOR); +#line 6882 "Zend/zend_language_scanner.c" +yy624: + YYDEBUG(624, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(623, *YYCURSOR); - if (yych == '\'') goto yy630; - if (yych == '\\') goto yy629; - goto yy622; -yy624: - YYDEBUG(624, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy625; - if (yych != 'e') goto yy280; -yy625: YYDEBUG(625, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy626; - if (yych != 'a') goto yy280; + if (yych == '\'') goto yy632; + if (yych == '\\') goto yy631; + goto yy624; yy626: YYDEBUG(626, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'K') goto yy627; - if (yych != 'k') goto yy280; + if (yych == 'E') goto yy627; + if (yych != 'e') goto yy282; yy627: YYDEBUG(627, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy628; + if (yych != 'a') goto yy282; +yy628: + YYDEBUG(628, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'K') goto yy629; + if (yych != 'k') goto yy282; +yy629: + YYDEBUG(629, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(628, *YYCURSOR); + YYDEBUG(630, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1538 "Zend/zend_language_scanner.l" +#line 1539 "Zend/zend_language_scanner.l" { return T_BREAK; } -#line 6908 "Zend/zend_language_scanner.c" -yy629: - YYDEBUG(629, *YYCURSOR); +#line 6919 "Zend/zend_language_scanner.c" +yy631: + YYDEBUG(631, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - goto yy622; -yy630: - YYDEBUG(630, *YYCURSOR); + goto yy624; +yy632: + YYDEBUG(632, *YYCURSOR); ++YYCURSOR; - YYDEBUG(631, *YYCURSOR); + YYDEBUG(633, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2411 "Zend/zend_language_scanner.l" +#line 2416 "Zend/zend_language_scanner.l" { zend_scan_binary_single_string(zendlval, yytext+2, yyleng-3 TSRMLS_CC); return T_CONSTANT_ENCAPSED_STRING; } -#line 6925 "Zend/zend_language_scanner.c" -yy632: - YYDEBUG(632, *YYCURSOR); +#line 6936 "Zend/zend_language_scanner.c" +yy634: + YYDEBUG(634, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(633, *YYCURSOR); + YYDEBUG(635, *YYCURSOR); if (yych <= '$') { - if (yych == '"') goto yy639; - if (yych >= '$') goto yy270; + if (yych == '"') goto yy641; + if (yych >= '$') goto yy272; } else { if (yych <= '\\') { - if (yych >= '\\') goto yy636; + if (yych >= '\\') goto yy638; } else { - if (yych == '{') goto yy632; + if (yych == '{') goto yy634; } } -yy634: - YYDEBUG(634, *YYCURSOR); +yy636: + YYDEBUG(636, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy635: - YYDEBUG(635, *YYCURSOR); +yy637: + YYDEBUG(637, *YYCURSOR); if (yych <= '$') { - if (yych == '"') goto yy639; - if (yych <= '#') goto yy634; - goto yy637; + if (yych == '"') goto yy641; + if (yych <= '#') goto yy636; + goto yy639; } else { if (yych <= '\\') { - if (yych <= '[') goto yy634; + if (yych <= '[') goto yy636; } else { - if (yych == '{') goto yy632; - goto yy634; + if (yych == '{') goto yy634; + goto yy636; } } -yy636: - YYDEBUG(636, *YYCURSOR); +yy638: + YYDEBUG(638, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - goto yy634; -yy637: - YYDEBUG(637, *YYCURSOR); + goto yy636; +yy639: + YYDEBUG(639, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(638, *YYCURSOR); + YYDEBUG(640, *YYCURSOR); if (yych <= '[') { if (yych <= '#') { - if (yych != '"') goto yy634; + if (yych != '"') goto yy636; } else { - if (yych <= '$') goto yy637; - if (yych <= '@') goto yy634; - if (yych <= 'Z') goto yy270; - goto yy634; + if (yych <= '$') goto yy639; + if (yych <= '@') goto yy636; + if (yych <= 'Z') goto yy272; + goto yy636; } } else { if (yych <= '_') { - if (yych <= '\\') goto yy641; - if (yych <= '^') goto yy634; - goto yy270; + if (yych <= '\\') goto yy643; + if (yych <= '^') goto yy636; + goto yy272; } else { - if (yych <= '`') goto yy634; - if (yych <= '{') goto yy270; - if (yych <= '~') goto yy634; - goto yy270; + if (yych <= '`') goto yy636; + if (yych <= '{') goto yy272; + if (yych <= '~') goto yy636; + goto yy272; } } -yy639: - YYDEBUG(639, *YYCURSOR); +yy641: + YYDEBUG(641, *YYCURSOR); ++YYCURSOR; - YYDEBUG(640, *YYCURSOR); + YYDEBUG(642, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2395 "Zend/zend_language_scanner.l" +#line 2400 "Zend/zend_language_scanner.l" { zend_scan_binary_escape_string(zendlval, yytext+2, yyleng-3, '"' TSRMLS_CC); return T_CONSTANT_ENCAPSED_STRING; } -#line 7004 "Zend/zend_language_scanner.c" -yy641: - YYDEBUG(641, *YYCURSOR); +#line 7015 "Zend/zend_language_scanner.c" +yy643: + YYDEBUG(643, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - goto yy634; -yy642: - YYDEBUG(642, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '<') goto yy359; - goto yy270; -yy643: - YYDEBUG(643, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy650; - if (yych == 'a') goto yy650; - goto yy280; + goto yy636; yy644: YYDEBUG(644, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy645; - if (yych != 'i') goto yy280; + if (yych == '<') goto yy361; + goto yy272; yy645: YYDEBUG(645, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy646; - if (yych != 't') goto yy280; + if (yych == 'A') goto yy652; + if (yych == 'a') goto yy652; + goto yy282; yy646: YYDEBUG(646, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy647; - if (yych != 'c') goto yy280; + if (yych == 'I') goto yy647; + if (yych != 'i') goto yy282; yy647: YYDEBUG(647, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy648; - if (yych != 'h') goto yy280; + if (yych == 'T') goto yy648; + if (yych != 't') goto yy282; yy648: YYDEBUG(648, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy649; + if (yych != 'c') goto yy282; +yy649: + YYDEBUG(649, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy650; + if (yych != 'h') goto yy282; +yy650: + YYDEBUG(650, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(649, *YYCURSOR); + YYDEBUG(651, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1522 "Zend/zend_language_scanner.l" +#line 1523 "Zend/zend_language_scanner.l" { return T_SWITCH; } -#line 7054 "Zend/zend_language_scanner.c" -yy650: - YYDEBUG(650, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy651; - if (yych != 't') goto yy280; -yy651: - YYDEBUG(651, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy652; - if (yych != 'i') goto yy280; +#line 7065 "Zend/zend_language_scanner.c" yy652: YYDEBUG(652, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy653; - if (yych != 'c') goto yy280; + if (yych == 'T') goto yy653; + if (yych != 't') goto yy282; yy653: YYDEBUG(653, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'I') goto yy654; + if (yych != 'i') goto yy282; +yy654: + YYDEBUG(654, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy655; + if (yych != 'c') goto yy282; +yy655: + YYDEBUG(655, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(654, *YYCURSOR); + YYDEBUG(656, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1704 "Zend/zend_language_scanner.l" +#line 1709 "Zend/zend_language_scanner.l" { return T_STATIC; } -#line 7082 "Zend/zend_language_scanner.c" -yy655: - YYDEBUG(655, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy666; - if (yych == 's') goto yy666; - goto yy280; -yy656: - YYDEBUG(656, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'D') goto yy664; - if (yych == 'd') goto yy664; - goto yy280; +#line 7093 "Zend/zend_language_scanner.c" yy657: YYDEBUG(657, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy660; - if (yych == 'r') goto yy660; - goto yy280; + if (yych == 'S') goto yy668; + if (yych == 's') goto yy668; + goto yy282; yy658: YYDEBUG(658, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy666; + if (yych == 'd') goto yy666; + goto yy282; +yy659: + YYDEBUG(659, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy662; + if (yych == 'r') goto yy662; + goto yy282; +yy660: + YYDEBUG(660, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(659, *YYCURSOR); + YYDEBUG(661, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1518 "Zend/zend_language_scanner.l" +#line 1519 "Zend/zend_language_scanner.l" { return T_AS; } -#line 7113 "Zend/zend_language_scanner.c" -yy660: - YYDEBUG(660, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy661; - if (yych != 'a') goto yy280; -yy661: - YYDEBUG(661, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy662; - if (yych != 'y') goto yy280; +#line 7124 "Zend/zend_language_scanner.c" yy662: YYDEBUG(662, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy663; + if (yych != 'a') goto yy282; +yy663: + YYDEBUG(663, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy664; + if (yych != 'y') goto yy282; +yy664: + YYDEBUG(664, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(663, *YYCURSOR); + YYDEBUG(665, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1740 "Zend/zend_language_scanner.l" +#line 1745 "Zend/zend_language_scanner.l" { return T_ARRAY; } -#line 7136 "Zend/zend_language_scanner.c" -yy664: - YYDEBUG(664, *YYCURSOR); +#line 7147 "Zend/zend_language_scanner.c" +yy666: + YYDEBUG(666, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(665, *YYCURSOR); + YYDEBUG(667, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1832 "Zend/zend_language_scanner.l" +#line 1837 "Zend/zend_language_scanner.l" { return T_LOGICAL_AND; } -#line 7149 "Zend/zend_language_scanner.c" -yy666: - YYDEBUG(666, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy667; - if (yych != 't') goto yy280; -yy667: - YYDEBUG(667, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy668; - if (yych != 'r') goto yy280; +#line 7160 "Zend/zend_language_scanner.c" yy668: YYDEBUG(668, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy669; - if (yych != 'a') goto yy280; + if (yych == 'T') goto yy669; + if (yych != 't') goto yy282; yy669: YYDEBUG(669, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy670; - if (yych != 'c') goto yy280; + if (yych == 'R') goto yy670; + if (yych != 'r') goto yy282; yy670: YYDEBUG(670, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy671; - if (yych != 't') goto yy280; + if (yych == 'A') goto yy671; + if (yych != 'a') goto yy282; yy671: YYDEBUG(671, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy672; + if (yych != 'c') goto yy282; +yy672: + YYDEBUG(672, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy673; + if (yych != 't') goto yy282; +yy673: + YYDEBUG(673, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(672, *YYCURSOR); + YYDEBUG(674, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1708 "Zend/zend_language_scanner.l" +#line 1713 "Zend/zend_language_scanner.l" { return T_ABSTRACT; } -#line 7187 "Zend/zend_language_scanner.c" -yy673: - YYDEBUG(673, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy674; - if (yych != 'i') goto yy280; -yy674: - YYDEBUG(674, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy675; - if (yych != 'l') goto yy280; +#line 7198 "Zend/zend_language_scanner.c" yy675: YYDEBUG(675, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy676; - if (yych != 'e') goto yy280; + if (yych == 'I') goto yy676; + if (yych != 'i') goto yy282; yy676: YYDEBUG(676, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy677; + if (yych != 'l') goto yy282; +yy677: + YYDEBUG(677, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy678; + if (yych != 'e') goto yy282; +yy678: + YYDEBUG(678, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(677, *YYCURSOR); + YYDEBUG(679, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1478 "Zend/zend_language_scanner.l" +#line 1479 "Zend/zend_language_scanner.l" { return T_WHILE; } -#line 7215 "Zend/zend_language_scanner.c" -yy678: - YYDEBUG(678, *YYCURSOR); +#line 7226 "Zend/zend_language_scanner.c" +yy680: + YYDEBUG(680, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(679, *YYCURSOR); + YYDEBUG(681, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1462 "Zend/zend_language_scanner.l" +#line 1463 "Zend/zend_language_scanner.l" { return T_IF; } -#line 7228 "Zend/zend_language_scanner.c" -yy680: - YYDEBUG(680, *YYCURSOR); +#line 7239 "Zend/zend_language_scanner.c" +yy682: + YYDEBUG(682, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy716; - if (yych == 'p') goto yy716; - goto yy280; -yy681: - YYDEBUG(681, *YYCURSOR); + if (yych == 'P') goto yy718; + if (yych == 'p') goto yy718; + goto yy282; +yy683: + YYDEBUG(683, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= 'C') { - if (yych <= 'B') goto yy280; - goto yy689; + if (yych <= 'B') goto yy282; + goto yy691; } else { - if (yych <= 'R') goto yy280; - if (yych <= 'S') goto yy687; - goto yy688; + if (yych <= 'R') goto yy282; + if (yych <= 'S') goto yy689; + goto yy690; } } else { if (yych <= 'r') { - if (yych == 'c') goto yy689; - goto yy280; + if (yych == 'c') goto yy691; + goto yy282; } else { - if (yych <= 's') goto yy687; - if (yych <= 't') goto yy688; - goto yy280; + if (yych <= 's') goto yy689; + if (yych <= 't') goto yy690; + goto yy282; } } -yy682: - YYDEBUG(682, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy683; - if (yych != 's') goto yy280; -yy683: - YYDEBUG(683, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy684; - if (yych != 'e') goto yy280; yy684: YYDEBUG(684, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy685; - if (yych != 't') goto yy280; + if (yych == 'S') goto yy685; + if (yych != 's') goto yy282; yy685: YYDEBUG(685, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy686; + if (yych != 'e') goto yy282; +yy686: + YYDEBUG(686, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy687; + if (yych != 't') goto yy282; +yy687: + YYDEBUG(687, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(686, *YYCURSOR); + YYDEBUG(688, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1692 "Zend/zend_language_scanner.l" +#line 1697 "Zend/zend_language_scanner.l" { return T_ISSET; } -#line 7284 "Zend/zend_language_scanner.c" -yy687: - YYDEBUG(687, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy708; - if (yych == 't') goto yy708; - goto yy280; -yy688: - YYDEBUG(688, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy701; - if (yych == 'e') goto yy701; - goto yy280; +#line 7295 "Zend/zend_language_scanner.c" yy689: YYDEBUG(689, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy690; - if (yych != 'l') goto yy280; + if (yych == 'T') goto yy710; + if (yych == 't') goto yy710; + goto yy282; yy690: YYDEBUG(690, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy691; - if (yych != 'u') goto yy280; + if (yych == 'E') goto yy703; + if (yych == 'e') goto yy703; + goto yy282; yy691: YYDEBUG(691, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy692; - if (yych != 'd') goto yy280; + if (yych == 'L') goto yy692; + if (yych != 'l') goto yy282; yy692: YYDEBUG(692, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy693; - if (yych != 'e') goto yy280; + if (yych == 'U') goto yy693; + if (yych != 'u') goto yy282; yy693: YYDEBUG(693, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy694; + if (yych != 'd') goto yy282; +yy694: + YYDEBUG(694, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy695; + if (yych != 'e') goto yy282; +yy695: + YYDEBUG(695, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '9') { - if (yych >= '0') goto yy279; + if (yych >= '0') goto yy281; } else { - if (yych <= '@') goto yy694; - if (yych <= 'Z') goto yy279; + if (yych <= '@') goto yy696; + if (yych <= 'Z') goto yy281; } } else { if (yych <= '`') { - if (yych <= '_') goto yy695; + if (yych <= '_') goto yy697; } else { - if (yych <= 'z') goto yy279; - if (yych >= 0x7F) goto yy279; + if (yych <= 'z') goto yy281; + if (yych >= 0x7F) goto yy281; } } -yy694: - YYDEBUG(694, *YYCURSOR); +yy696: + YYDEBUG(696, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1664 "Zend/zend_language_scanner.l" +#line 1669 "Zend/zend_language_scanner.l" { return T_INCLUDE; } -#line 7342 "Zend/zend_language_scanner.c" -yy695: - YYDEBUG(695, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy696; - if (yych != 'o') goto yy280; -yy696: - YYDEBUG(696, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy697; - if (yych != 'n') goto yy280; +#line 7353 "Zend/zend_language_scanner.c" yy697: YYDEBUG(697, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy698; - if (yych != 'c') goto yy280; + if (yych == 'O') goto yy698; + if (yych != 'o') goto yy282; yy698: YYDEBUG(698, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy699; - if (yych != 'e') goto yy280; + if (yych == 'N') goto yy699; + if (yych != 'n') goto yy282; yy699: YYDEBUG(699, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy700; + if (yych != 'c') goto yy282; +yy700: + YYDEBUG(700, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy701; + if (yych != 'e') goto yy282; +yy701: + YYDEBUG(701, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(700, *YYCURSOR); + YYDEBUG(702, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1668 "Zend/zend_language_scanner.l" +#line 1673 "Zend/zend_language_scanner.l" { return T_INCLUDE_ONCE; } -#line 7375 "Zend/zend_language_scanner.c" -yy701: - YYDEBUG(701, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy702; - if (yych != 'r') goto yy280; -yy702: - YYDEBUG(702, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'F') goto yy703; - if (yych != 'f') goto yy280; +#line 7386 "Zend/zend_language_scanner.c" yy703: YYDEBUG(703, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy704; - if (yych != 'a') goto yy280; + if (yych == 'R') goto yy704; + if (yych != 'r') goto yy282; yy704: YYDEBUG(704, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy705; - if (yych != 'c') goto yy280; + if (yych == 'F') goto yy705; + if (yych != 'f') goto yy282; yy705: YYDEBUG(705, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy706; - if (yych != 'e') goto yy280; + if (yych == 'A') goto yy706; + if (yych != 'a') goto yy282; yy706: YYDEBUG(706, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy707; + if (yych != 'c') goto yy282; +yy707: + YYDEBUG(707, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy708; + if (yych != 'e') goto yy282; +yy708: + YYDEBUG(708, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(707, *YYCURSOR); + YYDEBUG(709, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1562 "Zend/zend_language_scanner.l" +#line 1563 "Zend/zend_language_scanner.l" { return T_INTERFACE; } -#line 7413 "Zend/zend_language_scanner.c" -yy708: - YYDEBUG(708, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy709; - if (yych != 'a') goto yy280; -yy709: - YYDEBUG(709, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy710; - if (yych != 'n') goto yy280; +#line 7424 "Zend/zend_language_scanner.c" yy710: YYDEBUG(710, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy711; - if (yych != 'c') goto yy280; + if (yych == 'A') goto yy711; + if (yych != 'a') goto yy282; yy711: YYDEBUG(711, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy712; - if (yych != 'e') goto yy280; + if (yych == 'N') goto yy712; + if (yych != 'n') goto yy282; yy712: YYDEBUG(712, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy713; - if (yych != 'o') goto yy280; + if (yych == 'C') goto yy713; + if (yych != 'c') goto yy282; yy713: YYDEBUG(713, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy714; - if (yych != 'f') goto yy280; + if (yych == 'E') goto yy714; + if (yych != 'e') goto yy282; yy714: YYDEBUG(714, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy715; + if (yych != 'o') goto yy282; +yy715: + YYDEBUG(715, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'F') goto yy716; + if (yych != 'f') goto yy282; +yy716: + YYDEBUG(716, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(715, *YYCURSOR); + YYDEBUG(717, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1514 "Zend/zend_language_scanner.l" +#line 1515 "Zend/zend_language_scanner.l" { return T_INSTANCEOF; } -#line 7456 "Zend/zend_language_scanner.c" -yy716: - YYDEBUG(716, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy717; - if (yych != 'l') goto yy280; -yy717: - YYDEBUG(717, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy718; - if (yych != 'e') goto yy280; +#line 7467 "Zend/zend_language_scanner.c" yy718: YYDEBUG(718, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'M') goto yy719; - if (yych != 'm') goto yy280; + if (yych == 'L') goto yy719; + if (yych != 'l') goto yy282; yy719: YYDEBUG(719, *YYCURSOR); yych = *++YYCURSOR; if (yych == 'E') goto yy720; - if (yych != 'e') goto yy280; + if (yych != 'e') goto yy282; yy720: YYDEBUG(720, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy721; - if (yych != 'n') goto yy280; + if (yych == 'M') goto yy721; + if (yych != 'm') goto yy282; yy721: YYDEBUG(721, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy722; - if (yych != 't') goto yy280; + if (yych == 'E') goto yy722; + if (yych != 'e') goto yy282; yy722: YYDEBUG(722, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy723; - if (yych != 's') goto yy280; + if (yych == 'N') goto yy723; + if (yych != 'n') goto yy282; yy723: YYDEBUG(723, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy724; + if (yych != 't') goto yy282; +yy724: + YYDEBUG(724, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy725; + if (yych != 's') goto yy282; +yy725: + YYDEBUG(725, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(724, *YYCURSOR); + YYDEBUG(726, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1570 "Zend/zend_language_scanner.l" +#line 1571 "Zend/zend_language_scanner.l" { return T_IMPLEMENTS; } -#line 7504 "Zend/zend_language_scanner.c" -yy725: - YYDEBUG(725, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy729; - if (yych == 'r') goto yy729; - goto yy280; -yy726: - YYDEBUG(726, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy727; - if (yych != 'y') goto yy280; +#line 7515 "Zend/zend_language_scanner.c" yy727: YYDEBUG(727, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy731; + if (yych == 'r') goto yy731; + goto yy282; +yy728: + YYDEBUG(728, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy729; + if (yych != 'y') goto yy282; +yy729: + YYDEBUG(729, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(728, *YYCURSOR); + YYDEBUG(730, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1450 "Zend/zend_language_scanner.l" +#line 1451 "Zend/zend_language_scanner.l" { return T_TRY; } -#line 7528 "Zend/zend_language_scanner.c" -yy729: - YYDEBUG(729, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy730; - if (yych != 'o') goto yy280; -yy730: - YYDEBUG(730, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'W') goto yy731; - if (yych != 'w') goto yy280; +#line 7539 "Zend/zend_language_scanner.c" yy731: YYDEBUG(731, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy732; + if (yych != 'o') goto yy282; +yy732: + YYDEBUG(732, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'W') goto yy733; + if (yych != 'w') goto yy282; +yy733: + YYDEBUG(733, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(732, *YYCURSOR); + YYDEBUG(734, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1458 "Zend/zend_language_scanner.l" +#line 1459 "Zend/zend_language_scanner.l" { return T_THROW; } -#line 7551 "Zend/zend_language_scanner.c" -yy733: - YYDEBUG(733, *YYCURSOR); +#line 7562 "Zend/zend_language_scanner.c" +yy735: + YYDEBUG(735, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'T') { - if (yych == 'Q') goto yy735; - if (yych <= 'S') goto yy280; + if (yych == 'Q') goto yy737; + if (yych <= 'S') goto yy282; } else { if (yych <= 'q') { - if (yych <= 'p') goto yy280; - goto yy735; + if (yych <= 'p') goto yy282; + goto yy737; } else { - if (yych != 't') goto yy280; + if (yych != 't') goto yy282; } } - YYDEBUG(734, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy747; - if (yych == 'u') goto yy747; - goto yy280; -yy735: - YYDEBUG(735, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'U') goto yy736; - if (yych != 'u') goto yy280; -yy736: YYDEBUG(736, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy737; - if (yych != 'i') goto yy280; + if (yych == 'U') goto yy749; + if (yych == 'u') goto yy749; + goto yy282; yy737: YYDEBUG(737, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy738; - if (yych != 'r') goto yy280; + if (yych == 'U') goto yy738; + if (yych != 'u') goto yy282; yy738: YYDEBUG(738, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy739; - if (yych != 'e') goto yy280; + if (yych == 'I') goto yy739; + if (yych != 'i') goto yy282; yy739: YYDEBUG(739, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy740; + if (yych != 'r') goto yy282; +yy740: + YYDEBUG(740, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy741; + if (yych != 'e') goto yy282; +yy741: + YYDEBUG(741, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '9') { - if (yych >= '0') goto yy279; + if (yych >= '0') goto yy281; } else { - if (yych <= '@') goto yy740; - if (yych <= 'Z') goto yy279; + if (yych <= '@') goto yy742; + if (yych <= 'Z') goto yy281; } } else { if (yych <= '`') { - if (yych <= '_') goto yy741; + if (yych <= '_') goto yy743; } else { - if (yych <= 'z') goto yy279; - if (yych >= 0x7F) goto yy279; + if (yych <= 'z') goto yy281; + if (yych >= 0x7F) goto yy281; } } -yy740: - YYDEBUG(740, *YYCURSOR); +yy742: + YYDEBUG(742, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1672 "Zend/zend_language_scanner.l" +#line 1677 "Zend/zend_language_scanner.l" { return T_REQUIRE; } -#line 7616 "Zend/zend_language_scanner.c" -yy741: - YYDEBUG(741, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy742; - if (yych != 'o') goto yy280; -yy742: - YYDEBUG(742, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy743; - if (yych != 'n') goto yy280; +#line 7627 "Zend/zend_language_scanner.c" yy743: YYDEBUG(743, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy744; - if (yych != 'c') goto yy280; + if (yych == 'O') goto yy744; + if (yych != 'o') goto yy282; yy744: YYDEBUG(744, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy745; - if (yych != 'e') goto yy280; + if (yych == 'N') goto yy745; + if (yych != 'n') goto yy282; yy745: YYDEBUG(745, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy746; + if (yych != 'c') goto yy282; +yy746: + YYDEBUG(746, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy747; + if (yych != 'e') goto yy282; +yy747: + YYDEBUG(747, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(746, *YYCURSOR); + YYDEBUG(748, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1676 "Zend/zend_language_scanner.l" +#line 1681 "Zend/zend_language_scanner.l" { return T_REQUIRE_ONCE; } -#line 7649 "Zend/zend_language_scanner.c" -yy747: - YYDEBUG(747, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy748; - if (yych != 'r') goto yy280; -yy748: - YYDEBUG(748, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy749; - if (yych != 'n') goto yy280; +#line 7660 "Zend/zend_language_scanner.c" yy749: YYDEBUG(749, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy750; + if (yych != 'r') goto yy282; +yy750: + YYDEBUG(750, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy751; + if (yych != 'n') goto yy282; +yy751: + YYDEBUG(751, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(750, *YYCURSOR); + YYDEBUG(752, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1446 "Zend/zend_language_scanner.l" +#line 1447 "Zend/zend_language_scanner.l" { return T_RETURN; } -#line 7672 "Zend/zend_language_scanner.c" -yy751: - YYDEBUG(751, *YYCURSOR); +#line 7683 "Zend/zend_language_scanner.c" +yy753: + YYDEBUG(753, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'T') { - if (yych <= 'R') goto yy280; - if (yych <= 'S') goto yy773; - goto yy772; + if (yych <= 'R') goto yy282; + if (yych <= 'S') goto yy775; + goto yy774; } else { - if (yych <= 'r') goto yy280; - if (yych <= 's') goto yy773; - if (yych <= 't') goto yy772; - goto yy280; + if (yych <= 'r') goto yy282; + if (yych <= 's') goto yy775; + if (yych <= 't') goto yy774; + goto yy282; } -yy752: - YYDEBUG(752, *YYCURSOR); +yy754: + YYDEBUG(754, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'A') goto yy764; - if (yych <= 'N') goto yy280; - goto yy765; + if (yych == 'A') goto yy766; + if (yych <= 'N') goto yy282; + goto yy767; } else { if (yych <= 'a') { - if (yych <= '`') goto yy280; - goto yy764; + if (yych <= '`') goto yy282; + goto yy766; } else { - if (yych == 'o') goto yy765; - goto yy280; + if (yych == 'o') goto yy767; + goto yy282; } } -yy753: - YYDEBUG(753, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy754; - if (yych != 'n') goto yy280; -yy754: - YYDEBUG(754, *YYCURSOR); - yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych <= 'R') goto yy280; - if (yych >= 'T') goto yy756; - } else { - if (yych <= 'r') goto yy280; - if (yych <= 's') goto yy755; - if (yych <= 't') goto yy756; - goto yy280; - } yy755: YYDEBUG(755, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy762; - if (yych == 't') goto yy762; - goto yy280; + if (yych == 'N') goto yy756; + if (yych != 'n') goto yy282; yy756: YYDEBUG(756, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy757; - if (yych != 'i') goto yy280; + if (yych <= 'T') { + if (yych <= 'R') goto yy282; + if (yych >= 'T') goto yy758; + } else { + if (yych <= 'r') goto yy282; + if (yych <= 's') goto yy757; + if (yych <= 't') goto yy758; + goto yy282; + } yy757: YYDEBUG(757, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy758; - if (yych != 'n') goto yy280; + if (yych == 'T') goto yy764; + if (yych == 't') goto yy764; + goto yy282; yy758: YYDEBUG(758, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy759; - if (yych != 'u') goto yy280; + if (yych == 'I') goto yy759; + if (yych != 'i') goto yy282; yy759: YYDEBUG(759, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy760; - if (yych != 'e') goto yy280; + if (yych == 'N') goto yy760; + if (yych != 'n') goto yy282; yy760: YYDEBUG(760, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'U') goto yy761; + if (yych != 'u') goto yy282; +yy761: + YYDEBUG(761, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy762; + if (yych != 'e') goto yy282; +yy762: + YYDEBUG(762, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(761, *YYCURSOR); + YYDEBUG(763, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1542 "Zend/zend_language_scanner.l" +#line 1543 "Zend/zend_language_scanner.l" { return T_CONTINUE; } -#line 7757 "Zend/zend_language_scanner.c" -yy762: - YYDEBUG(762, *YYCURSOR); +#line 7768 "Zend/zend_language_scanner.c" +yy764: + YYDEBUG(764, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(763, *YYCURSOR); + YYDEBUG(765, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1442 "Zend/zend_language_scanner.l" +#line 1443 "Zend/zend_language_scanner.l" { return T_CONST; } -#line 7770 "Zend/zend_language_scanner.c" -yy764: - YYDEBUG(764, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy769; - if (yych == 's') goto yy769; - goto yy280; -yy765: - YYDEBUG(765, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy766; - if (yych != 'n') goto yy280; +#line 7781 "Zend/zend_language_scanner.c" yy766: YYDEBUG(766, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy767; - if (yych != 'e') goto yy280; + if (yych == 'S') goto yy771; + if (yych == 's') goto yy771; + goto yy282; yy767: YYDEBUG(767, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy768; + if (yych != 'n') goto yy282; +yy768: + YYDEBUG(768, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy769; + if (yych != 'e') goto yy282; +yy769: + YYDEBUG(769, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(768, *YYCURSOR); + YYDEBUG(770, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1616 "Zend/zend_language_scanner.l" +#line 1621 "Zend/zend_language_scanner.l" { return T_CLONE; } -#line 7799 "Zend/zend_language_scanner.c" -yy769: - YYDEBUG(769, *YYCURSOR); +#line 7810 "Zend/zend_language_scanner.c" +yy771: + YYDEBUG(771, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy770; - if (yych != 's') goto yy280; -yy770: - YYDEBUG(770, *YYCURSOR); + if (yych == 'S') goto yy772; + if (yych != 's') goto yy282; +yy772: + YYDEBUG(772, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(771, *YYCURSOR); + YYDEBUG(773, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1558 "Zend/zend_language_scanner.l" +#line 1559 "Zend/zend_language_scanner.l" { return T_CLASS; } -#line 7817 "Zend/zend_language_scanner.c" -yy772: - YYDEBUG(772, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy776; - if (yych == 'c') goto yy776; - goto yy280; -yy773: - YYDEBUG(773, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy774; - if (yych != 'e') goto yy280; +#line 7828 "Zend/zend_language_scanner.c" yy774: YYDEBUG(774, *YYCURSOR); - ++YYCURSOR; - if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; - } + yych = *++YYCURSOR; + if (yych == 'C') goto yy778; + if (yych == 'c') goto yy778; + goto yy282; +yy775: YYDEBUG(775, *YYCURSOR); - yyleng = YYCURSOR - SCNG(yy_text); -#line 1530 "Zend/zend_language_scanner.l" - { - return T_CASE; -} -#line 7841 "Zend/zend_language_scanner.c" + yych = *++YYCURSOR; + if (yych == 'E') goto yy776; + if (yych != 'e') goto yy282; yy776: YYDEBUG(776, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy777; - if (yych != 'h') goto yy280; -yy777: - YYDEBUG(777, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(778, *YYCURSOR); + YYDEBUG(777, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1454 "Zend/zend_language_scanner.l" +#line 1531 "Zend/zend_language_scanner.l" { - return T_CATCH; + return T_CASE; } -#line 7859 "Zend/zend_language_scanner.c" +#line 7852 "Zend/zend_language_scanner.c" +yy778: + YYDEBUG(778, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy779; + if (yych != 'h') goto yy282; yy779: YYDEBUG(779, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'N') goto yy796; - if (yych == 'n') goto yy796; - goto yy280; -yy780: + ++YYCURSOR; + if (yybm[0+(yych = *YYCURSOR)] & 8) { + goto yy281; + } YYDEBUG(780, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy789; - if (yych == 'r') goto yy789; - goto yy280; + yyleng = YYCURSOR - SCNG(yy_text); +#line 1455 "Zend/zend_language_scanner.l" + { + return T_CATCH; +} +#line 7870 "Zend/zend_language_scanner.c" yy781: YYDEBUG(781, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy782; - if (yych != 'n') goto yy280; + if (yych == 'N') goto yy798; + if (yych == 'n') goto yy798; + goto yy282; yy782: YYDEBUG(782, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy783; - if (yych != 'c') goto yy280; + if (yych == 'R') goto yy791; + if (yych == 'r') goto yy791; + goto yy282; yy783: YYDEBUG(783, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy784; - if (yych != 't') goto yy280; + if (yych == 'N') goto yy784; + if (yych != 'n') goto yy282; yy784: YYDEBUG(784, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy785; - if (yych != 'i') goto yy280; + if (yych == 'C') goto yy785; + if (yych != 'c') goto yy282; yy785: YYDEBUG(785, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy786; - if (yych != 'o') goto yy280; + if (yych == 'T') goto yy786; + if (yych != 't') goto yy282; yy786: YYDEBUG(786, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy787; - if (yych != 'n') goto yy280; + if (yych == 'I') goto yy787; + if (yych != 'i') goto yy282; yy787: YYDEBUG(787, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'O') goto yy788; + if (yych != 'o') goto yy282; +yy788: + YYDEBUG(788, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'N') goto yy789; + if (yych != 'n') goto yy282; +yy789: + YYDEBUG(789, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(788, *YYCURSOR); + YYDEBUG(790, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1438 "Zend/zend_language_scanner.l" +#line 1439 "Zend/zend_language_scanner.l" { return T_FUNCTION; } -#line 7914 "Zend/zend_language_scanner.c" -yy789: - YYDEBUG(789, *YYCURSOR); +#line 7925 "Zend/zend_language_scanner.c" +yy791: + YYDEBUG(791, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '@') { - if (yych <= '/') goto yy790; - if (yych <= '9') goto yy279; + if (yych <= '/') goto yy792; + if (yych <= '9') goto yy281; } else { - if (yych == 'E') goto yy791; - if (yych <= 'Z') goto yy279; + if (yych == 'E') goto yy793; + if (yych <= 'Z') goto yy281; } } else { if (yych <= 'd') { - if (yych != '`') goto yy279; + if (yych != '`') goto yy281; } else { - if (yych <= 'e') goto yy791; - if (yych <= 'z') goto yy279; - if (yych >= 0x7F) goto yy279; + if (yych <= 'e') goto yy793; + if (yych <= 'z') goto yy281; + if (yych >= 0x7F) goto yy281; } } -yy790: - YYDEBUG(790, *YYCURSOR); +yy792: + YYDEBUG(792, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1490 "Zend/zend_language_scanner.l" +#line 1491 "Zend/zend_language_scanner.l" { return T_FOR; } -#line 7942 "Zend/zend_language_scanner.c" -yy791: - YYDEBUG(791, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy792; - if (yych != 'a') goto yy280; -yy792: - YYDEBUG(792, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy793; - if (yych != 'c') goto yy280; +#line 7953 "Zend/zend_language_scanner.c" yy793: YYDEBUG(793, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy794; - if (yych != 'h') goto yy280; + if (yych == 'A') goto yy794; + if (yych != 'a') goto yy282; yy794: YYDEBUG(794, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy795; + if (yych != 'c') goto yy282; +yy795: + YYDEBUG(795, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy796; + if (yych != 'h') goto yy282; +yy796: + YYDEBUG(796, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(795, *YYCURSOR); + YYDEBUG(797, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1498 "Zend/zend_language_scanner.l" +#line 1499 "Zend/zend_language_scanner.l" { return T_FOREACH; } -#line 7970 "Zend/zend_language_scanner.c" -yy796: - YYDEBUG(796, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy797; - if (yych != 'a') goto yy280; -yy797: - YYDEBUG(797, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy798; - if (yych != 'l') goto yy280; +#line 7981 "Zend/zend_language_scanner.c" yy798: YYDEBUG(798, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'A') goto yy799; + if (yych != 'a') goto yy282; +yy799: + YYDEBUG(799, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy800; + if (yych != 'l') goto yy282; +yy800: + YYDEBUG(800, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(799, *YYCURSOR); + YYDEBUG(801, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1712 "Zend/zend_language_scanner.l" +#line 1717 "Zend/zend_language_scanner.l" { return T_FINAL; } -#line 7993 "Zend/zend_language_scanner.c" -yy800: - YYDEBUG(800, *YYCURSOR); +#line 8004 "Zend/zend_language_scanner.c" +yy802: + YYDEBUG(802, *YYCURSOR); yych = *++YYCURSOR; if (yych <= 'F') { - if (yych == 'C') goto yy806; - if (yych <= 'E') goto yy280; - goto yy807; + if (yych == 'C') goto yy808; + if (yych <= 'E') goto yy282; + goto yy809; } else { if (yych <= 'c') { - if (yych <= 'b') goto yy280; - goto yy806; + if (yych <= 'b') goto yy282; + goto yy808; } else { - if (yych == 'f') goto yy807; - goto yy280; + if (yych == 'f') goto yy809; + goto yy282; } } -yy801: - YYDEBUG(801, *YYCURSOR); +yy803: + YYDEBUG(803, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy804; - if (yych == 'e') goto yy804; - goto yy280; -yy802: - YYDEBUG(802, *YYCURSOR); + if (yych == 'E') goto yy806; + if (yych == 'e') goto yy806; + goto yy282; +yy804: + YYDEBUG(804, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(803, *YYCURSOR); + YYDEBUG(805, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1486 "Zend/zend_language_scanner.l" +#line 1487 "Zend/zend_language_scanner.l" { return T_DO; } -#line 8028 "Zend/zend_language_scanner.c" -yy804: - YYDEBUG(804, *YYCURSOR); +#line 8039 "Zend/zend_language_scanner.c" +yy806: + YYDEBUG(806, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(805, *YYCURSOR); + YYDEBUG(807, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1434 "Zend/zend_language_scanner.l" +#line 1435 "Zend/zend_language_scanner.l" { return T_EXIT; } -#line 8041 "Zend/zend_language_scanner.c" -yy806: - YYDEBUG(806, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy813; - if (yych == 'l') goto yy813; - goto yy280; -yy807: - YYDEBUG(807, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy808; - if (yych != 'a') goto yy280; +#line 8052 "Zend/zend_language_scanner.c" yy808: YYDEBUG(808, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'U') goto yy809; - if (yych != 'u') goto yy280; + if (yych == 'L') goto yy815; + if (yych == 'l') goto yy815; + goto yy282; yy809: YYDEBUG(809, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy810; - if (yych != 'l') goto yy280; + if (yych == 'A') goto yy810; + if (yych != 'a') goto yy282; yy810: YYDEBUG(810, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy811; - if (yych != 't') goto yy280; + if (yych == 'U') goto yy811; + if (yych != 'u') goto yy282; yy811: YYDEBUG(811, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy812; + if (yych != 'l') goto yy282; +yy812: + YYDEBUG(812, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy813; + if (yych != 't') goto yy282; +yy813: + YYDEBUG(813, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(812, *YYCURSOR); + YYDEBUG(814, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1534 "Zend/zend_language_scanner.l" +#line 1535 "Zend/zend_language_scanner.l" { return T_DEFAULT; } -#line 8080 "Zend/zend_language_scanner.c" -yy813: - YYDEBUG(813, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy814; - if (yych != 'a') goto yy280; -yy814: - YYDEBUG(814, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'R') goto yy815; - if (yych != 'r') goto yy280; +#line 8091 "Zend/zend_language_scanner.c" yy815: YYDEBUG(815, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy816; - if (yych != 'e') goto yy280; + if (yych == 'A') goto yy816; + if (yych != 'a') goto yy282; yy816: YYDEBUG(816, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy817; + if (yych != 'r') goto yy282; +yy817: + YYDEBUG(817, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy818; + if (yych != 'e') goto yy282; +yy818: + YYDEBUG(818, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(817, *YYCURSOR); + YYDEBUG(819, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1506 "Zend/zend_language_scanner.l" +#line 1507 "Zend/zend_language_scanner.l" { return T_DECLARE; } -#line 8108 "Zend/zend_language_scanner.c" -yy818: - YYDEBUG(818, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'H') goto yy880; - if (yych == 'h') goto yy880; - goto yy280; -yy819: - YYDEBUG(819, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'S') goto yy874; - if (yych == 's') goto yy874; - goto yy280; +#line 8119 "Zend/zend_language_scanner.c" yy820: YYDEBUG(820, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'P') goto yy870; - if (yych == 'p') goto yy870; - goto yy280; + if (yych == 'H') goto yy882; + if (yych == 'h') goto yy882; + goto yy282; yy821: YYDEBUG(821, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy836; - if (yych == 'd') goto yy836; - goto yy280; + if (yych == 'S') goto yy876; + if (yych == 's') goto yy876; + goto yy282; yy822: YYDEBUG(822, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy833; - if (yych == 'a') goto yy833; - goto yy280; + if (yych == 'P') goto yy872; + if (yych == 'p') goto yy872; + goto yy282; yy823: YYDEBUG(823, *YYCURSOR); yych = *++YYCURSOR; - if (yych <= 'T') { - if (yych == 'I') goto yy824; - if (yych <= 'S') goto yy280; - goto yy825; - } else { - if (yych <= 'i') { - if (yych <= 'h') goto yy280; - } else { - if (yych == 't') goto yy825; - goto yy280; - } - } + if (yych == 'D') goto yy838; + if (yych == 'd') goto yy838; + goto yy282; yy824: YYDEBUG(824, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'T') goto yy831; - if (yych == 't') goto yy831; - goto yy280; + if (yych == 'A') goto yy835; + if (yych == 'a') goto yy835; + goto yy282; yy825: YYDEBUG(825, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy826; - if (yych != 'e') goto yy280; + if (yych <= 'T') { + if (yych == 'I') goto yy826; + if (yych <= 'S') goto yy282; + goto yy827; + } else { + if (yych <= 'i') { + if (yych <= 'h') goto yy282; + } else { + if (yych == 't') goto yy827; + goto yy282; + } + } yy826: YYDEBUG(826, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'N') goto yy827; - if (yych != 'n') goto yy280; + if (yych == 'T') goto yy833; + if (yych == 't') goto yy833; + goto yy282; yy827: YYDEBUG(827, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'D') goto yy828; - if (yych != 'd') goto yy280; + if (yych == 'E') goto yy828; + if (yych != 'e') goto yy282; yy828: YYDEBUG(828, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'S') goto yy829; - if (yych != 's') goto yy280; + if (yych == 'N') goto yy829; + if (yych != 'n') goto yy282; yy829: YYDEBUG(829, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'D') goto yy830; + if (yych != 'd') goto yy282; +yy830: + YYDEBUG(830, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'S') goto yy831; + if (yych != 's') goto yy282; +yy831: + YYDEBUG(831, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(830, *YYCURSOR); + YYDEBUG(832, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1566 "Zend/zend_language_scanner.l" +#line 1567 "Zend/zend_language_scanner.l" { return T_EXTENDS; } -#line 8192 "Zend/zend_language_scanner.c" -yy831: - YYDEBUG(831, *YYCURSOR); +#line 8203 "Zend/zend_language_scanner.c" +yy833: + YYDEBUG(833, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(832, *YYCURSOR); + YYDEBUG(834, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1430 "Zend/zend_language_scanner.l" +#line 1431 "Zend/zend_language_scanner.l" { return T_EXIT; } -#line 8205 "Zend/zend_language_scanner.c" -yy833: - YYDEBUG(833, *YYCURSOR); +#line 8216 "Zend/zend_language_scanner.c" +yy835: + YYDEBUG(835, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy834; - if (yych != 'l') goto yy280; -yy834: - YYDEBUG(834, *YYCURSOR); + if (yych == 'L') goto yy836; + if (yych != 'l') goto yy282; +yy836: + YYDEBUG(836, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(835, *YYCURSOR); + YYDEBUG(837, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1660 "Zend/zend_language_scanner.l" +#line 1665 "Zend/zend_language_scanner.l" { return T_EVAL; } -#line 8223 "Zend/zend_language_scanner.c" -yy836: - YYDEBUG(836, *YYCURSOR); +#line 8234 "Zend/zend_language_scanner.c" +yy838: + YYDEBUG(838, *YYCURSOR); yych = *++YYCURSOR; YYDEBUG(-1, yych); switch (yych) { case 'D': - case 'd': goto yy837; + case 'd': goto yy839; case 'F': - case 'f': goto yy838; + case 'f': goto yy840; case 'I': - case 'i': goto yy839; + case 'i': goto yy841; case 'S': - case 's': goto yy840; + case 's': goto yy842; case 'W': - case 'w': goto yy841; - default: goto yy280; + case 'w': goto yy843; + default: goto yy282; } -yy837: - YYDEBUG(837, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'E') goto yy863; - if (yych == 'e') goto yy863; - goto yy280; -yy838: - YYDEBUG(838, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'O') goto yy855; - if (yych == 'o') goto yy855; - goto yy280; yy839: YYDEBUG(839, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy853; - if (yych == 'f') goto yy853; - goto yy280; + if (yych == 'E') goto yy865; + if (yych == 'e') goto yy865; + goto yy282; yy840: YYDEBUG(840, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'W') goto yy847; - if (yych == 'w') goto yy847; - goto yy280; + if (yych == 'O') goto yy857; + if (yych == 'o') goto yy857; + goto yy282; yy841: YYDEBUG(841, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy842; - if (yych != 'h') goto yy280; + if (yych == 'F') goto yy855; + if (yych == 'f') goto yy855; + goto yy282; yy842: YYDEBUG(842, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'I') goto yy843; - if (yych != 'i') goto yy280; + if (yych == 'W') goto yy849; + if (yych == 'w') goto yy849; + goto yy282; yy843: YYDEBUG(843, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'L') goto yy844; - if (yych != 'l') goto yy280; + if (yych == 'H') goto yy844; + if (yych != 'h') goto yy282; yy844: YYDEBUG(844, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy845; - if (yych != 'e') goto yy280; + if (yych == 'I') goto yy845; + if (yych != 'i') goto yy282; yy845: YYDEBUG(845, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'L') goto yy846; + if (yych != 'l') goto yy282; +yy846: + YYDEBUG(846, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy847; + if (yych != 'e') goto yy282; +yy847: + YYDEBUG(847, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(846, *YYCURSOR); + YYDEBUG(848, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1482 "Zend/zend_language_scanner.l" +#line 1483 "Zend/zend_language_scanner.l" { return T_ENDWHILE; } -#line 8297 "Zend/zend_language_scanner.c" -yy847: - YYDEBUG(847, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'I') goto yy848; - if (yych != 'i') goto yy280; -yy848: - YYDEBUG(848, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy849; - if (yych != 't') goto yy280; +#line 8308 "Zend/zend_language_scanner.c" yy849: YYDEBUG(849, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'C') goto yy850; - if (yych != 'c') goto yy280; + if (yych == 'I') goto yy850; + if (yych != 'i') goto yy282; yy850: YYDEBUG(850, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy851; - if (yych != 'h') goto yy280; + if (yych == 'T') goto yy851; + if (yych != 't') goto yy282; yy851: YYDEBUG(851, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy852; + if (yych != 'c') goto yy282; +yy852: + YYDEBUG(852, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy853; + if (yych != 'h') goto yy282; +yy853: + YYDEBUG(853, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(852, *YYCURSOR); + YYDEBUG(854, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1526 "Zend/zend_language_scanner.l" +#line 1527 "Zend/zend_language_scanner.l" { return T_ENDSWITCH; } -#line 8330 "Zend/zend_language_scanner.c" -yy853: - YYDEBUG(853, *YYCURSOR); +#line 8341 "Zend/zend_language_scanner.c" +yy855: + YYDEBUG(855, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(854, *YYCURSOR); + YYDEBUG(856, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1470 "Zend/zend_language_scanner.l" +#line 1471 "Zend/zend_language_scanner.l" { return T_ENDIF; } -#line 8343 "Zend/zend_language_scanner.c" -yy855: - YYDEBUG(855, *YYCURSOR); +#line 8354 "Zend/zend_language_scanner.c" +yy857: + YYDEBUG(857, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy856; - if (yych != 'r') goto yy280; -yy856: - YYDEBUG(856, *YYCURSOR); + if (yych == 'R') goto yy858; + if (yych != 'r') goto yy282; +yy858: + YYDEBUG(858, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '@') { - if (yych <= '/') goto yy857; - if (yych <= '9') goto yy279; + if (yych <= '/') goto yy859; + if (yych <= '9') goto yy281; } else { - if (yych == 'E') goto yy858; - if (yych <= 'Z') goto yy279; + if (yych == 'E') goto yy860; + if (yych <= 'Z') goto yy281; } } else { if (yych <= 'd') { - if (yych != '`') goto yy279; + if (yych != '`') goto yy281; } else { - if (yych <= 'e') goto yy858; - if (yych <= 'z') goto yy279; - if (yych >= 0x7F) goto yy279; + if (yych <= 'e') goto yy860; + if (yych <= 'z') goto yy281; + if (yych >= 0x7F) goto yy281; } } -yy857: - YYDEBUG(857, *YYCURSOR); +yy859: + YYDEBUG(859, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1494 "Zend/zend_language_scanner.l" +#line 1495 "Zend/zend_language_scanner.l" { return T_ENDFOR; } -#line 8376 "Zend/zend_language_scanner.c" -yy858: - YYDEBUG(858, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'A') goto yy859; - if (yych != 'a') goto yy280; -yy859: - YYDEBUG(859, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy860; - if (yych != 'c') goto yy280; +#line 8387 "Zend/zend_language_scanner.c" yy860: YYDEBUG(860, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'H') goto yy861; - if (yych != 'h') goto yy280; + if (yych == 'A') goto yy861; + if (yych != 'a') goto yy282; yy861: YYDEBUG(861, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'C') goto yy862; + if (yych != 'c') goto yy282; +yy862: + YYDEBUG(862, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'H') goto yy863; + if (yych != 'h') goto yy282; +yy863: + YYDEBUG(863, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(862, *YYCURSOR); + YYDEBUG(864, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1502 "Zend/zend_language_scanner.l" +#line 1503 "Zend/zend_language_scanner.l" { return T_ENDFOREACH; } -#line 8404 "Zend/zend_language_scanner.c" -yy863: - YYDEBUG(863, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'C') goto yy864; - if (yych != 'c') goto yy280; -yy864: - YYDEBUG(864, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'L') goto yy865; - if (yych != 'l') goto yy280; +#line 8415 "Zend/zend_language_scanner.c" yy865: YYDEBUG(865, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'A') goto yy866; - if (yych != 'a') goto yy280; + if (yych == 'C') goto yy866; + if (yych != 'c') goto yy282; yy866: YYDEBUG(866, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'R') goto yy867; - if (yych != 'r') goto yy280; + if (yych == 'L') goto yy867; + if (yych != 'l') goto yy282; yy867: YYDEBUG(867, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy868; - if (yych != 'e') goto yy280; + if (yych == 'A') goto yy868; + if (yych != 'a') goto yy282; yy868: YYDEBUG(868, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'R') goto yy869; + if (yych != 'r') goto yy282; +yy869: + YYDEBUG(869, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'E') goto yy870; + if (yych != 'e') goto yy282; +yy870: + YYDEBUG(870, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(869, *YYCURSOR); + YYDEBUG(871, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1510 "Zend/zend_language_scanner.l" +#line 1511 "Zend/zend_language_scanner.l" { return T_ENDDECLARE; } -#line 8442 "Zend/zend_language_scanner.c" -yy870: - YYDEBUG(870, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'T') goto yy871; - if (yych != 't') goto yy280; -yy871: - YYDEBUG(871, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == 'Y') goto yy872; - if (yych != 'y') goto yy280; +#line 8453 "Zend/zend_language_scanner.c" yy872: YYDEBUG(872, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'T') goto yy873; + if (yych != 't') goto yy282; +yy873: + YYDEBUG(873, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == 'Y') goto yy874; + if (yych != 'y') goto yy282; +yy874: + YYDEBUG(874, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(873, *YYCURSOR); + YYDEBUG(875, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1696 "Zend/zend_language_scanner.l" +#line 1701 "Zend/zend_language_scanner.l" { return T_EMPTY; } -#line 8465 "Zend/zend_language_scanner.c" -yy874: - YYDEBUG(874, *YYCURSOR); +#line 8476 "Zend/zend_language_scanner.c" +yy876: + YYDEBUG(876, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'E') goto yy875; - if (yych != 'e') goto yy280; -yy875: - YYDEBUG(875, *YYCURSOR); + if (yych == 'E') goto yy877; + if (yych != 'e') goto yy282; +yy877: + YYDEBUG(877, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '^') { if (yych <= '@') { - if (yych <= '/') goto yy876; - if (yych <= '9') goto yy279; + if (yych <= '/') goto yy878; + if (yych <= '9') goto yy281; } else { - if (yych == 'I') goto yy877; - if (yych <= 'Z') goto yy279; + if (yych == 'I') goto yy879; + if (yych <= 'Z') goto yy281; } } else { if (yych <= 'h') { - if (yych != '`') goto yy279; + if (yych != '`') goto yy281; } else { - if (yych <= 'i') goto yy877; - if (yych <= 'z') goto yy279; - if (yych >= 0x7F) goto yy279; + if (yych <= 'i') goto yy879; + if (yych <= 'z') goto yy281; + if (yych >= 0x7F) goto yy281; } } -yy876: - YYDEBUG(876, *YYCURSOR); +yy878: + YYDEBUG(878, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1474 "Zend/zend_language_scanner.l" +#line 1475 "Zend/zend_language_scanner.l" { return T_ELSE; } -#line 8498 "Zend/zend_language_scanner.c" -yy877: - YYDEBUG(877, *YYCURSOR); +#line 8509 "Zend/zend_language_scanner.c" +yy879: + YYDEBUG(879, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'F') goto yy878; - if (yych != 'f') goto yy280; -yy878: - YYDEBUG(878, *YYCURSOR); + if (yych == 'F') goto yy880; + if (yych != 'f') goto yy282; +yy880: + YYDEBUG(880, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(879, *YYCURSOR); + YYDEBUG(881, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1466 "Zend/zend_language_scanner.l" +#line 1467 "Zend/zend_language_scanner.l" { return T_ELSEIF; } -#line 8516 "Zend/zend_language_scanner.c" -yy880: - YYDEBUG(880, *YYCURSOR); +#line 8527 "Zend/zend_language_scanner.c" +yy882: + YYDEBUG(882, *YYCURSOR); yych = *++YYCURSOR; - if (yych == 'O') goto yy881; - if (yych != 'o') goto yy280; -yy881: - YYDEBUG(881, *YYCURSOR); + if (yych == 'O') goto yy883; + if (yych != 'o') goto yy282; +yy883: + YYDEBUG(883, *YYCURSOR); ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy279; + goto yy281; } - YYDEBUG(882, *YYCURSOR); + YYDEBUG(884, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1550 "Zend/zend_language_scanner.l" +#line 1551 "Zend/zend_language_scanner.l" { return T_ECHO; } -#line 8534 "Zend/zend_language_scanner.c" +#line 8545 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_LOOKING_FOR_PROPERTY: @@ -8569,41 +8580,41 @@ yyc_ST_LOOKING_FOR_PROPERTY: 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, }; - YYDEBUG(883, *YYCURSOR); + YYDEBUG(885, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yych <= '-') { if (yych <= '\r') { - if (yych <= 0x08) goto yy891; - if (yych <= '\n') goto yy885; - if (yych <= '\f') goto yy891; + if (yych <= 0x08) goto yy893; + if (yych <= '\n') goto yy887; + if (yych <= '\f') goto yy893; } else { - if (yych == ' ') goto yy885; - if (yych <= ',') goto yy891; - goto yy887; + if (yych == ' ') goto yy887; + if (yych <= ',') goto yy893; + goto yy889; } } else { if (yych <= '_') { - if (yych <= '@') goto yy891; - if (yych <= 'Z') goto yy889; - if (yych <= '^') goto yy891; - goto yy889; + if (yych <= '@') goto yy893; + if (yych <= 'Z') goto yy891; + if (yych <= '^') goto yy893; + goto yy891; } else { - if (yych <= '`') goto yy891; - if (yych <= 'z') goto yy889; - if (yych <= '~') goto yy891; - goto yy889; + if (yych <= '`') goto yy893; + if (yych <= 'z') goto yy891; + if (yych <= '~') goto yy893; + goto yy891; } } -yy885: - YYDEBUG(885, *YYCURSOR); +yy887: + YYDEBUG(887, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy897; -yy886: - YYDEBUG(886, *YYCURSOR); + goto yy899; +yy888: + YYDEBUG(888, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1579 "Zend/zend_language_scanner.l" +#line 1580 "Zend/zend_language_scanner.l" { Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ Z_STRLEN_P(zendlval) = yyleng; @@ -8611,30 +8622,30 @@ yy886: HANDLE_NEWLINES(yytext, yyleng); return T_WHITESPACE; } -#line 8615 "Zend/zend_language_scanner.c" -yy887: - YYDEBUG(887, *YYCURSOR); +#line 8626 "Zend/zend_language_scanner.c" +yy889: + YYDEBUG(889, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '>') goto yy894; -yy888: - YYDEBUG(888, *YYCURSOR); + if ((yych = *YYCURSOR) == '>') goto yy896; +yy890: + YYDEBUG(890, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1602 "Zend/zend_language_scanner.l" +#line 1603 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); goto restart; } -#line 8629 "Zend/zend_language_scanner.c" -yy889: - YYDEBUG(889, *YYCURSOR); +#line 8640 "Zend/zend_language_scanner.c" +yy891: + YYDEBUG(891, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy893; -yy890: - YYDEBUG(890, *YYCURSOR); + goto yy895; +yy892: + YYDEBUG(892, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1591 "Zend/zend_language_scanner.l" +#line 1592 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); if (!zend_copy_scanner_string(zendlval, yytext, yyleng, UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { @@ -8645,43 +8656,43 @@ yy890: } return T_STRING; } -#line 8649 "Zend/zend_language_scanner.c" -yy891: - YYDEBUG(891, *YYCURSOR); - yych = *++YYCURSOR; - goto yy888; -yy892: - YYDEBUG(892, *YYCURSOR); - ++YYCURSOR; - YYFILL(1); - yych = *YYCURSOR; +#line 8660 "Zend/zend_language_scanner.c" yy893: YYDEBUG(893, *YYCURSOR); - if (yybm[0+yych] & 64) { - goto yy892; - } + yych = *++YYCURSOR; goto yy890; yy894: YYDEBUG(894, *YYCURSOR); ++YYCURSOR; + YYFILL(1); + yych = *YYCURSOR; +yy895: YYDEBUG(895, *YYCURSOR); + if (yybm[0+yych] & 64) { + goto yy894; + } + goto yy892; +yy896: + YYDEBUG(896, *YYCURSOR); + ++YYCURSOR; + YYDEBUG(897, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1587 "Zend/zend_language_scanner.l" +#line 1588 "Zend/zend_language_scanner.l" { return T_OBJECT_OPERATOR; } -#line 8674 "Zend/zend_language_scanner.c" -yy896: - YYDEBUG(896, *YYCURSOR); +#line 8685 "Zend/zend_language_scanner.c" +yy898: + YYDEBUG(898, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy897: - YYDEBUG(897, *YYCURSOR); +yy899: + YYDEBUG(899, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy896; + goto yy898; } - goto yy886; + goto yy888; } /* *********************************** */ yyc_ST_LOOKING_FOR_VARNAME: @@ -8720,27 +8731,27 @@ yyc_ST_LOOKING_FOR_VARNAME: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(898, *YYCURSOR); + YYDEBUG(900, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yych <= '_') { - if (yych <= '@') goto yy902; - if (yych <= 'Z') goto yy900; - if (yych <= '^') goto yy902; + if (yych <= '@') goto yy904; + if (yych <= 'Z') goto yy902; + if (yych <= '^') goto yy904; } else { - if (yych <= '`') goto yy902; - if (yych <= 'z') goto yy900; - if (yych <= '~') goto yy902; + if (yych <= '`') goto yy904; + if (yych <= 'z') goto yy902; + if (yych <= '~') goto yy904; } -yy900: - YYDEBUG(900, *YYCURSOR); +yy902: + YYDEBUG(902, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy905; -yy901: - YYDEBUG(901, *YYCURSOR); + goto yy907; +yy903: + YYDEBUG(903, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1874 "Zend/zend_language_scanner.l" +#line 1879 "Zend/zend_language_scanner.l" { if (!zend_copy_scanner_string(zendlval, yytext, yyleng, UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { return 0; @@ -8752,31 +8763,31 @@ yy901: yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); return T_STRING_VARNAME; } -#line 8756 "Zend/zend_language_scanner.c" -yy902: - YYDEBUG(902, *YYCURSOR); +#line 8767 "Zend/zend_language_scanner.c" +yy904: + YYDEBUG(904, *YYCURSOR); ++YYCURSOR; - YYDEBUG(903, *YYCURSOR); + YYDEBUG(905, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1887 "Zend/zend_language_scanner.l" +#line 1892 "Zend/zend_language_scanner.l" { yyless(0); yy_pop_state(TSRMLS_C); yy_push_state(ST_IN_SCRIPTING TSRMLS_CC); goto restart; } -#line 8769 "Zend/zend_language_scanner.c" -yy904: - YYDEBUG(904, *YYCURSOR); +#line 8780 "Zend/zend_language_scanner.c" +yy906: + YYDEBUG(906, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy905: - YYDEBUG(905, *YYCURSOR); +yy907: + YYDEBUG(907, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy904; + goto yy906; } - goto yy901; + goto yy903; } /* *********************************** */ yyc_ST_NOWDOC: @@ -8815,106 +8826,106 @@ yyc_ST_NOWDOC: 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, }; - YYDEBUG(906, *YYCURSOR); + YYDEBUG(908, *YYCURSOR); YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 16) { - goto yy908; + goto yy910; } - if (yych <= '\f') goto yy910; - goto yy912; -yy908: - YYDEBUG(908, *YYCURSOR); + if (yych <= '\f') goto yy912; + goto yy914; +yy910: + YYDEBUG(910, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(909, *YYCURSOR); + YYDEBUG(911, *YYCURSOR); if (yybm[0+yych] & 16) { - goto yy908; + goto yy910; } - if (yych <= '\f') goto yy919; - goto yy921; -yy910: - YYDEBUG(910, *YYCURSOR); + if (yych <= '\f') goto yy921; + goto yy923; +yy912: + YYDEBUG(912, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(911, *YYCURSOR); + YYDEBUG(913, *YYCURSOR); if (yybm[0+yych] & 32) { - goto yy910; + goto yy912; } if (yych <= '^') { if (yych <= '\r') { - if (yych <= '\f') goto yy908; + if (yych <= '\f') goto yy910; } else { - if (yych <= '@') goto yy908; - if (yych <= 'Z') goto yy914; - goto yy908; + if (yych <= '@') goto yy910; + if (yych <= 'Z') goto yy916; + goto yy910; } } else { if (yych <= '`') { - if (yych <= '_') goto yy914; - goto yy908; + if (yych <= '_') goto yy916; + goto yy910; } else { - if (yych <= 'z') goto yy914; - if (yych <= '~') goto yy908; - goto yy914; + if (yych <= 'z') goto yy916; + if (yych <= '~') goto yy910; + goto yy916; } } -yy912: - YYDEBUG(912, *YYCURSOR); +yy914: + YYDEBUG(914, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(913, *YYCURSOR); + YYDEBUG(915, *YYCURSOR); if (yybm[0+yych] & 32) { - goto yy910; + goto yy912; } if (yych <= '^') { if (yych <= '\r') { - if (yych <= '\f') goto yy908; - goto yy912; + if (yych <= '\f') goto yy910; + goto yy914; } else { - if (yych <= '@') goto yy908; - if (yych >= '[') goto yy908; + if (yych <= '@') goto yy910; + if (yych >= '[') goto yy910; } } else { if (yych <= '`') { - if (yych >= '`') goto yy908; + if (yych >= '`') goto yy910; } else { - if (yych <= 'z') goto yy914; - if (yych <= '~') goto yy908; + if (yych <= 'z') goto yy916; + if (yych <= '~') goto yy910; } } -yy914: - YYDEBUG(914, *YYCURSOR); +yy916: + YYDEBUG(916, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(915, *YYCURSOR); + YYDEBUG(917, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy914; + goto yy916; } if (yych <= '\f') { - if (yych == '\n') goto yy917; - goto yy908; + if (yych == '\n') goto yy919; + goto yy910; } else { - if (yych <= '\r') goto yy917; - if (yych != ';') goto yy908; + if (yych <= '\r') goto yy919; + if (yych != ';') goto yy910; } - YYDEBUG(916, *YYCURSOR); + YYDEBUG(918, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 16) { - goto yy908; + goto yy910; } -yy917: - YYDEBUG(917, *YYCURSOR); +yy919: + YYDEBUG(919, *YYCURSOR); ++YYCURSOR; - YYDEBUG(918, *YYCURSOR); + YYDEBUG(920, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2623 "Zend/zend_language_scanner.l" +#line 2628 "Zend/zend_language_scanner.l" { char *end = yytext + yyleng - 1; @@ -8955,55 +8966,55 @@ yy917: yymore(); } } -#line 8959 "Zend/zend_language_scanner.c" -yy919: - YYDEBUG(919, *YYCURSOR); +#line 8970 "Zend/zend_language_scanner.c" +yy921: + YYDEBUG(921, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(920, *YYCURSOR); + YYDEBUG(922, *YYCURSOR); if (yych <= 'Z') { if (yych <= '\f') { - if (yych == '\n') goto yy919; - goto yy908; + if (yych == '\n') goto yy921; + goto yy910; } else { - if (yych <= '\r') goto yy921; - if (yych <= '@') goto yy908; - goto yy914; + if (yych <= '\r') goto yy923; + if (yych <= '@') goto yy910; + goto yy916; } } else { if (yych <= '`') { - if (yych == '_') goto yy914; - goto yy908; + if (yych == '_') goto yy916; + goto yy910; } else { - if (yych <= 'z') goto yy914; - if (yych <= '~') goto yy908; - goto yy914; + if (yych <= 'z') goto yy916; + if (yych <= '~') goto yy910; + goto yy916; } } -yy921: - YYDEBUG(921, *YYCURSOR); +yy923: + YYDEBUG(923, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(922, *YYCURSOR); + YYDEBUG(924, *YYCURSOR); if (yych <= 'Z') { if (yych <= '\f') { - if (yych == '\n') goto yy919; - goto yy908; + if (yych == '\n') goto yy921; + goto yy910; } else { - if (yych <= '\r') goto yy921; - if (yych <= '@') goto yy908; - goto yy914; + if (yych <= '\r') goto yy923; + if (yych <= '@') goto yy910; + goto yy916; } } else { if (yych <= '`') { - if (yych == '_') goto yy914; - goto yy908; + if (yych == '_') goto yy916; + goto yy910; } else { - if (yych <= 'z') goto yy914; - if (yych <= '~') goto yy908; - goto yy914; + if (yych <= 'z') goto yy916; + if (yych <= '~') goto yy910; + goto yy916; } } } @@ -9044,52 +9055,52 @@ yyc_ST_ONE_LINE_COMMENT: 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - YYDEBUG(923, *YYCURSOR); + YYDEBUG(925, *YYCURSOR); YYFILL(2); yych = *YYCURSOR; if (yybm[0+yych] & 128) { - goto yy929; + goto yy931; } - if (yych <= '\f') goto yy932; - if (yych <= '\r') goto yy933; - if (yych <= '=') goto yy925; - if (yych <= '>') goto yy927; - goto yy928; -yy925: - YYDEBUG(925, *YYCURSOR); + if (yych <= '\f') goto yy934; + if (yych <= '\r') goto yy935; + if (yych <= '=') goto yy927; + if (yych <= '>') goto yy929; + goto yy930; +yy927: + YYDEBUG(927, *YYCURSOR); ++YYCURSOR; - if ((yych = *YYCURSOR) == '>') goto yy937; -yy926: - YYDEBUG(926, *YYCURSOR); + if ((yych = *YYCURSOR) == '>') goto yy939; +yy928: + YYDEBUG(928, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2277 "Zend/zend_language_scanner.l" +#line 2282 "Zend/zend_language_scanner.l" { yymore(); } -#line 9070 "Zend/zend_language_scanner.c" -yy927: - YYDEBUG(927, *YYCURSOR); - yych = *++YYCURSOR; - goto yy926; -yy928: - YYDEBUG(928, *YYCURSOR); - yych = *++YYCURSOR; - if (yych == '>') goto yy937; - goto yy926; +#line 9081 "Zend/zend_language_scanner.c" yy929: YYDEBUG(929, *YYCURSOR); + yych = *++YYCURSOR; + goto yy928; +yy930: + YYDEBUG(930, *YYCURSOR); + yych = *++YYCURSOR; + if (yych == '>') goto yy939; + goto yy928; +yy931: + YYDEBUG(931, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(930, *YYCURSOR); + YYDEBUG(932, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy929; + goto yy931; } - goto yy936; -yy931: - YYDEBUG(931, *YYCURSOR); + goto yy938; +yy933: + YYDEBUG(933, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2281 "Zend/zend_language_scanner.l" +#line 2286 "Zend/zend_language_scanner.l" { switch (yytext[yyleng-1]) { case '?': case '%': case '>': @@ -9107,20 +9118,20 @@ yy931: return T_COMMENT; } } -#line 9111 "Zend/zend_language_scanner.c" -yy932: - YYDEBUG(932, *YYCURSOR); +#line 9122 "Zend/zend_language_scanner.c" +yy934: + YYDEBUG(934, *YYCURSOR); yych = *++YYCURSOR; - goto yy931; -yy933: - YYDEBUG(933, *YYCURSOR); + goto yy933; +yy935: + YYDEBUG(935, *YYCURSOR); yych = *++YYCURSOR; - if (yych != '\n') goto yy931; - YYDEBUG(934, *YYCURSOR); + if (yych != '\n') goto yy933; + YYDEBUG(936, *YYCURSOR); ++YYCURSOR; - YYDEBUG(935, *YYCURSOR); + YYDEBUG(937, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2299 "Zend/zend_language_scanner.l" +#line 2304 "Zend/zend_language_scanner.l" { Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ Z_STRLEN_P(zendlval) = yyleng; @@ -9129,17 +9140,17 @@ yy933: CG(zend_lineno)++; return T_COMMENT; } -#line 9133 "Zend/zend_language_scanner.c" -yy936: - YYDEBUG(936, *YYCURSOR); +#line 9144 "Zend/zend_language_scanner.c" +yy938: + YYDEBUG(938, *YYCURSOR); yych = *++YYCURSOR; - goto yy931; -yy937: - YYDEBUG(937, *YYCURSOR); + goto yy933; +yy939: + YYDEBUG(939, *YYCURSOR); ++YYCURSOR; - YYDEBUG(938, *YYCURSOR); + YYDEBUG(940, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2308 "Zend/zend_language_scanner.l" +#line 2313 "Zend/zend_language_scanner.l" { if (CG(asp_tags) || yytext[yyleng-2] != '%') { /* asp comment? */ Z_STRVAL_P(zendlval) = yytext; /* no copying - intentional */ @@ -9152,7 +9163,7 @@ yy937: yymore(); } } -#line 9156 "Zend/zend_language_scanner.c" +#line 9167 "Zend/zend_language_scanner.c" } /* *********************************** */ yyc_ST_VAR_OFFSET: @@ -9191,69 +9202,69 @@ yyc_ST_VAR_OFFSET: 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, }; - YYDEBUG(939, *YYCURSOR); + YYDEBUG(941, *YYCURSOR); YYFILL(3); yych = *YYCURSOR; if (yych <= '/') { if (yych <= ' ') { if (yych <= '\f') { - if (yych <= 0x08) goto yy953; - if (yych <= '\n') goto yy949; - goto yy953; + if (yych <= 0x08) goto yy955; + if (yych <= '\n') goto yy951; + goto yy955; } else { - if (yych <= '\r') goto yy949; - if (yych <= 0x1F) goto yy953; - goto yy949; + if (yych <= '\r') goto yy951; + if (yych <= 0x1F) goto yy955; + goto yy951; } } else { if (yych <= '$') { - if (yych <= '"') goto yy948; - if (yych <= '#') goto yy949; - goto yy944; + if (yych <= '"') goto yy950; + if (yych <= '#') goto yy951; + goto yy946; } else { - if (yych == '\'') goto yy949; - goto yy948; + if (yych == '\'') goto yy951; + goto yy950; } } } else { if (yych <= '\\') { if (yych <= '@') { - if (yych <= '0') goto yy941; - if (yych <= '9') goto yy943; - goto yy948; + if (yych <= '0') goto yy943; + if (yych <= '9') goto yy945; + goto yy950; } else { - if (yych <= 'Z') goto yy951; - if (yych <= '[') goto yy948; - goto yy949; + if (yych <= 'Z') goto yy953; + if (yych <= '[') goto yy950; + goto yy951; } } else { if (yych <= '_') { - if (yych <= ']') goto yy946; - if (yych <= '^') goto yy948; - goto yy951; + if (yych <= ']') goto yy948; + if (yych <= '^') goto yy950; + goto yy953; } else { - if (yych <= '`') goto yy948; - if (yych <= 'z') goto yy951; - if (yych <= '~') goto yy948; - goto yy951; + if (yych <= '`') goto yy950; + if (yych <= 'z') goto yy953; + if (yych <= '~') goto yy950; + goto yy953; } } } -yy941: - YYDEBUG(941, *YYCURSOR); +yy943: + YYDEBUG(943, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'W') { - if (yych <= '/') goto yy942; - if (yych <= '9') goto yy964; + if (yych <= '/') goto yy944; + if (yych <= '9') goto yy966; } else { - if (yych <= 'X') goto yy962; - if (yych == 'x') goto yy962; + if (yych <= 'X') goto yy964; + if (yych == 'x') goto yy964; } -yy942: - YYDEBUG(942, *YYCURSOR); +yy944: + YYDEBUG(944, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1937 "Zend/zend_language_scanner.l" +#line 1942 "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)) { Z_LVAL_P(zendlval) = strtol(yytext, NULL, 10); @@ -9265,53 +9276,53 @@ yy942: } return T_NUM_STRING; } -#line 9269 "Zend/zend_language_scanner.c" -yy943: - YYDEBUG(943, *YYCURSOR); +#line 9280 "Zend/zend_language_scanner.c" +yy945: + YYDEBUG(945, *YYCURSOR); yych = *++YYCURSOR; - goto yy961; -yy944: - YYDEBUG(944, *YYCURSOR); + goto yy963; +yy946: + YYDEBUG(946, *YYCURSOR); ++YYCURSOR; if ((yych = *YYCURSOR) <= '_') { - if (yych <= '@') goto yy945; - if (yych <= 'Z') goto yy957; - if (yych >= '_') goto yy957; + if (yych <= '@') goto yy947; + if (yych <= 'Z') goto yy959; + if (yych >= '_') goto yy959; } else { - if (yych <= '`') goto yy945; - if (yych <= 'z') goto yy957; - if (yych >= 0x7F) goto yy957; + if (yych <= '`') goto yy947; + if (yych <= 'z') goto yy959; + if (yych >= 0x7F) goto yy959; } -yy945: - YYDEBUG(945, *YYCURSOR); +yy947: + YYDEBUG(947, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2241 "Zend/zend_language_scanner.l" +#line 2246 "Zend/zend_language_scanner.l" { /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */ return yytext[0]; } -#line 9294 "Zend/zend_language_scanner.c" -yy946: - YYDEBUG(946, *YYCURSOR); +#line 9305 "Zend/zend_language_scanner.c" +yy948: + YYDEBUG(948, *YYCURSOR); ++YYCURSOR; - YYDEBUG(947, *YYCURSOR); + YYDEBUG(949, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2236 "Zend/zend_language_scanner.l" +#line 2241 "Zend/zend_language_scanner.l" { yy_pop_state(TSRMLS_C); return ']'; } -#line 9305 "Zend/zend_language_scanner.c" -yy948: - YYDEBUG(948, *YYCURSOR); +#line 9316 "Zend/zend_language_scanner.c" +yy950: + YYDEBUG(950, *YYCURSOR); yych = *++YYCURSOR; - goto yy945; -yy949: - YYDEBUG(949, *YYCURSOR); + goto yy947; +yy951: + YYDEBUG(951, *YYCURSOR); ++YYCURSOR; - YYDEBUG(950, *YYCURSOR); + YYDEBUG(952, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2246 "Zend/zend_language_scanner.l" +#line 2251 "Zend/zend_language_scanner.l" { /* Invalid rule to return a more explicit parse error with proper line number */ yyless(0); @@ -9319,70 +9330,70 @@ yy949: ZVAL_EMPTY_TEXT(zendlval); /* Empty since it won't be used */ return T_ENCAPSED_AND_WHITESPACE; } -#line 9323 "Zend/zend_language_scanner.c" -yy951: - YYDEBUG(951, *YYCURSOR); +#line 9334 "Zend/zend_language_scanner.c" +yy953: + YYDEBUG(953, *YYCURSOR); ++YYCURSOR; yych = *YYCURSOR; - goto yy956; -yy952: - YYDEBUG(952, *YYCURSOR); + goto yy958; +yy954: + YYDEBUG(954, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2264 "Zend/zend_language_scanner.l" +#line 2269 "Zend/zend_language_scanner.l" { if (!zend_copy_scanner_string(zendlval, yytext, yyleng, CG(literal_type), SCNG(output_conv) TSRMLS_CC)) { return 0; } return T_STRING; } -#line 9339 "Zend/zend_language_scanner.c" -yy953: - YYDEBUG(953, *YYCURSOR); +#line 9350 "Zend/zend_language_scanner.c" +yy955: + YYDEBUG(955, *YYCURSOR); ++YYCURSOR; - YYDEBUG(954, *YYCURSOR); + YYDEBUG(956, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2677 "Zend/zend_language_scanner.l" +#line 2682 "Zend/zend_language_scanner.l" { zend_error(E_COMPILE_WARNING,"Unexpected character in input: '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE); goto restart; } -#line 9350 "Zend/zend_language_scanner.c" -yy955: - YYDEBUG(955, *YYCURSOR); +#line 9361 "Zend/zend_language_scanner.c" +yy957: + YYDEBUG(957, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy956: - YYDEBUG(956, *YYCURSOR); +yy958: + YYDEBUG(958, *YYCURSOR); if (yybm[0+yych] & 32) { - goto yy955; + goto yy957; } - goto yy952; -yy957: - YYDEBUG(957, *YYCURSOR); + goto yy954; +yy959: + YYDEBUG(959, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(958, *YYCURSOR); + YYDEBUG(960, *YYCURSOR); if (yych <= '^') { if (yych <= '9') { - if (yych >= '0') goto yy957; + if (yych >= '0') goto yy959; } else { - if (yych <= '@') goto yy959; - if (yych <= 'Z') goto yy957; + if (yych <= '@') goto yy961; + if (yych <= 'Z') goto yy959; } } else { if (yych <= '`') { - if (yych <= '_') goto yy957; + if (yych <= '_') goto yy959; } else { - if (yych <= 'z') goto yy957; - if (yych >= 0x7F) goto yy957; + if (yych <= 'z') goto yy959; + if (yych >= 0x7F) goto yy959; } } -yy959: - YYDEBUG(959, *YYCURSOR); +yy961: + YYDEBUG(961, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 2226 "Zend/zend_language_scanner.l" +#line 2231 "Zend/zend_language_scanner.l" { if (!zend_copy_scanner_string(zendlval, (yytext+1), (yyleng-1), UG(unicode)?IS_UNICODE:IS_STRING, SCNG(output_conv) TSRMLS_CC)) { return 0; @@ -9392,58 +9403,58 @@ yy959: } return T_VARIABLE; } -#line 9396 "Zend/zend_language_scanner.c" -yy960: - YYDEBUG(960, *YYCURSOR); +#line 9407 "Zend/zend_language_scanner.c" +yy962: + YYDEBUG(962, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; -yy961: - YYDEBUG(961, *YYCURSOR); +yy963: + YYDEBUG(963, *YYCURSOR); if (yybm[0+yych] & 64) { - goto yy960; + goto yy962; } - goto yy942; -yy962: - YYDEBUG(962, *YYCURSOR); + goto yy944; +yy964: + YYDEBUG(964, *YYCURSOR); yych = *++YYCURSOR; if (yybm[0+yych] & 128) { - goto yy967; + goto yy969; } - YYDEBUG(963, *YYCURSOR); + YYDEBUG(965, *YYCURSOR); YYCURSOR = YYMARKER; - goto yy942; -yy964: - YYDEBUG(964, *YYCURSOR); + goto yy944; +yy966: + YYDEBUG(966, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(965, *YYCURSOR); - if (yych <= '/') goto yy966; - if (yych <= '9') goto yy964; -yy966: - YYDEBUG(966, *YYCURSOR); + YYDEBUG(967, *YYCURSOR); + if (yych <= '/') goto yy968; + if (yych <= '9') goto yy966; +yy968: + YYDEBUG(968, *YYCURSOR); yyleng = YYCURSOR - SCNG(yy_text); -#line 1949 "Zend/zend_language_scanner.l" +#line 1954 "Zend/zend_language_scanner.l" { /* Offset must be treated as a string */ if (!zend_copy_scanner_string(zendlval, yytext, yyleng, CG(literal_type), SCNG(output_conv) TSRMLS_CC)) { return 0; } return T_NUM_STRING; } -#line 9435 "Zend/zend_language_scanner.c" -yy967: - YYDEBUG(967, *YYCURSOR); +#line 9446 "Zend/zend_language_scanner.c" +yy969: + YYDEBUG(969, *YYCURSOR); ++YYCURSOR; YYFILL(1); yych = *YYCURSOR; - YYDEBUG(968, *YYCURSOR); + YYDEBUG(970, *YYCURSOR); if (yybm[0+yych] & 128) { - goto yy967; + goto yy969; } - goto yy966; + goto yy968; } } -#line 2682 "Zend/zend_language_scanner.l" +#line 2687 "Zend/zend_language_scanner.l" } diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index c6fc51d6cc..c57771ea49 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1610,6 +1610,10 @@ NOWDOC_CHARS ([^\n\r]|{NEWLINE}+([^a-zA-Z_\x7f-\xff\n\r]|({LABEL}([^a-zA- return T_PAAMAYIM_NEKUDOTAYIM; } +"\\" { + return T_NS_SEPARATOR; +} + "new" { return T_NEW; } diff --git a/Zend/zend_language_scanner_defs.h b/Zend/zend_language_scanner_defs.h index 552b091432..eb4e6489e1 100644 --- a/Zend/zend_language_scanner_defs.h +++ b/Zend/zend_language_scanner_defs.h @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.5 on Wed Aug 13 11:32:11 2008 */ +/* Generated by re2c 0.13.5 on Tue Dec 2 17:02:52 2008 */ #line 3 "Zend/zend_language_scanner_defs.h" enum YYCONDTYPE { diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index df86f10863..db15ad5bb7 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -2146,15 +2146,13 @@ ZEND_VM_HANDLER(59, ZEND_INIT_FCALL_BY_NAME, ANY, CONST|TMP|VAR|CV) function_name_strval = Z_UNIVAL_P(function_name); function_name_strlen = Z_UNILEN_P(function_name); if (Z_TYPE_P(function_name) == IS_UNICODE && - function_name_strval.u[0] == ':' && - function_name_strval.u[1] == ':') { - function_name_strlen -= 2; - lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), ZSTR(function_name_strval.u+2), function_name_strlen, 1, &lcname_len); + function_name_strval.u[0] == '\\') { + function_name_strlen -= 1; + lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), ZSTR(function_name_strval.u+1), function_name_strlen, 1, &lcname_len); } else if (Z_TYPE_P(function_name) == IS_STRING && - function_name_strval.s[0] == ':' && - function_name_strval.s[1] == ':') { - function_name_strlen -= 2; - lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), ZSTR(function_name_strval.s+2), function_name_strlen, 1, &lcname_len); + function_name_strval.s[0] == '\\') { + function_name_strlen -= 1; + lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), ZSTR(function_name_strval.s+1), function_name_strlen, 1, &lcname_len); } else { lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), function_name_strval, function_name_strlen, 1, &lcname_len); } @@ -2179,8 +2177,13 @@ ZEND_VM_HANDLER(69, ZEND_INIT_NS_FCALL_BY_NAME, ANY, CONST) zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope)); if (zend_u_hash_quick_find(EG(function_table), Z_TYPE(opline->op1.u.constant), Z_UNIVAL(opline->op1.u.constant), Z_UNILEN(opline->op1.u.constant)+1, opline->extended_value, (void **) &EX(fbc))==FAILURE) { - if (zend_u_hash_quick_find(EG(function_table), Z_TYPE(op_data->op1.u.constant), Z_UNIVAL(op_data->op1.u.constant), Z_UNILEN(op_data->op1.u.constant)+1, op_data->extended_value, (void **) &EX(fbc))==FAILURE || - EX(fbc)->type != ZEND_INTERNAL_FUNCTION) { + zstr short_name; + if(Z_TYPE(opline->op1.u.constant) == IS_UNICODE) { + short_name.u = Z_USTRVAL(opline->op1.u.constant)+Z_LVAL(op_data->op1.u.constant); + } else { + short_name.s = Z_STRVAL(opline->op1.u.constant)+Z_LVAL(op_data->op1.u.constant); + } + if (zend_u_hash_quick_find(EG(function_table), Z_TYPE(opline->op1.u.constant), short_name, Z_UNILEN(opline->op1.u.constant)-Z_LVAL(op_data->op1.u.constant)+1, op_data->extended_value, (void **) &EX(fbc))==FAILURE) { zend_error_noreturn(E_ERROR, "Call to undefined function %R()", Z_TYPE(opline->op2.u.constant), Z_USTRVAL(opline->op2.u.constant)); } } @@ -3036,46 +3039,43 @@ ZEND_VM_HANDLER(99, ZEND_FETCH_CONSTANT, VAR|UNUSED|CONST, CONST) zend_op *opline = EX(opline); if (OP1_TYPE == IS_UNUSED) { - if (!zend_u_get_constant(Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant), Z_UNILEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var TSRMLS_CC)) { - if (opline->extended_value & ZEND_FETCH_CLASS_RT_NS_CHECK) { + if (!zend_u_get_constant_ex(Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant), Z_UNILEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var, NULL, opline->extended_value TSRMLS_CC)) { + if ((opline->extended_value & IS_CONSTANT_UNQUALIFIED) != 0) { + zstr actual; + unsigned int actual_len; + if(Z_TYPE(opline->op2.u.constant) == IS_UNICODE) { + actual.u = u_memrchr(Z_USTRVAL(opline->op2.u.constant), '\\', Z_USTRLEN(opline->op2.u.constant)); + if(actual.u) { + actual.u++; + actual_len = Z_USTRLEN(opline->op2.u.constant) - (actual.u - Z_USTRVAL(opline->op2.u.constant)); + } + } else { + actual.s = zend_memrchr(Z_STRVAL(opline->op2.u.constant), '\\', Z_STRLEN(opline->op2.u.constant)); + if(actual.s) { + actual.s++; + actual_len = Z_STRLEN(opline->op2.u.constant) - (actual.s - Z_STRVAL(opline->op2.u.constant)); + } + } + if(!actual.v) { + actual = Z_UNIVAL(opline->op2.u.constant); + actual_len = Z_UNILEN(opline->op2.u.constant); + } + /* non-qualified constant - allow text substitution */ + zend_error(E_NOTICE, "Use of undefined constant %R - assumed '%R'", + Z_TYPE(opline->op2.u.constant), actual, Z_TYPE(opline->op2.u.constant), actual); + ZVAL_ZSTRL(&EX_T(opline->result.u.var).tmp_var, Z_TYPE(opline->op2.u.constant), actual, actual_len, 1); + } else { zend_error_noreturn(E_ERROR, "Undefined constant '%R'", Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant)); } - zend_error(E_NOTICE, "Use of undefined constant %R - assumed '%R'", - Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant), - Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant)); - EX_T(opline->result.u.var).tmp_var = opline->op2.u.constant; - zval_copy_ctor(&EX_T(opline->result.u.var).tmp_var); } ZEND_VM_NEXT_OPCODE(); } else { + /* class constant */ zend_class_entry *ce; zval **value; if (OP1_TYPE == IS_CONST) { - zend_op *op_data = opline + 1; - zend_constant *c; - - ZEND_VM_INC_OPCODE(); - - /* try a constant in namespace */ - if (zend_u_hash_quick_find(EG(zend_constants), Z_TYPE(op_data->op1.u.constant), Z_UNIVAL(op_data->op1.u.constant), Z_UNILEN(op_data->op1.u.constant)+1, op_data->extended_value, (void **) &c)==SUCCESS) { - EX_T(opline->result.u.var).tmp_var = c->value; - zval_copy_ctor(&EX_T(opline->result.u.var).tmp_var); - ZEND_VM_NEXT_OPCODE(); - } else if ((opline->extended_value & IS_CONSTANT_RT_NS_CHECK) != 0) { - if (opline->extended_value & ZEND_FETCH_CLASS_RT_NS_CHECK) { - zend_error_noreturn(E_ERROR, "Undefined constant '%R::%R'", Z_TYPE(opline->op1.u.constant), Z_UNIVAL(opline->op1.u.constant), Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant)); - } else if (!zend_u_get_constant(Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant), Z_UNILEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var TSRMLS_CC)) { - zend_error(E_NOTICE, "Use of undefined constant %R - assumed '%R'", - Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant), - Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant)); - EX_T(opline->result.u.var).tmp_var = opline->op2.u.constant; - zval_copy_ctor(&EX_T(opline->result.u.var).tmp_var); - } - ZEND_VM_NEXT_OPCODE(); - } - /* no constant found. try a constant in class */ ce = zend_u_fetch_class(Z_TYPE(opline->op1.u.constant), Z_UNIVAL(opline->op1.u.constant), Z_UNILEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC); if (!ce) { zend_error_noreturn(E_ERROR, "Undefined class constant '%R'", Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant)); diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index a06591705a..292e720971 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -772,15 +772,13 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE function_name_strval = Z_UNIVAL_P(function_name); function_name_strlen = Z_UNILEN_P(function_name); if (Z_TYPE_P(function_name) == IS_UNICODE && - function_name_strval.u[0] == ':' && - function_name_strval.u[1] == ':') { - function_name_strlen -= 2; - lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), ZSTR(function_name_strval.u+2), function_name_strlen, 1, &lcname_len); + function_name_strval.u[0] == '\\') { + function_name_strlen -= 1; + lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), ZSTR(function_name_strval.u+1), function_name_strlen, 1, &lcname_len); } else if (Z_TYPE_P(function_name) == IS_STRING && - function_name_strval.s[0] == ':' && - function_name_strval.s[1] == ':') { - function_name_strlen -= 2; - lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), ZSTR(function_name_strval.s+2), function_name_strlen, 1, &lcname_len); + function_name_strval.s[0] == '\\') { + function_name_strlen -= 1; + lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), ZSTR(function_name_strval.s+1), function_name_strlen, 1, &lcname_len); } else { lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), function_name_strval, function_name_strlen, 1, &lcname_len); } @@ -805,8 +803,13 @@ static int ZEND_FASTCALL ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPC zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope)); if (zend_u_hash_quick_find(EG(function_table), Z_TYPE(opline->op1.u.constant), Z_UNIVAL(opline->op1.u.constant), Z_UNILEN(opline->op1.u.constant)+1, opline->extended_value, (void **) &EX(fbc))==FAILURE) { - if (zend_u_hash_quick_find(EG(function_table), Z_TYPE(op_data->op1.u.constant), Z_UNIVAL(op_data->op1.u.constant), Z_UNILEN(op_data->op1.u.constant)+1, op_data->extended_value, (void **) &EX(fbc))==FAILURE || - EX(fbc)->type != ZEND_INTERNAL_FUNCTION) { + zstr short_name; + if(Z_TYPE(opline->op1.u.constant) == IS_UNICODE) { + short_name.u = Z_USTRVAL(opline->op1.u.constant)+Z_LVAL(op_data->op1.u.constant); + } else { + short_name.s = Z_STRVAL(opline->op1.u.constant)+Z_LVAL(op_data->op1.u.constant); + } + if (zend_u_hash_quick_find(EG(function_table), Z_TYPE(opline->op1.u.constant), short_name, Z_UNILEN(opline->op1.u.constant)-Z_LVAL(op_data->op1.u.constant)+1, op_data->extended_value, (void **) &EX(fbc))==FAILURE) { zend_error_noreturn(E_ERROR, "Call to undefined function %R()", Z_TYPE(opline->op2.u.constant), Z_USTRVAL(opline->op2.u.constant)); } } @@ -972,15 +975,13 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_TMP_HANDLER(ZEND_OPCODE_H function_name_strval = Z_UNIVAL_P(function_name); function_name_strlen = Z_UNILEN_P(function_name); if (Z_TYPE_P(function_name) == IS_UNICODE && - function_name_strval.u[0] == ':' && - function_name_strval.u[1] == ':') { - function_name_strlen -= 2; - lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), ZSTR(function_name_strval.u+2), function_name_strlen, 1, &lcname_len); + function_name_strval.u[0] == '\\') { + function_name_strlen -= 1; + lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), ZSTR(function_name_strval.u+1), function_name_strlen, 1, &lcname_len); } else if (Z_TYPE_P(function_name) == IS_STRING && - function_name_strval.s[0] == ':' && - function_name_strval.s[1] == ':') { - function_name_strlen -= 2; - lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), ZSTR(function_name_strval.s+2), function_name_strlen, 1, &lcname_len); + function_name_strval.s[0] == '\\') { + function_name_strlen -= 1; + lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), ZSTR(function_name_strval.s+1), function_name_strlen, 1, &lcname_len); } else { lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), function_name_strval, function_name_strlen, 1, &lcname_len); } @@ -1060,15 +1061,13 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_VAR_HANDLER(ZEND_OPCODE_H function_name_strval = Z_UNIVAL_P(function_name); function_name_strlen = Z_UNILEN_P(function_name); if (Z_TYPE_P(function_name) == IS_UNICODE && - function_name_strval.u[0] == ':' && - function_name_strval.u[1] == ':') { - function_name_strlen -= 2; - lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), ZSTR(function_name_strval.u+2), function_name_strlen, 1, &lcname_len); + function_name_strval.u[0] == '\\') { + function_name_strlen -= 1; + lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), ZSTR(function_name_strval.u+1), function_name_strlen, 1, &lcname_len); } else if (Z_TYPE_P(function_name) == IS_STRING && - function_name_strval.s[0] == ':' && - function_name_strval.s[1] == ':') { - function_name_strlen -= 2; - lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), ZSTR(function_name_strval.s+2), function_name_strlen, 1, &lcname_len); + function_name_strval.s[0] == '\\') { + function_name_strlen -= 1; + lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), ZSTR(function_name_strval.s+1), function_name_strlen, 1, &lcname_len); } else { lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), function_name_strval, function_name_strlen, 1, &lcname_len); } @@ -1177,15 +1176,13 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CV_HANDLER(ZEND_OPCODE_HA function_name_strval = Z_UNIVAL_P(function_name); function_name_strlen = Z_UNILEN_P(function_name); if (Z_TYPE_P(function_name) == IS_UNICODE && - function_name_strval.u[0] == ':' && - function_name_strval.u[1] == ':') { - function_name_strlen -= 2; - lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), ZSTR(function_name_strval.u+2), function_name_strlen, 1, &lcname_len); + function_name_strval.u[0] == '\\') { + function_name_strlen -= 1; + lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), ZSTR(function_name_strval.u+1), function_name_strlen, 1, &lcname_len); } else if (Z_TYPE_P(function_name) == IS_STRING && - function_name_strval.s[0] == ':' && - function_name_strval.s[1] == ':') { - function_name_strlen -= 2; - lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), ZSTR(function_name_strval.s+2), function_name_strlen, 1, &lcname_len); + function_name_strval.s[0] == '\\') { + function_name_strlen -= 1; + lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), ZSTR(function_name_strval.s+1), function_name_strlen, 1, &lcname_len); } else { lcname = zend_u_str_case_fold(Z_TYPE_P(function_name), function_name_strval, function_name_strlen, 1, &lcname_len); } @@ -2812,46 +2809,43 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_CONST_CONST_HANDLER(ZEND_OPCO zend_op *opline = EX(opline); if (IS_CONST == IS_UNUSED) { - if (!zend_u_get_constant(Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant), Z_UNILEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var TSRMLS_CC)) { - if (opline->extended_value & ZEND_FETCH_CLASS_RT_NS_CHECK) { + if (!zend_u_get_constant_ex(Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant), Z_UNILEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var, NULL, opline->extended_value TSRMLS_CC)) { + if ((opline->extended_value & IS_CONSTANT_UNQUALIFIED) != 0) { + zstr actual; + unsigned int actual_len; + if(Z_TYPE(opline->op2.u.constant) == IS_UNICODE) { + actual.u = u_memrchr(Z_USTRVAL(opline->op2.u.constant), '\\', Z_USTRLEN(opline->op2.u.constant)); + if(actual.u) { + actual.u++; + actual_len = Z_USTRLEN(opline->op2.u.constant) - (actual.u - Z_USTRVAL(opline->op2.u.constant)); + } + } else { + actual.s = zend_memrchr(Z_STRVAL(opline->op2.u.constant), '\\', Z_STRLEN(opline->op2.u.constant)); + if(actual.s) { + actual.s++; + actual_len = Z_STRLEN(opline->op2.u.constant) - (actual.s - Z_STRVAL(opline->op2.u.constant)); + } + } + if(!actual.v) { + actual = Z_UNIVAL(opline->op2.u.constant); + actual_len = Z_UNILEN(opline->op2.u.constant); + } + /* non-qualified constant - allow text substitution */ + zend_error(E_NOTICE, "Use of undefined constant %R - assumed '%R'", + Z_TYPE(opline->op2.u.constant), actual, Z_TYPE(opline->op2.u.constant), actual); + ZVAL_ZSTRL(&EX_T(opline->result.u.var).tmp_var, Z_TYPE(opline->op2.u.constant), actual, actual_len, 1); + } else { zend_error_noreturn(E_ERROR, "Undefined constant '%R'", Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant)); } - zend_error(E_NOTICE, "Use of undefined constant %R - assumed '%R'", - Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant), - Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant)); - EX_T(opline->result.u.var).tmp_var = opline->op2.u.constant; - zval_copy_ctor(&EX_T(opline->result.u.var).tmp_var); } ZEND_VM_NEXT_OPCODE(); } else { + /* class constant */ zend_class_entry *ce; zval **value; if (IS_CONST == IS_CONST) { - zend_op *op_data = opline + 1; - zend_constant *c; - - ZEND_VM_INC_OPCODE(); - /* try a constant in namespace */ - if (zend_u_hash_quick_find(EG(zend_constants), Z_TYPE(op_data->op1.u.constant), Z_UNIVAL(op_data->op1.u.constant), Z_UNILEN(op_data->op1.u.constant)+1, op_data->extended_value, (void **) &c)==SUCCESS) { - EX_T(opline->result.u.var).tmp_var = c->value; - zval_copy_ctor(&EX_T(opline->result.u.var).tmp_var); - ZEND_VM_NEXT_OPCODE(); - } else if ((opline->extended_value & IS_CONSTANT_RT_NS_CHECK) != 0) { - if (opline->extended_value & ZEND_FETCH_CLASS_RT_NS_CHECK) { - zend_error_noreturn(E_ERROR, "Undefined constant '%R::%R'", Z_TYPE(opline->op1.u.constant), Z_UNIVAL(opline->op1.u.constant), Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant)); - } else if (!zend_u_get_constant(Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant), Z_UNILEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var TSRMLS_CC)) { - zend_error(E_NOTICE, "Use of undefined constant %R - assumed '%R'", - Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant), - Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant)); - EX_T(opline->result.u.var).tmp_var = opline->op2.u.constant; - zval_copy_ctor(&EX_T(opline->result.u.var).tmp_var); - } - ZEND_VM_NEXT_OPCODE(); - } - - /* no constant found. try a constant in class */ ce = zend_u_fetch_class(Z_TYPE(opline->op1.u.constant), Z_UNIVAL(opline->op1.u.constant), Z_UNILEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC); if (!ce) { zend_error_noreturn(E_ERROR, "Undefined class constant '%R'", Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant)); @@ -10876,46 +10870,43 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE zend_op *opline = EX(opline); if (IS_VAR == IS_UNUSED) { - if (!zend_u_get_constant(Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant), Z_UNILEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var TSRMLS_CC)) { - if (opline->extended_value & ZEND_FETCH_CLASS_RT_NS_CHECK) { + if (!zend_u_get_constant_ex(Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant), Z_UNILEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var, NULL, opline->extended_value TSRMLS_CC)) { + if ((opline->extended_value & IS_CONSTANT_UNQUALIFIED) != 0) { + zstr actual; + unsigned int actual_len; + if(Z_TYPE(opline->op2.u.constant) == IS_UNICODE) { + actual.u = u_memrchr(Z_USTRVAL(opline->op2.u.constant), '\\', Z_USTRLEN(opline->op2.u.constant)); + if(actual.u) { + actual.u++; + actual_len = Z_USTRLEN(opline->op2.u.constant) - (actual.u - Z_USTRVAL(opline->op2.u.constant)); + } + } else { + actual.s = zend_memrchr(Z_STRVAL(opline->op2.u.constant), '\\', Z_STRLEN(opline->op2.u.constant)); + if(actual.s) { + actual.s++; + actual_len = Z_STRLEN(opline->op2.u.constant) - (actual.s - Z_STRVAL(opline->op2.u.constant)); + } + } + if(!actual.v) { + actual = Z_UNIVAL(opline->op2.u.constant); + actual_len = Z_UNILEN(opline->op2.u.constant); + } + /* non-qualified constant - allow text substitution */ + zend_error(E_NOTICE, "Use of undefined constant %R - assumed '%R'", + Z_TYPE(opline->op2.u.constant), actual, Z_TYPE(opline->op2.u.constant), actual); + ZVAL_ZSTRL(&EX_T(opline->result.u.var).tmp_var, Z_TYPE(opline->op2.u.constant), actual, actual_len, 1); + } else { zend_error_noreturn(E_ERROR, "Undefined constant '%R'", Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant)); } - zend_error(E_NOTICE, "Use of undefined constant %R - assumed '%R'", - Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant), - Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant)); - EX_T(opline->result.u.var).tmp_var = opline->op2.u.constant; - zval_copy_ctor(&EX_T(opline->result.u.var).tmp_var); } ZEND_VM_NEXT_OPCODE(); } else { + /* class constant */ zend_class_entry *ce; zval **value; if (IS_VAR == IS_CONST) { - zend_op *op_data = opline + 1; - zend_constant *c; - - ZEND_VM_INC_OPCODE(); - /* try a constant in namespace */ - if (zend_u_hash_quick_find(EG(zend_constants), Z_TYPE(op_data->op1.u.constant), Z_UNIVAL(op_data->op1.u.constant), Z_UNILEN(op_data->op1.u.constant)+1, op_data->extended_value, (void **) &c)==SUCCESS) { - EX_T(opline->result.u.var).tmp_var = c->value; - zval_copy_ctor(&EX_T(opline->result.u.var).tmp_var); - ZEND_VM_NEXT_OPCODE(); - } else if ((opline->extended_value & IS_CONSTANT_RT_NS_CHECK) != 0) { - if (opline->extended_value & ZEND_FETCH_CLASS_RT_NS_CHECK) { - zend_error_noreturn(E_ERROR, "Undefined constant '%R::%R'", Z_TYPE(opline->op1.u.constant), Z_UNIVAL(opline->op1.u.constant), Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant)); - } else if (!zend_u_get_constant(Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant), Z_UNILEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var TSRMLS_CC)) { - zend_error(E_NOTICE, "Use of undefined constant %R - assumed '%R'", - Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant), - Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant)); - EX_T(opline->result.u.var).tmp_var = opline->op2.u.constant; - zval_copy_ctor(&EX_T(opline->result.u.var).tmp_var); - } - ZEND_VM_NEXT_OPCODE(); - } - - /* no constant found. try a constant in class */ ce = zend_u_fetch_class(Z_TYPE(opline->op1.u.constant), Z_UNIVAL(opline->op1.u.constant), Z_UNILEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC); if (!ce) { zend_error_noreturn(E_ERROR, "Undefined class constant '%R'", Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant)); @@ -18488,46 +18479,43 @@ static int ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPC zend_op *opline = EX(opline); if (IS_UNUSED == IS_UNUSED) { - if (!zend_u_get_constant(Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant), Z_UNILEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var TSRMLS_CC)) { - if (opline->extended_value & ZEND_FETCH_CLASS_RT_NS_CHECK) { + if (!zend_u_get_constant_ex(Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant), Z_UNILEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var, NULL, opline->extended_value TSRMLS_CC)) { + if ((opline->extended_value & IS_CONSTANT_UNQUALIFIED) != 0) { + zstr actual; + unsigned int actual_len; + if(Z_TYPE(opline->op2.u.constant) == IS_UNICODE) { + actual.u = u_memrchr(Z_USTRVAL(opline->op2.u.constant), '\\', Z_USTRLEN(opline->op2.u.constant)); + if(actual.u) { + actual.u++; + actual_len = Z_USTRLEN(opline->op2.u.constant) - (actual.u - Z_USTRVAL(opline->op2.u.constant)); + } + } else { + actual.s = zend_memrchr(Z_STRVAL(opline->op2.u.constant), '\\', Z_STRLEN(opline->op2.u.constant)); + if(actual.s) { + actual.s++; + actual_len = Z_STRLEN(opline->op2.u.constant) - (actual.s - Z_STRVAL(opline->op2.u.constant)); + } + } + if(!actual.v) { + actual = Z_UNIVAL(opline->op2.u.constant); + actual_len = Z_UNILEN(opline->op2.u.constant); + } + /* non-qualified constant - allow text substitution */ + zend_error(E_NOTICE, "Use of undefined constant %R - assumed '%R'", + Z_TYPE(opline->op2.u.constant), actual, Z_TYPE(opline->op2.u.constant), actual); + ZVAL_ZSTRL(&EX_T(opline->result.u.var).tmp_var, Z_TYPE(opline->op2.u.constant), actual, actual_len, 1); + } else { zend_error_noreturn(E_ERROR, "Undefined constant '%R'", Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant)); } - zend_error(E_NOTICE, "Use of undefined constant %R - assumed '%R'", - Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant), - Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant)); - EX_T(opline->result.u.var).tmp_var = opline->op2.u.constant; - zval_copy_ctor(&EX_T(opline->result.u.var).tmp_var); } ZEND_VM_NEXT_OPCODE(); } else { + /* class constant */ zend_class_entry *ce; zval **value; if (IS_UNUSED == IS_CONST) { - zend_op *op_data = opline + 1; - zend_constant *c; - - ZEND_VM_INC_OPCODE(); - - /* try a constant in namespace */ - if (zend_u_hash_quick_find(EG(zend_constants), Z_TYPE(op_data->op1.u.constant), Z_UNIVAL(op_data->op1.u.constant), Z_UNILEN(op_data->op1.u.constant)+1, op_data->extended_value, (void **) &c)==SUCCESS) { - EX_T(opline->result.u.var).tmp_var = c->value; - zval_copy_ctor(&EX_T(opline->result.u.var).tmp_var); - ZEND_VM_NEXT_OPCODE(); - } else if ((opline->extended_value & IS_CONSTANT_RT_NS_CHECK) != 0) { - if (opline->extended_value & ZEND_FETCH_CLASS_RT_NS_CHECK) { - zend_error_noreturn(E_ERROR, "Undefined constant '%R::%R'", Z_TYPE(opline->op1.u.constant), Z_UNIVAL(opline->op1.u.constant), Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant)); - } else if (!zend_u_get_constant(Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant), Z_UNILEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var TSRMLS_CC)) { - zend_error(E_NOTICE, "Use of undefined constant %R - assumed '%R'", - Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant), - Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant)); - EX_T(opline->result.u.var).tmp_var = opline->op2.u.constant; - zval_copy_ctor(&EX_T(opline->result.u.var).tmp_var); - } - ZEND_VM_NEXT_OPCODE(); - } - /* no constant found. try a constant in class */ ce = zend_u_fetch_class(Z_TYPE(opline->op1.u.constant), Z_UNIVAL(opline->op1.u.constant), Z_UNILEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC); if (!ce) { zend_error_noreturn(E_ERROR, "Undefined class constant '%R'", Z_TYPE(opline->op2.u.constant), Z_UNIVAL(opline->op2.u.constant));