]> granicus.if.org Git - php/commitdiff
MF5: Merge namespaces changes
authorStanislav Malyshev <stas@php.net>
Thu, 4 Dec 2008 20:12:30 +0000 (20:12 +0000)
committerStanislav Malyshev <stas@php.net>
Thu, 4 Dec 2008 20:12:30 +0000 (20:12 +0000)
144 files changed:
Zend/tests/bug41633_2.phpt
Zend/tests/bug42802.phpt
Zend/tests/bug42819.phpt
Zend/tests/bug42820.phpt
Zend/tests/bug42859.phpt
Zend/tests/bug43128.phpt
Zend/tests/bug43183.phpt
Zend/tests/bug43332_1.phpt
Zend/tests/bug43332_2.phpt
Zend/tests/bug43343.phpt
Zend/tests/bug43344_10.phpt
Zend/tests/bug43344_11.phpt
Zend/tests/bug43344_12.phpt
Zend/tests/bug43344_13.phpt
Zend/tests/bug43344_2.phpt
Zend/tests/bug43344_3.phpt
Zend/tests/bug43344_4.phpt
Zend/tests/bug43344_5.phpt
Zend/tests/bug43344_6.phpt
Zend/tests/bug43344_7.phpt
Zend/tests/bug43344_8.phpt
Zend/tests/bug43344_9.phpt
Zend/tests/bug43651.phpt
Zend/tests/bug44653.phpt
Zend/tests/class_alias_012.phpt
Zend/tests/class_alias_013.phpt
Zend/tests/class_alias_015.phpt
Zend/tests/class_alias_016.phpt
Zend/tests/class_alias_019.phpt
Zend/tests/class_alias_020.phpt
Zend/tests/class_alias_021.phpt
Zend/tests/class_constants_004.phpt
Zend/tests/class_exists_001.phpt
Zend/tests/constants_003.phpt
Zend/tests/constants_004.phpt
Zend/tests/constants_006.phpt
Zend/tests/constants_009.phpt
Zend/tests/inter_02.phpt
Zend/tests/interface_exists_002.phpt
Zend/tests/ns_001.phpt
Zend/tests/ns_002.phpt
Zend/tests/ns_003.phpt
Zend/tests/ns_004.phpt
Zend/tests/ns_005.phpt
Zend/tests/ns_006.phpt
Zend/tests/ns_007.phpt
Zend/tests/ns_008.phpt
Zend/tests/ns_009.phpt
Zend/tests/ns_010.phpt
Zend/tests/ns_011.phpt
Zend/tests/ns_012.phpt
Zend/tests/ns_013.phpt
Zend/tests/ns_014.phpt
Zend/tests/ns_015.phpt
Zend/tests/ns_016.phpt
Zend/tests/ns_017.phpt
Zend/tests/ns_018.phpt
Zend/tests/ns_019.phpt
Zend/tests/ns_020.phpt
Zend/tests/ns_021.phpt
Zend/tests/ns_022.phpt
Zend/tests/ns_023.phpt
Zend/tests/ns_025.phpt
Zend/tests/ns_026.phpt
Zend/tests/ns_027.inc
Zend/tests/ns_027.phpt
Zend/tests/ns_028.phpt
Zend/tests/ns_029.phpt
Zend/tests/ns_030.phpt
Zend/tests/ns_031.phpt
Zend/tests/ns_032.phpt
Zend/tests/ns_033.phpt
Zend/tests/ns_034.phpt
Zend/tests/ns_035.phpt
Zend/tests/ns_036.phpt
Zend/tests/ns_037.phpt
Zend/tests/ns_038.phpt
Zend/tests/ns_040.phpt
Zend/tests/ns_041.phpt
Zend/tests/ns_042.phpt
Zend/tests/ns_043.phpt
Zend/tests/ns_044.phpt
Zend/tests/ns_045.phpt
Zend/tests/ns_046.phpt
Zend/tests/ns_047.phpt
Zend/tests/ns_048.phpt
Zend/tests/ns_049.phpt
Zend/tests/ns_050.phpt
Zend/tests/ns_051.phpt
Zend/tests/ns_052.phpt
Zend/tests/ns_053.phpt
Zend/tests/ns_054.phpt
Zend/tests/ns_055.phpt
Zend/tests/ns_056.phpt
Zend/tests/ns_057.phpt
Zend/tests/ns_058.phpt
Zend/tests/ns_059.phpt
Zend/tests/ns_060.phpt
Zend/tests/ns_061.phpt [new file with mode: 0644]
Zend/tests/ns_062.phpt [new file with mode: 0644]
Zend/tests/ns_064.phpt
Zend/tests/ns_065.inc
Zend/tests/ns_065.phpt
Zend/tests/ns_066.phpt
Zend/tests/ns_067.inc
Zend/tests/ns_067.phpt
Zend/tests/ns_070.phpt
Zend/tests/ns_071.phpt
Zend/tests/ns_072.phpt
Zend/tests/ns_073.phpt
Zend/tests/ns_074.phpt
Zend/tests/ns_075.phpt [new file with mode: 0755]
Zend/tests/ns_076.phpt [new file with mode: 0755]
Zend/tests/ns_077_1.phpt [new file with mode: 0755]
Zend/tests/ns_077_2.phpt [new file with mode: 0755]
Zend/tests/ns_077_3.phpt [new file with mode: 0755]
Zend/tests/ns_077_4.phpt [new file with mode: 0755]
Zend/tests/ns_077_5.phpt [new file with mode: 0755]
Zend/tests/ns_077_6.phpt [new file with mode: 0755]
Zend/tests/ns_077_7.phpt [new file with mode: 0755]
Zend/tests/ns_077_8.phpt [new file with mode: 0755]
Zend/tests/ns_078.phpt [new file with mode: 0755]
Zend/tests/ns_079.phpt [new file with mode: 0644]
Zend/tests/ns_080.phpt [new file with mode: 0644]
Zend/tests/ns_081.phpt [new file with mode: 0644]
Zend/tests/ns_082.phpt [new file with mode: 0644]
Zend/tests/ns_083.phpt [new file with mode: 0644]
Zend/tests/ns_084.phpt [new file with mode: 0644]
Zend/tests/ns_085.phpt [new file with mode: 0644]
Zend/tests/ns_086.phpt [new file with mode: 0644]
Zend/tests/ns_087.phpt [new file with mode: 0644]
Zend/zend.h
Zend/zend_API.c
Zend/zend_compile.c
Zend/zend_compile.h
Zend/zend_constants.c
Zend/zend_execute_API.c
Zend/zend_globals.h
Zend/zend_language_parser.y
Zend/zend_language_scanner.c
Zend/zend_language_scanner.l
Zend/zend_language_scanner_defs.h
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index 23c0e6b649ea1a280f79d8e204a7f6e286082eaf..3deb4516acf0e2215fe67c3304e902bfabf0200f 100755 (executable)
@@ -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
index 80ae02ba5e6b3f39167f0b0c6469a8ac0c160565..2aa7061f35a08b96c32cbdafb098e91cbe9d0129 100755 (executable)
@@ -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
index 565a019fac08fc6616ab3519c18a02bbd601f782..f4387eb93b5614bc88ab33fd05aa9e1c6434bdb8 100755 (executable)
@@ -4,88 +4,100 @@ Bug #42819 (namespaces in indexes of constant arrays)
 <?php if (!extension_loaded("spl")) print "skip"; ?>
 --FILE--
 <?php
+namespace foo\foo;
+
+const C = "foo\\foo\\C\n";
+const I = 12;
+
+class foo {
+const I = 32;
+const C = "foo\\foo\\foo::C\n";
+}
+
 namespace foo;
+use \ArrayObject;
 
-const C = "foo::C\n";
+const C = "foo\\C\n";
 const I = 11;
 
 class foo {
-       const C = "foo::foo::C\n";
+       const C = "foo\\foo::C\n";
        const I = 22;
        const C1 = C;
-       const C2 = foo::C;
-       const C3 = foo::foo::C;
-       const C4 = ::foo::C;
-       const C5 = ::foo::foo::C;
+       const C2 = foo\C;
+       const C3 = foo\foo::C;
+       const C4 = \foo\C;
+       const C5 = \foo\foo::C;
        const C6 = ArrayObject::STD_PROP_LIST;
        const C7 = E_ERROR;
 }
 
 class bar1 {
        static $a1 = array(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 $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
index c5b13b43eb12e274bcd6ef6e1d61d8c3e8234fd2..921f0090a90a4e2083a3b9a2b19abbdde96b71c6 100755 (executable)
@@ -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)
+
index 931e7fe0f7121a37a4407739328979c4fcdfd874..755f41f8d62b9dca46afe02734cf5a8d6bc0b17d 100755 (executable)
@@ -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
index 629f46c59467f933b4e70ed1b2dbea7a55a9ed38..d492bfe59a3f46a3c0b3e0f3d39eb75c1c85af24 100755 (executable)
@@ -1,7 +1,7 @@
 --TEST--
 Bug #43128 (Very long class name causes segfault)
 --INI--
-memory_limit=128000000
+memory_limit=512000000
 --FILE--
 <?php
 
index 8da2c833a17687cfe9506bc8f6b84529d4bd4d2b..a8ca698e9f5dfdab262801690b981d86c0c75da0 100755 (executable)
@@ -3,10 +3,10 @@ Bug #43183 ("use" of the same class in difference scripts results in a fatal err
 --FILE--
 <?php
 namespace Test;
-use Test::Foo;
+use Test\Foo;
 class Foo {}
 class Bar {}
-use Test::Bar;
+use Test\Bar;
 echo "ok\n";
 --EXPECT--
-ok
+ok
\ No newline at end of file
index ef321621004fc27b3d2a3205d5442e2a5d8a1d62..807c6cb5454d6619ee70abc5a6cce0dd3c1fa1f6 100644 (file)
@@ -10,6 +10,6 @@ class foo {
 
 $foo = new foo;
 $foo->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
index 916f6fa354eecb9b7dc2634dce83f2edd4b879dc..b8adef3b13e773fb466ff902a206d18cf2cdaec5 100644 (file)
@@ -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
index fa1d993ab815365e4068946f8e22e2521f9c62ba..12f64fbd24de97d7e7a56bfc66386e1c9ece498e 100644 (file)
@@ -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
index d80a06ba055c4239c193c85d125a44c808bbb8db..e9f918cd613fb14f5bb0ccdd64fc661f58f52b7d 100644 (file)
@@ -2,7 +2,7 @@
 Bug #43344.10 (Wrong error message for undefined namespace constant)
 --FILE--
 <?php
-echo namespace::bar."\n";
+echo namespace\bar."\n";
 ?>
 --EXPECTF--
 Fatal error: Undefined constant 'bar' in %sbug43344_10.php on line %d
index 4daa236f8797ad16146d3e5297595f3960b24f20..b55cdccdeac0bf5f27b30ca9f5493adadd905880 100644 (file)
@@ -2,7 +2,7 @@
 Bug #43344.11 (Wrong error message for undefined namespace constant)
 --FILE--
 <?php
-function f($a=namespace::bar) {
+function f($a=namespace\bar) {
        return $a;
 }
 echo f()."\n";
index 79dfc65cea6ec9fefc2f8c9fa416848d6f9817ed..4d1e154f319aa4172519ed2e5cf07afd5cd3f8a1 100644 (file)
@@ -2,7 +2,7 @@
 Bug #43344.12 (Wrong error message for undefined namespace constant)
 --FILE--
 <?php
-function f($a=array(namespace::bar)) {
+function f($a=array(namespace\bar)) {
        return $a[0];
 }
 echo f()."\n";
index d4fff4ffdda80d272f16caa5ec6f4facfbc06183..c6aaf92fb3a48a8648e865f8bfa326e535ac7d51 100644 (file)
@@ -2,7 +2,7 @@
 Bug #43344.13 (Wrong error message for undefined namespace constant)
 --FILE--
 <?php
-function f($a=array(namespace::bar=>0)) {
+function f($a=array(namespace\bar=>0)) {
        reset($a);
        return key($a);
 }
index 1c55559e260b66923ba71e97551dc266753d80ca..57766afa9474cada8801459da1edfe7c23821bdd 100644 (file)
@@ -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
index 26a6b46a3b1631f49dbdaf61a43ea099a3af1e4a..579ed81adaffe569f22696d05b222208ed2a5f0d 100644 (file)
@@ -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
index 20feaf9afed4306e70562ae28e48297c0704bfd5..97e08b3664e109927b170a70c134952ba91fbb71 100644 (file)
@@ -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
index 2ccd029825a42f6bfc6de1ef81f3850f9a45f902..645ef33e7f3d37261ca72a8dc667a264c0a37b9a 100644 (file)
@@ -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
index 0597b585e032637ef8b0b0c1f491538fa1767180..38e1961aadce6af59dbbe937406741c2d832be85 100644 (file)
@@ -3,7 +3,7 @@ Bug #43344.6 (Wrong error message for undefined namespace constant)
 --FILE--
 <?php
 namespace Foo;
-echo namespace::bar."\n";
+echo namespace\bar."\n";
 ?>
 --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
index fab79feec2d9f95652bc47832de811dea8c5f16b..94e00d9e1fed8ebb90a75c6ac5c4ccbc4fce9506 100644 (file)
@@ -3,10 +3,10 @@ Bug #43344.7 (Wrong error message for undefined namespace constant)
 --FILE--
 <?php
 namespace Foo;
-function f($a=namespace::bar) {
+function f($a=namespace\bar) {
        return $a;
 }
 echo f()."\n";
 ?>
 --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
index a9272d74729e0dfe7f0f58ab4dbfbc09ea784b27..eb694f7118f921fd20a3f0102a1d60a058a8e41b 100644 (file)
@@ -3,10 +3,10 @@ Bug #43344.8 (Wrong error message for undefined namespace constant)
 --FILE--
 <?php
 namespace Foo;
-function f($a=array(namespace::bar)) {
+function f($a=array(namespace\bar)) {
        return $a[0];
 }
 echo f()."\n";
 ?>
 --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
index b3c5dfbdb7af613f3a25c5b7d79ed226d5ec6ba3..31604e7a943cddb0a3bb15ff8d4d1b25d76ffeab 100644 (file)
@@ -3,11 +3,11 @@ Bug #43344.9 (Wrong error message for undefined namespace constant)
 --FILE--
 <?php
 namespace Foo;
-function f($a=array(namespace::bar=>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
index bce0601abe870797712a5030014daa36de06c452..ea70cf1039b2f02ca5b4f375717f6366c070baa0 100644 (file)
@@ -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)
index defdba810a0459defc96fce367ba6fefaca5797e..1abf9747c7d78a568e0b204fba1e883107b3308d 100644 (file)
@@ -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
index 01839668b813914c8e8992a70eb2e0422c4f42a6..dd1c9b1072c77f88e3d6698ee79481e87349deeb 100644 (file)
@@ -3,31 +3,31 @@ Testing dynamic alias name
 --FILE--
 <?php
 
-namespace test::baz;
+namespace test\baz;
 
 class foo { 
 }
 
 new foo;
 
-class_alias(__NAMESPACE__ .'::foo', __NAMESPACE__ .'::T');
+class_alias(__NAMESPACE__ .'\foo', __NAMESPACE__ .'\T');
 
 var_dump(new foo);
 var_dump(new T);
 
-$var = __NAMESPACE__ .'::foo';
+$var = __NAMESPACE__ .'\foo';
 var_dump(new $var);
 
-$var = __NAMESPACE__ .'::T';
+$var = __NAMESPACE__ .'\T';
 var_dump(new $var);
 
 ?>
 --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) {
 }
index d032e26541b0954114bc78a134235f9cbfcd4d78..4991d0fd31a0a2bad3ea12bc06d464f3df134c28 100644 (file)
@@ -3,24 +3,24 @@ Testing alias of alias
 --FILE--
 <?php
 
-namespace test::baz;
+namespace test\baz;
 
 class foo { 
 }
 
 new foo;
 
-$alias1 = __NAMESPACE__ .'::T';
-class_alias(__NAMESPACE__ .'::foo', $alias1);
+$alias1 = __NAMESPACE__ .'\T';
+class_alias(__NAMESPACE__ .'\foo', $alias1);
 
-$alias2 = $alias1 .'::BAR';
+$alias2 = $alias1 .'\BAR';
 class_alias($alias1, $alias2);
 
-var_dump(new test::baz::foo, new test::baz::T::BAR);
+var_dump(new \test\baz\foo, new \test\baz\T\BAR);
 
 ?>
 --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) {
 }
index d694e107528df15c41bcef7015dada717910a064..c79c077187d3b02c18b7b687f64be9e0545a2318 100644 (file)
@@ -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) {
 }
index 6e5c0093e8fae6f8ca30de2a8edd4972046ab755..930f2ee0e4ad40cb4587d8cab8ebcd71454e43f0 100644 (file)
@@ -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
index 4bcc5d9d0ce176b7208ea1dfdb664291ac2904c8..a0dd249d5594910068d9dbfa9742f1710d907e77 100644 (file)
@@ -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--
index 1c2452cd7f81e3c13ade52f306267b69bfcfef12..e2c7d9245e000d4d6fd3411cff0dccbc3c10b705 100644 (file)
@@ -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
index 79049623f0c6ae992e76e083e67d4033808f59de..dd90e127f4dc15e0aa44f85d761db17d2e8571c0 100644 (file)
@@ -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) {
 }
index 104ceb1bb62824096b395dd147930e8a4448c9cc..73a42ede7a433e923d91396d28dcbb3f641f6556 100644 (file)
@@ -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
index 4ee1ee2925ea557e38864946e0e12a0b4ba7f2fa..8af96a49fc9b5d28ae24c7ec23b56a6b3539d792 100644 (file)
@@ -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'));
 
 ?>
index ec3eb6d4ff7f04c08a8887c6aa2b4973d07a23b1..205f95f036be7fbe140e86f8ae0d54a190d70fcd 100644 (file)
@@ -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--
index 787ec26e724ba88ede0ee5a8ad14ba2f91bd4e92..69369aa3d9631696fd565c94794d25f5bcee46f2 100644 (file)
@@ -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
index 2bd7397a3a8037bc816585ed3f8b238a49fbed92..c1e794462bc3e194ad317806e3874b77e65aab0b 100644 (file)
@@ -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"
index c84760be8154232784f4d05326cf888a4ab3e28f..ea986dd3c7eb38e92145edc770bb465f85db2ec5 100644 (file)
@@ -3,7 +3,7 @@ Accessing constants inside namespace
 --FILE--
 <?php
 
-namespace foo::x;
+namespace foo\x;
 
 const x = 2;
 
@@ -12,8 +12,10 @@ class x {
 }
 
 
-var_dump(namespace::x, x::x, namespace::x::x);
-var_dump(defined('foo::x::x'));
+var_dump(namespace\x,
+x::x,
+namespace\x::x);
+var_dump(defined('foo\x\x'));
 
 ?>
 --EXPECT--
index 18db230b218f3619b418be5ad078b3605fed4e3c..34e8baa5dca1f4f8d17e98cc8608c00d418031db 100644 (file)
@@ -11,7 +11,7 @@ interface foo {
     const foo = 2;
 }
 
-function foo($x = foo::foo::foo) {
+function foo($x = \foo\foo::foo) {
     var_dump($x);
 }
 
index f4d8a03cd828ddf4b2814ac9d82c30c39d5b9d0a..be78784d550e6fd785224fcf35cf4fe489d36c26 100644 (file)
@@ -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--
index 6821756a4391f9a56f378bc086d2f211ff2bdeea..67715947af4fa68e75aff3efb4f01caee956d017 100755 (executable)
@@ -2,7 +2,7 @@
 001: Class in namespace
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 class Foo {
 
@@ -22,13 +22,13 @@ class Foo {
 $x = new Foo;
 $x->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
index 7faca97cd3682484afaab0e15aa3de450bb18454..3d9e09869db63a7d95e6a209f48b59a2f00d9e09 100755 (executable)
@@ -2,7 +2,7 @@
 002: Import in namespace
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 class Foo {
   static function bar() {
@@ -10,18 +10,18 @@ class Foo {
   }
 }
 
-use test::ns1::Foo as Bar;
-use test::ns1 as ns2;
-use test::ns1;
+use test\ns1\Foo as Bar;
+use test\ns1 as ns2;
+use test\ns1;
 
 Foo::bar();
-test::ns1::Foo::bar();
+\test\ns1\Foo::bar();
 Bar::bar();
-ns2::Foo::bar();
-ns1::Foo::bar();
+ns2\Foo::bar();
+ns1\Foo::bar();
 --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
index 26c21a9ff00721b55e6b0ade6cba700e3235e476..4372722c250b885f825a9608c8fc9df799975ead 100755 (executable)
@@ -2,11 +2,11 @@
 003: Name conflict (ns name)
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 class Exception {
 }
 
 echo get_class(new Exception()),"\n";
 --EXPECT--
-test::ns1::Exception
+test\ns1\Exception
index 2aa4a809d9c6c46ac865087731965a4457610e6a..d293f65dce313336628e4a0b699d00f8cdaae6e2 100755 (executable)
@@ -1,9 +1,9 @@
 --TEST--
-004: Name conflict (php name)
+004: Using global class name from namespace (unqualified - fail)
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 echo get_class(new Exception()),"\n";
---EXPECT--
-Exception
+--EXPECTF--
+Fatal error: Class 'test\ns1\Exception' not found in %sns_004.php on line %d
\ No newline at end of file
index fc1d6570fdd0be49cb2cb8b824306c376b3903f8..c082afc48105eef6ced3a218f3b0db72af0d8a3a 100755 (executable)
@@ -2,11 +2,11 @@
 005: Name conflict (php name in case if ns name exists)
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 class Exception {
 }
 
-echo get_class(new ::Exception()),"\n";
+echo get_class(new \Exception()),"\n";
 --EXPECT--
 Exception
index f4027408d466f81e91966fc0c86175f6f0cc2744..1c0ec3ab0823412e43ea265a59a70e7cf463d656 100755 (executable)
@@ -2,12 +2,12 @@
 006: Run-time name conflict (ns name)
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 class Exception {
 }
 
-$x = "test::ns1::Exception";
+$x = "test\\ns1\\Exception";
 echo get_class(new $x),"\n";
 --EXPECT--
-test::ns1::Exception
+test\ns1\Exception
index 60ccced5042a749d93ad07168d16f4d7e966fddd..2f4d1361dcfc499061bd13ded42777cae0971a84 100755 (executable)
@@ -2,7 +2,7 @@
 007: Run-time name conflict (php name)
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 class Exception {
 }
index 1c0d116483f91e369e191321953a879fae6e5c2d..2c2c9180cfc7173c9b2bdf28a2a85928d02725ac 100755 (executable)
@@ -7,7 +7,7 @@ namespace test;
 class foo {
 }
 
-$x = __NAMESPACE__ . "::foo"; 
+$x = __NAMESPACE__ . "\\foo"; 
 echo get_class(new $x),"\n";
 --EXPECT--
-test::foo
+test\foo
index 3d6aa225d65d6bca473b651b77e3132026c847c6..3481316f288dfb000362d35bd14f2addb71dbc0a 100755 (executable)
@@ -5,7 +5,7 @@
 class foo {
 }
 
-$x = __NAMESPACE__ . "::foo"; 
+$x = __NAMESPACE__ . "\\foo"; 
 echo get_class(new $x),"\n";
 --EXPECT--
 foo
index 95172e0ec3951b775ed21fde718fa9dbc6c0e481..28ef61bcdd2bdaa44803ba0e95ed07e1e8f48669 100755 (executable)
@@ -15,35 +15,27 @@ class Foo {
        }
 }
 new Foo();
-new X::Foo();
-new Y::Foo();
-new ::X::Foo();
+new Y\Foo();
+new \X\Foo();
 Foo::bar();
-X::Foo::bar();
-Y::Foo::bar();
-::X::Foo::bar();
+Y\Foo::bar();
+\X\Foo::bar();
 echo Foo::C;
-echo X::Foo::C;
-echo Y::Foo::C;
-echo ::X::Foo::C;
+echo Y\Foo::C;
+echo \X\Foo::C;
 echo Foo::$var;
-echo X::Foo::$var;
-echo Y::Foo::$var;
-echo ::X::Foo::$var;
+echo Y\Foo::$var;
+echo \X\Foo::$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
index c1d9ac30181afbf0855443af2401095f2c0b5da9..1706f2a00d965d16359ad0a29e8fb82c49cbf516 100755 (executable)
@@ -2,23 +2,23 @@
 011: Function in namespace
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 function foo() {
   echo __FUNCTION__,"\n";
 }
   
 foo();
-test::ns1::foo();
+\test\ns1\foo();
 bar();
-test::ns1::bar();
+\test\ns1\bar();
 
 function bar() {
   echo __FUNCTION__,"\n";
 }
 
 --EXPECT--
-test::ns1::foo
-test::ns1::foo
-test::ns1::bar
-test::ns1::bar
+test\ns1\foo
+test\ns1\foo
+test\ns1\bar
+test\ns1\bar
index ce16db1ab91e7895389a97b1f99d2f3075030893..034f124924d7be1b980d2fcc7bd81974869ec1bb 100755 (executable)
@@ -2,34 +2,34 @@
 012: Import in namespace and functions
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 function foo() {
   echo __FUNCTION__,"\n";
 }
 
-use test::ns1 as ns2;
+use test\ns1 as ns2;
 use test as ns3;
 
 foo();
 bar();
-test::ns1::foo();
-test::ns1::bar();
-ns2::foo();
-ns2::bar();
-ns3::ns1::foo();
-ns3::ns1::bar();
+\test\ns1\foo();
+\test\ns1\bar();
+ns2\foo();
+ns2\bar();
+ns3\ns1\foo();
+ns3\ns1\bar();
 
 function bar() {
   echo __FUNCTION__,"\n";
 }
 
 --EXPECT--
-test::ns1::foo
-test::ns1::bar
-test::ns1::foo
-test::ns1::bar
-test::ns1::foo
-test::ns1::bar
-test::ns1::foo
-test::ns1::bar
+test\ns1\foo
+test\ns1\bar
+test\ns1\foo
+test\ns1\bar
+test\ns1\foo
+test\ns1\bar
+test\ns1\foo
+test\ns1\bar
index 945b6bc4ec7de8616ab5356d25862aae2a29eb2c..ef73b1395ff7eb7e8bc37443d0536426e5f00743 100755 (executable)
@@ -2,7 +2,7 @@
 013: Name conflict and functions (ns name)
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 function strlen($x) {
        return __FUNCTION__;
@@ -10,4 +10,4 @@ function strlen($x) {
 
 echo strlen("Hello"),"\n";
 --EXPECT--
-test::ns1::strlen
+test\ns1\strlen
index 9614b481a4724f78d913e3f04f02c303b92e87a6..6bcab51c834c3fe8201afa572732406173d803f5 100755 (executable)
@@ -2,7 +2,7 @@
 014: Name conflict and functions (php name)
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 echo strlen("Hello"),"\n";
 --EXPECT--
index 1ad05b963fae85bc3893f6419f38e4074fead143..ae2c81834559bf771b06ead426c5e24ec03133b8 100755 (executable)
@@ -2,13 +2,13 @@
 015: Name conflict and functions (php name in case if ns name exists)
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 function strlen($x) {
        return __FUNCTION__;
 }
 
-echo ::strlen("Hello"),"\n";
+echo \strlen("Hello"),"\n";
 --EXPECT--
 5
 
index e278625e6121a8ffec35bc0d56befa14f641c9f2..bee8b5bee339754f4b5bea7edeee51eef7abb7d1 100755 (executable)
@@ -2,13 +2,13 @@
 016: Run-time name conflict and functions (ns name)
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 function strlen($x) {
        return __FUNCTION__;
 }
 
-$x = "test::ns1::strlen";
+$x = "test\\ns1\\strlen";
 echo $x("Hello"),"\n";
 --EXPECT--
-test::ns1::strlen
+test\ns1\strlen
index 15ff1efee843c530301ed46830bb08328455b392..888d8e5ef43620f28bf3c1a3bea35a55c4886ee0 100755 (executable)
@@ -2,7 +2,7 @@
 017: Run-time name conflict and functions (php name)
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 function strlen($x) {
        return __FUNCTION__;
index be8b4b7d34439075f15e8045b02d86f51d543710..5c2495c63146981cc29ec1d80efd6f889914b2f1 100755 (executable)
@@ -8,7 +8,7 @@ function foo() {
        return __FUNCTION__;
 }
 
-$x = __NAMESPACE__ . "::foo"; 
+$x = __NAMESPACE__ . "\\foo"; 
 echo $x(),"\n";
 --EXPECT--
-test::foo
+test\foo
index c42e97ed18860208a050283dc91ca69da7950dd8..c3db786867fdddaea7caa2a7db2b3b33a60a3e9f 100755 (executable)
@@ -6,7 +6,7 @@ function foo() {
        return __FUNCTION__;
 }
 
-$x = __NAMESPACE__ . "::foo"; 
+$x = __NAMESPACE__ . "\\foo"; 
 echo $x(),"\n";
 --EXPECT--
 foo
index 9d2e8a7ccb2c8cca5af2039cf481ca152ee48e9c..ec4fda02987186de0f08cb1f76ea50e883c72254 100755 (executable)
@@ -8,11 +8,11 @@ function foo() {
        echo __FUNCTION__,"\n";
 }
 foo();
-X::foo();
-Y::foo();
-::X::foo();
+\X\foo();
+Y\foo();
+\X\foo();
 --EXPECT--
-X::foo
-X::foo
-X::foo
-X::foo
+X\foo
+X\foo
+X\foo
+X\foo
index 01609bb607b8ec23fca62ce096b80dd0473064a8..405468399fb956eba6f53727f0f95e8eff9fd2b3 100755 (executable)
@@ -15,9 +15,9 @@ function foo() {
 }
 
 foo();
-test::foo();
-test::test::foo();
+\test\foo();
+\test\test::foo();
 --EXPECT--
-test::foo
-test::foo
-test::Test::foo
+test\foo
+test\foo
+test\Test::foo
index 6944ca403fcde065257039ea2c1d7dfd21713090..7aebe1d5a2ea6870482c4dc363006c3c592e15ae 100755 (executable)
@@ -2,9 +2,9 @@
 022: Name search priority (first look into import, then into current namespace and then for class)
 --FILE--
 <?php
-namespace a::b::c;
+namespace a\b\c;
 
-use a::b::c as test;
+use a\b\c as test;
 
 require "ns_022.inc";
 
@@ -12,8 +12,8 @@ function foo() {
        echo __FUNCTION__,"\n";
 }
 
-test::foo();
-::test::foo();
+test\foo();
+\test::foo();
 --EXPECT--
-a::b::c::foo
+a\b\c\foo
 Test::foo
index b2e67eda1fe9de3e534c0c4b5bbf4f465af960c4..c552bcae92c01f7c7ba9591433c28dc2d90ded26 100755 (executable)
@@ -2,8 +2,8 @@
 023: __NAMESPACE__ constant
 --FILE--
 <?php
-namespace test::foo;
+namespace test\foo;
 
 var_dump(__NAMESPACE__);
 --EXPECT--
-unicode(9) "test::foo"
+unicode(8) "test\foo"
index e5c8ab004435dbc96451eae4e56baf1924451441..917a710d955c08af47114edc123d22784d2abdbc 100755 (executable)
@@ -2,7 +2,7 @@
 025: Name ambiguity (class name & part of namespace name)
 --FILE--
 <?php
-namespace Foo::Bar;
+namespace Foo\Bar;
 
 class Foo {
   function __construct() {
@@ -15,10 +15,10 @@ class Foo {
 
 $x = new Foo;
 Foo::Bar();
-$x = new Foo::Bar::Foo;
-Foo::Bar::Foo::Bar();
+$x = new \Foo\Bar\Foo;
+\Foo\Bar\Foo::Bar();
 --EXPECT--
-Foo::Bar::Foo
-Foo::Bar::Foo
-Foo::Bar::Foo
-Foo::Bar::Foo
+Foo\Bar\Foo
+Foo\Bar\Foo
+Foo\Bar\Foo
+Foo\Bar\Foo
index ad8654db5fc85b0a5598741028684491079392f8..af2bf2ca556afdbf3c5399ae2ade152948998ea7 100755 (executable)
@@ -18,13 +18,16 @@ function Bar() {
 }
 
 $x = new Foo;
-Foo::Bar();
-$x = new Foo::Foo;
-Foo::Foo::Bar();
-::Foo::Bar();
---EXPECT--
-Method - Foo::Foo::__construct
-Func   - Foo::Bar
-Method - Foo::Foo::__construct
-Method - Foo::Foo::Bar
-Func   - Foo::Bar
+\Foo\Bar();
+$x = new \Foo\Foo;
+\Foo\Foo::Bar();
+\Foo\Bar();
+Foo\Bar();
+--EXPECTF--
+Method - Foo\Foo::__construct
+Func   - Foo\Bar
+Method - Foo\Foo::__construct
+Method - Foo\Foo::Bar
+Func   - Foo\Bar
+
+Fatal error: Call to undefined function Foo\Foo\Bar() in %sns_026.php on line %d
\ No newline at end of file
index 014bc4055287ac1813e781d7174ad80319fa781f..3823818290be7f48a2882e0704e044da5b49358f 100755 (executable)
@@ -1,5 +1,5 @@
 <?php
-namespace Foo::Bar;
+namespace Foo\Bar;
 
 class Foo {
   function __construct() {
index 064d0521f9ddb36726346ba33c5639df73bf60a2..88ef22f93b127220d995f15c1d29dbdeb9db00a3 100755 (executable)
@@ -15,10 +15,10 @@ class Foo {
 
 $x = new Foo;
 Foo::Bar();
-$x = new Foo::Bar::Foo;
-Foo::Bar::Foo::Bar();
+$x = new Foo\Bar\Foo;
+Foo\Bar\Foo::Bar();
 --EXPECT--
 Foo
 Foo
-Foo::Bar::Foo
-Foo::Bar::Foo
+Foo\Bar\Foo
+Foo\Bar\Foo
index 1b34a594b16206c3f0250bd1866eb8fcf81db1cb..ec23dac8188de2346288b889a017394b97f5ec04 100755 (executable)
@@ -14,13 +14,13 @@ class Foo {
 }
 
 $x = new Foo;
-Foo::Bar();
-$x = new Foo::Foo;
-Foo::Foo::Bar();
-::Foo::Bar();
+Foo\Bar();
+$x = new Foo\Foo;
+Foo\Foo::Bar();
+\Foo\Bar();
 --EXPECT--
 Method - Foo::__construct
-Func   - Foo::Bar
-Method - Foo::Foo::__construct
-Method - Foo::Foo::Bar
-Func   - Foo::Bar
+Func   - Foo\Bar
+Method - Foo\Foo::__construct
+Method - Foo\Foo::Bar
+Func   - Foo\Bar
index d719e9e7cfb359dc72af31c28e34365456acd83c..f1aa954ae37924a958780cabb331c90ac56fa3a5 100755 (executable)
@@ -2,7 +2,7 @@
 029: Name ambiguity (class name & import name)
 --FILE--
 <?php
-use A::B as Foo;
+use A\B as Foo;
 
 class Foo {
 }
index 8aa3223f7e6e6aaa7a63d418f0015ad252e5cf3a..69724159eedb61349e37f4e49b88b03644f54a32 100755 (executable)
@@ -5,8 +5,8 @@
 class Foo {
 }
 
-use A::B as Foo;
+use A\B as Foo;
 
 new Foo();
 --EXPECTF--
-Fatal error: Cannot use A::B as Foo because the name is already in use in %sns_030.php on line 5
+Fatal error: Cannot use A\B as Foo because the name is already in use in %sns_030.php on line 5
index 3991c5a107a48b54117fbe1eff2638a40968cd29..840c08621c1b01bd2d8c1cf390a83959afc05e8b 100755 (executable)
@@ -14,8 +14,8 @@ function foo() {
        echo __FUNCTION__,"\n";
 }
 
-call_user_func(__NAMESPACE__."::foo");
-call_user_func(__NAMESPACE__."::test::foo");
+call_user_func(__NAMESPACE__."\\foo");
+call_user_func(__NAMESPACE__."\\test::foo");
 --EXPECT--
-test::foo
-test::Test::foo
+test\foo
+test\Test::foo
index 86b24fcdc4c2439f9c72127b710b26812538af4f..5717a336852f037582891f1064e69626c67c31ed 100755 (executable)
@@ -12,8 +12,8 @@ function foo() {
        echo __FUNCTION__,"\n";
 }
 
-call_user_func(__NAMESPACE__."::foo");
-call_user_func(__NAMESPACE__."::test::foo");
+call_user_func(__NAMESPACE__."\\foo");
+call_user_func(__NAMESPACE__."\\test::foo");
 --EXPECT--
 foo
 Test::foo
index 8d616c1db2fb023cc1c0812b6d05f84669310f9b..dc431d82b9b324f20c461eb9468df482f47480dc 100755 (executable)
@@ -5,3 +5,4 @@
 use A;
 --EXPECTF--
 Warning: The use statement with non-compound name 'A' has no effect in %sns_033.php on line 2
+
index f8669cfb7490e3f5e69abf22203579557675d58f..76775f1180df5decf2ab1fe71a2d4aa469d2d7bc 100755 (executable)
@@ -10,23 +10,18 @@ class Foo {
 function f1($x=Foo::C) {
        echo $x;
 }
-function f2($x=A::Foo::C) {
+function f2($x=B\Foo::C) {
        echo $x;
 }
-function f3($x=B::Foo::C) {
-       echo $x;
-}
-function f4($x=::A::Foo::C) {
+function f3($x=\A\Foo::C) {
        echo $x;
 }
 echo Foo::C;
-echo A::Foo::C;
-echo B::Foo::C;
-echo ::A::Foo::C;
+echo B\Foo::C;
+echo \A\Foo::C;
 f1();
 f2();
 f3();
-f4();
 --EXPECT--
 ok
 ok
@@ -34,5 +29,3 @@ ok
 ok
 ok
 ok
-ok
-ok
index 259d17f6e3298428cf3fa9a315a2eaf00a022b47..fcc771a74e7fef85e94e542b55ebc429b6129173 100755 (executable)
@@ -5,14 +5,16 @@
 --FILE--
 <?php
 namespace A;
+use \ArrayObject;
+
 function f1($x = ArrayObject::STD_PROP_LIST) {
        var_dump($x);
 }
-function f2($x = ::ArrayObject::STD_PROP_LIST) {
+function f2($x = \ArrayObject::STD_PROP_LIST) {
        var_dump($x);
 }
 var_dump(ArrayObject::STD_PROP_LIST);
-var_dump(::ArrayObject::STD_PROP_LIST);
+var_dump(\ArrayObject::STD_PROP_LIST);
 f1();
 f2();
 
index 6fee2cb006fb4441575826236521e5a1dff1403c..245cf7d5b5319f02aa73aeffb6ab71505552df2b 100755 (executable)
@@ -12,28 +12,23 @@ class ArrayObject {
 function f1($x = ArrayObject::STD_PROP_LIST) {
        var_dump($x);
 }
-function f2($x = ::ArrayObject::STD_PROP_LIST) {
+function f2($x = \ArrayObject::STD_PROP_LIST) {
        var_dump($x);
 }
-function f3($x = A::ArrayObject::STD_PROP_LIST) {
+function f3($x = \A\ArrayObject::STD_PROP_LIST) {
        var_dump($x);
 }
-function f4($x = B::ArrayObject::STD_PROP_LIST) {
-       var_dump($x);
-}
-function f5($x = ::A::ArrayObject::STD_PROP_LIST) {
+function f4($x = B\ArrayObject::STD_PROP_LIST) {
        var_dump($x);
 }
 var_dump(ArrayObject::STD_PROP_LIST);
-var_dump(::ArrayObject::STD_PROP_LIST);
-var_dump(A::ArrayObject::STD_PROP_LIST);
-var_dump(B::ArrayObject::STD_PROP_LIST);
-var_dump(::A::ArrayObject::STD_PROP_LIST);
+var_dump(\ArrayObject::STD_PROP_LIST);
+var_dump(B\ArrayObject::STD_PROP_LIST);
+var_dump(\A\ArrayObject::STD_PROP_LIST);
 f1();
 f2();
 f3();
 f4();
-f5();
 ?>
 --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)
index ed36e0bb57fe4b09c750dcdde9a13d789bf3365f..db0a76e940d2407b1919a9fb0b5804b25782b44b 100755 (executable)
@@ -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
index c0ce428f7277a6b3f686b4dca6631fe94e5b16bf..f3a8c8cc632f74654cf5e9f99821dd70a27ef6aa 100755 (executable)
@@ -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
+
index fb2314466c4b18f80c39c39cd621d9bdc8b000ef..42a3ac07e9a1a8c42f23af406bda6b9b96e6051e 100644 (file)
@@ -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();
index 889f3d82c9460889d0a01ca9ce2fa79516002b0d..0632fc98151b6585d05713f9c59a3deb0e52d875 100644 (file)
@@ -2,13 +2,13 @@
 041: Constants in namespace
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 const FOO = "ok\n";
   
 echo(FOO);
-echo(test::ns1::FOO);
-echo(::test::ns1::FOO);
+echo(\test\ns1\FOO);
+echo(\test\ns1\FOO);
 echo(BAR);
 
 const BAR = "ok\n";
index eecd5f92561f65ac210288afba1916ff3056fa3c..ba420a7c80f9835110c3875e990b48ee6c889630 100644 (file)
@@ -2,18 +2,18 @@
 042: Import in namespace and constants
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 const FOO = "ok\n";
 
-use test::ns1 as ns2;
+use test\ns1 as ns2;
 use test as ns3;
 
 echo FOO;
-echo test::ns1::FOO;
-echo ::test::ns1::FOO;
-echo ns2::FOO;
-echo ns3::ns1::FOO;
+echo \test\ns1\FOO;
+echo \test\ns1\FOO;
+echo ns2\FOO;
+echo ns3\ns1\FOO;
 --EXPECT--
 ok
 ok
index 63bd05eaaf2988d717c470931b2c65bf5935e81d..bd5ee7440baf39035c5cf25a4a2aa9e8bfc821ed 100644 (file)
@@ -2,7 +2,7 @@
 043: Name conflict and constants (ns name)
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 const INI_ALL = 0;
 
index d379b97a24c9ee76228509e67f24786857d4ce92..dbdee2e523df1d9f61d867232c2571bc1f2b2915 100644 (file)
@@ -2,7 +2,7 @@
 044: Name conflict and constants (php name)
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 var_dump(INI_ALL);
 --EXPECT--
index d8c942948ed92112eb2f9b9173099724e18f9cb1..d45f9cf99d00245d28b56eb446101eb035b493dc 100644 (file)
@@ -2,10 +2,10 @@
 045: Name conflict and constants (php name in case if ns name exists)
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 const INI_ALL = 0;
 
-var_dump(::INI_ALL);
+var_dump(\INI_ALL);
 --EXPECT--
 int(7)
index e48f0cef242f84af8fd4a09d8414912c0f6467fd..d5203f14dc1ee21bc4bbde42eb22059fd5dc6f8d 100644 (file)
@@ -2,10 +2,10 @@
 046: Run-time name conflict and constants (ns name)
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 const INI_ALL = 0;
 
-var_dump(constant("test::ns1::INI_ALL"));
+var_dump(constant("test\\ns1\\INI_ALL"));
 --EXPECT--
 int(0)
index 89795da25693b5db19185f579dc93aa18092ff87..73e32a0de74f7051eaabfbbfdf92508fe23bf9e4 100644 (file)
@@ -2,7 +2,7 @@
 047: Run-time name conflict and constants (php name)
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 const INI_ALL = 0;
 
index 3837643cf260a9429a0cbb5add58b7508fcd6fbb..db21f89103b0f90074b489deee3abd5146eb74e4 100644 (file)
@@ -2,10 +2,10 @@
 048: __NAMESPACE__ constant and runtime names (ns name)
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 const FOO = 0;
 
-var_dump(constant(__NAMESPACE__ . "::FOO"));
+var_dump(constant(__NAMESPACE__ . "\\FOO"));
 --EXPECT--
 int(0)
index 3e5ccc67836a50546e29ecda9bfaf4cfe765a4f3..91e516579bfef5eaf9ff529d335019994f55686d 100644 (file)
@@ -4,6 +4,6 @@
 <?php
 const FOO = 0;
 
-var_dump(constant(__NAMESPACE__ . "::FOO"));
+var_dump(constant(__NAMESPACE__ . "\\FOO"));
 --EXPECT--
 int(0)
index 9171f6c4b144f5fb3ff6dd28e4d56ba8f5bee978..f827ec858d7ffdde4e6fe95c620a6ccec080cee4 100644 (file)
@@ -2,7 +2,7 @@
 050: Name conflict and compile-time constants (ns name)
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 const INI_ALL = 0;
 
index 07985ba10646b6f17b008ffb6e85b322b3af5279..b95b53f78bfc59b7ec53b61ea5becbc9de0d0cd6 100644 (file)
@@ -2,7 +2,7 @@
 051: Name conflict and compile-time constants (php name)
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 function foo($x = INI_ALL) {
        var_dump($x);
index 1f2c4a073f74b719e47d1728c497d9e190542bd1..cb0a05ff9ffe6ec8421ad5483937d7fd129c9597 100644 (file)
@@ -2,11 +2,11 @@
 052: Name conflict and compile-time constants (php name in case if ns name exists)
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 const INI_ALL = 0;
 
-function foo($x = ::INI_ALL) {
+function foo($x = \INI_ALL) {
        var_dump($x);
 }
 foo();
index b127da581e484b1d200ef6ee0b58ebf59e124672..bc5ab12cdbb65521323c72677da4b5deb70e4ceb 100644 (file)
@@ -2,11 +2,12 @@
 053: Run-time constant definition
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
-define(__NAMESPACE__ . '::NAME', basename(__FILE__));
+define(__NAMESPACE__ . '\\NAME', basename(__FILE__));
 echo NAME."\n";
-echo test::ns1::NAME."\n";
+echo \test\ns1\NAME."\n";
 --EXPECT--
 ns_053.php
 ns_053.php
+
index 0eb9e0448fd926c9826a2597581111bd01aa8163..54ab9586112127e713b2f253dbd19a63c046877f 100755 (executable)
@@ -4,21 +4,21 @@
 <?php if (!extension_loaded("spl")) die("skip SPL is no available"); ?>
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
-class Foo implements SplObserver {
-       function update(::SplSubject $x) {
+class Foo implements \SplObserver {
+       function update(\SplSubject $x) {
                echo "ok\n";
        }
 }
 
-class Bar implements SplSubject {
-       function attach(::SplObserver $x) {
+class Bar implements \SplSubject {
+       function attach(\SplObserver $x) {
                echo "ok\n";
        }
        function notify() {
        }
-       function detach(::SplObserver $x) {
+       function detach(\SplObserver $x) {
        }
 }
 $foo = new Foo();
index 83d0613c1eb1ddcaaf5a1fdfd9603ab49bf1e5d7..a692e476014708d8f564c58a21aa9135e86346ce 100755 (executable)
@@ -2,32 +2,27 @@
 055: typehints in namespaces
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 class Foo {
        function test1(Foo $x) {
                echo "ok\n";
        }
-       function test2(test::ns1::Foo $x) {
+       function test2(\test\ns1\Foo $x) {
                echo "ok\n";
        }
-       function test3(Exception $x) {
-               echo "ok\n";
-       }
-       function test4(::Exception $x) {
+       function test3(\Exception $x) {
                echo "ok\n";
        }
 }
 
 $foo = new Foo();
-$ex = new Exception();
+$ex = new \Exception();
 $foo->test1($foo);
 $foo->test2($foo);
 $foo->test3($ex);
-$foo->test4($ex);
 ?>
 --EXPECT--
 ok
 ok
 ok
-ok
index 0bc4f0087d83e451d728693d16a52dabf346309a..2390608d4ee078c350ac562a66899a0909c353e9 100755 (executable)
@@ -4,15 +4,16 @@
 <?php if (!extension_loaded("spl")) die("skip SPL is no available"); ?>
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
+use \SplObserver;
 
 class Foo implements SplObserver {
-       function update(SplSubject $x) {
+       function update(\SplSubject $x) {
                echo "ok\n";
        }
 }
 
-class Bar implements SplSubject {
+class Bar implements \SplSubject {
        function attach(SplObserver $x) {
                echo "ok\n";
        }
index bd17d6c318a2f13a86a8b9a54d3b6a3a521a0844..13bf3054ccdd6a121d2b03b464fef462ba44dbca 100755 (executable)
@@ -1,8 +1,8 @@
 --TEST--
-057: Usage of 'namespace' in compound names (inside namespase)
+057: Usage of 'namespace' in compound names (inside namespace)
 --FILE--
 <?php
-namespace Test::ns1;
+namespace Test\ns1;
 
 const C = "const ok\n";
 
@@ -12,7 +12,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";
@@ -22,28 +22,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
@@ -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
index 6c86f10f9d7e3084eb2dfa6c4790a4312f883562..7a0cd97d922aa9a9162ad0527a6d1229230adfd6 100755 (executable)
@@ -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
index ae96128f0b09037f6aee19bd40f51ba0d1ef5a05..ea66037b433a9d49bc11318d9d59c599dff3873e 100755 (executable)
@@ -5,3 +5,4 @@
 const C = array();
 --EXPECTF--
 Fatal error: Arrays are not allowed as constants in %sns_059.php on line 2
+
index cc86d0e0870ac992841b553e987841afb10abb06..16c8024f00a3825497811c1fb75035dea2076623 100644 (file)
@@ -3,21 +3,21 @@
 --FILE--
 <?php
 namespace Foo;
-use Bar::A as B;
+use Bar\A as B;
 class A {}
 $a = new B;
 $b = new A;
 echo get_class($a)."\n";
 echo get_class($b)."\n";
 namespace Bar;
-use Foo::A as B;
+use Foo\A as B;
 $a = new B;
 $b = new A;
 echo get_class($a)."\n";
 echo get_class($b)."\n";
 class A {}
 --EXPECT--
-Bar::A
-Foo::A
-Foo::A
-Bar::A
+Bar\A
+Foo\A
+Foo\A
+Bar\A
diff --git a/Zend/tests/ns_061.phpt b/Zend/tests/ns_061.phpt
new file mode 100644 (file)
index 0000000..948f675
--- /dev/null
@@ -0,0 +1,9 @@
+--TEST--
+061: use in global scope
+--FILE--
+<?php
+class A {}
+use \A as B;
+echo get_class(new B)."\n";
+--EXPECT--
+A
diff --git a/Zend/tests/ns_062.phpt b/Zend/tests/ns_062.phpt
new file mode 100644 (file)
index 0000000..d795da4
--- /dev/null
@@ -0,0 +1,12 @@
+--TEST--
+062: use \global class
+--FILE--
+<?php
+namespace Foo;
+use \stdClass;
+use \stdClass as A;
+echo get_class(new stdClass)."\n";
+echo get_class(new A)."\n";
+--EXPECT--
+stdClass
+stdClass
index bc6d65ba6858234e73670c9ded9bfb8266e8e31e..b8c6d3c3b7c7d934457dc1beab06da3535a97330 100644 (file)
@@ -21,7 +21,7 @@ class foo {
        }
 }
 
-use test::foo as stdClass;
+use test\foo as stdClass;
 
 $x = new stdClass;
 $x->a = 1;
index a625a4a1b4cb8a4a52341a69fdd25234a4cacb27..963a74e14063dcf90c2c00754418e3ffadfda8b2 100755 (executable)
@@ -1,9 +1,9 @@
 <?php
-namespace X::Y;
+namespace X\Y;
 function foo() {
        echo __FUNCTION__."\n";
 }
-namespace X::Z;
+namespace X\Z;
 function foo() {
        echo __FUNCTION__."\n";
 }
index 8d7e7fbb1a5c93918ecd433df5200d36b2b8e856..40ccd1e1534e62670c49cfe040d79bae0139ad11 100755 (executable)
@@ -2,12 +2,12 @@
 065: Multiple names in use statement
 --FILE--
 <?php
-use X::Y as test, X::Z as test2;
+use X\Y as test, X\Z as test2;
 
 require "ns_065.inc";
 
-test::foo();
-test2::foo();
+test\foo();
+test2\foo();
 --EXPECT--
-X::Y::foo
-X::Z::foo
+X\Y\foo
+X\Z\foo
index 3a7d9a521f06d61d1fa033126d09377feb2718fb..881589cf2c93911760d52989b5ffabf0332b532b 100644 (file)
@@ -3,8 +3,8 @@
 --FILE--
 <?php
 include __DIR__ . '/ns_027.inc';
-use Foo::Bar::Foo as stdClass;
+use Foo\Bar\Foo as stdClass;
 
 new stdClass();
 --EXPECT--
-Foo::Bar::Foo
+Foo\Bar\Foo
index 09327b276d4c33f1368a7c2ced90e0e3e2943576..c3c14b146887472f83b13f20189d0638ae948919 100644 (file)
@@ -1,3 +1,3 @@
 <?php
-use Foo::Bar::Foo as Test;
+use Foo\Bar\Foo as Test;
 new Test();
index c5096278db530f18281ee8c6ba6040e3f370fa7a..b94eb30ead2425ae3a7474e57b7a2530c1eed450 100644 (file)
@@ -6,4 +6,4 @@ include __DIR__ . '/ns_022.inc';
 include __DIR__ . '/ns_027.inc';
 include __DIR__ . '/ns_067.inc';
 --EXPECT--
-Foo::Bar::Foo
+Foo\Bar\Foo
index 850b82040c59dfa6aea3d56cf78d3733b1de8f2f..37cb6a006829659c9142c3bfd75a9a0ada9a99bb 100644 (file)
@@ -11,7 +11,7 @@ class bar {
        }
 }
 
-new bar(new stdclass);
+new bar(new \stdclass);
 new bar(null);
 
 ?>
index f31e0cc6839a4d18854185ef3c5735bcad236cff..1fdaec9db301360d83c0f42e76994947ca79c80f 100644 (file)
@@ -12,7 +12,7 @@ class bar {
 }
 
 new bar(null);
-new bar(new stdclass);
+new bar(new \stdclass);
 
 ?>
 --EXPECTF--
index aaba0ddb5f95a324c5e68e1c1d8f68f26983df14..c500bfddb7e9ce5e7fc4455dd6c05901335d6bfe 100644 (file)
@@ -22,7 +22,7 @@ class test implements foo {
 
 new bar(new test);
 new bar(null);
-new bar(new stdclass);
+new bar(new \stdclass);
 
 ?>
 --EXPECTF--
index 4f37aa58b45cfe8ba620b9db8922181b2ba34ac1..bb03308d71b5d821a5b58919308266bcdb93fe76 100644 (file)
@@ -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) {
-}
index 5b15e3b42fa130aabd933434a7abb7fdfb893334..28d8bf96b63aaf93fd74c6352a7df2b2b0504a58 100644 (file)
@@ -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 (executable)
index 0000000..0156e99
--- /dev/null
@@ -0,0 +1,10 @@
+--TEST--
+075: Redefining compile-time constants
+--FILE--
+<?php
+namespace foo;
+const NULL = 1;
+
+echo NULL;
+--EXPECTF--
+Fatal error: Cannot redeclare constant 'NULL' in %sns_075.php on line %d
diff --git a/Zend/tests/ns_076.phpt b/Zend/tests/ns_076.phpt
new file mode 100755 (executable)
index 0000000..7d4881c
--- /dev/null
@@ -0,0 +1,25 @@
+--TEST--
+076: Unknown constants in namespace
+--FILE--
+<?php
+namespace foo;
+
+$a = array(unknown => 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 (executable)
index 0000000..5a9c4b1
--- /dev/null
@@ -0,0 +1,13 @@
+--TEST--
+077: Unknown compile-time constants in namespace
+--FILE--
+<?php
+namespace foo;
+
+function foo($a = array(0 => \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 (executable)
index 0000000..8c26721
--- /dev/null
@@ -0,0 +1,13 @@
+--TEST--
+077: Unknown compile-time constants in namespace
+--FILE--
+<?php
+namespace foo;
+
+function foo($a = array(\unknown => 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 (executable)
index 0000000..bdeb792
--- /dev/null
@@ -0,0 +1,13 @@
+--TEST--
+077: Unknown compile-time constants in namespace
+--FILE--
+<?php
+namespace foo;
+
+function foo($a = array(namespace\unknown => 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 (executable)
index 0000000..aef91fd
--- /dev/null
@@ -0,0 +1,13 @@
+--TEST--
+077: Unknown compile-time constants in namespace
+--FILE--
+<?php
+namespace foo;
+
+function foo($a = array(0 => 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 (executable)
index 0000000..17afe03
--- /dev/null
@@ -0,0 +1,12 @@
+--TEST--
+077: Unknown compile-time constants in namespace
+--FILE--
+<?php
+
+function foo($a = array(0 => \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 (executable)
index 0000000..17afe03
--- /dev/null
@@ -0,0 +1,12 @@
+--TEST--
+077: Unknown compile-time constants in namespace
+--FILE--
+<?php
+
+function foo($a = array(0 => \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 (executable)
index 0000000..9bf5baf
--- /dev/null
@@ -0,0 +1,12 @@
+--TEST--
+077: Unknown compile-time constants in namespace
+--FILE--
+<?php
+
+function foo($a = array(0 => 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 (executable)
index 0000000..9f9240d
--- /dev/null
@@ -0,0 +1,12 @@
+--TEST--
+077: Unknown compile-time constants in namespace
+--FILE--
+<?php
+
+function foo($a = array(namespace\unknown => 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 (executable)
index 0000000..ed6770f
--- /dev/null
@@ -0,0 +1,33 @@
+--TEST--
+002: Import - different syntaxes
+--FILE--
+<?php
+namespace test\ns1;
+
+class Foo {
+  static function bar() {
+    echo __CLASS__,"\n";
+  }
+}
+
+class Foo2 {
+  static function bar() {
+    echo __CLASS__,"\n";
+  }
+}
+
+namespace xyz;
+use test\ns1\Foo;
+use test\ns1\Foo as Bar;
+use \test\ns1\Foo2;
+use \test\ns1\Foo2 as Bar2;
+
+Foo::bar();
+Bar::bar();
+Foo2::bar();
+Bar2::bar();
+--EXPECT--
+test\ns1\Foo
+test\ns1\Foo
+test\ns1\Foo2
+test\ns1\Foo2
diff --git a/Zend/tests/ns_079.phpt b/Zend/tests/ns_079.phpt
new file mode 100644 (file)
index 0000000..c11181c
--- /dev/null
@@ -0,0 +1,12 @@
+--TEST--
+079: nested namespaces
+--FILE--
+<?php
+namespace foo {
+    namespace oops {
+    }
+}
+?>
+===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 (file)
index 0000000..9c81c0d
--- /dev/null
@@ -0,0 +1,15 @@
+--TEST--
+080: bracketed namespaces and __HALT_COMPILER();
+--FILE--
+<?php
+namespace foo {
+echo "hi\n";
+}
+__HALT_COMPILER();
+namespace unprocessed {
+echo "should not echo\n";
+}
+?>
+===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 (file)
index 0000000..e08a808
--- /dev/null
@@ -0,0 +1,23 @@
+--TEST--
+081: bracketed namespace with nested unbracketed namespace
+--FILE--
+<?php
+namespace foo {
+use \foo;
+class bar {
+       function __construct() {echo __METHOD__,"\n";}
+}
+new foo;
+new bar;
+namespace oops;
+class foo {
+       function __construct() {echo __METHOD__,"\n";}
+}
+use foo\bar as foo1;
+new foo1;
+new foo;
+}
+?>
+===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 (file)
index 0000000..3220974
--- /dev/null
@@ -0,0 +1,12 @@
+--TEST--
+082: bracketed namespace with closing tag
+--FILE--
+<?php
+namespace foo {
+}
+namespace ok {
+echo "ok\n";
+}
+?>
+--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 (file)
index 0000000..4b821db
--- /dev/null
@@ -0,0 +1,14 @@
+--TEST--
+083: bracketed namespace with junk before the ns declaration
+--FILE--
+<?php
+$a = 'oops';
+echo $a;
+namespace foo {
+}
+namespace ok {
+echo "ok\n";
+}
+?>
+--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 (file)
index 0000000..cb1ae55
--- /dev/null
@@ -0,0 +1,23 @@
+--TEST--
+084: unbracketed namespace with nested bracketed namespace
+--FILE--
+<?php
+namespace foo;
+use \foo;
+class bar {
+       function __construct() {echo __METHOD__,"\n";}
+}
+new foo;
+new bar;
+namespace oops {
+class foo {
+       function __construct() {echo __METHOD__,"\n";}
+}
+use foo\bar as foo1;
+new foo1;
+new foo;
+}
+?>
+===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 (file)
index 0000000..377da6a
--- /dev/null
@@ -0,0 +1,27 @@
+--TEST--
+085: bracketed namespace
+--FILE--
+<?php
+namespace foo {
+use \foo;
+class bar {
+       function __construct() {echo __METHOD__,"\n";}
+}
+new foo;
+new bar;
+}
+namespace {
+class foo {
+       function __construct() {echo __METHOD__,"\n";}
+}
+use foo\bar as foo1;
+new foo1;
+new foo;
+echo "===DONE===\n";
+}
+--EXPECT--
+foo::__construct
+foo\bar::__construct
+foo\bar::__construct
+foo::__construct
+===DONE===
\ No newline at end of file
diff --git a/Zend/tests/ns_086.phpt b/Zend/tests/ns_086.phpt
new file mode 100644 (file)
index 0000000..ce3e2a6
--- /dev/null
@@ -0,0 +1,28 @@
+--TEST--
+086: bracketed namespace with encoding
+--FILE--
+<?php
+declare(encoding='utf-8');
+namespace foo {
+use \foo;
+class bar {
+       function __construct() {echo __METHOD__,"\n";}
+}
+new foo;
+new bar;
+}
+namespace {
+class foo {
+       function __construct() {echo __METHOD__,"\n";}
+}
+use foo\bar as foo1;
+new foo1;
+new foo;
+echo "===DONE===\n";
+}
+--EXPECT--
+foo::__construct
+foo\bar::__construct
+foo\bar::__construct
+foo::__construct
+===DONE===
\ No newline at end of file
diff --git a/Zend/tests/ns_087.phpt b/Zend/tests/ns_087.phpt
new file mode 100644 (file)
index 0000000..b2f0a89
--- /dev/null
@@ -0,0 +1,24 @@
+--TEST--
+087: bracketed namespace with stuff in between
+--FILE--
+<?php
+namespace foo {
+use \foo;
+class bar {
+       function __construct() {echo __METHOD__,"\n";}
+}
+new foo;
+new bar;
+}
+$a = 'oops';
+namespace {
+class foo {
+       function __construct() {echo __METHOD__,"\n";}
+}
+use foo\bar as foo1;
+new foo1;
+new foo;
+echo "===DONE===\n";
+}
+--EXPECTF--
+Fatal error: No code may exist outside of namespace {} in %s on line 10
index 8475b2eb74b882c8f499f7ad11ae30c7000059db..a9d7574a5982211eb1b9757acc956f65eb75f5e0 100644 (file)
@@ -560,7 +560,7 @@ typedef int (*zend_write_func_t)(const char *str, uint str_length);
 
 /* Ugly hack to support constants as static array indices */
 #define IS_CONSTANT_TYPE_MASK  0x0f
-#define IS_CONSTANT_RT_NS_CHECK        0x10
+#define IS_CONSTANT_UNQUALIFIED        0x10
 #define IS_CONSTANT_INDEX              0x80
 #define IS_LEXICAL_VAR                 0x20
 #define IS_LEXICAL_REF                 0x40
index b085d26ac45a46b37fc664ffd79307319cd0f871..d6ce5fbca5fb397dd0a857d74ce78903431739d7 100644 (file)
@@ -2792,20 +2792,16 @@ static int zend_is_callable_check_func(int check_flags, zval *callable, zend_fca
        fcc->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);
index ca3695f9bf929225ce9cf906fbe5039fef24dd87..a7dd2688a473d78cc67ba30f8f92108b555d3255 100644 (file)
@@ -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)) {
index 83d9cb5bb3eae1c40acb482a97ecef0def7ac097..3560c67e11b2e7c8b5f45f42b1a0f2d7de358428 100644 (file)
@@ -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
 
index a617adcc7c98f95e6869f84b184f1a10f971ad6d..aaa42437fd33d4120f47982b283c7a2538f3f44f 100644 (file)
@@ -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;
index 2ce48737c866136ada11faee5e1307d48c36dafd..22f0d71cac5e376476a9a35821ff257551b48868 100644 (file)
@@ -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;
 }
 /* }}} */
 
index ea26e3f210e07741fdf6237bf20666692fb032e7..4309cd0fe66964d7ef08e9bc2f70b618ec766016 100644 (file)
@@ -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;
index 1e872547c7ab273c6189bb04dea7fc27dd36fc78..421450ed3613d1e3ccde1aa66183682ab9f26a15 100644 (file)
 %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; }
index c8048137e92bb3fb7046fd6577bee62ab5c4a5f7..7948d19c2719fa6ef8dbeda946b98aa92b0a5e65 100644 (file)
@@ -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"
 
 }
index c6fc51d6cc3f59e632f183ed78fb722e747bf032..c57771ea49221f2ac40d48d683e64a2a332c2468 100644 (file)
@@ -1610,6 +1610,10 @@ NOWDOC_CHARS        ([^\n\r]|{NEWLINE}+([^a-zA-Z_\x7f-\xff\n\r]|({LABEL}([^a-zA-
        return T_PAAMAYIM_NEKUDOTAYIM;
 }
 
+<ST_IN_SCRIPTING>"\\" {
+       return T_NS_SEPARATOR;
+}
+
 <ST_IN_SCRIPTING>"new" {
        return T_NEW;
 }
index 552b091432bf6e9f9d0b3c6bc42d9645da3a029f..eb4e6489e1b24f1f37ca13742cdb3cd8cea7e439 100644 (file)
@@ -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 {
index df86f10863b8b53be73bedae03ac68fbfef4f55b..db15ad5bb79376b7846c5050258b1b04f3d4ee62 100644 (file)
@@ -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));
index a06591705ad07e4067283064338fcd2f2fb18bd6..292e7209715364f73ae05d9010b57fd38e3716c9 100644 (file)
@@ -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));