]> granicus.if.org Git - php/commitdiff
- Next step in namespaces, using / as namespace separator.
authorMarcus Boerger <helly@php.net>
Tue, 4 Nov 2008 15:58:55 +0000 (15:58 +0000)
committerMarcus Boerger <helly@php.net>
Tue, 4 Nov 2008 15:58:55 +0000 (15:58 +0000)
122 files changed:
NEWS
Zend/tests/bug42802.phpt
Zend/tests/bug42819.phpt
Zend/tests/bug42820.phpt
Zend/tests/bug42859.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/lsb_014.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_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_060.phpt
Zend/tests/ns_061.phpt
Zend/tests/ns_062.phpt
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/zend_API.c
Zend/zend_API.h
Zend/zend_compile.c
Zend/zend_compile.h
Zend/zend_constants.c
Zend/zend_execute_API.c
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
ext/reflection/php_reflection.c
ext/reflection/tests/ReflectionFunction_getNamespaceName.phpt
ext/reflection/tests/reflectionClass_getNamespaceName.phpt
ext/standard/credits.c
ext/standard/var_unserializer.c
ext/standard/var_unserializer.re

diff --git a/NEWS b/NEWS
index 604dc16cadc3a8b5d099f1a9b3b3d374a4ebbc03..3057af072eb3a177ac41ef20d8b219c1e4f43291 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -157,7 +157,7 @@ PHP                                                                        NEWS
   . Improved syntax highlighting and consistency for variables in double-quoted
     strings and literal text in HEREDOCs and backticks. (Matt)
   . Added "?:" operator. (Marcus)
-  . Added support for namespaces. (Dmitry, Stas, Gregory)
+  . Added support for namespaces. (Dmitry, Stas, Gregory, Marcus)
   . Added support for Late Static Binding. (Dmitry, Etienne Kneuss)
   . Added support for __callStatic() magic method. (Sara)
   . Added forward_static_call(_array) to complete LSB. (Mike Lively)
index 80ae02ba5e6b3f39167f0b0c6469a8ac0c160565..31d9d34ae32c3027da1be92a521910ab6308fe17 100755 (executable)
@@ -11,19 +11,19 @@ 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 test6(\bar $bar) {
         echo "bug\n";
 }
 
@@ -42,4 +42,4 @@ 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\test6() must be an instance of bar, instance of foo\bar given, called in %sbug42802.php on line 23
index 565a019fac08fc6616ab3519c18a02bbd601f782..d0e0dcc88782a90b84e1db50a9866e788b8efcb9 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;
 
-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 0a6c7d7876bf5f362ad8ce55c84803fe3a3e2f29..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)
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 61313eb2c6a4a93cb43a34a81110676b021f7260..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
\ No newline at end of file
index ef321621004fc27b3d2a3205d5442e2a5d8a1d62..620725ab4ba25148a344a2ce317d2686f96d9425 100644 (file)
@@ -12,4 +12,4 @@ $foo = new foo;
 $foo->bar($foo); // 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..884ec71bacbe7bd1c55b05889266eac4a4a1eebd 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..09144b813c1fc69cb89f37419b9ee448d6f32dae 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 foo\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 24851531bc5426f86c82ae52ee391aeac9745c0b..6458a078256b2b71b79e6187d68ddfda72216e4d 100644 (file)
@@ -26,7 +26,7 @@ var_dump(__namespace__);
 string(%d) "%s"
 string(%d) "%s"
 int(%d)
-string(22) "test::foo::__construct"
-string(9) "test::foo"
+string(21) "test\foo::__construct"
+string(8) "test\foo"
 string(11) "__construct"
 string(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 34ee7b48ceda391049f5a9ef0bb8a7b753355d7b..19cf9137104ade8e6c467089c6e0cc7a3dec8bf3 100644 (file)
@@ -1,5 +1,5 @@
---TEST--                               
-ZE2 Late Static Binding access to static::const through defined() anf get_constant()
+--TEST--
+ZE2 Late Static Binding access to static::const through defined() and get_constant()
 --FILE--
 <?php
 
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..000928c3d6be802149a16d1ab8851e54fb69a74d 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..792367cdf63573902de8c6b276d9f923cae518af 100755 (executable)
@@ -2,7 +2,7 @@
 004: Name conflict (php name)
 --FILE--
 <?php
-namespace test::ns1;
+namespace test\ns1;
 
 echo get_class(new Exception()),"\n";
 --EXPECT--
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..c921f134bde05d7d1b98e7623b7409a3667a1871 100755 (executable)
@@ -15,21 +15,21 @@ class Foo {
        }
 }
 new Foo();
-new X::Foo();
-new Y::Foo();
-new ::X::Foo();
+new X\Foo();
+new Y\Foo();
+new \X\Foo();
 Foo::bar();
-X::Foo::bar();
-Y::Foo::bar();
-::X::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 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 X\Foo::$var;
+echo Y\Foo::$var;
+echo \X\Foo::$var;
 --EXPECT--
 class ok
 class 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 4be9dc700a4da883fa49783f5f55fcb3132e4881..bc1681c122f7c54761bb6953602108696b4053b6 100755 (executable)
@@ -2,10 +2,10 @@
 023: __NAMESPACE__ constant
 --FILE--
 <?php
-namespace test::foo;
+namespace test\foo;
 
 var_dump(__NAMESPACE__);
 --EXPECT--
-string(9) "test::foo"
+string(8) "test\foo"
 --UEXPECT--
-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 f8669cfb7490e3f5e69abf22203579557675d58f..1ab793e17d95983945f68fde8f5361c8b2a35127 100755 (executable)
@@ -10,19 +10,19 @@ class Foo {
 function f1($x=Foo::C) {
        echo $x;
 }
-function f2($x=A::Foo::C) {
+function f2($x=A\Foo::C) {
        echo $x;
 }
-function f3($x=B::Foo::C) {
+function f3($x=B\Foo::C) {
        echo $x;
 }
-function f4($x=::A::Foo::C) {
+function f4($x=\A\Foo::C) {
        echo $x;
 }
 echo Foo::C;
-echo A::Foo::C;
-echo B::Foo::C;
-echo ::A::Foo::C;
+echo A\Foo::C;
+echo B\Foo::C;
+echo \A\Foo::C;
 f1();
 f2();
 f3();
index 259d17f6e3298428cf3fa9a315a2eaf00a022b47..b8aa717a071a3a49f21ab0753462133f63c655e1 100755 (executable)
@@ -8,11 +8,11 @@ namespace A;
 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..e63a7a44484c615cea23de3dcf3a4ee090d1b719 100755 (executable)
@@ -12,23 +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) {
+function f4($x = B\ArrayObject::STD_PROP_LIST) {
        var_dump($x);
 }
-function f5($x = ::A::ArrayObject::STD_PROP_LIST) {
+function f5($x = \A\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(A\ArrayObject::STD_PROP_LIST);
+var_dump(B\ArrayObject::STD_PROP_LIST);
+var_dump(\A\ArrayObject::STD_PROP_LIST);
 f1();
 f2();
 f3();
index ed36e0bb57fe4b09c750dcdde9a13d789bf3365f..ba665925b4bd14ff285d52742354e0673df51837 100755 (executable)
@@ -15,21 +15,21 @@ class X {
        }
 }
 new X();
-new X::X();
-new Y::X();
-new ::X::X();
+new X\X();
+new Y\X();
+new \X\X();
 X::bar();
-X::X::bar();
-Y::X::bar();
-::X::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 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 X\X::$var;
+echo Y\X::$var;
+echo \X\X::$var;
 --EXPECT--
 class ok
 class ok
index fcaa3c445444756b2058f43c942a6b79ed7c25b1..86cdaea30d77fee490334eddd159a005b542e573 100755 (executable)
@@ -6,7 +6,7 @@ namespace Exception;
 function foo() {
   echo "ok\n";
 }
-Exception::foo();
+\Exception\foo();
 Exception::bar();
 --EXPECTF--
 ok
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 8df545faceb6782b71a401b98c284c370303fce2..bc5ab12cdbb65521323c72677da4b5deb70e4ceb 100644 (file)
@@ -2,11 +2,11 @@
 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..528a3f8fb269c41411f178c1e33344bf9af31ed7 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) {
+       function update(\SplSubject $x) {
                echo "ok\n";
        }
 }
 
 class Bar implements SplSubject {
-       function attach(::SplObserver $x) {
+       function attach(\SplObserver $x) {
                echo "ok\n";
        }
        function notify() {
        }
-       function detach(::SplObserver $x) {
+       function detach(\SplObserver $x) {
        }
 }
 $foo = new Foo();
index 83d0613c1eb1ddcaaf5a1fdfd9603ab49bf1e5d7..e10a55c5134c3c15fa105018051e628627654dd1 100755 (executable)
@@ -2,19 +2,19 @@
 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 test4(\Exception $x) {
                echo "ok\n";
        }
 }
index 0bc4f0087d83e451d728693d16a52dabf346309a..2df5d6d6c4fb3331f526b03762708d39771078f0 100755 (executable)
@@ -4,7 +4,7 @@
 <?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) {
index cfa02f923fa53781b8bbd4092e9e2e3eda121328..7a994f618228a15e972cc64c0a809293e240d381 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,26 +22,26 @@ 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());
 ?>
 --EXPECTF--
 const ok
index 6c86f10f9d7e3084eb2dfa6c4790a4312f883562..7fc5909bef06289b34da4ded916400ce65a5589c 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,26 +20,26 @@ 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());
 ?>
 --EXPECT--
 const ok
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
index a02f63d71f97d6ae84624fc5f06916ffd8eb2b57..948f675d6d838d236a69e5e5e9f623cc60e372a8 100644 (file)
@@ -3,7 +3,7 @@
 --FILE--
 <?php
 class A {}
-use ::A as B;
+use \A as B;
 echo get_class(new B)."\n";
 --EXPECT--
 A
index 07043dbf6855559a8d94fc80b4140c7e9ef28512..d795da4c68bb8d515160ead3ca9af857da414409 100644 (file)
@@ -1,10 +1,10 @@
 --TEST--
-062: use ::global class
+062: use \global class
 --FILE--
 <?php
 namespace Foo;
-use ::stdClass;
-use ::stdClass as A;
+use \stdClass;
+use \stdClass as A;
 echo get_class(new stdClass)."\n";
 echo get_class(new A)."\n";
 --EXPECT--
index 29e9e567149439714ae80fa0a3a84a79fbd11855..0a7c4bc82d17f035a14bc66492af8eb1ae9e70b0 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 36a7639a2dacadd2e645c52237ee617f433b1663..23a3dbbe31b962365994d2ee4338e9dbb96eda26 100644 (file)
@@ -1794,8 +1794,8 @@ ZEND_API int zend_register_functions(zend_class_entry *scope, const zend_functio
 
        if (scope) {
                class_name_len = strlen(scope->name);
-               if ((lc_class_name = zend_memrchr(scope->name, ':', class_name_len))) {
-                       lc_class_name++;
+               if ((lc_class_name = zend_memrchr(scope->name, '\\', class_name_len))) {
+                       ++lc_class_name;
                        class_name_len -= (lc_class_name - scope->name);
                        lc_class_name = zend_str_tolower_dup(lc_class_name, class_name_len);
                } else {
@@ -2394,13 +2394,11 @@ static int zend_is_callable_check_func(int check_flags, zval *callable, zend_fca
        fcc->function_handler = NULL;
 
        if (!ce_org) {
-               /* Skip leading :: */
-               if (Z_STRVAL_P(callable)[0] == ':' &&
-                       Z_STRVAL_P(callable)[1] == ':'
-               ) {
-                       mlen = Z_STRLEN_P(callable) - 2;
-                       mname = Z_STRVAL_P(callable) + 2;
-                       lmname = zend_str_tolower_dup(Z_STRVAL_P(callable) + 2, mlen);
+               /* Skip leading \ */
+               if (Z_STRVAL_P(callable)[0] == '\\') {
+                       mlen = Z_STRLEN_P(callable) - 1;
+                       mname = Z_STRVAL_P(callable) + 1;
+                       lmname = zend_str_tolower_dup(Z_STRVAL_P(callable) + 1, mlen);
                } else {
                        mlen = Z_STRLEN_P(callable);
                        mname = Z_STRVAL_P(callable);
index d8b2b3fcfff6e88f03893c46db677517e42efb66..9b5bb7078117f418e6f830e36f895d38db9854c3 100644 (file)
@@ -60,7 +60,7 @@ typedef struct _zend_fcall_info_cache {
        zval **object_pp;
 } zend_fcall_info_cache;
 
-#define ZEND_NS_NAME(ns, name)                 ns"::"name
+#define ZEND_NS_NAME(ns, name)                 ns"\\"name
 
 #define ZEND_FN(name) zif_##name
 #define ZEND_MN(name) zim_##name
index 368f8e92a9f6c5a831e75a4e2db05fc915919a6b..5d1c583fb1842ca02538fcd9113e696b3c0e66ff 100644 (file)
@@ -1242,9 +1242,9 @@ void zend_do_begin_function_declaration(znode *function_token, znode *function_n
                        int short_class_name_length;
                        char *short_class_lcname;
 
-                       if ((short_class_name = zend_memrchr(CG(active_class_entry)->name, ':', CG(active_class_entry)->name_length))) {
-                               short_class_name++;
-                               short_class_name_length = CG(active_class_entry)->name_length - (short_class_name - CG(active_class_entry)->name);
+                       if ((short_class_name = zend_memrchr(CG(active_class_entry)->name, '\\', CG(active_class_entry)->name_length))) {
+                               short_class_name_length = CG(active_class_entry)->name_length - (short_class_name - CG(active_class_entry)->name) - 1;
+                               ++short_class_name;
                        } else {
                                short_class_name = CG(active_class_entry)->name;
                                short_class_name_length = CG(active_class_entry)->name_length;
@@ -1535,21 +1535,32 @@ int zend_do_begin_function_call(znode *function_name, zend_bool check_namespace
        zend_function *function;
        char *lcname;
        int prefix_len = 0;
+       char *is_compound = NULL;
 
-       if (check_namespace && CG(current_namespace)) {
-               /* We assume we call function from the current namespace
-                  if it is not prefixed. */
-               znode tmp;
+       if (Z_STRVAL(function_name->u.constant)[0] == '\\') {
+               is_compound = memchr(Z_STRVAL(function_name->u.constant)+1, '\\', Z_STRLEN(function_name->u.constant)-1);
+       } else {
+               is_compound = memchr(Z_STRVAL(function_name->u.constant), '\\', Z_STRLEN(function_name->u.constant));
+       }
+       if (check_namespace) {
+               ulong unused;
 
-               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;
+               zend_resolve_non_class_name(function_name, &unused, 2, 1 TSRMLS_CC);
+               if (Z_STRVAL(function_name->u.constant)[0] == '\\') {
+                       memmove(Z_STRVAL(function_name->u.constant), Z_STRVAL(function_name->u.constant)+1, Z_STRLEN(function_name->u.constant));
+                       --Z_STRLEN(function_name->u.constant);
+               }
+               if (CG(current_namespace) && !is_compound) {
+                       /* We assume we call function from the current namespace
+                       if it is not prefixed. */
 
-               /* In run-time PHP will check for function with full name and
-                  internal function with short name */
-               prefix_len = Z_STRLEN_P(CG(current_namespace)) + 2;
+                       /* In run-time PHP will check for function with full name and
+                       internal function with short name */
+                       prefix_len = Z_STRLEN_P(CG(current_namespace)) + 1;
+               }
+       } else if (Z_STRVAL(function_name->u.constant)[0] == '\\') {
+               memmove(Z_STRVAL(function_name->u.constant), Z_STRVAL(function_name->u.constant)+1, Z_STRLEN(function_name->u.constant));
+               --Z_STRLEN(function_name->u.constant);
        }
        
        lcname = zend_str_tolower_dup(function_name->u.constant.value.str.val, function_name->u.constant.value.str.len);
@@ -1649,7 +1660,8 @@ void zend_do_begin_dynamic_function_call(znode *function_name, int prefix_len TS
                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));
-               SET_UNUSED(opline->op2);
+               opline->op2.op_type = IS_CONST;
+               ZVAL_BOOL(&opline->op2.u.constant, (memchr(Z_STRVAL(opline->op1.u.constant), '\\', Z_STRLEN(opline->op1.u.constant)) != NULL));
                opline->extended_value = zend_hash_func(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant) + 1);
        } else {
                opline->opcode = ZEND_INIT_FCALL_BY_NAME;
@@ -1672,6 +1684,68 @@ void zend_do_begin_dynamic_function_call(znode *function_name, int prefix_len TS
        zend_do_extended_fcall_begin(TSRMLS_C);
 }
 
+/* type = 1 for constant, 2 for function */
+void zend_resolve_non_class_name(znode *element_name, ulong *fetch_type, int type, int check_namespace TSRMLS_DC)
+{
+       znode tmp;
+       int len;
+       zval **ns;
+       char *lcname, *check_import = memchr(Z_STRVAL(element_name->u.constant), '\\', Z_STRLEN(element_name->u.constant));
+
+       if (Z_STRVAL(element_name->u.constant)[0] == '\\') {
+               check_namespace = 0;
+               check_import = 0;
+       }
+
+       if (check_import && CG(current_import)) {
+               len = check_import - Z_STRVAL(element_name->u.constant);
+               lcname = zend_str_tolower_dup(Z_STRVAL(element_name->u.constant), len);
+               /* Check if first part of compound name is an import name */
+               if (zend_hash_find(CG(current_import), lcname, len+1, (void**)&ns) == SUCCESS) {
+                       if (!check_import && type == 1) {
+                               /* tell zend_get_constant_ex this is an ambiguous T_STRING */
+                               *fetch_type |= IS_CONSTANT_RT_NS_CHECK;
+                       }
+                       /* Substitute import name */
+                       tmp.op_type = IS_CONST;
+                       tmp.u.constant = **ns;
+                       zval_copy_ctor(&tmp.u.constant);
+                       len += 1;
+                       Z_STRLEN(element_name->u.constant) -= len;
+                       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);
+                       if (Z_STRVAL(tmp.u.constant)[0] != '\\') {
+                               /* make this a \global\namespaced\element */
+                               znode global;
+
+                               zend_do_build_namespace_name(&global, NULL, &tmp TSRMLS_CC);
+                               *element_name = global;
+                       } else {
+                               *element_name = tmp;
+                       }
+                       efree(lcname);
+                       return;
+               }
+               efree(lcname);
+       }
+
+       if (check_namespace && CG(current_namespace)) {
+               tmp = *element_name;
+               Z_STRLEN(tmp.u.constant) = sizeof("\\")-1 + Z_STRLEN(element_name->u.constant) + Z_STRLEN_P(CG(current_namespace));
+               Z_STRVAL(tmp.u.constant) = (char *) emalloc(Z_STRLEN(tmp.u.constant)+1);
+               memcpy(Z_STRVAL(tmp.u.constant), Z_STRVAL_P(CG(current_namespace)), Z_STRLEN_P(CG(current_namespace)));
+               memcpy(&(Z_STRVAL(tmp.u.constant)[Z_STRLEN_P(CG(current_namespace))]), "\\", sizeof("\\")-1);
+               memcpy(&(Z_STRVAL(tmp.u.constant)[Z_STRLEN_P(CG(current_namespace)) + sizeof("\\")-1]), Z_STRVAL(element_name->u.constant), Z_STRLEN(element_name->u.constant)+1);
+               STR_FREE(Z_STRVAL(element_name->u.constant));
+               *element_name = tmp;
+               if (type == 1) {
+                       /* We assume we use constant from the current namespace
+                               if it is not prefixed. */
+                       *fetch_type |= IS_CONSTANT_RT_NS_CHECK;
+               }
+       }
+}
+
 void zend_resolve_class_name(znode *class_name, ulong *fetch_type, int check_ns_name TSRMLS_DC)
 {
        char *compound;
@@ -1680,40 +1754,51 @@ void zend_resolve_class_name(znode *class_name, ulong *fetch_type, int check_ns_
        znode tmp;
        int len;
 
-       compound = memchr(Z_STRVAL(class_name->u.constant), ':', Z_STRLEN(class_name->u.constant));
+       compound = memchr(Z_STRVAL(class_name->u.constant), '\\', Z_STRLEN(class_name->u.constant));
        if (compound) {
-               /* This is a compound class name that cotains namespace prefix */
+               /* This is a compound class name that contains namespace prefix */
                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_STRVAL(class_name->u.constant), Z_STRLEN(class_name->u.constant))) {
-                               zend_error(E_COMPILE_ERROR, "'::%s' is a wrong class name", Z_STRVAL(class_name->u.constant));
+                               zend_error(E_COMPILE_ERROR, "'\\%s' is an invalid class name", Z_STRVAL(class_name->u.constant));
                        }
-               } else if (CG(current_import)) {
-                       len = compound - Z_STRVAL(class_name->u.constant);
-                       lcname = zend_str_tolower_dup(Z_STRVAL(class_name->u.constant), len);
-                       /* Check if first part of compound name is an import name */
-                       if (zend_hash_find(CG(current_import), lcname, len+1, (void**)&ns) == SUCCESS) {
-                               /* Substitute import name */
+               } else { 
+                       if (CG(current_import)) {
+                               len = compound - Z_STRVAL(class_name->u.constant);
+                               lcname = zend_str_tolower_dup(Z_STRVAL(class_name->u.constant), len);
+                               /* Check if first part of compound name is an import name */
+                               if (zend_hash_find(CG(current_import), 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_STRLEN(class_name->u.constant) -= len;
+                                       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);
+                               return;
+                       }
+
+                       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_STRLEN(class_name->u.constant) -= len;
-                               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);
                }
        } else if (CG(current_import) || CG(current_namespace)) {
-               /* this is a plain name (without ::) */
+               /* this is a plain name (without \) */
                lcname = zend_str_tolower_dup(Z_STRVAL(class_name->u.constant), Z_STRLEN(class_name->u.constant));
 
                if (CG(current_import) &&
@@ -1726,7 +1811,7 @@ void zend_resolve_class_name(znode *class_name, ulong *fetch_type, int check_ns_
                        zend_class_entry **pce;
 
                        if (check_ns_name) {
-                           /* PHP will need to perform additional cheks at run-time to
+                           /* PHP will need to perform additional checks at run-time to
                               determine if we assume namespace or class name. */
                                *fetch_type |= ZEND_FETCH_CLASS_RT_NS_NAME;
                        }
@@ -1902,7 +1987,7 @@ void zend_release_labels(TSRMLS_D) /* {{{ */
 }
 /* }}} */
 
-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;
 
@@ -1912,12 +1997,21 @@ void zend_do_build_full_name(znode *result, znode *prefix, znode *name TSRMLS_DC
                *result = *prefix;
        }
 
-       length = sizeof("::")-1 + result->u.constant.value.str.len + name->u.constant.value.str.len;
-       result->u.constant.value.str.val = erealloc(result->u.constant.value.str.val, length+1);
-       memcpy(&result->u.constant.value.str.val[result->u.constant.value.str.len], "::", sizeof("::")-1);
-       memcpy(&result->u.constant.value.str.val[result->u.constant.value.str.len + sizeof("::")-1], name->u.constant.value.str.val, name->u.constant.value.str.len+1);
-       STR_FREE(name->u.constant.value.str.val);
-       result->u.constant.value.str.len = length;
+       if (is_class_member) {
+               length = sizeof("::")-1 + result->u.constant.value.str.len + name->u.constant.value.str.len;
+               result->u.constant.value.str.val = erealloc(result->u.constant.value.str.val, length+1);
+               memcpy(&result->u.constant.value.str.val[result->u.constant.value.str.len], "::", sizeof("::")-1);
+               memcpy(&result->u.constant.value.str.val[result->u.constant.value.str.len + sizeof("::")-1], name->u.constant.value.str.val, name->u.constant.value.str.len+1);
+               STR_FREE(name->u.constant.value.str.val);
+               result->u.constant.value.str.len = length;
+       } else {
+               length = sizeof("\\")-1 + result->u.constant.value.str.len + name->u.constant.value.str.len;
+               result->u.constant.value.str.val = erealloc(result->u.constant.value.str.val, length+1);
+               memcpy(&result->u.constant.value.str.val[result->u.constant.value.str.len], "\\", sizeof("\\")-1);
+               memcpy(&result->u.constant.value.str.val[result->u.constant.value.str.len + sizeof("\\")-1], name->u.constant.value.str.val, name->u.constant.value.str.len+1);
+               STR_FREE(name->u.constant.value.str.val);
+               result->u.constant.value.str.len = length;
+       }
 }
 
 int zend_do_begin_class_member_function_call(znode *class_name, znode *method_name TSRMLS_DC)
@@ -1985,15 +2079,14 @@ int zend_do_begin_class_member_function_call(znode *class_name, znode *method_na
                nsname_len = Z_STRLEN(class_node.u.constant);
                if (fetch_type & ZEND_FETCH_CLASS_RT_NS_NAME) {
                        /* Remove namespace name */
-                       nsname = (char *)memchr(nsname, ':', nsname_len) + 2;
+                       nsname = (char *)memchr(nsname, '\\', nsname_len) + 1;
                        nsname_len -= (nsname - Z_STRVAL(class_node.u.constant));
                }
-               len = nsname_len + 2 + Z_STRLEN(method_name->u.constant);
+               len = nsname_len + 1 + Z_STRLEN(method_name->u.constant);
                fname = emalloc(len + 1);
                memcpy(fname, nsname, nsname_len);
-               fname[nsname_len] = ':';
-               fname[nsname_len + 1] = ':';
-               memcpy(fname + nsname_len + 2,
+               fname[nsname_len] = '\\';
+               memcpy(fname + nsname_len + 1,
                        Z_STRVAL(method_name->u.constant),
                        Z_STRLEN(method_name->u.constant)+1);
                zend_str_tolower(fname, len);
@@ -2523,8 +2616,8 @@ static zend_bool zend_do_perform_implementation_check(const zend_function *fe, c
                        char *colon;
 
                        if (fe->common.type != ZEND_USER_FUNCTION ||
-                           strchr(proto->common.arg_info[i].class_name, ':') != NULL ||
-                           (colon = zend_memrchr(fe->common.arg_info[i].class_name, ':', fe->common.arg_info[i].class_name_len)) == NULL ||
+                           strchr(proto->common.arg_info[i].class_name, '\\') != NULL ||
+                           (colon = zend_memrchr(fe->common.arg_info[i].class_name, '\\', fe->common.arg_info[i].class_name_len)) == NULL ||
                            strcasecmp(colon+1, proto->common.arg_info[i].class_name) != 0) {
                                return 0;
                        }
@@ -3771,7 +3864,20 @@ static zend_constant* zend_get_ct_const(const zval *const_name, int all_internal
 {
        zend_constant *c = NULL;
 
-       if (zend_hash_find(EG(zend_constants), Z_STRVAL_P(const_name), Z_STRLEN_P(const_name)+1, (void **) &c) == FAILURE) {
+       if (Z_STRVAL_P(const_name)[0] == '\\') {
+               if (zend_hash_find(EG(zend_constants), Z_STRVAL_P(const_name)+1, Z_STRLEN_P(const_name), (void **) &c) == FAILURE) {
+                       char *lookup_name = zend_str_tolower_dup(Z_STRVAL_P(const_name)+1, Z_STRLEN_P(const_name)-1);
+
+                       if (zend_hash_find(EG(zend_constants), lookup_name, Z_STRLEN_P(const_name), (void **) &c)==SUCCESS) {
+                               if ((c->flags & CONST_CT_SUBST) && !(c->flags & CONST_CS)) {
+                                       efree(lookup_name);
+                                       return c;
+                               }
+                       }
+                       efree(lookup_name);
+                       return NULL;
+               }
+       } else if (zend_hash_find(EG(zend_constants), Z_STRVAL_P(const_name), Z_STRLEN_P(const_name)+1, (void **) &c) == FAILURE) {
                char *lookup_name = zend_str_tolower_dup(Z_STRVAL_P(const_name), Z_STRLEN_P(const_name));
                 
                if (zend_hash_find(EG(zend_constants), lookup_name, Z_STRLEN_P(const_name)+1, (void **) &c)==SUCCESS) {
@@ -3815,112 +3921,144 @@ static int zend_constant_ct_subst(znode *result, zval *const_name, int all_inter
 
 void zend_do_fetch_constant(znode *result, znode *constant_container, znode *constant_name, int mode, zend_bool check_namespace TSRMLS_DC) /* {{{ */
 {
-       ulong fetch_type = 0;
        znode tmp;
+       zend_op *opline;
+       int type;
+       char *check_import;
+       ulong fetch_type = 0;
+       int unknown_should_fatal = 0;
 
-       if (constant_container &&
-           constant_container->op_type == IS_CONST &&
-           Z_TYPE(constant_container->u.constant) == IS_STRING &&
-           Z_STRLEN(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_STRVAL(constant_container->u.constant), Z_STRLEN(constant_container->u.constant));
-
+       if (constant_container) {
+               switch (mode) {
+                       case ZEND_CT:
+                               /* this is a class constant */
+                               type = zend_get_class_fetch_type(Z_STRVAL(constant_container->u.constant), Z_STRLEN(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_STRVAL(constant_container->u.constant), Z_STRLEN(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_STRVAL(constant_container->u.constant), Z_STRLEN(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->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->extended_value = fetch_type & ~ZEND_FETCH_CLASS_RT_NS_NAME;
+                               opline->op1 = *constant_container;
                                opline->op2 = *constant_name;
                                *result = opline->result;
+                               break;
+               }
+               return;
+       }
+       /* namespace constant */
+       switch (mode) {
+               case ZEND_CT:
+                       if (check_namespace == 2) {
+                               unknown_should_fatal = 1;
+                               check_namespace = 0;
+                       }
+                       type = zend_get_class_fetch_type(Z_STRVAL(constant_name->u.constant), Z_STRLEN(constant_name->u.constant));
+                       check_import = memchr(Z_STRVAL(constant_name->u.constant), '\\', Z_STRLEN(constant_name->u.constant));
+                       /* this is a namespace constant, or an unprefixed constant */
+
+                       if (Z_STRVAL(constant_name->u.constant)[0] == '\\') {
+                               check_namespace = 0;
+                               if (memchr(Z_STRVAL(constant_name->u.constant)+1, '\\', Z_STRLEN(constant_name->u.constant)-1)) {
+                                       /* tell engine this is an explicit namespaced constant, which
+                                          results in fatal error if constant not found, see
+                                          zend_execute_API.c::zval_update_constant_ex() */
+                                       unknown_should_fatal = 1;
+                               }
+                               check_import = 0;
+                       } else if (check_import) {
+                               unknown_should_fatal = 1;
+                       }
+                       if (ZEND_FETCH_CLASS_STATIC == type) {
+                               zend_error(E_ERROR, "\"static\\\" is not allowed in compile-time constants");
+                       }
 
-                               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. */
-                                       char *nsname;
-                                       unsigned int nsname_len;
-
-                                       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);
-
-                                       nsname = Z_STRVAL(constant_container->u.constant);
-                                       nsname_len = Z_STRLEN(constant_container->u.constant);
-                                       if (fetch_type & ZEND_FETCH_CLASS_RT_NS_NAME) {
-                                               /* Remove namespace name */
-                                               nsname = (char *)memchr(nsname, ':', nsname_len) + 2;
-                                               nsname_len -= (nsname - Z_STRVAL(constant_container->u.constant));
-                                       }
+                       zend_resolve_non_class_name(constant_name, &fetch_type, 1, check_namespace TSRMLS_CC);
+                       if (zend_constant_ct_subst(result, &constant_name->u.constant, 0 TSRMLS_CC)) {
+                               break;
+                       }
+                       fetch_type &= IS_CONSTANT_RT_NS_CHECK;
+                       if (unknown_should_fatal) {
+                               fetch_type |= ZEND_FETCH_CLASS_RT_NS_CHECK;
+                       }
+                       *result = *constant_name;
+                       result->u.constant.type = IS_CONSTANT | fetch_type;
+                       break;
+               case ZEND_RT:
+                       /* this is a namespace constant, or an unprefixed constant */
+                       /* check_namespace = 2 means namespace\ prefix passed in */
+                       /* check_namespace = 0 means \constant\name passed in */
+                       /* check_namespace = 1 means constant\name passed in or name passed in */
+
+                       if (check_namespace == 2) {
+                               unknown_should_fatal = 1;
+                               check_namespace = 0;
+                       }
+                       type = zend_get_class_fetch_type(Z_STRVAL(constant_name->u.constant), Z_STRLEN(constant_name->u.constant));
+                       if (ZEND_FETCH_CLASS_STATIC == type) {
+                               zend_error(E_ERROR, "\"static::\" is not allowed in compile-time constants");
+                       }
+
+                       if (Z_STRVAL(constant_name->u.constant)[0] == '\\') {
+                               check_namespace = 0;
+                               check_import = 0;
+                               if (memchr(Z_STRVAL(constant_name->u.constant)+1, '\\', Z_STRLEN(constant_name->u.constant)-1)) {
+                                       /* tell engine this is an explicit namespaced constant, which
+                                          results in fatal error if constant not found */
+                                       unknown_should_fatal = 1;
+                               }
 
-                                       Z_TYPE(opline->op1.u.constant) = IS_STRING;
-                                       Z_STRVAL(opline->op1.u.constant) = emalloc(nsname_len + 2 + Z_STRLEN(constant_name->u.constant) + 1);
-                                       zend_str_tolower_copy(Z_STRVAL(opline->op1.u.constant), nsname, nsname_len);
-                                       Z_STRVAL(opline->op1.u.constant)[nsname_len] = ':';
-                                       Z_STRVAL(opline->op1.u.constant)[nsname_len+1] = ':';
-                                       memcpy(Z_STRVAL(opline->op1.u.constant)+nsname_len+2, Z_STRVAL(constant_name->u.constant), Z_STRLEN(constant_name->u.constant) + 1);
-                                       Z_STRLEN(opline->op1.u.constant) = nsname_len + 2 + Z_STRLEN(constant_name->u.constant);
-                                       opline->extended_value = zend_hash_func(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant) + 1);
+                               /* we can only check for compile-time if the constant is explicitly
+                                       \top\level */
+check_compile_time:
+                               if (zend_constant_ct_subst(result, &constant_name->u.constant, 1 TSRMLS_CC)) {
+                                       break;
                                }
+                       } else {
+                               check_import = memchr(Z_STRVAL(constant_name->u.constant), '\\', Z_STRLEN(constant_name->u.constant));
+                               if (check_import) {
+                                       unknown_should_fatal = 1;
+                               }
+
+                               if (!check_namespace || !CG(current_namespace)) {
+                                       goto check_compile_time;
+                               }
+                       }
+                       /* we reach here if the constant name is ambiguous (not \this) */
+                       /* we will store nsname and <whatever>, where
+                               <whatever> is the actual constant name passed in (foo or foo/foo)
+                               and ZEND_FETCH_CONSTANT will first look for nsname/<whatever> and then
+                               <whatever> after current_import is applied to <whatever> */
+                       opline = get_next_op(CG(active_op_array) TSRMLS_CC);
+                       if (unknown_should_fatal) {
+                               fetch_type = ZEND_FETCH_CLASS_RT_NS_CHECK;
                        }
+                       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);
+                       zend_resolve_non_class_name(constant_name, &fetch_type, 1, check_namespace TSRMLS_CC);
+                       opline->extended_value = fetch_type;
+                       opline->op2 = *constant_name;
                        break;
        }
 }
@@ -5013,7 +5151,7 @@ void zend_do_build_namespace_name(znode *result, znode *prefix, znode *name TSRM
                *result = *prefix;
                if (Z_TYPE(result->u.constant) == IS_STRING &&
                    Z_STRLEN(result->u.constant) == 0) {
-                       /* namespace:: */
+                       /* namespace\ */
                        if (CG(current_namespace)) {
                                znode tmp;
 
@@ -5031,7 +5169,7 @@ void zend_do_build_namespace_name(znode *result, znode *prefix, znode *name TSRM
                Z_STRLEN(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);
 }
 /* }}} */
 
@@ -5094,10 +5232,10 @@ void zend_do_use(znode *ns_name, znode *new_name, int is_global TSRMLS_DC) /* {{
        } else {
                char *p;
 
-               /* The form "use A::B" is eqivalent to "use A::B as B".
-                  So we extract the last part of compound name ti use as a new_name */
+               /* 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;
-               p = zend_memrchr(Z_STRVAL_P(ns), ':', Z_STRLEN_P(ns));
+               p = zend_memrchr(Z_STRVAL_P(ns), '\\', Z_STRLEN_P(ns));
                if (p) {
                        ZVAL_STRING(name, p+1, 1);
                } else {
@@ -5118,16 +5256,15 @@ void zend_do_use(znode *ns_name, znode *new_name, int is_global TSRMLS_DC) /* {{
 
        if (CG(current_namespace)) {
                /* Prefix import name with current namespace name to avoid conflicts with classes */
-               char *ns_name = emalloc(Z_STRLEN_P(CG(current_namespace)) + 2 + Z_STRLEN_P(name) + 1);
+               char *ns_name = emalloc(Z_STRLEN_P(CG(current_namespace)) + 1 + Z_STRLEN_P(name) + 1);
 
                zend_str_tolower_copy(ns_name, Z_STRVAL_P(CG(current_namespace)), Z_STRLEN_P(CG(current_namespace)));
-               ns_name[Z_STRLEN_P(CG(current_namespace))] = ':';
-               ns_name[Z_STRLEN_P(CG(current_namespace))+1] = ':';
-               memcpy(ns_name+Z_STRLEN_P(CG(current_namespace))+2, lcname, Z_STRLEN_P(name)+1);
-               if (zend_hash_exists(CG(class_table), ns_name, Z_STRLEN_P(CG(current_namespace)) + 2 + Z_STRLEN_P(name)+1)) {
+               ns_name[Z_STRLEN_P(CG(current_namespace))] = '\\';
+               memcpy(ns_name+Z_STRLEN_P(CG(current_namespace))+1, lcname, Z_STRLEN_P(name)+1);
+               if (zend_hash_exists(CG(class_table), ns_name, Z_STRLEN_P(CG(current_namespace)) + 1 + Z_STRLEN_P(name)+1)) {
                        char *tmp = zend_str_tolower_dup(Z_STRVAL_P(ns), Z_STRLEN_P(ns));
 
-                       if (Z_STRLEN_P(ns) != Z_STRLEN_P(CG(current_namespace)) + 2 + Z_STRLEN_P(name) ||
+                       if (Z_STRLEN_P(ns) != Z_STRLEN_P(CG(current_namespace)) + 1 + Z_STRLEN_P(name) ||
                                memcmp(tmp, ns_name, Z_STRLEN_P(ns))) {
                                zend_error(E_COMPILE_ERROR, "Cannot use %s as %s because the name is already in use", Z_STRVAL_P(ns), Z_STRVAL_P(name));
                        }
index cb76bc478065da596a18a5ab5a83047821258008..25c2c5f13d1541978338a6fa413dce7ad5bba0bf 100644 (file)
@@ -359,6 +359,7 @@ ZEND_API char *zend_get_compiled_filename(TSRMLS_D);
 ZEND_API int zend_get_compiled_lineno(TSRMLS_D);
 ZEND_API size_t zend_get_scanned_file_offset(TSRMLS_D);
 
+void zend_resolve_non_class_name(znode *element_name, ulong *fetch_type, int type, int check_namespace TSRMLS_DC);
 void zend_resolve_class_name(znode *class_name, ulong *fetch_type, int check_ns_name TSRMLS_DC);
 ZEND_API char* zend_get_compiled_variable_name(const zend_op_array *op_array, zend_uint var, int* name_len);
 
@@ -427,7 +428,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);
index 0b76ab28adadd2a15575f27117906d3525949818..4bff7b6e7e999c51666db2cd48405e2e1a650325 100644 (file)
@@ -277,27 +277,27 @@ ZEND_API int zend_get_constant_ex(const char *name, uint name_len, zval *result,
        zend_constant *c;
        int retval = 1;
        char *colon;
+       zend_class_entry *ce = NULL;
+       char *class_name;
+       zval **ret_constant;
 
        /* Skip leading :: */
-       if (name[0] == ':' && name[1] == ':') {
-               name += 2;
-               name_len -= 2;
+       if (name[0] == '\\') {
+               name += 1;
+               name_len -= 1;
                flags &= ZEND_FETCH_CLASS_SILENT;
        }
 
-       
+
        if ((colon = zend_memrchr(name, ':', name_len)) &&
-           colon > name && 
-           *(colon-1) == ':') {
-               /* compound constant name */
-               zend_class_entry *ce = NULL;
+           colon > name && (*(colon - 1) == ':')) {
                int class_name_len = colon - name - 1;
                int const_name_len = name_len - class_name_len - 2;
-               char *constant_name = constant_name = colon + 1;
-               char *class_name = estrndup(name, class_name_len);
-               char *lcname = zend_str_tolower_dup(class_name, class_name_len);
-               zval **ret_constant;
+               char *constant_name = colon + 1;
+               char *lcname;
 
+               class_name = estrndup(name, class_name_len);
+               lcname = zend_str_tolower_dup(class_name, class_name_len);
                if (!scope) {
                        if (EG(in_execution)) {
                                scope = EG(scope);
@@ -334,59 +334,68 @@ ZEND_API int zend_get_constant_ex(const char *name, uint name_len, zval *result,
                        }
                        efree(lcname);
                } else {
-                       /* Check for namespace constant */
-                       char *nsname;
-                       unsigned int nsname_len;
-
-                       /* Concatenate lowercase namespace name and constant name */
-                       lcname = erealloc(lcname, class_name_len + 2 + const_name_len + 1);
-                       lcname[class_name_len] = ':';
-                       lcname[class_name_len+1] = ':';
-                       memcpy(lcname + class_name_len + 2, constant_name, const_name_len + 1);
-
-                       nsname = lcname;
-                       nsname_len = class_name_len + 2 + const_name_len;
-                       if (flags & ZEND_FETCH_CLASS_RT_NS_NAME) {
-                               nsname = (char *)memchr(nsname, ':', nsname_len) + 2;
-                               nsname_len -= (nsname - lcname);
-                       }
-
-                       if (zend_hash_find(EG(zend_constants), nsname, nsname_len+1, (void **) &c) == SUCCESS) {
-                               efree(lcname);
-                               efree(class_name);
-                               *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);
-
                        if ((flags & IS_CONSTANT_RT_NS_CHECK) == 0) {
                                /* Check for class */
                                ce = zend_fetch_class(class_name, class_name_len, flags TSRMLS_CC);
                        }
                }
-
                if (retval && ce) {
                        if (zend_hash_find(&ce->constants_table, 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);
-                                       return zend_get_constant(name, name_len, result TSRMLS_CC);
-                               }
                                if ((flags & ZEND_FETCH_CLASS_SILENT) == 0) {
-                                       zend_error(E_ERROR, "Class '%s' not found", class_name);
+                                       zend_error(E_ERROR, "Undefined class constant '%s::%s'", class_name, constant_name);
                                }
                        }
+               } else if (!ce) {
                        retval = 0;
                }
+               goto finish;
+       }
+
+       if ((colon = zend_memrchr(name, '\\', name_len)) &&
+           colon > name) {
+               /* compound constant name */
+               int class_name_len = colon - name;
+               int const_name_len = name_len - class_name_len - 1;
+               char *constant_name = colon + 1;
+               char *lcname;
+               char *nsname;
+               unsigned int nsname_len;
+
+               class_name = estrndup(name, class_name_len);
+               lcname = zend_str_tolower_dup(class_name, class_name_len);
+               /* Check for namespace constant */
+
+               /* Concatenate lowercase namespace name and constant name */
+               lcname = erealloc(lcname, class_name_len + 1 + const_name_len + 1);
+               lcname[class_name_len] = '\\';
+               memcpy(lcname + class_name_len + 1, constant_name, const_name_len + 1);
+
+               nsname = lcname;
+               nsname_len = class_name_len + 1 + const_name_len;
+
+               if (zend_hash_find(EG(zend_constants), nsname, nsname_len+1, (void **) &c) == SUCCESS) {
+                       efree(lcname);
+                       efree(class_name);
+                       *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);
+
+               if ((flags & IS_CONSTANT_RT_NS_CHECK) != 0) {
+                       name = constant_name;
+                       name_len = const_name_len;
+                       efree(class_name);
+                       return zend_get_constant(name, name_len, result TSRMLS_CC);
+               }
+               retval = 0;
+finish:
                efree(class_name);
 
                if (retval) {
index 808505366d7d3469278b9a23164626249e89022b..8e2c734091af145625b0c194090550410207ffd1 100644 (file)
@@ -504,29 +504,64 @@ ZEND_API int zval_update_constant_ex(zval **pp, void *arg, zend_class_entry *sco
                is_ref = Z_ISREF_P(p);
 
                if (!zend_get_constant_ex(p->value.str.val, p->value.str.len, &const_value, scope, Z_REAL_TYPE_P(p) TSRMLS_CC)) {
-                       if ((colon = zend_memrchr(Z_STRVAL_P(p), ':', Z_STRLEN_P(p))) &&
-                           colon > Z_STRVAL_P(p) &&
-                           *(colon-1) == ':') {
-                               if ((Z_TYPE_P(p) & IS_CONSTANT_RT_NS_CHECK) == 0) {
-                                       zend_error(E_ERROR, "Undefined class constant '%s'", Z_STRVAL_P(p));
-                               } else if (Z_TYPE_P(p) & ZEND_FETCH_CLASS_RT_NS_CHECK) {
-                                       zend_error(E_ERROR, "Undefined constant '%s'", Z_STRVAL_P(p));
-                               }
+                       char *actual = Z_STRVAL_P(p);
+
+                       if ((colon = zend_memrchr(Z_STRVAL_P(p), ':', Z_STRLEN_P(p)))) {
+                               zend_error(E_ERROR, "Undefined class constant '%s'", Z_STRVAL_P(p));
                                Z_STRLEN_P(p) -= ((colon - Z_STRVAL_P(p)) + 1);
                                if (inline_change) {
-                                       colon = estrndup(colon + 1, Z_STRLEN_P(p));
+                                       colon = estrndup(colon, Z_STRLEN_P(p));
                                        efree(Z_STRVAL_P(p));
                                        Z_STRVAL_P(p) = colon;
                                } else {
                                        Z_STRVAL_P(p) = colon + 1;
                                }
-                       } else if (Z_TYPE_P(p) & ZEND_FETCH_CLASS_RT_NS_CHECK) {
-                               zend_error(E_ERROR, "Undefined constant '%s'", Z_STRVAL_P(p));
-                       }
-                       zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",  Z_STRVAL_P(p),  Z_STRVAL_P(p));
-                       p->type = IS_STRING;
-                       if (!inline_change) {
-                               zval_copy_ctor(p);
+                       } else {
+                               char *save = actual;
+                               int actual_len = Z_STRLEN_P(p);
+                               if (Z_TYPE_P(p) & IS_CONSTANT_RT_NS_CHECK) {
+                                       actual = zend_memrchr(actual, '\\', actual_len) + 1;
+                                       actual_len -= (actual - Z_STRVAL_P(p));
+                                       if (inline_change) {
+                                               actual = estrndup(actual, actual_len);
+                                               Z_STRVAL_P(p) = actual;
+                                               Z_STRLEN_P(p) = actual_len;
+                                       }
+                               }
+                               if (actual[0] == '\\') {
+                                       if (inline_change) {
+                                               memmove(Z_STRVAL_P(p), Z_STRVAL_P(p)+1, Z_STRLEN_P(p));
+                                               --Z_STRLEN_P(p);
+                                       } else {
+                                               ++actual;
+                                       }
+                                       --actual_len;
+                               }
+                               if (Z_TYPE_P(p) & ZEND_FETCH_CLASS_RT_NS_CHECK) {
+                                       int fix_save = 0;
+                                       if (save[0] == '\\') {
+                                               save++;
+                                               fix_save = 1;
+                                       }
+                                       zend_error(E_ERROR, "Undefined constant '%s'", save);
+                                       if (fix_save) {
+                                               save--;
+                                       }
+                                       if (inline_change) {
+                                               efree(save);
+                                       }
+                                       save = NULL;
+                               }
+                               if (inline_change && save && save != actual) {
+                                       efree(save);
+                               }
+                               zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",  actual,  actual);
+                               p->type = IS_STRING;
+                               if (!inline_change) {
+                                       Z_STRVAL_P(p) = actual;
+                                       Z_STRLEN_P(p) = actual_len;
+                                       zval_copy_ctor(p);
+                               }
                        }
                } else {
                        if (inline_change) {
@@ -571,20 +606,29 @@ ZEND_API int zval_update_constant_ex(zval **pp, void *arg, zend_class_entry *sco
                                continue;
                        }
                        if (!zend_get_constant_ex(str_index, str_index_len - 3, &const_value, scope, str_index[str_index_len - 2] TSRMLS_CC)) {
-                               if ((colon = zend_memrchr(str_index, ':', str_index_len - 3)) &&
-                                   colon > str_index &&
-                                   *(colon-1) == ':') {
-                                       if ((str_index[str_index_len - 2] & IS_CONSTANT_RT_NS_CHECK) == 0) {
-                                               zend_error(E_ERROR, "Undefined class constant '%s'", str_index);
-                                       } else if (str_index[str_index_len - 2] & ZEND_FETCH_CLASS_RT_NS_CHECK) {
-                                               zend_error(E_ERROR, "Undefined constant '%s'", str_index);
-                                       }
+                               char *actual, *save = str_index;
+                               if ((colon = zend_memrchr(str_index, ':', str_index_len - 3))) {
+                                       zend_error(E_ERROR, "Undefined class constant '%s'", str_index);
                                        str_index_len -= ((colon - str_index) + 1);
-                                       str_index = colon + 1;
-                               } else if (str_index[str_index_len - 2] & ZEND_FETCH_CLASS_RT_NS_CHECK) {
-                                       zend_error(E_ERROR, "Undefined constant '%s'", str_index);
-                               } 
-                               zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",     str_index, str_index);
+                                       str_index = colon;
+                               } else {
+                                       if (str_index[str_index_len - 2] & IS_CONSTANT_RT_NS_CHECK) {
+                                               actual = zend_memrchr(str_index, '\\', str_index_len - 3) + 1;
+                                               str_index_len -= (actual - str_index);
+                                               str_index = actual;
+                                       }
+                                       if (str_index[0] == '\\') {
+                                               ++str_index;
+                                               --str_index_len;
+                                       }
+                                       if (save[0] == '\\') {
+                                               ++save;
+                                       }
+                                       if (str_index[str_index_len - 2] & ZEND_FETCH_CLASS_RT_NS_CHECK) {
+                                               zend_error(E_ERROR, "Undefined constant '%s'", save);
+                                       }
+                                       zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",     str_index, str_index);
+                               }
                                ZVAL_STRINGL(&const_value, str_index, str_index_len-3, 1);
                        }
 
@@ -983,9 +1027,9 @@ ZEND_API int zend_lookup_class_ex(const char *name, int name_length, int use_aut
        lc_free = lc_name = do_alloca(name_length + 1, use_heap);
        zend_str_tolower_copy(lc_name, name, name_length);
 
-       if (lc_name[0] == ':' && lc_name[1] == ':') {
-               lc_name += 2;
-               name_length -= 2;
+       if (lc_name[0] == '\\') {
+               lc_name += 1;
+               name_length -= 1;
        }
 
        if (zend_hash_find(EG(class_table), lc_name, name_length + 1, (void **) ce) == SUCCESS) {
@@ -1468,7 +1512,7 @@ check_fetch_type:
                        char *php_name;
                        uint php_name_len;
 
-                       php_name = zend_memrchr(class_name, ':', class_name_len);
+                       php_name = zend_memrchr(class_name, '\\', class_name_len);
                        if (php_name) {
                                php_name++;
                                php_name_len = class_name_len - (php_name - class_name);
index 57844cede42e926b604e809e2818c655f313d529..b17a1abdf54f2cf80dde3d01b1df667990314af8 100644 (file)
 %token T_NAMESPACE
 %token T_NS_C
 %token T_DIR
+%token T_NS_SEPARATOR
 
 %% /* Rules */
 
@@ -161,7 +162,7 @@ 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:
@@ -182,8 +183,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 T_STRING { zend_do_use(&$2, NULL, 1 TSRMLS_CC); }
+       |       T_NS_SEPARATOR T_STRING T_AS T_STRING { zend_do_use(&$2, &$4, 1 TSRMLS_CC); }
 ;
 
 constant_declaration:
@@ -665,12 +666,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_STRING(&$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);}
@@ -689,18 +693,16 @@ function_call:
 ;
 
 class_name:
-               T_STRING { $$ = $1; }
-       |       T_STATIC { $$.op_type = IS_CONST; ZVAL_STRINGL(&$$.u.constant, "static", sizeof("static")-1, 1);}
-       |       T_NAMESPACE { $$.op_type = IS_CONST; ZVAL_EMPTY_STRING(&$$.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_STRINGL(&$$.u.constant, "static", sizeof("static")-1, 1);}
+       |       namespace_name { $$ = $1; }
+       |       T_NAMESPACE T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_STRING(&$$.u.constant);  zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); }
+       |       T_NS_SEPARATOR namespace_name { char *tmp = estrndup(Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+2); memcpy(&(tmp[1]), Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); tmp[0] = '\\'; efree(Z_STRVAL($2.u.constant)); Z_STRVAL($2.u.constant) = tmp; ++Z_STRLEN($2.u.constant); $$ = $2; }
 ;
 
 fully_qualified_class_name:
-               T_STRING { $$ = $1; }
-       |       T_NAMESPACE { $$.op_type = IS_CONST; ZVAL_EMPTY_STRING(&$$.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_STRING(&$$.u.constant);  zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); }
+       |       T_NS_SEPARATOR namespace_name { char *tmp = estrndup(Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+2); memcpy(&(tmp[1]), Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); tmp[0] = '\\'; efree(Z_STRVAL($2.u.constant)); Z_STRVAL($2.u.constant) = tmp; ++Z_STRLEN($2.u.constant); $$ = $2; }
 ;
 
 
@@ -766,8 +768,9 @@ common_scalar:
 
 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_STRING(&$$.u.constant);  zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); $3 = $$; zend_do_fetch_constant(&$$, NULL, &$3, ZEND_CT, 2 TSRMLS_CC); }
+       |       T_NS_SEPARATOR namespace_name { char *tmp = estrndup(Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+2); memcpy(&(tmp[1]), Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); tmp[0] = '\\'; efree(Z_STRVAL($2.u.constant)); Z_STRVAL($2.u.constant) = tmp; ++Z_STRLEN($2.u.constant); 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; }
@@ -775,14 +778,15 @@ static_scalar: /* compile-time evaluated scalars */
 ;
 
 static_class_constant:
-               class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_fetch_constant(&$$, &$1, &$3, ZEND_CT, 0 TSRMLS_CC); }
+               class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_fetch_constant(&$$, &$1, &$3, ZEND_CT, 2 TSRMLS_CC); }
 ;
 
 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_STRING(&$$.u.constant);  zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); $3 = $$; zend_do_fetch_constant(&$$, NULL, &$3, ZEND_RT, 2 TSRMLS_CC); }
+       |       T_NS_SEPARATOR namespace_name { char *tmp = estrndup(Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+2); memcpy(&(tmp[1]), Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); tmp[0] = '\\'; efree(Z_STRVAL($2.u.constant)); Z_STRVAL($2.u.constant) = tmp; ++Z_STRLEN($2.u.constant); zend_do_fetch_constant(&$$, NULL, &$2, ZEND_RT, 0 TSRMLS_CC); }
        |       common_scalar                   { $$ = $1; }
        |       '"' encaps_list '"'     { $$ = $2; }
        |       T_START_HEREDOC encaps_list T_END_HEREDOC { $$ = $2; }
@@ -989,7 +993,7 @@ isset_variables:
 ;
 
 class_constant:
-               class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_fetch_constant(&$$, &$1, &$3, ZEND_RT, 0 TSRMLS_CC); }
+               class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_fetch_constant(&$$, &$1, &$3, ZEND_RT, 2 TSRMLS_CC); }
        |       variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_fetch_constant(&$$, &$1, &$3, ZEND_RT, 0 TSRMLS_CC); }
 ;
 
index 6e57f57f31c6e2936dce948913a0eef130b9ce8c..05a698a321f5de26a302213d0eeb854cd0385c3b 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Fri Oct 24 12:09:58 2008 */
+/* Generated by re2c 0.13.6.dev on Tue Nov  4 01:40:34 2008 */
 #line 1 "Zend/zend_language_scanner.l"
 /*
    +----------------------------------------------------------------------+
@@ -978,7 +978,7 @@ yyc_INITIAL:
 yy3:
                YYDEBUG(3, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1637 "Zend/zend_language_scanner.l"
+#line 1641 "Zend/zend_language_scanner.l"
                {
 
 inline_char_handler:
@@ -1042,7 +1042,7 @@ yy5:
 yy6:
                YYDEBUG(6, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1625 "Zend/zend_language_scanner.l"
+#line 1629 "Zend/zend_language_scanner.l"
                {
        if (CG(short_tags)) {
                zendlval->value.str.val = yytext; /* no copying - intentional */
@@ -1061,7 +1061,7 @@ yy7:
                if ((yych = *YYCURSOR) == '=') goto yy43;
                YYDEBUG(8, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1602 "Zend/zend_language_scanner.l"
+#line 1606 "Zend/zend_language_scanner.l"
                {
        if (CG(asp_tags)) {
                zendlval->value.str.val = yytext; /* no copying - intentional */
@@ -1259,7 +1259,7 @@ yy35:
                ++YYCURSOR;
                YYDEBUG(38, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1566 "Zend/zend_language_scanner.l"
+#line 1570 "Zend/zend_language_scanner.l"
                {
        HANDLE_NEWLINES(yytext, yyleng);
        zendlval->value.str.val = yytext; /* no copying - intentional */
@@ -1295,7 +1295,7 @@ yy43:
                ++YYCURSOR;
                YYDEBUG(44, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1576 "Zend/zend_language_scanner.l"
+#line 1580 "Zend/zend_language_scanner.l"
                {
        if (CG(asp_tags)) {
                zendlval->value.str.val = yytext; /* no copying - intentional */
@@ -1313,7 +1313,7 @@ yy45:
                ++YYCURSOR;
                YYDEBUG(46, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1589 "Zend/zend_language_scanner.l"
+#line 1593 "Zend/zend_language_scanner.l"
                {
        if (CG(short_tags)) {
                zendlval->value.str.val = yytext; /* no copying - intentional */
@@ -1352,7 +1352,7 @@ yy50:
 yy51:
                YYDEBUG(51, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1615 "Zend/zend_language_scanner.l"
+#line 1619 "Zend/zend_language_scanner.l"
                {
        zendlval->value.str.val = yytext; /* no copying - intentional */
        zendlval->value.str.len = yyleng;
@@ -1452,7 +1452,7 @@ yy56:
 yy57:
                YYDEBUG(57, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2017 "Zend/zend_language_scanner.l"
+#line 2021 "Zend/zend_language_scanner.l"
                {
        zendlval->value.lval = (long) '{';
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@ -1476,7 +1476,7 @@ yy59:
 yy60:
                YYDEBUG(60, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2042 "Zend/zend_language_scanner.l"
+#line 2046 "Zend/zend_language_scanner.l"
                {
        zend_scan_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC);
        return T_ENCAPSED_AND_WHITESPACE;
@@ -1493,7 +1493,7 @@ yy62:
                ++YYCURSOR;
                YYDEBUG(63, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2120 "Zend/zend_language_scanner.l"
+#line 2124 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        return '`';
@@ -1586,7 +1586,7 @@ yy68:
 yy70:
                YYDEBUG(70, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2047 "Zend/zend_language_scanner.l"
+#line 2051 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        zend_scan_escape_string(zendlval, yytext, yyleng, '`' TSRMLS_CC);
@@ -1626,7 +1626,7 @@ yy74:
 yy76:
                YYDEBUG(76, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1705 "Zend/zend_language_scanner.l"
+#line 1709 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
@@ -1638,7 +1638,7 @@ yy77:
                ++YYCURSOR;
                YYDEBUG(78, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1359 "Zend/zend_language_scanner.l"
+#line 1363 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC);
        return T_DOLLAR_OPEN_CURLY_BRACES;
@@ -1654,7 +1654,7 @@ yy80:
                ++YYCURSOR;
                YYDEBUG(81, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1697 "Zend/zend_language_scanner.l"
+#line 1701 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
@@ -1680,7 +1680,7 @@ yy83:
                ++YYCURSOR;
                YYDEBUG(84, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1687 "Zend/zend_language_scanner.l"
+#line 1691 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
@@ -1745,7 +1745,7 @@ yy87:
                }
                YYDEBUG(89, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1797 "Zend/zend_language_scanner.l"
+#line 1801 "Zend/zend_language_scanner.l"
                {
        yymore();
 }
@@ -1756,7 +1756,7 @@ yy90:
                if ((yych = *YYCURSOR) == '/') goto yy92;
                YYDEBUG(91, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1815 "Zend/zend_language_scanner.l"
+#line 1819 "Zend/zend_language_scanner.l"
                {
        yymore();
 }
@@ -1766,7 +1766,7 @@ yy92:
                ++YYCURSOR;
                YYDEBUG(93, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1809 "Zend/zend_language_scanner.l"
+#line 1813 "Zend/zend_language_scanner.l"
                {
        HANDLE_NEWLINES(yytext, yyleng);
        BEGIN(ST_IN_SCRIPTING);
@@ -1829,7 +1829,7 @@ yy96:
                }
                YYDEBUG(98, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1797 "Zend/zend_language_scanner.l"
+#line 1801 "Zend/zend_language_scanner.l"
                {
        yymore();
 }
@@ -1840,7 +1840,7 @@ yy99:
                if ((yych = *YYCURSOR) == '/') goto yy101;
                YYDEBUG(100, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1815 "Zend/zend_language_scanner.l"
+#line 1819 "Zend/zend_language_scanner.l"
                {
        yymore();
 }
@@ -1850,7 +1850,7 @@ yy101:
                ++YYCURSOR;
                YYDEBUG(102, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1801 "Zend/zend_language_scanner.l"
+#line 1805 "Zend/zend_language_scanner.l"
                {
        CG(doc_comment) = estrndup(yytext, yyleng);
        CG(doc_comment_len) = yyleng;
@@ -1945,7 +1945,7 @@ yy106:
 yy107:
                YYDEBUG(107, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2017 "Zend/zend_language_scanner.l"
+#line 2021 "Zend/zend_language_scanner.l"
                {
        zendlval->value.lval = (long) '{';
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@ -1970,7 +1970,7 @@ yy109:
 yy110:
                YYDEBUG(110, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2024 "Zend/zend_language_scanner.l"
+#line 2028 "Zend/zend_language_scanner.l"
                {
        zend_scan_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC);
        return T_ENCAPSED_AND_WHITESPACE;
@@ -1987,7 +1987,7 @@ yy112:
                ++YYCURSOR;
                YYDEBUG(113, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2114 "Zend/zend_language_scanner.l"
+#line 2118 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        return '"';
@@ -2083,7 +2083,7 @@ yy118:
 yy120:
                YYDEBUG(120, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2035 "Zend/zend_language_scanner.l"
+#line 2039 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        zend_scan_escape_string(zendlval, yytext, yyleng, '"' TSRMLS_CC);
@@ -2123,7 +2123,7 @@ yy124:
 yy126:
                YYDEBUG(126, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1705 "Zend/zend_language_scanner.l"
+#line 1709 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
@@ -2135,7 +2135,7 @@ yy127:
                ++YYCURSOR;
                YYDEBUG(128, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1359 "Zend/zend_language_scanner.l"
+#line 1363 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC);
        return T_DOLLAR_OPEN_CURLY_BRACES;
@@ -2151,7 +2151,7 @@ yy130:
                ++YYCURSOR;
                YYDEBUG(131, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1697 "Zend/zend_language_scanner.l"
+#line 1701 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
@@ -2177,7 +2177,7 @@ yy133:
                ++YYCURSOR;
                YYDEBUG(134, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1687 "Zend/zend_language_scanner.l"
+#line 1691 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
@@ -2196,7 +2196,7 @@ yyc_ST_END_HEREDOC:
        ++YYCURSOR;
        YYDEBUG(138, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 2003 "Zend/zend_language_scanner.l"
+#line 2007 "Zend/zend_language_scanner.l"
        {
        YYCURSOR += CG(heredoc_len) - 1;
        yyleng = CG(heredoc_len);
@@ -2265,7 +2265,7 @@ yyc_ST_HEREDOC:
 yy141:
                YYDEBUG(141, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2061 "Zend/zend_language_scanner.l"
+#line 2065 "Zend/zend_language_scanner.l"
                {
        zend_scan_escape_string(zendlval, yytext, yyleng, 0 TSRMLS_CC);
        return T_ENCAPSED_AND_WHITESPACE;
@@ -2316,7 +2316,7 @@ yy143:
 yy144:
                YYDEBUG(144, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2017 "Zend/zend_language_scanner.l"
+#line 2021 "Zend/zend_language_scanner.l"
                {
        zendlval->value.lval = (long) '{';
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@ -2573,7 +2573,7 @@ yy161:
 yy163:
                YYDEBUG(163, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2066 "Zend/zend_language_scanner.l"
+#line 2070 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        zend_scan_escape_string(zendlval, yytext, yyleng, 0 TSRMLS_CC);
@@ -2678,7 +2678,7 @@ yy170:
                ++YYCURSOR;
                YYDEBUG(171, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1966 "Zend/zend_language_scanner.l"
+#line 1970 "Zend/zend_language_scanner.l"
                {
        char *end = yytext + yyleng - 1;
 
@@ -2975,7 +2975,7 @@ yy191:
 yy193:
                YYDEBUG(193, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1705 "Zend/zend_language_scanner.l"
+#line 1709 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
@@ -2987,7 +2987,7 @@ yy194:
                ++YYCURSOR;
                YYDEBUG(195, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1359 "Zend/zend_language_scanner.l"
+#line 1363 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC);
        return T_DOLLAR_OPEN_CURLY_BRACES;
@@ -3003,7 +3003,7 @@ yy197:
                ++YYCURSOR;
                YYDEBUG(198, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1697 "Zend/zend_language_scanner.l"
+#line 1701 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
@@ -3029,7 +3029,7 @@ yy200:
                ++YYCURSOR;
                YYDEBUG(201, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1687 "Zend/zend_language_scanner.l"
+#line 1691 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
@@ -3143,33 +3143,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':
@@ -3178,12 +3177,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':
@@ -3201,11 +3200,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':
@@ -3215,20 +3214,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);
@@ -3236,23 +3236,23 @@ yy204:
                YYDEBUG(-1, yych);
                switch ((yych = *YYCURSOR)) {
                case 'C':
-               case 'c':       goto yy794;
+               case 'c':       goto yy796;
                case 'L':
-               case 'l':       goto yy795;
+               case 'l':       goto yy797;
                case 'M':
-               case 'm':       goto yy796;
+               case 'm':       goto yy798;
                case 'N':
-               case 'n':       goto yy797;
+               case 'n':       goto yy799;
                case 'V':
-               case 'v':       goto yy798;
+               case 'v':       goto yy800;
                case 'X':
-               case 'x':       goto yy799;
-               default:        goto yy280;
+               case 'x':       goto yy801;
+               default:        goto yy282;
                }
 yy205:
                YYDEBUG(205, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1729 "Zend/zend_language_scanner.l"
+#line 1733 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        zendlval->type = IS_STRING;
@@ -3264,21 +3264,21 @@ yy206:
                yych = *++YYCURSOR;
                if (yych <= 'O') {
                        if (yych <= 'H') {
-                               if (yych == 'E') goto yy776;
-                               goto yy280;
+                               if (yych == 'E') goto yy778;
+                               goto yy282;
                        } else {
-                               if (yych <= 'I') goto yy777;
-                               if (yych <= 'N') goto yy280;
-                               goto yy778;
+                               if (yych <= 'I') goto yy779;
+                               if (yych <= 'N') goto yy282;
+                               goto yy780;
                        }
                } else {
                        if (yych <= 'h') {
-                               if (yych == 'e') goto yy776;
-                               goto yy280;
+                               if (yych == 'e') goto yy778;
+                               goto yy282;
                        } else {
-                               if (yych <= 'i') goto yy777;
-                               if (yych == 'o') goto yy778;
-                               goto yy280;
+                               if (yych <= 'i') goto yy779;
+                               if (yych == 'o') goto yy780;
+                               goto yy282;
                        }
                }
 yy207:
@@ -3286,21 +3286,21 @@ yy207:
                yych = *++YYCURSOR;
                if (yych <= 'U') {
                        if (yych <= 'N') {
-                               if (yych == 'I') goto yy755;
-                               goto yy280;
+                               if (yych == 'I') goto yy757;
+                               goto yy282;
                        } else {
-                               if (yych <= 'O') goto yy756;
-                               if (yych <= 'T') goto yy280;
-                               goto yy757;
+                               if (yych <= 'O') goto yy758;
+                               if (yych <= 'T') goto yy282;
+                               goto yy759;
                        }
                } else {
                        if (yych <= 'n') {
-                               if (yych == 'i') goto yy755;
-                               goto yy280;
+                               if (yych == 'i') goto yy757;
+                               goto yy282;
                        } else {
-                               if (yych <= 'o') goto yy756;
-                               if (yych == 'u') goto yy757;
-                               goto yy280;
+                               if (yych <= 'o') goto yy758;
+                               if (yych == 'u') goto yy759;
+                               goto yy282;
                        }
                }
 yy208:
@@ -3308,43 +3308,43 @@ yy208:
                yych = *++YYCURSOR;
                if (yych <= 'O') {
                        if (yych <= 'K') {
-                               if (yych == 'A') goto yy727;
-                               goto yy280;
+                               if (yych == 'A') goto yy729;
+                               goto yy282;
                        } else {
-                               if (yych <= 'L') goto yy728;
-                               if (yych <= 'N') goto yy280;
-                               goto yy729;
+                               if (yych <= 'L') goto yy730;
+                               if (yych <= 'N') goto yy282;
+                               goto yy731;
                        }
                } else {
                        if (yych <= 'k') {
-                               if (yych == 'a') goto yy727;
-                               goto yy280;
+                               if (yych == 'a') goto yy729;
+                               goto yy282;
                        } else {
-                               if (yych <= 'l') goto yy728;
-                               if (yych == 'o') goto yy729;
-                               goto yy280;
+                               if (yych <= 'l') goto yy730;
+                               if (yych == 'o') goto yy731;
+                               goto yy282;
                        }
                }
 yy209:
                YYDEBUG(209, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy709;
-               if (yych == 'e') goto yy709;
-               goto yy280;
+               if (yych == 'E') goto yy711;
+               if (yych == 'e') goto yy711;
+               goto yy282;
 yy210:
                YYDEBUG(210, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'R') {
-                       if (yych == 'H') goto yy701;
-                       if (yych <= 'Q') goto yy280;
-                       goto yy702;
+                       if (yych == 'H') goto yy703;
+                       if (yych <= 'Q') goto yy282;
+                       goto yy704;
                } else {
                        if (yych <= 'h') {
-                               if (yych <= 'g') goto yy280;
-                               goto yy701;
+                               if (yych <= 'g') goto yy282;
+                               goto yy703;
                        } else {
-                               if (yych == 'r') goto yy702;
-                               goto yy280;
+                               if (yych == 'r') goto yy704;
+                               goto yy282;
                        }
                }
 yy211:
@@ -3352,70 +3352,70 @@ yy211:
                yych = *++YYCURSOR;
                if (yych <= 'S') {
                        if (yych <= 'L') {
-                               if (yych == 'F') goto yy654;
-                               goto yy280;
+                               if (yych == 'F') goto yy656;
+                               goto yy282;
                        } else {
-                               if (yych <= 'M') goto yy656;
-                               if (yych <= 'N') goto yy657;
-                               if (yych <= 'R') goto yy280;
-                               goto yy658;
+                               if (yych <= 'M') goto yy658;
+                               if (yych <= 'N') goto yy659;
+                               if (yych <= 'R') goto yy282;
+                               goto yy660;
                        }
                } else {
                        if (yych <= 'm') {
-                               if (yych == 'f') goto yy654;
-                               if (yych <= 'l') goto yy280;
-                               goto yy656;
+                               if (yych == 'f') goto yy656;
+                               if (yych <= 'l') goto yy282;
+                               goto yy658;
                        } else {
-                               if (yych <= 'n') goto yy657;
-                               if (yych == 's') goto yy658;
-                               goto yy280;
+                               if (yych <= 'n') goto yy659;
+                               if (yych == 's') goto yy660;
+                               goto yy282;
                        }
                }
 yy212:
                YYDEBUG(212, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'H') goto yy649;
-               if (yych == 'h') goto yy649;
-               goto yy280;
+               if (yych == 'H') goto yy651;
+               if (yych == 'h') goto yy651;
+               goto yy282;
 yy213:
                YYDEBUG(213, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'S') {
                        if (yych <= 'M') {
-                               if (yych == 'B') goto yy631;
-                               goto yy280;
+                               if (yych == 'B') goto yy633;
+                               goto yy282;
                        } else {
-                               if (yych <= 'N') goto yy632;
-                               if (yych <= 'Q') goto yy280;
-                               if (yych <= 'R') goto yy633;
-                               goto yy634;
+                               if (yych <= 'N') goto yy634;
+                               if (yych <= 'Q') goto yy282;
+                               if (yych <= 'R') goto yy635;
+                               goto yy636;
                        }
                } else {
                        if (yych <= 'n') {
-                               if (yych == 'b') goto yy631;
-                               if (yych <= 'm') goto yy280;
-                               goto yy632;
+                               if (yych == 'b') goto yy633;
+                               if (yych <= 'm') goto yy282;
+                               goto yy634;
                        } else {
-                               if (yych <= 'q') goto yy280;
-                               if (yych <= 'r') goto yy633;
-                               if (yych <= 's') goto yy634;
-                               goto yy280;
+                               if (yych <= 'q') goto yy282;
+                               if (yych <= 'r') goto yy635;
+                               if (yych <= 's') goto yy636;
+                               goto yy282;
                        }
                }
 yy214:
                YYDEBUG(214, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'W') {
-                       if (yych == 'T') goto yy619;
-                       if (yych <= 'V') goto yy280;
-                       goto yy620;
+                       if (yych == 'T') goto yy621;
+                       if (yych <= 'V') goto yy282;
+                       goto yy622;
                } else {
                        if (yych <= 't') {
-                               if (yych <= 's') goto yy280;
-                               goto yy619;
+                               if (yych <= 's') goto yy282;
+                               goto yy621;
                        } else {
-                               if (yych == 'w') goto yy620;
-                               goto yy280;
+                               if (yych == 'w') goto yy622;
+                               goto yy282;
                        }
                }
 yy215:
@@ -3426,38 +3426,38 @@ yy215:
                        if (yych <= '/') {
                                if (yych <= '"') {
                                        if (yych <= '!') goto yy205;
-                                       goto yy612;
+                                       goto yy614;
                                } else {
-                                       if (yych == '\'') goto yy263;
+                                       if (yych == '\'') goto yy265;
                                        goto yy205;
                                }
                        } else {
                                if (yych <= ';') {
-                                       if (yych <= '9') goto yy279;
+                                       if (yych <= '9') goto yy281;
                                        goto yy205;
                                } else {
-                                       if (yych <= '<') goto yy611;
+                                       if (yych <= '<') goto yy613;
                                        if (yych <= '@') goto yy205;
-                                       goto yy279;
+                                       goto yy281;
                                }
                        }
                } else {
                        if (yych <= '`') {
                                if (yych <= 'Z') {
-                                       if (yych <= 'R') goto yy613;
-                                       goto yy279;
+                                       if (yych <= 'R') goto yy615;
+                                       goto yy281;
                                } else {
-                                       if (yych == '_') goto yy279;
+                                       if (yych == '_') goto yy281;
                                        goto yy205;
                                }
                        } else {
                                if (yych <= 'r') {
-                                       if (yych <= 'q') goto yy279;
-                                       goto yy613;
+                                       if (yych <= 'q') goto yy281;
+                                       goto yy615;
                                } else {
-                                       if (yych <= 'z') goto yy279;
+                                       if (yych <= 'z') goto yy281;
                                        if (yych <= '~') goto yy205;
-                                       goto yy279;
+                                       goto yy281;
                                }
                        }
                }
@@ -3465,47 +3465,47 @@ yy216:
                YYDEBUG(216, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'O') {
-                       if (yych == 'L') goto yy601;
-                       if (yych <= 'N') goto yy280;
-                       goto yy602;
+                       if (yych == 'L') goto yy603;
+                       if (yych <= 'N') goto yy282;
+                       goto yy604;
                } else {
                        if (yych <= 'l') {
-                               if (yych <= 'k') goto yy280;
-                               goto yy601;
+                               if (yych <= 'k') goto yy282;
+                               goto yy603;
                        } else {
-                               if (yych == 'o') goto yy602;
-                               goto yy280;
+                               if (yych == 'o') goto yy604;
+                               goto yy282;
                        }
                }
 yy217:
                YYDEBUG(217, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'U') {
-                       if (yych == 'R') goto yy577;
-                       if (yych <= 'T') goto yy280;
-                       goto yy578;
+                       if (yych == 'R') goto yy579;
+                       if (yych <= 'T') goto yy282;
+                       goto yy580;
                } else {
                        if (yych <= 'r') {
-                               if (yych <= 'q') goto yy280;
-                               goto yy577;
+                               if (yych <= 'q') goto yy282;
+                               goto yy579;
                        } else {
-                               if (yych == 'u') goto yy578;
-                               goto yy280;
+                               if (yych == 'u') goto yy580;
+                               goto yy282;
                        }
                }
 yy218:
                YYDEBUG(218, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '<') {
-                       if (yych == '-') goto yy573;
+                       if (yych == '-') goto yy575;
                } else {
-                       if (yych <= '=') goto yy571;
-                       if (yych <= '>') goto yy575;
+                       if (yych <= '=') goto yy573;
+                       if (yych <= '>') goto yy577;
                }
 yy219:
                YYDEBUG(219, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1348 "Zend/zend_language_scanner.l"
+#line 1352 "Zend/zend_language_scanner.l"
                {
        return yytext[0];
 }
@@ -3514,7 +3514,7 @@ yy220:
                YYDEBUG(220, *YYCURSOR);
                ++YYCURSOR;
                yych = *YYCURSOR;
-               goto yy570;
+               goto yy572;
 yy221:
                YYDEBUG(221, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
@@ -3530,247 +3530,257 @@ yy221:
 yy222:
                YYDEBUG(222, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == ':') goto yy567;
+               if (yych == ':') goto yy569;
                goto yy219;
 yy223:
                YYDEBUG(223, *YYCURSOR);
+               ++YYCURSOR;
+               YYDEBUG(224, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
+#line 1116 "Zend/zend_language_scanner.l"
+               {
+       return T_NS_SEPARATOR;
+}
+#line 3545 "Zend/zend_language_scanner.c"
+yy225:
+               YYDEBUG(225, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'E') {
-                       if (yych == 'A') goto yy555;
-                       if (yych <= 'D') goto yy280;
-                       goto yy556;
+                       if (yych == 'A') goto yy557;
+                       if (yych <= 'D') goto yy282;
+                       goto yy558;
                } else {
                        if (yych <= 'a') {
-                               if (yych <= '`') goto yy280;
-                               goto yy555;
+                               if (yych <= '`') goto yy282;
+                               goto yy557;
                        } else {
-                               if (yych == 'e') goto yy556;
-                               goto yy280;
+                               if (yych == 'e') goto yy558;
+                               goto yy282;
                        }
                }
-yy224:
-               YYDEBUG(224, *YYCURSOR);
+yy226:
+               YYDEBUG(226, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy552;
-               if (yych == 'a') goto yy552;
-               goto yy280;
-yy225:
-               YYDEBUG(225, *YYCURSOR);
+               if (yych == 'A') goto yy554;
+               if (yych == 'a') goto yy554;
+               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 1353 "Zend/zend_language_scanner.l"
+#line 1357 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        return '{';
 }
-#line 3768 "Zend/zend_language_scanner.c"
-yy248:
-               YYDEBUG(248, *YYCURSOR);
+#line 3778 "Zend/zend_language_scanner.c"
+yy250:
+               YYDEBUG(250, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(249, *YYCURSOR);
+               YYDEBUG(251, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1365 "Zend/zend_language_scanner.l"
+#line 1369 "Zend/zend_language_scanner.l"
                {
        RESET_DOC_COMMENT();
        if (!zend_stack_is_empty(&SCNG(state_stack))) {
@@ -3778,30 +3788,30 @@ yy248:
        }
        return '}';
 }
-#line 3782 "Zend/zend_language_scanner.c"
-yy250:
-               YYDEBUG(250, *YYCURSOR);
+#line 3792 "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 1391 "Zend/zend_language_scanner.l"
+#line 1395 "Zend/zend_language_scanner.l"
                {
        if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */
                zendlval->value.lval = strtol(yytext, NULL, 0);
@@ -3822,105 +3832,105 @@ yy251:
        zendlval->type = IS_LONG;
        return T_LNUMBER;
 }
-#line 3826 "Zend/zend_language_scanner.c"
-yy252:
-               YYDEBUG(252, *YYCURSOR);
+#line 3836 "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 1736 "Zend/zend_language_scanner.l"
+#line 1740 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_ONE_LINE_COMMENT);
        yymore();
 }
-#line 3859 "Zend/zend_language_scanner.c"
-yy256:
-               YYDEBUG(256, *YYCURSOR);
+#line 3869 "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 1903 "Zend/zend_language_scanner.l"
+#line 1907 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_DOUBLE_QUOTES);
        return '"';
 }
-#line 3873 "Zend/zend_language_scanner.c"
-yy258:
-               YYDEBUG(258, *YYCURSOR);
+#line 3883 "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 2126 "Zend/zend_language_scanner.l"
+#line 2130 "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 3887 "Zend/zend_language_scanner.c"
-yy260:
-               YYDEBUG(260, *YYCURSOR);
+#line 3897 "Zend/zend_language_scanner.c"
+yy262:
+               YYDEBUG(262, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(261, *YYCURSOR);
+               YYDEBUG(263, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1954 "Zend/zend_language_scanner.l"
+#line 1958 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_BACKQUOTE);
        return '`';
 }
-#line 3898 "Zend/zend_language_scanner.c"
-yy262:
-               YYDEBUG(262, *YYCURSOR);
+#line 3908 "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 1852 "Zend/zend_language_scanner.l"
+#line 1856 "Zend/zend_language_scanner.l"
                {
        register char *s, *t;
        char *end;
@@ -3970,22 +3980,22 @@ yy266:
 #endif /* ZEND_MULTIBYTE */
        return T_CONSTANT_ENCAPSED_STRING;
 }
-#line 3974 "Zend/zend_language_scanner.c"
-yy268:
-               YYDEBUG(268, *YYCURSOR);
+#line 3984 "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 <= 3) {
                        if (yyaccept <= 1) {
@@ -3996,186 +4006,186 @@ yy270:
                                }
                        } else {
                                if (yyaccept <= 2) {
-                                       goto yy251;
+                                       goto yy253;
                                } else {
-                                       goto yy257;
+                                       goto yy259;
                                }
                        }
                } else {
                        if (yyaccept <= 5) {
                                if (yyaccept <= 4) {
-                                       goto yy259;
+                                       goto yy261;
                                } else {
-                                       goto yy283;
+                                       goto yy285;
                                }
                        } else {
                                if (yyaccept <= 6) {
-                                       goto yy327;
+                                       goto yy329;
                                } else {
-                                       goto yy344;
+                                       goto yy346;
                                }
                        }
                }
-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 1844 "Zend/zend_language_scanner.l"
+#line 1848 "Zend/zend_language_scanner.l"
                {
        int bprefix = (yytext[0] != '"') ? 1 : 0;
 
        zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"' TSRMLS_CC);
        return T_CONSTANT_ENCAPSED_STRING;
 }
-#line 4078 "Zend/zend_language_scanner.c"
-yy278:
-               YYDEBUG(278, *YYCURSOR);
+#line 4088 "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 1452 "Zend/zend_language_scanner.l"
+#line 1456 "Zend/zend_language_scanner.l"
                {
        zendlval->value.dval = zend_strtod(yytext, NULL);
        zendlval->type = IS_DOUBLE;
        return T_DNUMBER;
 }
-#line 4117 "Zend/zend_language_scanner.c"
-yy284:
-               YYDEBUG(284, *YYCURSOR);
+#line 4127 "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 1412 "Zend/zend_language_scanner.l"
+#line 1416 "Zend/zend_language_scanner.l"
                {
        char *hex = yytext + 2; /* Skip "0x" */
        int len = yyleng - 2;
@@ -4196,16 +4206,16 @@ yy291:
                return T_DNUMBER;
        }
 }
-#line 4200 "Zend/zend_language_scanner.c"
-yy294:
-               YYDEBUG(294, *YYCURSOR);
+#line 4210 "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 1819 "Zend/zend_language_scanner.l"
+#line 1823 "Zend/zend_language_scanner.l"
                {
        zendlval->value.str.val = yytext; /* no copying - intentional */
        zendlval->value.str.len = yyleng;
@@ -4213,86 +4223,76 @@ yy295:
        BEGIN(INITIAL);
        return T_CLOSE_TAG;  /* implicit ';' at php-end tag */
 }
-#line 4217 "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 4227 "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 1705 "Zend/zend_language_scanner.l"
+#line 1709 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
        return T_VARIABLE;
 }
-#line 4257 "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 4267 "Zend/zend_language_scanner.c"
+yy303:
                YYDEBUG(303, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
-#line 1336 "Zend/zend_language_scanner.l"
-               {
-       return T_LOGICAL_XOR;
-}
-#line 4275 "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 1328 "Zend/zend_language_scanner.l"
+#line 1340 "Zend/zend_language_scanner.l"
                {
-       return T_LOGICAL_OR;
+       return T_LOGICAL_XOR;
 }
-#line 4288 "Zend/zend_language_scanner.c"
+#line 4285 "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 1316 "Zend/zend_language_scanner.l"
+#line 1332 "Zend/zend_language_scanner.l"
                {
-       return T_XOR_EQUAL;
+       return T_LOGICAL_OR;
 }
 #line 4298 "Zend/zend_language_scanner.c"
 yy308:
@@ -4302,7 +4302,7 @@ yy308:
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 1320 "Zend/zend_language_scanner.l"
                {
-       return T_BOOLEAN_OR;
+       return T_XOR_EQUAL;
 }
 #line 4308 "Zend/zend_language_scanner.c"
 yy310:
@@ -4310,9 +4310,9 @@ yy310:
                ++YYCURSOR;
                YYDEBUG(311, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1312 "Zend/zend_language_scanner.l"
+#line 1324 "Zend/zend_language_scanner.l"
                {
-       return T_OR_EQUAL;
+       return T_BOOLEAN_OR;
 }
 #line 4318 "Zend/zend_language_scanner.c"
 yy312:
@@ -4320,9 +4320,9 @@ yy312:
                ++YYCURSOR;
                YYDEBUG(313, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1324 "Zend/zend_language_scanner.l"
+#line 1316 "Zend/zend_language_scanner.l"
                {
-       return T_BOOLEAN_AND;
+       return T_OR_EQUAL;
 }
 #line 4328 "Zend/zend_language_scanner.c"
 yy314:
@@ -4330,20 +4330,30 @@ yy314:
                ++YYCURSOR;
                YYDEBUG(315, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1308 "Zend/zend_language_scanner.l"
+#line 1328 "Zend/zend_language_scanner.l"
                {
-       return T_AND_EQUAL;
+       return T_BOOLEAN_AND;
 }
 #line 4338 "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 1828 "Zend/zend_language_scanner.l"
+#line 1312 "Zend/zend_language_scanner.l"
+               {
+       return T_AND_EQUAL;
+}
+#line 4348 "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 1832 "Zend/zend_language_scanner.l"
                {
        if (CG(asp_tags)) {
                BEGIN(INITIAL);
@@ -4356,134 +4366,124 @@ yy317:
                return yytext[0];
        }
 }
-#line 4360 "Zend/zend_language_scanner.c"
-yy318:
-               YYDEBUG(318, *YYCURSOR);
+#line 4370 "Zend/zend_language_scanner.c"
+yy320:
+               YYDEBUG(320, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(319, *YYCURSOR);
+               YYDEBUG(321, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1296 "Zend/zend_language_scanner.l"
+#line 1300 "Zend/zend_language_scanner.l"
                {
        return T_MOD_EQUAL;
 }
-#line 4370 "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 4380 "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 1292 "Zend/zend_language_scanner.l"
+#line 1296 "Zend/zend_language_scanner.l"
                {
        return T_CONCAT_EQUAL;
 }
-#line 4405 "Zend/zend_language_scanner.c"
-yy326:
-               YYDEBUG(326, *YYCURSOR);
+#line 4415 "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 1791 "Zend/zend_language_scanner.l"
+#line 1795 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_COMMENT);
        yymore();
 }
-#line 4419 "Zend/zend_language_scanner.c"
-yy328:
-               YYDEBUG(328, *YYCURSOR);
+#line 4429 "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 1288 "Zend/zend_language_scanner.l"
+#line 1292 "Zend/zend_language_scanner.l"
                {
        return T_DIV_EQUAL;
 }
-#line 4433 "Zend/zend_language_scanner.c"
-yy331:
-               YYDEBUG(331, *YYCURSOR);
+#line 4443 "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 1785 "Zend/zend_language_scanner.l"
+#line 1789 "Zend/zend_language_scanner.l"
                {
        RESET_DOC_COMMENT();
        BEGIN(ST_DOC_COMMENT);
        yymore();
 }
-#line 4458 "Zend/zend_language_scanner.c"
-yy335:
-               YYDEBUG(335, *YYCURSOR);
-               ++YYCURSOR;
-               YYDEBUG(336, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
-#line 1284 "Zend/zend_language_scanner.l"
-               {
-       return T_MUL_EQUAL;
-}
 #line 4468 "Zend/zend_language_scanner.c"
 yy337:
                YYDEBUG(337, *YYCURSOR);
                ++YYCURSOR;
-               if ((yych = *YYCURSOR) == '=') goto yy341;
                YYDEBUG(338, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1344 "Zend/zend_language_scanner.l"
+#line 1288 "Zend/zend_language_scanner.l"
                {
-       return T_SR;
+       return T_MUL_EQUAL;
 }
-#line 4479 "Zend/zend_language_scanner.c"
+#line 4478 "Zend/zend_language_scanner.c"
 yy339:
                YYDEBUG(339, *YYCURSOR);
                ++YYCURSOR;
+               if ((yych = *YYCURSOR) == '=') goto yy343;
                YYDEBUG(340, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1272 "Zend/zend_language_scanner.l"
+#line 1348 "Zend/zend_language_scanner.l"
                {
-       return T_IS_GREATER_OR_EQUAL;
+       return T_SR;
 }
 #line 4489 "Zend/zend_language_scanner.c"
 yy341:
@@ -4491,213 +4491,223 @@ yy341:
                ++YYCURSOR;
                YYDEBUG(342, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1304 "Zend/zend_language_scanner.l"
+#line 1276 "Zend/zend_language_scanner.l"
                {
-       return T_SR_EQUAL;
+       return T_IS_GREATER_OR_EQUAL;
 }
 #line 4499 "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 1340 "Zend/zend_language_scanner.l"
+#line 1308 "Zend/zend_language_scanner.l"
                {
-       return T_SL;
+       return T_SR_EQUAL;
 }
-#line 4514 "Zend/zend_language_scanner.c"
+#line 4509 "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 1268 "Zend/zend_language_scanner.l"
+#line 1344 "Zend/zend_language_scanner.l"
                {
-       return T_IS_SMALLER_OR_EQUAL;
+       return T_SL;
 }
-#line 4530 "Zend/zend_language_scanner.c"
+#line 4524 "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 1264 "Zend/zend_language_scanner.l"
+#line 1272 "Zend/zend_language_scanner.l"
                {
-       return T_IS_NOT_EQUAL;
+       return T_IS_SMALLER_OR_EQUAL;
 }
-#line 4541 "Zend/zend_language_scanner.c"
+#line 4540 "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 1268 "Zend/zend_language_scanner.l"
+               {
+       return T_IS_NOT_EQUAL;
+}
+#line 4551 "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 1300 "Zend/zend_language_scanner.l"
+#line 1304 "Zend/zend_language_scanner.l"
                {
        return T_SL_EQUAL;
 }
-#line 4596 "Zend/zend_language_scanner.c"
-yy359:
-               YYDEBUG(359, *YYCURSOR);
+#line 4606 "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 1909 "Zend/zend_language_scanner.l"
+#line 1913 "Zend/zend_language_scanner.l"
                {
        char *s;
        int bprefix = (yytext[0] != '<') ? 1 : 0;
@@ -4741,59 +4751,49 @@ yy369:
 
        return T_START_HEREDOC;
 }
-#line 4745 "Zend/zend_language_scanner.c"
-yy370:
-               YYDEBUG(370, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '\n') goto yy368;
-               goto yy369;
-yy371:
-               YYDEBUG(371, *YYCURSOR);
+#line 4755 "Zend/zend_language_scanner.c"
+yy372:
+               YYDEBUG(372, *YYCURSOR);
+               yych = *++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 1256 "Zend/zend_language_scanner.l"
-               {
-       return T_IS_NOT_IDENTICAL;
-}
-#line 4789 "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 1276 "Zend/zend_language_scanner.l"
+#line 1260 "Zend/zend_language_scanner.l"
                {
-       return T_PLUS_EQUAL;
+       return T_IS_NOT_IDENTICAL;
 }
 #line 4799 "Zend/zend_language_scanner.c"
 yy378:
@@ -4801,53 +4801,53 @@ yy378:
                ++YYCURSOR;
                YYDEBUG(379, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1244 "Zend/zend_language_scanner.l"
+#line 1280 "Zend/zend_language_scanner.l"
                {
-       return T_INC;
+       return T_PLUS_EQUAL;
 }
 #line 4809 "Zend/zend_language_scanner.c"
 yy380:
                YYDEBUG(380, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'S') goto yy381;
-               if (yych != 's') goto yy280;
-yy381:
-               YYDEBUG(381, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy382;
-               if (yych != 't') goto yy280;
-yy382:
-               YYDEBUG(382, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
-               }
-               YYDEBUG(383, *YYCURSOR);
+               YYDEBUG(381, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1236 "Zend/zend_language_scanner.l"
+#line 1248 "Zend/zend_language_scanner.l"
                {
-       return T_LIST;
+       return T_INC;
 }
-#line 4832 "Zend/zend_language_scanner.c"
+#line 4819 "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 ((yych = *YYCURSOR) == '=') goto yy388;
+               if (yybm[0+(yych = *YYCURSOR)] & 8) {
+                       goto yy281;
+               }
                YYDEBUG(385, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1260 "Zend/zend_language_scanner.l"
+#line 1240 "Zend/zend_language_scanner.l"
                {
-       return T_IS_EQUAL;
+       return T_LIST;
 }
-#line 4843 "Zend/zend_language_scanner.c"
+#line 4842 "Zend/zend_language_scanner.c"
 yy386:
                YYDEBUG(386, *YYCURSOR);
                ++YYCURSOR;
+               if ((yych = *YYCURSOR) == '=') goto yy390;
                YYDEBUG(387, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1232 "Zend/zend_language_scanner.l"
+#line 1264 "Zend/zend_language_scanner.l"
                {
-       return T_DOUBLE_ARROW;
+       return T_IS_EQUAL;
 }
 #line 4853 "Zend/zend_language_scanner.c"
 yy388:
@@ -4855,133 +4855,143 @@ yy388:
                ++YYCURSOR;
                YYDEBUG(389, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1252 "Zend/zend_language_scanner.l"
+#line 1236 "Zend/zend_language_scanner.l"
                {
-       return T_IS_IDENTICAL;
+       return T_DOUBLE_ARROW;
 }
 #line 4863 "Zend/zend_language_scanner.c"
 yy390:
                YYDEBUG(390, *YYCURSOR);
+               ++YYCURSOR;
+               YYDEBUG(391, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
+#line 1256 "Zend/zend_language_scanner.l"
+               {
+       return T_IS_IDENTICAL;
+}
+#line 4873 "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 1556 "Zend/zend_language_scanner.l"
+#line 1560 "Zend/zend_language_scanner.l"
                {
        if (CG(current_namespace)) {
                *zendlval = *CG(current_namespace);
@@ -4991,27 +5001,27 @@ yy405:
        }
        return T_NS_C;
 }
-#line 4995 "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 5005 "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 1529 "Zend/zend_language_scanner.l"
+#line 1533 "Zend/zend_language_scanner.l"
                {
        char *filename = zend_get_compiled_filename(TSRMLS_C);
        const size_t filename_len = strlen(filename);
@@ -5038,73 +5048,73 @@ yy410:
        zendlval->type = IS_STRING;
        return T_DIR;
 }
-#line 5042 "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 5052 "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 1511 "Zend/zend_language_scanner.l"
+#line 1515 "Zend/zend_language_scanner.l"
                {
        zendlval->value.lval = CG(zend_lineno);
        zendlval->type = IS_LONG;
        return T_LINE;
 }
-#line 5073 "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 5083 "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 1490 "Zend/zend_language_scanner.l"
+#line 1494 "Zend/zend_language_scanner.l"
                {
        char *class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL;
        char *func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL;
@@ -5125,58 +5135,58 @@ yy424:
        zendlval->type = IS_STRING;
        return T_METHOD_C;
 }
-#line 5129 "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 5139 "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 1474 "Zend/zend_language_scanner.l"
+#line 1478 "Zend/zend_language_scanner.l"
                {
        char *func_name = NULL;
 
@@ -5192,27 +5202,27 @@ yy435:
        zendlval->type = IS_STRING;
        return T_FUNC_C;
 }
-#line 5196 "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 5206 "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 1517 "Zend/zend_language_scanner.l"
+#line 1521 "Zend/zend_language_scanner.l"
                {
        char *filename = zend_get_compiled_filename(TSRMLS_C);
 
@@ -5224,37 +5234,37 @@ yy440:
        zendlval->type = IS_STRING;
        return T_FILE;
 }
-#line 5228 "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 5238 "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 1458 "Zend/zend_language_scanner.l"
+#line 1462 "Zend/zend_language_scanner.l"
                {
        char *class_name = NULL;
 
@@ -5270,756 +5280,746 @@ yy447:
        zendlval->type = IS_STRING;
        return T_CLASS_C;
 }
-#line 5274 "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 5284 "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 1200 "Zend/zend_language_scanner.l"
+#line 1204 "Zend/zend_language_scanner.l"
                {
        return T_HALT_COMPILER;
 }
-#line 5340 "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 5350 "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 1184 "Zend/zend_language_scanner.l"
+#line 1188 "Zend/zend_language_scanner.l"
                {
        return T_USE;
 }
-#line 5364 "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 5374 "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 1228 "Zend/zend_language_scanner.l"
+#line 1232 "Zend/zend_language_scanner.l"
                {
        return T_UNSET;
 }
-#line 5387 "Zend/zend_language_scanner.c"
-yy472:
-               YYDEBUG(472, *YYCURSOR);
+#line 5397 "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 1128 "Zend/zend_language_scanner.l"
+#line 1132 "Zend/zend_language_scanner.l"
                {
        return T_INT_CAST;
 }
-#line 5563 "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 5573 "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 1132 "Zend/zend_language_scanner.l"
+#line 1136 "Zend/zend_language_scanner.l"
                {
        return T_DOUBLE_CAST;
 }
-#line 5611 "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 5621 "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 1136 "Zend/zend_language_scanner.l"
+#line 1140 "Zend/zend_language_scanner.l"
                {
        return T_STRING_CAST;
 }
-#line 5685 "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 5695 "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 1144 "Zend/zend_language_scanner.l"
+#line 1148 "Zend/zend_language_scanner.l"
                {
        return T_ARRAY_CAST;
 }
-#line 5722 "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 5732 "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 1148 "Zend/zend_language_scanner.l"
+#line 1152 "Zend/zend_language_scanner.l"
                {
        return T_OBJECT_CAST;
 }
-#line 5764 "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 5774 "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 1152 "Zend/zend_language_scanner.l"
+#line 1156 "Zend/zend_language_scanner.l"
                {
        return T_BOOL_CAST;
 }
-#line 5809 "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 5819 "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 1140 "Zend/zend_language_scanner.l"
+#line 1144 "Zend/zend_language_scanner.l"
                {
        return T_STRING_CAST;
 }
-#line 5857 "Zend/zend_language_scanner.c"
-yy545:
-               YYDEBUG(545, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'S') goto yy546;
-               if (yych != 's') goto yy270;
-yy546:
-               YYDEBUG(546, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy547;
-               if (yych != 'e') goto yy270;
+#line 5867 "Zend/zend_language_scanner.c"
 yy547:
                YYDEBUG(547, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy548;
-               if (yych != 't') goto yy270;
+               if (yych == 'S') goto yy548;
+               if (yych != 's') goto yy272;
 yy548:
                YYDEBUG(548, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy549;
+               if (yych != 'e') goto yy272;
+yy549:
+               YYDEBUG(549, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy550;
+               if (yych != 't') goto yy272;
+yy550:
+               YYDEBUG(550, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(549, *YYCURSOR);
+               YYDEBUG(551, *YYCURSOR);
                if (yych <= 0x1F) {
-                       if (yych == '\t') goto yy548;
-                       goto yy270;
+                       if (yych == '\t') goto yy550;
+                       goto yy272;
                } else {
-                       if (yych <= ' ') goto yy548;
-                       if (yych != ')') goto yy270;
+                       if (yych <= ' ') goto yy550;
+                       if (yych != ')') goto yy272;
                }
-               YYDEBUG(550, *YYCURSOR);
+               YYDEBUG(552, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(551, *YYCURSOR);
+               YYDEBUG(553, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1156 "Zend/zend_language_scanner.l"
+#line 1160 "Zend/zend_language_scanner.l"
                {
        return T_UNSET_CAST;
 }
-#line 5894 "Zend/zend_language_scanner.c"
-yy552:
-               YYDEBUG(552, *YYCURSOR);
+#line 5904 "Zend/zend_language_scanner.c"
+yy554:
+               YYDEBUG(554, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy553;
-               if (yych != 'r') goto yy280;
-yy553:
-               YYDEBUG(553, *YYCURSOR);
+               if (yych == 'R') goto yy555;
+               if (yych != 'r') goto yy282;
+yy555:
+               YYDEBUG(555, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(554, *YYCURSOR);
+               YYDEBUG(556, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1124 "Zend/zend_language_scanner.l"
+#line 1128 "Zend/zend_language_scanner.l"
                {
        return T_VAR;
 }
-#line 5912 "Zend/zend_language_scanner.c"
-yy555:
-               YYDEBUG(555, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'M') goto yy559;
-               if (yych == 'm') goto yy559;
-               goto yy280;
-yy556:
-               YYDEBUG(556, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'W') goto yy557;
-               if (yych != 'w') goto yy280;
+#line 5922 "Zend/zend_language_scanner.c"
 yy557:
                YYDEBUG(557, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'M') goto yy561;
+               if (yych == 'm') goto yy561;
+               goto yy282;
+yy558:
+               YYDEBUG(558, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'W') goto yy559;
+               if (yych != 'w') goto yy282;
+yy559:
+               YYDEBUG(559, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(558, *YYCURSOR);
+               YYDEBUG(560, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1116 "Zend/zend_language_scanner.l"
+#line 1120 "Zend/zend_language_scanner.l"
                {
        return T_NEW;
 }
-#line 5936 "Zend/zend_language_scanner.c"
-yy559:
-               YYDEBUG(559, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy560;
-               if (yych != 'e') goto yy280;
-yy560:
-               YYDEBUG(560, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'S') goto yy561;
-               if (yych != 's') goto yy280;
+#line 5946 "Zend/zend_language_scanner.c"
 yy561:
                YYDEBUG(561, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'P') goto yy562;
-               if (yych != 'p') goto yy280;
+               if (yych == 'E') goto yy562;
+               if (yych != 'e') goto yy282;
 yy562:
                YYDEBUG(562, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy563;
-               if (yych != 'a') goto yy280;
+               if (yych == 'S') goto yy563;
+               if (yych != 's') goto yy282;
 yy563:
                YYDEBUG(563, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy564;
-               if (yych != 'c') goto yy280;
+               if (yych == 'P') goto yy564;
+               if (yych != 'p') goto yy282;
 yy564:
                YYDEBUG(564, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy565;
-               if (yych != 'e') goto yy280;
+               if (yych == 'A') goto yy565;
+               if (yych != 'a') goto yy282;
 yy565:
                YYDEBUG(565, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'C') goto yy566;
+               if (yych != 'c') goto yy282;
+yy566:
+               YYDEBUG(566, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy567;
+               if (yych != 'e') 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 1180 "Zend/zend_language_scanner.l"
+#line 1184 "Zend/zend_language_scanner.l"
                {
        return T_NAMESPACE;
 }
-#line 5979 "Zend/zend_language_scanner.c"
-yy567:
-               YYDEBUG(567, *YYCURSOR);
+#line 5989 "Zend/zend_language_scanner.c"
+yy569:
+               YYDEBUG(569, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(568, *YYCURSOR);
+               YYDEBUG(570, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 1112 "Zend/zend_language_scanner.l"
                {
        return T_PAAMAYIM_NEKUDOTAYIM;
 }
-#line 5989 "Zend/zend_language_scanner.c"
-yy569:
-               YYDEBUG(569, *YYCURSOR);
+#line 5999 "Zend/zend_language_scanner.c"
+yy571:
+               YYDEBUG(571, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-yy570:
-               YYDEBUG(570, *YYCURSOR);
+yy572:
+               YYDEBUG(572, *YYCURSOR);
                if (yych <= '\f') {
                        if (yych <= 0x08) goto yy221;
-                       if (yych <= '\n') goto yy569;
+                       if (yych <= '\n') goto yy571;
                        goto yy221;
                } else {
-                       if (yych <= '\r') goto yy569;
-                       if (yych == ' ') goto yy569;
+                       if (yych <= '\r') goto yy571;
+                       if (yych == ' ') goto yy571;
                        goto yy221;
                }
-yy571:
-               YYDEBUG(571, *YYCURSOR);
-               ++YYCURSOR;
-               YYDEBUG(572, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
-#line 1280 "Zend/zend_language_scanner.l"
-               {
-       return T_MINUS_EQUAL;
-}
-#line 6015 "Zend/zend_language_scanner.c"
 yy573:
                YYDEBUG(573, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(574, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1248 "Zend/zend_language_scanner.l"
+#line 1284 "Zend/zend_language_scanner.l"
                {
-       return T_DEC;
+       return T_MINUS_EQUAL;
 }
 #line 6025 "Zend/zend_language_scanner.c"
 yy575:
@@ -6027,1786 +6027,1796 @@ yy575:
                ++YYCURSOR;
                YYDEBUG(576, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
+#line 1252 "Zend/zend_language_scanner.l"
+               {
+       return T_DEC;
+}
+#line 6035 "Zend/zend_language_scanner.c"
+yy577:
+               YYDEBUG(577, *YYCURSOR);
+               ++YYCURSOR;
+               YYDEBUG(578, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
 #line 1082 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
        return T_OBJECT_OPERATOR;
 }
-#line 6036 "Zend/zend_language_scanner.c"
-yy577:
-               YYDEBUG(577, *YYCURSOR);
+#line 6046 "Zend/zend_language_scanner.c"
+yy579:
+               YYDEBUG(579, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'O') {
-                       if (yych == 'I') goto yy584;
-                       if (yych <= 'N') goto yy280;
-                       goto yy585;
+                       if (yych == 'I') goto yy586;
+                       if (yych <= 'N') goto yy282;
+                       goto yy587;
                } else {
                        if (yych <= 'i') {
-                               if (yych <= 'h') goto yy280;
-                               goto yy584;
+                               if (yych <= 'h') goto yy282;
+                               goto yy586;
                        } else {
-                               if (yych == 'o') goto yy585;
-                               goto yy280;
+                               if (yych == 'o') goto yy587;
+                               goto yy282;
                        }
                }
-yy578:
-               YYDEBUG(578, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'B') goto yy579;
-               if (yych != 'b') goto yy280;
-yy579:
-               YYDEBUG(579, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'L') goto yy580;
-               if (yych != 'l') goto yy280;
 yy580:
                YYDEBUG(580, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy581;
-               if (yych != 'i') goto yy280;
+               if (yych == 'B') goto yy581;
+               if (yych != 'b') goto yy282;
 yy581:
                YYDEBUG(581, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy582;
-               if (yych != 'c') goto yy280;
+               if (yych == 'L') goto yy582;
+               if (yych != 'l') goto yy282;
 yy582:
                YYDEBUG(582, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'I') goto yy583;
+               if (yych != 'i') goto yy282;
+yy583:
+               YYDEBUG(583, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'C') goto yy584;
+               if (yych != 'c') goto yy282;
+yy584:
+               YYDEBUG(584, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(583, *YYCURSOR);
+               YYDEBUG(585, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1224 "Zend/zend_language_scanner.l"
+#line 1228 "Zend/zend_language_scanner.l"
                {
        return T_PUBLIC;
 }
-#line 6085 "Zend/zend_language_scanner.c"
-yy584:
-               YYDEBUG(584, *YYCURSOR);
+#line 6095 "Zend/zend_language_scanner.c"
+yy586:
+               YYDEBUG(586, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'V') {
-                       if (yych == 'N') goto yy593;
-                       if (yych <= 'U') goto yy280;
-                       goto yy594;
+                       if (yych == 'N') goto yy595;
+                       if (yych <= 'U') goto yy282;
+                       goto yy596;
                } else {
                        if (yych <= 'n') {
-                               if (yych <= 'm') goto yy280;
-                               goto yy593;
+                               if (yych <= 'm') goto yy282;
+                               goto yy595;
                        } else {
-                               if (yych == 'v') goto yy594;
-                               goto yy280;
+                               if (yych == 'v') goto yy596;
+                               goto yy282;
                        }
                }
-yy585:
-               YYDEBUG(585, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy586;
-               if (yych != 't') goto yy280;
-yy586:
-               YYDEBUG(586, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy587;
-               if (yych != 'e') goto yy280;
 yy587:
                YYDEBUG(587, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy588;
-               if (yych != 'c') goto yy280;
+               if (yych == 'T') goto yy588;
+               if (yych != 't') goto yy282;
 yy588:
                YYDEBUG(588, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy589;
-               if (yych != 't') goto yy280;
+               if (yych == 'E') goto yy589;
+               if (yych != 'e') goto yy282;
 yy589:
                YYDEBUG(589, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy590;
-               if (yych != 'e') goto yy280;
+               if (yych == 'C') goto yy590;
+               if (yych != 'c') goto yy282;
 yy590:
                YYDEBUG(590, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'D') goto yy591;
-               if (yych != 'd') goto yy280;
+               if (yych == 'T') goto yy591;
+               if (yych != 't') goto yy282;
 yy591:
                YYDEBUG(591, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy592;
+               if (yych != 'e') goto yy282;
+yy592:
+               YYDEBUG(592, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'D') goto yy593;
+               if (yych != 'd') goto yy282;
+yy593:
+               YYDEBUG(593, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(592, *YYCURSOR);
+               YYDEBUG(594, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1220 "Zend/zend_language_scanner.l"
+#line 1224 "Zend/zend_language_scanner.l"
                {
        return T_PROTECTED;
 }
-#line 6144 "Zend/zend_language_scanner.c"
-yy593:
-               YYDEBUG(593, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy599;
-               if (yych == 't') goto yy599;
-               goto yy280;
-yy594:
-               YYDEBUG(594, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy595;
-               if (yych != 'a') goto yy280;
+#line 6154 "Zend/zend_language_scanner.c"
 yy595:
                YYDEBUG(595, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy596;
-               if (yych != 't') goto yy280;
+               if (yych == 'T') goto yy601;
+               if (yych == 't') goto yy601;
+               goto yy282;
 yy596:
                YYDEBUG(596, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy597;
-               if (yych != 'e') goto yy280;
+               if (yych == 'A') goto yy597;
+               if (yych != 'a') goto yy282;
 yy597:
                YYDEBUG(597, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy598;
+               if (yych != 't') goto yy282;
+yy598:
+               YYDEBUG(598, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy599;
+               if (yych != 'e') goto yy282;
+yy599:
+               YYDEBUG(599, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(598, *YYCURSOR);
+               YYDEBUG(600, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1216 "Zend/zend_language_scanner.l"
+#line 1220 "Zend/zend_language_scanner.l"
                {
        return T_PRIVATE;
 }
-#line 6178 "Zend/zend_language_scanner.c"
-yy599:
-               YYDEBUG(599, *YYCURSOR);
+#line 6188 "Zend/zend_language_scanner.c"
+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 1062 "Zend/zend_language_scanner.l"
                {
        return T_PRINT;
 }
-#line 6191 "Zend/zend_language_scanner.c"
-yy601:
-               YYDEBUG(601, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'O') goto yy606;
-               if (yych == 'o') goto yy606;
-               goto yy280;
-yy602:
-               YYDEBUG(602, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy603;
-               if (yych != 't') goto yy280;
+#line 6201 "Zend/zend_language_scanner.c"
 yy603:
                YYDEBUG(603, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy604;
-               if (yych != 'o') goto yy280;
+               if (yych == 'O') goto yy608;
+               if (yych == 'o') goto yy608;
+               goto yy282;
 yy604:
                YYDEBUG(604, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy605;
+               if (yych != 't') goto yy282;
+yy605:
+               YYDEBUG(605, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'O') goto yy606;
+               if (yych != 'o') goto yy282;
+yy606:
+               YYDEBUG(606, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(605, *YYCURSOR);
+               YYDEBUG(607, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 1054 "Zend/zend_language_scanner.l"
                {
        return T_GOTO;
 }
-#line 6220 "Zend/zend_language_scanner.c"
-yy606:
-               YYDEBUG(606, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'B') goto yy607;
-               if (yych != 'b') goto yy280;
-yy607:
-               YYDEBUG(607, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy608;
-               if (yych != 'a') goto yy280;
+#line 6230 "Zend/zend_language_scanner.c"
 yy608:
                YYDEBUG(608, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy609;
-               if (yych != 'l') goto yy280;
+               if (yych == 'B') goto yy609;
+               if (yych != 'b') goto yy282;
 yy609:
                YYDEBUG(609, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'A') goto yy610;
+               if (yych != 'a') goto yy282;
+yy610:
+               YYDEBUG(610, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'L') goto yy611;
+               if (yych != 'l') goto yy282;
+yy611:
+               YYDEBUG(611, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(610, *YYCURSOR);
+               YYDEBUG(612, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1188 "Zend/zend_language_scanner.l"
+#line 1192 "Zend/zend_language_scanner.l"
                {
        return T_GLOBAL;
 }
-#line 6248 "Zend/zend_language_scanner.c"
-yy611:
-               YYDEBUG(611, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '<') goto yy618;
-               goto yy270;
-yy612:
-               YYDEBUG(612, *YYCURSOR);
-               yyaccept = 3;
-               yych = *(YYMARKER = ++YYCURSOR);
-               goto yy272;
+#line 6258 "Zend/zend_language_scanner.c"
 yy613:
                YYDEBUG(613, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy614;
-               if (yych != 'e') goto yy280;
+               if (yych == '<') goto yy620;
+               goto yy272;
 yy614:
                YYDEBUG(614, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy615;
-               if (yych != 'a') goto yy280;
+               yyaccept = 3;
+               yych = *(YYMARKER = ++YYCURSOR);
+               goto yy274;
 yy615:
                YYDEBUG(615, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'K') goto yy616;
-               if (yych != 'k') goto yy280;
+               if (yych == 'E') goto yy616;
+               if (yych != 'e') goto yy282;
 yy616:
                YYDEBUG(616, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'A') goto yy617;
+               if (yych != 'a') goto yy282;
+yy617:
+               YYDEBUG(617, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'K') goto yy618;
+               if (yych != 'k') goto yy282;
+yy618:
+               YYDEBUG(618, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(617, *YYCURSOR);
+               YYDEBUG(619, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 1046 "Zend/zend_language_scanner.l"
                {
        return T_BREAK;
 }
-#line 6286 "Zend/zend_language_scanner.c"
-yy618:
-               YYDEBUG(618, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '<') goto yy359;
-               goto yy270;
-yy619:
-               YYDEBUG(619, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy626;
-               if (yych == 'a') goto yy626;
-               goto yy280;
+#line 6296 "Zend/zend_language_scanner.c"
 yy620:
                YYDEBUG(620, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy621;
-               if (yych != 'i') goto yy280;
+               if (yych == '<') goto yy361;
+               goto yy272;
 yy621:
                YYDEBUG(621, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy622;
-               if (yych != 't') goto yy280;
+               if (yych == 'A') goto yy628;
+               if (yych == 'a') goto yy628;
+               goto yy282;
 yy622:
                YYDEBUG(622, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy623;
-               if (yych != 'c') goto yy280;
+               if (yych == 'I') goto yy623;
+               if (yych != 'i') goto yy282;
 yy623:
                YYDEBUG(623, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'H') goto yy624;
-               if (yych != 'h') goto yy280;
+               if (yych == 'T') goto yy624;
+               if (yych != 't') goto yy282;
 yy624:
                YYDEBUG(624, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'C') goto yy625;
+               if (yych != 'c') goto yy282;
+yy625:
+               YYDEBUG(625, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'H') goto yy626;
+               if (yych != 'h') goto yy282;
+yy626:
+               YYDEBUG(626, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(625, *YYCURSOR);
+               YYDEBUG(627, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 1030 "Zend/zend_language_scanner.l"
                {
        return T_SWITCH;
 }
-#line 6330 "Zend/zend_language_scanner.c"
-yy626:
-               YYDEBUG(626, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy627;
-               if (yych != 't') goto yy280;
-yy627:
-               YYDEBUG(627, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'I') goto yy628;
-               if (yych != 'i') goto yy280;
+#line 6340 "Zend/zend_language_scanner.c"
 yy628:
                YYDEBUG(628, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy629;
-               if (yych != 'c') goto yy280;
+               if (yych == 'T') goto yy629;
+               if (yych != 't') goto yy282;
 yy629:
                YYDEBUG(629, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'I') goto yy630;
+               if (yych != 'i') goto yy282;
+yy630:
+               YYDEBUG(630, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'C') goto yy631;
+               if (yych != 'c') goto yy282;
+yy631:
+               YYDEBUG(631, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(630, *YYCURSOR);
+               YYDEBUG(632, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1204 "Zend/zend_language_scanner.l"
+#line 1208 "Zend/zend_language_scanner.l"
                {
        return T_STATIC;
 }
-#line 6358 "Zend/zend_language_scanner.c"
-yy631:
-               YYDEBUG(631, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'S') goto yy642;
-               if (yych == 's') goto yy642;
-               goto yy280;
-yy632:
-               YYDEBUG(632, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'D') goto yy640;
-               if (yych == 'd') goto yy640;
-               goto yy280;
+#line 6368 "Zend/zend_language_scanner.c"
 yy633:
                YYDEBUG(633, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy636;
-               if (yych == 'r') goto yy636;
-               goto yy280;
+               if (yych == 'S') goto yy644;
+               if (yych == 's') goto yy644;
+               goto yy282;
 yy634:
                YYDEBUG(634, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'D') goto yy642;
+               if (yych == 'd') goto yy642;
+               goto yy282;
+yy635:
+               YYDEBUG(635, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'R') goto yy638;
+               if (yych == 'r') goto yy638;
+               goto yy282;
+yy636:
+               YYDEBUG(636, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(635, *YYCURSOR);
+               YYDEBUG(637, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 1026 "Zend/zend_language_scanner.l"
                {
        return T_AS;
 }
-#line 6389 "Zend/zend_language_scanner.c"
-yy636:
-               YYDEBUG(636, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy637;
-               if (yych != 'a') goto yy280;
-yy637:
-               YYDEBUG(637, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'Y') goto yy638;
-               if (yych != 'y') goto yy280;
+#line 6399 "Zend/zend_language_scanner.c"
 yy638:
                YYDEBUG(638, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'A') goto yy639;
+               if (yych != 'a') goto yy282;
+yy639:
+               YYDEBUG(639, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'Y') goto yy640;
+               if (yych != 'y') goto yy282;
+yy640:
+               YYDEBUG(640, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(639, *YYCURSOR);
+               YYDEBUG(641, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1240 "Zend/zend_language_scanner.l"
+#line 1244 "Zend/zend_language_scanner.l"
                {
        return T_ARRAY;
 }
-#line 6412 "Zend/zend_language_scanner.c"
-yy640:
-               YYDEBUG(640, *YYCURSOR);
+#line 6422 "Zend/zend_language_scanner.c"
+yy642:
+               YYDEBUG(642, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(641, *YYCURSOR);
+               YYDEBUG(643, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1332 "Zend/zend_language_scanner.l"
+#line 1336 "Zend/zend_language_scanner.l"
                {
        return T_LOGICAL_AND;
 }
-#line 6425 "Zend/zend_language_scanner.c"
-yy642:
-               YYDEBUG(642, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy643;
-               if (yych != 't') goto yy280;
-yy643:
-               YYDEBUG(643, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'R') goto yy644;
-               if (yych != 'r') goto yy280;
+#line 6435 "Zend/zend_language_scanner.c"
 yy644:
                YYDEBUG(644, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy645;
-               if (yych != 'a') goto yy280;
+               if (yych == 'T') goto yy645;
+               if (yych != 't') goto yy282;
 yy645:
                YYDEBUG(645, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy646;
-               if (yych != 'c') goto yy280;
+               if (yych == 'R') goto yy646;
+               if (yych != 'r') goto yy282;
 yy646:
                YYDEBUG(646, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy647;
-               if (yych != 't') goto yy280;
+               if (yych == 'A') goto yy647;
+               if (yych != 'a') goto yy282;
 yy647:
                YYDEBUG(647, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'C') goto yy648;
+               if (yych != 'c') goto yy282;
+yy648:
+               YYDEBUG(648, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy649;
+               if (yych != 't') goto yy282;
+yy649:
+               YYDEBUG(649, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(648, *YYCURSOR);
+               YYDEBUG(650, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1208 "Zend/zend_language_scanner.l"
+#line 1212 "Zend/zend_language_scanner.l"
                {
        return T_ABSTRACT;
 }
-#line 6463 "Zend/zend_language_scanner.c"
-yy649:
-               YYDEBUG(649, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'I') goto yy650;
-               if (yych != 'i') goto yy280;
-yy650:
-               YYDEBUG(650, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'L') goto yy651;
-               if (yych != 'l') goto yy280;
+#line 6473 "Zend/zend_language_scanner.c"
 yy651:
                YYDEBUG(651, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy652;
-               if (yych != 'e') goto yy280;
+               if (yych == 'I') goto yy652;
+               if (yych != 'i') goto yy282;
 yy652:
                YYDEBUG(652, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'L') goto yy653;
+               if (yych != 'l') goto yy282;
+yy653:
+               YYDEBUG(653, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy654;
+               if (yych != 'e') goto yy282;
+yy654:
+               YYDEBUG(654, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(653, *YYCURSOR);
+               YYDEBUG(655, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 986 "Zend/zend_language_scanner.l"
                {
        return T_WHILE;
 }
-#line 6491 "Zend/zend_language_scanner.c"
-yy654:
-               YYDEBUG(654, *YYCURSOR);
+#line 6501 "Zend/zend_language_scanner.c"
+yy656:
+               YYDEBUG(656, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(655, *YYCURSOR);
+               YYDEBUG(657, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 970 "Zend/zend_language_scanner.l"
                {
        return T_IF;
 }
-#line 6504 "Zend/zend_language_scanner.c"
-yy656:
-               YYDEBUG(656, *YYCURSOR);
+#line 6514 "Zend/zend_language_scanner.c"
+yy658:
+               YYDEBUG(658, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'P') goto yy692;
-               if (yych == 'p') goto yy692;
-               goto yy280;
-yy657:
-               YYDEBUG(657, *YYCURSOR);
+               if (yych == 'P') goto yy694;
+               if (yych == 'p') goto yy694;
+               goto yy282;
+yy659:
+               YYDEBUG(659, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'T') {
                        if (yych <= 'C') {
-                               if (yych <= 'B') goto yy280;
-                               goto yy665;
+                               if (yych <= 'B') goto yy282;
+                               goto yy667;
                        } else {
-                               if (yych <= 'R') goto yy280;
-                               if (yych <= 'S') goto yy663;
-                               goto yy664;
+                               if (yych <= 'R') goto yy282;
+                               if (yych <= 'S') goto yy665;
+                               goto yy666;
                        }
                } else {
                        if (yych <= 'r') {
-                               if (yych == 'c') goto yy665;
-                               goto yy280;
+                               if (yych == 'c') goto yy667;
+                               goto yy282;
                        } else {
-                               if (yych <= 's') goto yy663;
-                               if (yych <= 't') goto yy664;
-                               goto yy280;
+                               if (yych <= 's') goto yy665;
+                               if (yych <= 't') goto yy666;
+                               goto yy282;
                        }
                }
-yy658:
-               YYDEBUG(658, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'S') goto yy659;
-               if (yych != 's') goto yy280;
-yy659:
-               YYDEBUG(659, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy660;
-               if (yych != 'e') goto yy280;
 yy660:
                YYDEBUG(660, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy661;
-               if (yych != 't') goto yy280;
+               if (yych == 'S') goto yy661;
+               if (yych != 's') goto yy282;
 yy661:
                YYDEBUG(661, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy662;
+               if (yych != 'e') goto yy282;
+yy662:
+               YYDEBUG(662, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy663;
+               if (yych != 't') goto yy282;
+yy663:
+               YYDEBUG(663, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(662, *YYCURSOR);
+               YYDEBUG(664, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1192 "Zend/zend_language_scanner.l"
+#line 1196 "Zend/zend_language_scanner.l"
                {
        return T_ISSET;
 }
-#line 6560 "Zend/zend_language_scanner.c"
-yy663:
-               YYDEBUG(663, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy684;
-               if (yych == 't') goto yy684;
-               goto yy280;
-yy664:
-               YYDEBUG(664, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy677;
-               if (yych == 'e') goto yy677;
-               goto yy280;
+#line 6570 "Zend/zend_language_scanner.c"
 yy665:
                YYDEBUG(665, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy666;
-               if (yych != 'l') goto yy280;
+               if (yych == 'T') goto yy686;
+               if (yych == 't') goto yy686;
+               goto yy282;
 yy666:
                YYDEBUG(666, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'U') goto yy667;
-               if (yych != 'u') goto yy280;
+               if (yych == 'E') goto yy679;
+               if (yych == 'e') goto yy679;
+               goto yy282;
 yy667:
                YYDEBUG(667, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'D') goto yy668;
-               if (yych != 'd') goto yy280;
+               if (yych == 'L') goto yy668;
+               if (yych != 'l') goto yy282;
 yy668:
                YYDEBUG(668, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy669;
-               if (yych != 'e') goto yy280;
+               if (yych == 'U') goto yy669;
+               if (yych != 'u') goto yy282;
 yy669:
                YYDEBUG(669, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'D') goto yy670;
+               if (yych != 'd') goto yy282;
+yy670:
+               YYDEBUG(670, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy671;
+               if (yych != 'e') goto yy282;
+yy671:
+               YYDEBUG(671, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '^') {
                        if (yych <= '9') {
-                               if (yych >= '0') goto yy279;
+                               if (yych >= '0') goto yy281;
                        } else {
-                               if (yych <= '@') goto yy670;
-                               if (yych <= 'Z') goto yy279;
+                               if (yych <= '@') goto yy672;
+                               if (yych <= 'Z') goto yy281;
                        }
                } else {
                        if (yych <= '`') {
-                               if (yych <= '_') goto yy671;
+                               if (yych <= '_') goto yy673;
                        } else {
-                               if (yych <= 'z') goto yy279;
-                               if (yych >= 0x7F) goto yy279;
+                               if (yych <= 'z') goto yy281;
+                               if (yych >= 0x7F) goto yy281;
                        }
                }
-yy670:
-               YYDEBUG(670, *YYCURSOR);
+yy672:
+               YYDEBUG(672, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1164 "Zend/zend_language_scanner.l"
+#line 1168 "Zend/zend_language_scanner.l"
                {
        return T_INCLUDE;
 }
-#line 6618 "Zend/zend_language_scanner.c"
-yy671:
-               YYDEBUG(671, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'O') goto yy672;
-               if (yych != 'o') goto yy280;
-yy672:
-               YYDEBUG(672, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'N') goto yy673;
-               if (yych != 'n') goto yy280;
+#line 6628 "Zend/zend_language_scanner.c"
 yy673:
                YYDEBUG(673, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy674;
-               if (yych != 'c') goto yy280;
+               if (yych == 'O') goto yy674;
+               if (yych != 'o') goto yy282;
 yy674:
                YYDEBUG(674, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy675;
-               if (yych != 'e') goto yy280;
+               if (yych == 'N') goto yy675;
+               if (yych != 'n') goto yy282;
 yy675:
                YYDEBUG(675, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'C') goto yy676;
+               if (yych != 'c') goto yy282;
+yy676:
+               YYDEBUG(676, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy677;
+               if (yych != 'e') goto yy282;
+yy677:
+               YYDEBUG(677, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(676, *YYCURSOR);
+               YYDEBUG(678, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1168 "Zend/zend_language_scanner.l"
+#line 1172 "Zend/zend_language_scanner.l"
                {
        return T_INCLUDE_ONCE;
 }
-#line 6651 "Zend/zend_language_scanner.c"
-yy677:
-               YYDEBUG(677, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'R') goto yy678;
-               if (yych != 'r') goto yy280;
-yy678:
-               YYDEBUG(678, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'F') goto yy679;
-               if (yych != 'f') goto yy280;
+#line 6661 "Zend/zend_language_scanner.c"
 yy679:
                YYDEBUG(679, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy680;
-               if (yych != 'a') goto yy280;
+               if (yych == 'R') goto yy680;
+               if (yych != 'r') goto yy282;
 yy680:
                YYDEBUG(680, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy681;
-               if (yych != 'c') goto yy280;
+               if (yych == 'F') goto yy681;
+               if (yych != 'f') goto yy282;
 yy681:
                YYDEBUG(681, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy682;
-               if (yych != 'e') goto yy280;
+               if (yych == 'A') goto yy682;
+               if (yych != 'a') goto yy282;
 yy682:
                YYDEBUG(682, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'C') goto yy683;
+               if (yych != 'c') goto yy282;
+yy683:
+               YYDEBUG(683, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy684;
+               if (yych != 'e') goto yy282;
+yy684:
+               YYDEBUG(684, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(683, *YYCURSOR);
+               YYDEBUG(685, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 1070 "Zend/zend_language_scanner.l"
                {
        return T_INTERFACE;
 }
-#line 6689 "Zend/zend_language_scanner.c"
-yy684:
-               YYDEBUG(684, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy685;
-               if (yych != 'a') goto yy280;
-yy685:
-               YYDEBUG(685, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'N') goto yy686;
-               if (yych != 'n') goto yy280;
+#line 6699 "Zend/zend_language_scanner.c"
 yy686:
                YYDEBUG(686, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy687;
-               if (yych != 'c') goto yy280;
+               if (yych == 'A') goto yy687;
+               if (yych != 'a') goto yy282;
 yy687:
                YYDEBUG(687, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy688;
-               if (yych != 'e') goto yy280;
+               if (yych == 'N') goto yy688;
+               if (yych != 'n') goto yy282;
 yy688:
                YYDEBUG(688, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy689;
-               if (yych != 'o') goto yy280;
+               if (yych == 'C') goto yy689;
+               if (yych != 'c') goto yy282;
 yy689:
                YYDEBUG(689, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'F') goto yy690;
-               if (yych != 'f') goto yy280;
+               if (yych == 'E') goto yy690;
+               if (yych != 'e') goto yy282;
 yy690:
                YYDEBUG(690, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'O') goto yy691;
+               if (yych != 'o') goto yy282;
+yy691:
+               YYDEBUG(691, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'F') goto yy692;
+               if (yych != 'f') goto yy282;
+yy692:
+               YYDEBUG(692, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(691, *YYCURSOR);
+               YYDEBUG(693, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 1022 "Zend/zend_language_scanner.l"
                {
        return T_INSTANCEOF;
 }
-#line 6732 "Zend/zend_language_scanner.c"
-yy692:
-               YYDEBUG(692, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'L') goto yy693;
-               if (yych != 'l') goto yy280;
-yy693:
-               YYDEBUG(693, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy694;
-               if (yych != 'e') goto yy280;
+#line 6742 "Zend/zend_language_scanner.c"
 yy694:
                YYDEBUG(694, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'M') goto yy695;
-               if (yych != 'm') goto yy280;
+               if (yych == 'L') goto yy695;
+               if (yych != 'l') goto yy282;
 yy695:
                YYDEBUG(695, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych == 'E') goto yy696;
-               if (yych != 'e') goto yy280;
+               if (yych != 'e') goto yy282;
 yy696:
                YYDEBUG(696, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy697;
-               if (yych != 'n') goto yy280;
+               if (yych == 'M') goto yy697;
+               if (yych != 'm') goto yy282;
 yy697:
                YYDEBUG(697, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy698;
-               if (yych != 't') goto yy280;
+               if (yych == 'E') goto yy698;
+               if (yych != 'e') goto yy282;
 yy698:
                YYDEBUG(698, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'S') goto yy699;
-               if (yych != 's') goto yy280;
+               if (yych == 'N') goto yy699;
+               if (yych != 'n') goto yy282;
 yy699:
                YYDEBUG(699, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy700;
+               if (yych != 't') goto yy282;
+yy700:
+               YYDEBUG(700, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'S') goto yy701;
+               if (yych != 's') 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 1078 "Zend/zend_language_scanner.l"
                {
        return T_IMPLEMENTS;
 }
-#line 6780 "Zend/zend_language_scanner.c"
-yy701:
-               YYDEBUG(701, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'R') goto yy705;
-               if (yych == 'r') goto yy705;
-               goto yy280;
-yy702:
-               YYDEBUG(702, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'Y') goto yy703;
-               if (yych != 'y') goto yy280;
+#line 6790 "Zend/zend_language_scanner.c"
 yy703:
                YYDEBUG(703, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'R') goto yy707;
+               if (yych == 'r') goto yy707;
+               goto yy282;
+yy704:
+               YYDEBUG(704, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'Y') goto yy705;
+               if (yych != 'y') goto yy282;
+yy705:
+               YYDEBUG(705, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(704, *YYCURSOR);
+               YYDEBUG(706, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 958 "Zend/zend_language_scanner.l"
                {
        return T_TRY;
 }
-#line 6804 "Zend/zend_language_scanner.c"
-yy705:
-               YYDEBUG(705, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'O') goto yy706;
-               if (yych != 'o') goto yy280;
-yy706:
-               YYDEBUG(706, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'W') goto yy707;
-               if (yych != 'w') goto yy280;
+#line 6814 "Zend/zend_language_scanner.c"
 yy707:
                YYDEBUG(707, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'O') goto yy708;
+               if (yych != 'o') goto yy282;
+yy708:
+               YYDEBUG(708, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'W') goto yy709;
+               if (yych != 'w') goto yy282;
+yy709:
+               YYDEBUG(709, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(708, *YYCURSOR);
+               YYDEBUG(710, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 966 "Zend/zend_language_scanner.l"
                {
        return T_THROW;
 }
-#line 6827 "Zend/zend_language_scanner.c"
-yy709:
-               YYDEBUG(709, *YYCURSOR);
+#line 6837 "Zend/zend_language_scanner.c"
+yy711:
+               YYDEBUG(711, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'T') {
-                       if (yych == 'Q') goto yy711;
-                       if (yych <= 'S') goto yy280;
+                       if (yych == 'Q') goto yy713;
+                       if (yych <= 'S') goto yy282;
                } else {
                        if (yych <= 'q') {
-                               if (yych <= 'p') goto yy280;
-                               goto yy711;
+                               if (yych <= 'p') goto yy282;
+                               goto yy713;
                        } else {
-                               if (yych != 't') goto yy280;
+                               if (yych != 't') goto yy282;
                        }
                }
-               YYDEBUG(710, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'U') goto yy723;
-               if (yych == 'u') goto yy723;
-               goto yy280;
-yy711:
-               YYDEBUG(711, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'U') goto yy712;
-               if (yych != 'u') goto yy280;
-yy712:
                YYDEBUG(712, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy713;
-               if (yych != 'i') goto yy280;
+               if (yych == 'U') goto yy725;
+               if (yych == 'u') goto yy725;
+               goto yy282;
 yy713:
                YYDEBUG(713, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy714;
-               if (yych != 'r') goto yy280;
+               if (yych == 'U') goto yy714;
+               if (yych != 'u') goto yy282;
 yy714:
                YYDEBUG(714, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy715;
-               if (yych != 'e') goto yy280;
+               if (yych == 'I') goto yy715;
+               if (yych != 'i') goto yy282;
 yy715:
                YYDEBUG(715, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'R') goto yy716;
+               if (yych != 'r') goto yy282;
+yy716:
+               YYDEBUG(716, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy717;
+               if (yych != 'e') goto yy282;
+yy717:
+               YYDEBUG(717, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '^') {
                        if (yych <= '9') {
-                               if (yych >= '0') goto yy279;
+                               if (yych >= '0') goto yy281;
                        } else {
-                               if (yych <= '@') goto yy716;
-                               if (yych <= 'Z') goto yy279;
+                               if (yych <= '@') goto yy718;
+                               if (yych <= 'Z') goto yy281;
                        }
                } else {
                        if (yych <= '`') {
-                               if (yych <= '_') goto yy717;
+                               if (yych <= '_') goto yy719;
                        } else {
-                               if (yych <= 'z') goto yy279;
-                               if (yych >= 0x7F) goto yy279;
+                               if (yych <= 'z') goto yy281;
+                               if (yych >= 0x7F) goto yy281;
                        }
                }
-yy716:
-               YYDEBUG(716, *YYCURSOR);
+yy718:
+               YYDEBUG(718, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1172 "Zend/zend_language_scanner.l"
+#line 1176 "Zend/zend_language_scanner.l"
                {
        return T_REQUIRE;
 }
-#line 6892 "Zend/zend_language_scanner.c"
-yy717:
-               YYDEBUG(717, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'O') goto yy718;
-               if (yych != 'o') goto yy280;
-yy718:
-               YYDEBUG(718, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'N') goto yy719;
-               if (yych != 'n') goto yy280;
+#line 6902 "Zend/zend_language_scanner.c"
 yy719:
                YYDEBUG(719, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy720;
-               if (yych != 'c') goto yy280;
+               if (yych == 'O') goto yy720;
+               if (yych != 'o') goto yy282;
 yy720:
                YYDEBUG(720, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy721;
-               if (yych != 'e') goto yy280;
+               if (yych == 'N') goto yy721;
+               if (yych != 'n') goto yy282;
 yy721:
                YYDEBUG(721, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'C') goto yy722;
+               if (yych != 'c') goto yy282;
+yy722:
+               YYDEBUG(722, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy723;
+               if (yych != 'e') goto yy282;
+yy723:
+               YYDEBUG(723, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(722, *YYCURSOR);
+               YYDEBUG(724, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1176 "Zend/zend_language_scanner.l"
+#line 1180 "Zend/zend_language_scanner.l"
                {
        return T_REQUIRE_ONCE;
 }
-#line 6925 "Zend/zend_language_scanner.c"
-yy723:
-               YYDEBUG(723, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'R') goto yy724;
-               if (yych != 'r') goto yy280;
-yy724:
-               YYDEBUG(724, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'N') goto yy725;
-               if (yych != 'n') goto yy280;
+#line 6935 "Zend/zend_language_scanner.c"
 yy725:
                YYDEBUG(725, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'R') goto yy726;
+               if (yych != 'r') goto yy282;
+yy726:
+               YYDEBUG(726, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'N') goto yy727;
+               if (yych != 'n') goto yy282;
+yy727:
+               YYDEBUG(727, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(726, *YYCURSOR);
+               YYDEBUG(728, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 954 "Zend/zend_language_scanner.l"
                {
        return T_RETURN;
 }
-#line 6948 "Zend/zend_language_scanner.c"
-yy727:
-               YYDEBUG(727, *YYCURSOR);
+#line 6958 "Zend/zend_language_scanner.c"
+yy729:
+               YYDEBUG(729, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'T') {
-                       if (yych <= 'R') goto yy280;
-                       if (yych <= 'S') goto yy749;
-                       goto yy748;
+                       if (yych <= 'R') goto yy282;
+                       if (yych <= 'S') goto yy751;
+                       goto yy750;
                } else {
-                       if (yych <= 'r') goto yy280;
-                       if (yych <= 's') goto yy749;
-                       if (yych <= 't') goto yy748;
-                       goto yy280;
+                       if (yych <= 'r') goto yy282;
+                       if (yych <= 's') goto yy751;
+                       if (yych <= 't') goto yy750;
+                       goto yy282;
                }
-yy728:
-               YYDEBUG(728, *YYCURSOR);
+yy730:
+               YYDEBUG(730, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'O') {
-                       if (yych == 'A') goto yy740;
-                       if (yych <= 'N') goto yy280;
-                       goto yy741;
+                       if (yych == 'A') goto yy742;
+                       if (yych <= 'N') goto yy282;
+                       goto yy743;
                } else {
                        if (yych <= 'a') {
-                               if (yych <= '`') goto yy280;
-                               goto yy740;
+                               if (yych <= '`') goto yy282;
+                               goto yy742;
                        } else {
-                               if (yych == 'o') goto yy741;
-                               goto yy280;
+                               if (yych == 'o') goto yy743;
+                               goto yy282;
                        }
                }
-yy729:
-               YYDEBUG(729, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'N') goto yy730;
-               if (yych != 'n') goto yy280;
-yy730:
-               YYDEBUG(730, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych <= 'T') {
-                       if (yych <= 'R') goto yy280;
-                       if (yych >= 'T') goto yy732;
-               } else {
-                       if (yych <= 'r') goto yy280;
-                       if (yych <= 's') goto yy731;
-                       if (yych <= 't') goto yy732;
-                       goto yy280;
-               }
 yy731:
                YYDEBUG(731, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy738;
-               if (yych == 't') goto yy738;
-               goto yy280;
+               if (yych == 'N') goto yy732;
+               if (yych != 'n') goto yy282;
 yy732:
                YYDEBUG(732, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy733;
-               if (yych != 'i') goto yy280;
+               if (yych <= 'T') {
+                       if (yych <= 'R') goto yy282;
+                       if (yych >= 'T') goto yy734;
+               } else {
+                       if (yych <= 'r') goto yy282;
+                       if (yych <= 's') goto yy733;
+                       if (yych <= 't') goto yy734;
+                       goto yy282;
+               }
 yy733:
                YYDEBUG(733, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy734;
-               if (yych != 'n') goto yy280;
+               if (yych == 'T') goto yy740;
+               if (yych == 't') goto yy740;
+               goto yy282;
 yy734:
                YYDEBUG(734, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'U') goto yy735;
-               if (yych != 'u') goto yy280;
+               if (yych == 'I') goto yy735;
+               if (yych != 'i') goto yy282;
 yy735:
                YYDEBUG(735, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy736;
-               if (yych != 'e') goto yy280;
+               if (yych == 'N') goto yy736;
+               if (yych != 'n') goto yy282;
 yy736:
                YYDEBUG(736, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'U') goto yy737;
+               if (yych != 'u') goto yy282;
+yy737:
+               YYDEBUG(737, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy738;
+               if (yych != 'e') goto yy282;
+yy738:
+               YYDEBUG(738, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(737, *YYCURSOR);
+               YYDEBUG(739, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 1050 "Zend/zend_language_scanner.l"
                {
        return T_CONTINUE;
 }
-#line 7033 "Zend/zend_language_scanner.c"
-yy738:
-               YYDEBUG(738, *YYCURSOR);
+#line 7043 "Zend/zend_language_scanner.c"
+yy740:
+               YYDEBUG(740, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(739, *YYCURSOR);
+               YYDEBUG(741, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 950 "Zend/zend_language_scanner.l"
                {
        return T_CONST;
 }
-#line 7046 "Zend/zend_language_scanner.c"
-yy740:
-               YYDEBUG(740, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'S') goto yy745;
-               if (yych == 's') goto yy745;
-               goto yy280;
-yy741:
-               YYDEBUG(741, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'N') goto yy742;
-               if (yych != 'n') goto yy280;
+#line 7056 "Zend/zend_language_scanner.c"
 yy742:
                YYDEBUG(742, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy743;
-               if (yych != 'e') goto yy280;
+               if (yych == 'S') goto yy747;
+               if (yych == 's') goto yy747;
+               goto yy282;
 yy743:
                YYDEBUG(743, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'N') goto yy744;
+               if (yych != 'n') goto yy282;
+yy744:
+               YYDEBUG(744, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy745;
+               if (yych != 'e') goto yy282;
+yy745:
+               YYDEBUG(745, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(744, *YYCURSOR);
+               YYDEBUG(746, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1120 "Zend/zend_language_scanner.l"
+#line 1124 "Zend/zend_language_scanner.l"
                {
        return T_CLONE;
 }
-#line 7075 "Zend/zend_language_scanner.c"
-yy745:
-               YYDEBUG(745, *YYCURSOR);
+#line 7085 "Zend/zend_language_scanner.c"
+yy747:
+               YYDEBUG(747, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'S') goto yy746;
-               if (yych != 's') goto yy280;
-yy746:
-               YYDEBUG(746, *YYCURSOR);
+               if (yych == 'S') goto yy748;
+               if (yych != 's') goto yy282;
+yy748:
+               YYDEBUG(748, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(747, *YYCURSOR);
+               YYDEBUG(749, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 1066 "Zend/zend_language_scanner.l"
                {
        return T_CLASS;
 }
-#line 7093 "Zend/zend_language_scanner.c"
-yy748:
-               YYDEBUG(748, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'C') goto yy752;
-               if (yych == 'c') goto yy752;
-               goto yy280;
-yy749:
-               YYDEBUG(749, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy750;
-               if (yych != 'e') goto yy280;
+#line 7103 "Zend/zend_language_scanner.c"
 yy750:
                YYDEBUG(750, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'C') goto yy754;
+               if (yych == 'c') goto yy754;
+               goto yy282;
+yy751:
+               YYDEBUG(751, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy752;
+               if (yych != 'e') goto yy282;
+yy752:
+               YYDEBUG(752, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(751, *YYCURSOR);
+               YYDEBUG(753, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 1038 "Zend/zend_language_scanner.l"
                {
        return T_CASE;
 }
-#line 7117 "Zend/zend_language_scanner.c"
-yy752:
-               YYDEBUG(752, *YYCURSOR);
+#line 7127 "Zend/zend_language_scanner.c"
+yy754:
+               YYDEBUG(754, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'H') goto yy753;
-               if (yych != 'h') goto yy280;
-yy753:
-               YYDEBUG(753, *YYCURSOR);
+               if (yych == 'H') goto yy755;
+               if (yych != 'h') goto yy282;
+yy755:
+               YYDEBUG(755, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(754, *YYCURSOR);
+               YYDEBUG(756, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 962 "Zend/zend_language_scanner.l"
                {
        return T_CATCH;
 }
-#line 7135 "Zend/zend_language_scanner.c"
-yy755:
-               YYDEBUG(755, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'N') goto yy772;
-               if (yych == 'n') goto yy772;
-               goto yy280;
-yy756:
-               YYDEBUG(756, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'R') goto yy765;
-               if (yych == 'r') goto yy765;
-               goto yy280;
+#line 7145 "Zend/zend_language_scanner.c"
 yy757:
                YYDEBUG(757, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy758;
-               if (yych != 'n') goto yy280;
+               if (yych == 'N') goto yy774;
+               if (yych == 'n') goto yy774;
+               goto yy282;
 yy758:
                YYDEBUG(758, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy759;
-               if (yych != 'c') goto yy280;
+               if (yych == 'R') goto yy767;
+               if (yych == 'r') goto yy767;
+               goto yy282;
 yy759:
                YYDEBUG(759, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy760;
-               if (yych != 't') goto yy280;
+               if (yych == 'N') goto yy760;
+               if (yych != 'n') goto yy282;
 yy760:
                YYDEBUG(760, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy761;
-               if (yych != 'i') goto yy280;
+               if (yych == 'C') goto yy761;
+               if (yych != 'c') goto yy282;
 yy761:
                YYDEBUG(761, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy762;
-               if (yych != 'o') goto yy280;
+               if (yych == 'T') goto yy762;
+               if (yych != 't') goto yy282;
 yy762:
                YYDEBUG(762, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy763;
-               if (yych != 'n') goto yy280;
+               if (yych == 'I') goto yy763;
+               if (yych != 'i') goto yy282;
 yy763:
                YYDEBUG(763, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'O') goto yy764;
+               if (yych != 'o') goto yy282;
+yy764:
+               YYDEBUG(764, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'N') goto yy765;
+               if (yych != 'n') goto yy282;
+yy765:
+               YYDEBUG(765, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(764, *YYCURSOR);
+               YYDEBUG(766, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 946 "Zend/zend_language_scanner.l"
                {
        return T_FUNCTION;
 }
-#line 7190 "Zend/zend_language_scanner.c"
-yy765:
-               YYDEBUG(765, *YYCURSOR);
+#line 7200 "Zend/zend_language_scanner.c"
+yy767:
+               YYDEBUG(767, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '^') {
                        if (yych <= '@') {
-                               if (yych <= '/') goto yy766;
-                               if (yych <= '9') goto yy279;
+                               if (yych <= '/') goto yy768;
+                               if (yych <= '9') goto yy281;
                        } else {
-                               if (yych == 'E') goto yy767;
-                               if (yych <= 'Z') goto yy279;
+                               if (yych == 'E') goto yy769;
+                               if (yych <= 'Z') goto yy281;
                        }
                } else {
                        if (yych <= 'd') {
-                               if (yych != '`') goto yy279;
+                               if (yych != '`') goto yy281;
                        } else {
-                               if (yych <= 'e') goto yy767;
-                               if (yych <= 'z') goto yy279;
-                               if (yych >= 0x7F) goto yy279;
+                               if (yych <= 'e') goto yy769;
+                               if (yych <= 'z') goto yy281;
+                               if (yych >= 0x7F) goto yy281;
                        }
                }
-yy766:
-               YYDEBUG(766, *YYCURSOR);
+yy768:
+               YYDEBUG(768, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 998 "Zend/zend_language_scanner.l"
                {
        return T_FOR;
 }
-#line 7218 "Zend/zend_language_scanner.c"
-yy767:
-               YYDEBUG(767, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy768;
-               if (yych != 'a') goto yy280;
-yy768:
-               YYDEBUG(768, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'C') goto yy769;
-               if (yych != 'c') goto yy280;
+#line 7228 "Zend/zend_language_scanner.c"
 yy769:
                YYDEBUG(769, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'H') goto yy770;
-               if (yych != 'h') goto yy280;
+               if (yych == 'A') goto yy770;
+               if (yych != 'a') goto yy282;
 yy770:
                YYDEBUG(770, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'C') goto yy771;
+               if (yych != 'c') goto yy282;
+yy771:
+               YYDEBUG(771, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'H') goto yy772;
+               if (yych != 'h') 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 1006 "Zend/zend_language_scanner.l"
                {
        return T_FOREACH;
 }
-#line 7246 "Zend/zend_language_scanner.c"
-yy772:
-               YYDEBUG(772, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy773;
-               if (yych != 'a') goto yy280;
-yy773:
-               YYDEBUG(773, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'L') goto yy774;
-               if (yych != 'l') goto yy280;
+#line 7256 "Zend/zend_language_scanner.c"
 yy774:
                YYDEBUG(774, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'A') goto yy775;
+               if (yych != 'a') goto yy282;
+yy775:
+               YYDEBUG(775, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'L') goto yy776;
+               if (yych != 'l') goto yy282;
+yy776:
+               YYDEBUG(776, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(775, *YYCURSOR);
+               YYDEBUG(777, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1212 "Zend/zend_language_scanner.l"
+#line 1216 "Zend/zend_language_scanner.l"
                {
        return T_FINAL;
 }
-#line 7269 "Zend/zend_language_scanner.c"
-yy776:
-               YYDEBUG(776, *YYCURSOR);
+#line 7279 "Zend/zend_language_scanner.c"
+yy778:
+               YYDEBUG(778, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'F') {
-                       if (yych == 'C') goto yy782;
-                       if (yych <= 'E') goto yy280;
-                       goto yy783;
+                       if (yych == 'C') goto yy784;
+                       if (yych <= 'E') goto yy282;
+                       goto yy785;
                } else {
                        if (yych <= 'c') {
-                               if (yych <= 'b') goto yy280;
-                               goto yy782;
+                               if (yych <= 'b') goto yy282;
+                               goto yy784;
                        } else {
-                               if (yych == 'f') goto yy783;
-                               goto yy280;
+                               if (yych == 'f') goto yy785;
+                               goto yy282;
                        }
                }
-yy777:
-               YYDEBUG(777, *YYCURSOR);
+yy779:
+               YYDEBUG(779, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy780;
-               if (yych == 'e') goto yy780;
-               goto yy280;
-yy778:
-               YYDEBUG(778, *YYCURSOR);
+               if (yych == 'E') goto yy782;
+               if (yych == 'e') goto yy782;
+               goto yy282;
+yy780:
+               YYDEBUG(780, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(779, *YYCURSOR);
+               YYDEBUG(781, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 994 "Zend/zend_language_scanner.l"
                {
        return T_DO;
 }
-#line 7304 "Zend/zend_language_scanner.c"
-yy780:
-               YYDEBUG(780, *YYCURSOR);
+#line 7314 "Zend/zend_language_scanner.c"
+yy782:
+               YYDEBUG(782, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(781, *YYCURSOR);
+               YYDEBUG(783, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 942 "Zend/zend_language_scanner.l"
                {
        return T_EXIT;
 }
-#line 7317 "Zend/zend_language_scanner.c"
-yy782:
-               YYDEBUG(782, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'L') goto yy789;
-               if (yych == 'l') goto yy789;
-               goto yy280;
-yy783:
-               YYDEBUG(783, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy784;
-               if (yych != 'a') goto yy280;
+#line 7327 "Zend/zend_language_scanner.c"
 yy784:
                YYDEBUG(784, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'U') goto yy785;
-               if (yych != 'u') goto yy280;
+               if (yych == 'L') goto yy791;
+               if (yych == 'l') goto yy791;
+               goto yy282;
 yy785:
                YYDEBUG(785, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy786;
-               if (yych != 'l') goto yy280;
+               if (yych == 'A') goto yy786;
+               if (yych != 'a') goto yy282;
 yy786:
                YYDEBUG(786, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy787;
-               if (yych != 't') goto yy280;
+               if (yych == 'U') goto yy787;
+               if (yych != 'u') goto yy282;
 yy787:
                YYDEBUG(787, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'L') goto yy788;
+               if (yych != 'l') goto yy282;
+yy788:
+               YYDEBUG(788, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy789;
+               if (yych != 't') 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 1042 "Zend/zend_language_scanner.l"
                {
        return T_DEFAULT;
 }
-#line 7356 "Zend/zend_language_scanner.c"
-yy789:
-               YYDEBUG(789, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy790;
-               if (yych != 'a') goto yy280;
-yy790:
-               YYDEBUG(790, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'R') goto yy791;
-               if (yych != 'r') goto yy280;
+#line 7366 "Zend/zend_language_scanner.c"
 yy791:
                YYDEBUG(791, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy792;
-               if (yych != 'e') goto yy280;
+               if (yych == 'A') goto yy792;
+               if (yych != 'a') goto yy282;
 yy792:
                YYDEBUG(792, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'R') goto yy793;
+               if (yych != 'r') goto yy282;
+yy793:
+               YYDEBUG(793, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy794;
+               if (yych != 'e') goto yy282;
+yy794:
+               YYDEBUG(794, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(793, *YYCURSOR);
+               YYDEBUG(795, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 1014 "Zend/zend_language_scanner.l"
                {
        return T_DECLARE;
 }
-#line 7384 "Zend/zend_language_scanner.c"
-yy794:
-               YYDEBUG(794, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'H') goto yy856;
-               if (yych == 'h') goto yy856;
-               goto yy280;
-yy795:
-               YYDEBUG(795, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'S') goto yy850;
-               if (yych == 's') goto yy850;
-               goto yy280;
+#line 7394 "Zend/zend_language_scanner.c"
 yy796:
                YYDEBUG(796, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'P') goto yy846;
-               if (yych == 'p') goto yy846;
-               goto yy280;
+               if (yych == 'H') goto yy858;
+               if (yych == 'h') goto yy858;
+               goto yy282;
 yy797:
                YYDEBUG(797, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'D') goto yy812;
-               if (yych == 'd') goto yy812;
-               goto yy280;
+               if (yych == 'S') goto yy852;
+               if (yych == 's') goto yy852;
+               goto yy282;
 yy798:
                YYDEBUG(798, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy809;
-               if (yych == 'a') goto yy809;
-               goto yy280;
+               if (yych == 'P') goto yy848;
+               if (yych == 'p') goto yy848;
+               goto yy282;
 yy799:
                YYDEBUG(799, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych <= 'T') {
-                       if (yych == 'I') goto yy800;
-                       if (yych <= 'S') goto yy280;
-                       goto yy801;
-               } else {
-                       if (yych <= 'i') {
-                               if (yych <= 'h') goto yy280;
-                       } else {
-                               if (yych == 't') goto yy801;
-                               goto yy280;
-                       }
-               }
+               if (yych == 'D') goto yy814;
+               if (yych == 'd') goto yy814;
+               goto yy282;
 yy800:
                YYDEBUG(800, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy807;
-               if (yych == 't') goto yy807;
-               goto yy280;
+               if (yych == 'A') goto yy811;
+               if (yych == 'a') goto yy811;
+               goto yy282;
 yy801:
                YYDEBUG(801, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy802;
-               if (yych != 'e') goto yy280;
+               if (yych <= 'T') {
+                       if (yych == 'I') goto yy802;
+                       if (yych <= 'S') goto yy282;
+                       goto yy803;
+               } else {
+                       if (yych <= 'i') {
+                               if (yych <= 'h') goto yy282;
+                       } else {
+                               if (yych == 't') goto yy803;
+                               goto yy282;
+                       }
+               }
 yy802:
                YYDEBUG(802, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy803;
-               if (yych != 'n') goto yy280;
+               if (yych == 'T') goto yy809;
+               if (yych == 't') goto yy809;
+               goto yy282;
 yy803:
                YYDEBUG(803, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'D') goto yy804;
-               if (yych != 'd') goto yy280;
+               if (yych == 'E') goto yy804;
+               if (yych != 'e') goto yy282;
 yy804:
                YYDEBUG(804, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'S') goto yy805;
-               if (yych != 's') goto yy280;
+               if (yych == 'N') goto yy805;
+               if (yych != 'n') goto yy282;
 yy805:
                YYDEBUG(805, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'D') goto yy806;
+               if (yych != 'd') goto yy282;
+yy806:
+               YYDEBUG(806, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'S') goto yy807;
+               if (yych != 's') goto yy282;
+yy807:
+               YYDEBUG(807, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(806, *YYCURSOR);
+               YYDEBUG(808, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 1074 "Zend/zend_language_scanner.l"
                {
        return T_EXTENDS;
 }
-#line 7468 "Zend/zend_language_scanner.c"
-yy807:
-               YYDEBUG(807, *YYCURSOR);
+#line 7478 "Zend/zend_language_scanner.c"
+yy809:
+               YYDEBUG(809, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(808, *YYCURSOR);
+               YYDEBUG(810, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 938 "Zend/zend_language_scanner.l"
                {
        return T_EXIT;
 }
-#line 7481 "Zend/zend_language_scanner.c"
-yy809:
-               YYDEBUG(809, *YYCURSOR);
+#line 7491 "Zend/zend_language_scanner.c"
+yy811:
+               YYDEBUG(811, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy810;
-               if (yych != 'l') goto yy280;
-yy810:
-               YYDEBUG(810, *YYCURSOR);
+               if (yych == 'L') goto yy812;
+               if (yych != 'l') goto yy282;
+yy812:
+               YYDEBUG(812, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(811, *YYCURSOR);
+               YYDEBUG(813, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1160 "Zend/zend_language_scanner.l"
+#line 1164 "Zend/zend_language_scanner.l"
                {
        return T_EVAL;
 }
-#line 7499 "Zend/zend_language_scanner.c"
-yy812:
-               YYDEBUG(812, *YYCURSOR);
+#line 7509 "Zend/zend_language_scanner.c"
+yy814:
+               YYDEBUG(814, *YYCURSOR);
                yych = *++YYCURSOR;
                YYDEBUG(-1, yych);
                switch (yych) {
                case 'D':
-               case 'd':       goto yy813;
+               case 'd':       goto yy815;
                case 'F':
-               case 'f':       goto yy814;
+               case 'f':       goto yy816;
                case 'I':
-               case 'i':       goto yy815;
+               case 'i':       goto yy817;
                case 'S':
-               case 's':       goto yy816;
+               case 's':       goto yy818;
                case 'W':
-               case 'w':       goto yy817;
-               default:        goto yy280;
+               case 'w':       goto yy819;
+               default:        goto yy282;
                }
-yy813:
-               YYDEBUG(813, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy839;
-               if (yych == 'e') goto yy839;
-               goto yy280;
-yy814:
-               YYDEBUG(814, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'O') goto yy831;
-               if (yych == 'o') goto yy831;
-               goto yy280;
 yy815:
                YYDEBUG(815, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'F') goto yy829;
-               if (yych == 'f') goto yy829;
-               goto yy280;
+               if (yych == 'E') goto yy841;
+               if (yych == 'e') goto yy841;
+               goto yy282;
 yy816:
                YYDEBUG(816, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'W') goto yy823;
-               if (yych == 'w') goto yy823;
-               goto yy280;
+               if (yych == 'O') goto yy833;
+               if (yych == 'o') goto yy833;
+               goto yy282;
 yy817:
                YYDEBUG(817, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'H') goto yy818;
-               if (yych != 'h') goto yy280;
+               if (yych == 'F') goto yy831;
+               if (yych == 'f') goto yy831;
+               goto yy282;
 yy818:
                YYDEBUG(818, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy819;
-               if (yych != 'i') goto yy280;
+               if (yych == 'W') goto yy825;
+               if (yych == 'w') goto yy825;
+               goto yy282;
 yy819:
                YYDEBUG(819, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy820;
-               if (yych != 'l') goto yy280;
+               if (yych == 'H') goto yy820;
+               if (yych != 'h') goto yy282;
 yy820:
                YYDEBUG(820, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy821;
-               if (yych != 'e') goto yy280;
+               if (yych == 'I') goto yy821;
+               if (yych != 'i') goto yy282;
 yy821:
                YYDEBUG(821, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'L') goto yy822;
+               if (yych != 'l') goto yy282;
+yy822:
+               YYDEBUG(822, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy823;
+               if (yych != 'e') goto yy282;
+yy823:
+               YYDEBUG(823, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(822, *YYCURSOR);
+               YYDEBUG(824, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 990 "Zend/zend_language_scanner.l"
                {
        return T_ENDWHILE;
 }
-#line 7573 "Zend/zend_language_scanner.c"
-yy823:
-               YYDEBUG(823, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'I') goto yy824;
-               if (yych != 'i') goto yy280;
-yy824:
-               YYDEBUG(824, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy825;
-               if (yych != 't') goto yy280;
+#line 7583 "Zend/zend_language_scanner.c"
 yy825:
                YYDEBUG(825, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy826;
-               if (yych != 'c') goto yy280;
+               if (yych == 'I') goto yy826;
+               if (yych != 'i') goto yy282;
 yy826:
                YYDEBUG(826, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'H') goto yy827;
-               if (yych != 'h') goto yy280;
+               if (yych == 'T') goto yy827;
+               if (yych != 't') goto yy282;
 yy827:
                YYDEBUG(827, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'C') goto yy828;
+               if (yych != 'c') goto yy282;
+yy828:
+               YYDEBUG(828, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'H') goto yy829;
+               if (yych != 'h') goto yy282;
+yy829:
+               YYDEBUG(829, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(828, *YYCURSOR);
+               YYDEBUG(830, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 1034 "Zend/zend_language_scanner.l"
                {
        return T_ENDSWITCH;
 }
-#line 7606 "Zend/zend_language_scanner.c"
-yy829:
-               YYDEBUG(829, *YYCURSOR);
+#line 7616 "Zend/zend_language_scanner.c"
+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 978 "Zend/zend_language_scanner.l"
                {
        return T_ENDIF;
 }
-#line 7619 "Zend/zend_language_scanner.c"
-yy831:
-               YYDEBUG(831, *YYCURSOR);
+#line 7629 "Zend/zend_language_scanner.c"
+yy833:
+               YYDEBUG(833, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy832;
-               if (yych != 'r') goto yy280;
-yy832:
-               YYDEBUG(832, *YYCURSOR);
+               if (yych == 'R') goto yy834;
+               if (yych != 'r') goto yy282;
+yy834:
+               YYDEBUG(834, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '^') {
                        if (yych <= '@') {
-                               if (yych <= '/') goto yy833;
-                               if (yych <= '9') goto yy279;
+                               if (yych <= '/') goto yy835;
+                               if (yych <= '9') goto yy281;
                        } else {
-                               if (yych == 'E') goto yy834;
-                               if (yych <= 'Z') goto yy279;
+                               if (yych == 'E') goto yy836;
+                               if (yych <= 'Z') goto yy281;
                        }
                } else {
                        if (yych <= 'd') {
-                               if (yych != '`') goto yy279;
+                               if (yych != '`') goto yy281;
                        } else {
-                               if (yych <= 'e') goto yy834;
-                               if (yych <= 'z') goto yy279;
-                               if (yych >= 0x7F) goto yy279;
+                               if (yych <= 'e') goto yy836;
+                               if (yych <= 'z') goto yy281;
+                               if (yych >= 0x7F) goto yy281;
                        }
                }
-yy833:
-               YYDEBUG(833, *YYCURSOR);
+yy835:
+               YYDEBUG(835, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 1002 "Zend/zend_language_scanner.l"
                {
        return T_ENDFOR;
 }
-#line 7652 "Zend/zend_language_scanner.c"
-yy834:
-               YYDEBUG(834, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy835;
-               if (yych != 'a') goto yy280;
-yy835:
-               YYDEBUG(835, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'C') goto yy836;
-               if (yych != 'c') goto yy280;
+#line 7662 "Zend/zend_language_scanner.c"
 yy836:
                YYDEBUG(836, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'H') goto yy837;
-               if (yych != 'h') goto yy280;
+               if (yych == 'A') goto yy837;
+               if (yych != 'a') goto yy282;
 yy837:
                YYDEBUG(837, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'C') goto yy838;
+               if (yych != 'c') goto yy282;
+yy838:
+               YYDEBUG(838, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'H') goto yy839;
+               if (yych != 'h') goto yy282;
+yy839:
+               YYDEBUG(839, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(838, *YYCURSOR);
+               YYDEBUG(840, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 1010 "Zend/zend_language_scanner.l"
                {
        return T_ENDFOREACH;
 }
-#line 7680 "Zend/zend_language_scanner.c"
-yy839:
-               YYDEBUG(839, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'C') goto yy840;
-               if (yych != 'c') goto yy280;
-yy840:
-               YYDEBUG(840, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'L') goto yy841;
-               if (yych != 'l') goto yy280;
+#line 7690 "Zend/zend_language_scanner.c"
 yy841:
                YYDEBUG(841, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy842;
-               if (yych != 'a') goto yy280;
+               if (yych == 'C') goto yy842;
+               if (yych != 'c') goto yy282;
 yy842:
                YYDEBUG(842, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy843;
-               if (yych != 'r') goto yy280;
+               if (yych == 'L') goto yy843;
+               if (yych != 'l') goto yy282;
 yy843:
                YYDEBUG(843, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy844;
-               if (yych != 'e') goto yy280;
+               if (yych == 'A') goto yy844;
+               if (yych != 'a') goto yy282;
 yy844:
                YYDEBUG(844, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'R') goto yy845;
+               if (yych != 'r') goto yy282;
+yy845:
+               YYDEBUG(845, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy846;
+               if (yych != 'e') goto yy282;
+yy846:
+               YYDEBUG(846, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(845, *YYCURSOR);
+               YYDEBUG(847, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 1018 "Zend/zend_language_scanner.l"
                {
        return T_ENDDECLARE;
 }
-#line 7718 "Zend/zend_language_scanner.c"
-yy846:
-               YYDEBUG(846, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy847;
-               if (yych != 't') goto yy280;
-yy847:
-               YYDEBUG(847, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'Y') goto yy848;
-               if (yych != 'y') goto yy280;
+#line 7728 "Zend/zend_language_scanner.c"
 yy848:
                YYDEBUG(848, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy849;
+               if (yych != 't') goto yy282;
+yy849:
+               YYDEBUG(849, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'Y') goto yy850;
+               if (yych != 'y') goto yy282;
+yy850:
+               YYDEBUG(850, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(849, *YYCURSOR);
+               YYDEBUG(851, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1196 "Zend/zend_language_scanner.l"
+#line 1200 "Zend/zend_language_scanner.l"
                {
        return T_EMPTY;
 }
-#line 7741 "Zend/zend_language_scanner.c"
-yy850:
-               YYDEBUG(850, *YYCURSOR);
+#line 7751 "Zend/zend_language_scanner.c"
+yy852:
+               YYDEBUG(852, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy851;
-               if (yych != 'e') goto yy280;
-yy851:
-               YYDEBUG(851, *YYCURSOR);
+               if (yych == 'E') goto yy853;
+               if (yych != 'e') goto yy282;
+yy853:
+               YYDEBUG(853, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '^') {
                        if (yych <= '@') {
-                               if (yych <= '/') goto yy852;
-                               if (yych <= '9') goto yy279;
+                               if (yych <= '/') goto yy854;
+                               if (yych <= '9') goto yy281;
                        } else {
-                               if (yych == 'I') goto yy853;
-                               if (yych <= 'Z') goto yy279;
+                               if (yych == 'I') goto yy855;
+                               if (yych <= 'Z') goto yy281;
                        }
                } else {
                        if (yych <= 'h') {
-                               if (yych != '`') goto yy279;
+                               if (yych != '`') goto yy281;
                        } else {
-                               if (yych <= 'i') goto yy853;
-                               if (yych <= 'z') goto yy279;
-                               if (yych >= 0x7F) goto yy279;
+                               if (yych <= 'i') goto yy855;
+                               if (yych <= 'z') goto yy281;
+                               if (yych >= 0x7F) goto yy281;
                        }
                }
-yy852:
-               YYDEBUG(852, *YYCURSOR);
+yy854:
+               YYDEBUG(854, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 982 "Zend/zend_language_scanner.l"
                {
        return T_ELSE;
 }
-#line 7774 "Zend/zend_language_scanner.c"
-yy853:
-               YYDEBUG(853, *YYCURSOR);
+#line 7784 "Zend/zend_language_scanner.c"
+yy855:
+               YYDEBUG(855, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'F') goto yy854;
-               if (yych != 'f') goto yy280;
-yy854:
-               YYDEBUG(854, *YYCURSOR);
+               if (yych == 'F') goto yy856;
+               if (yych != 'f') goto yy282;
+yy856:
+               YYDEBUG(856, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(855, *YYCURSOR);
+               YYDEBUG(857, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 974 "Zend/zend_language_scanner.l"
                {
        return T_ELSEIF;
 }
-#line 7792 "Zend/zend_language_scanner.c"
-yy856:
-               YYDEBUG(856, *YYCURSOR);
+#line 7802 "Zend/zend_language_scanner.c"
+yy858:
+               YYDEBUG(858, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy857;
-               if (yych != 'o') goto yy280;
-yy857:
-               YYDEBUG(857, *YYCURSOR);
+               if (yych == 'O') goto yy859;
+               if (yych != 'o') goto yy282;
+yy859:
+               YYDEBUG(859, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy279;
+                       goto yy281;
                }
-               YYDEBUG(858, *YYCURSOR);
+               YYDEBUG(860, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 1058 "Zend/zend_language_scanner.l"
                {
        return T_ECHO;
 }
-#line 7810 "Zend/zend_language_scanner.c"
+#line 7820 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_LOOKING_FOR_PROPERTY:
@@ -7845,39 +7855,39 @@ yyc_ST_LOOKING_FOR_PROPERTY:
                         64,  64,  64,  64,  64,  64,  64,  64, 
                         64,  64,  64,  64,  64,  64,  64,  64, 
                };
-               YYDEBUG(859, *YYCURSOR);
+               YYDEBUG(861, *YYCURSOR);
                YYFILL(2);
                yych = *YYCURSOR;
                if (yych <= '-') {
                        if (yych <= '\r') {
-                               if (yych <= 0x08) goto yy867;
-                               if (yych <= '\n') goto yy861;
-                               if (yych <= '\f') goto yy867;
+                               if (yych <= 0x08) goto yy869;
+                               if (yych <= '\n') goto yy863;
+                               if (yych <= '\f') goto yy869;
                        } else {
-                               if (yych == ' ') goto yy861;
-                               if (yych <= ',') goto yy867;
-                               goto yy863;
+                               if (yych == ' ') goto yy863;
+                               if (yych <= ',') goto yy869;
+                               goto yy865;
                        }
                } else {
                        if (yych <= '_') {
-                               if (yych <= '@') goto yy867;
-                               if (yych <= 'Z') goto yy865;
-                               if (yych <= '^') goto yy867;
-                               goto yy865;
+                               if (yych <= '@') goto yy869;
+                               if (yych <= 'Z') goto yy867;
+                               if (yych <= '^') goto yy869;
+                               goto yy867;
                        } else {
-                               if (yych <= '`') goto yy867;
-                               if (yych <= 'z') goto yy865;
-                               if (yych <= '~') goto yy867;
-                               goto yy865;
+                               if (yych <= '`') goto yy869;
+                               if (yych <= 'z') goto yy867;
+                               if (yych <= '~') goto yy869;
+                               goto yy867;
                        }
                }
-yy861:
-               YYDEBUG(861, *YYCURSOR);
+yy863:
+               YYDEBUG(863, *YYCURSOR);
                ++YYCURSOR;
                yych = *YYCURSOR;
-               goto yy873;
-yy862:
-               YYDEBUG(862, *YYCURSOR);
+               goto yy875;
+yy864:
+               YYDEBUG(864, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 1087 "Zend/zend_language_scanner.l"
                {
@@ -7887,13 +7897,13 @@ yy862:
        HANDLE_NEWLINES(yytext, yyleng);
        return T_WHITESPACE;
 }
-#line 7891 "Zend/zend_language_scanner.c"
-yy863:
-               YYDEBUG(863, *YYCURSOR);
+#line 7901 "Zend/zend_language_scanner.c"
+yy865:
+               YYDEBUG(865, *YYCURSOR);
                ++YYCURSOR;
-               if ((yych = *YYCURSOR) == '>') goto yy870;
-yy864:
-               YYDEBUG(864, *YYCURSOR);
+               if ((yych = *YYCURSOR) == '>') goto yy872;
+yy866:
+               YYDEBUG(866, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 1106 "Zend/zend_language_scanner.l"
                {
@@ -7901,14 +7911,14 @@ yy864:
        yy_pop_state(TSRMLS_C);
        goto restart;
 }
-#line 7905 "Zend/zend_language_scanner.c"
-yy865:
-               YYDEBUG(865, *YYCURSOR);
+#line 7915 "Zend/zend_language_scanner.c"
+yy867:
+               YYDEBUG(867, *YYCURSOR);
                ++YYCURSOR;
                yych = *YYCURSOR;
-               goto yy869;
-yy866:
-               YYDEBUG(866, *YYCURSOR);
+               goto yy871;
+yy868:
+               YYDEBUG(868, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 1099 "Zend/zend_language_scanner.l"
                {
@@ -7917,43 +7927,43 @@ yy866:
        zendlval->type = IS_STRING;
        return T_STRING;
 }
-#line 7921 "Zend/zend_language_scanner.c"
-yy867:
-               YYDEBUG(867, *YYCURSOR);
-               yych = *++YYCURSOR;
-               goto yy864;
-yy868:
-               YYDEBUG(868, *YYCURSOR);
-               ++YYCURSOR;
-               YYFILL(1);
-               yych = *YYCURSOR;
+#line 7931 "Zend/zend_language_scanner.c"
 yy869:
                YYDEBUG(869, *YYCURSOR);
-               if (yybm[0+yych] & 64) {
-                       goto yy868;
-               }
+               yych = *++YYCURSOR;
                goto yy866;
 yy870:
                YYDEBUG(870, *YYCURSOR);
                ++YYCURSOR;
+               YYFILL(1);
+               yych = *YYCURSOR;
+yy871:
                YYDEBUG(871, *YYCURSOR);
+               if (yybm[0+yych] & 64) {
+                       goto yy870;
+               }
+               goto yy868;
+yy872:
+               YYDEBUG(872, *YYCURSOR);
+               ++YYCURSOR;
+               YYDEBUG(873, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 1095 "Zend/zend_language_scanner.l"
                {
        return T_OBJECT_OPERATOR;
 }
-#line 7946 "Zend/zend_language_scanner.c"
-yy872:
-               YYDEBUG(872, *YYCURSOR);
+#line 7956 "Zend/zend_language_scanner.c"
+yy874:
+               YYDEBUG(874, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-yy873:
-               YYDEBUG(873, *YYCURSOR);
+yy875:
+               YYDEBUG(875, *YYCURSOR);
                if (yybm[0+yych] & 128) {
-                       goto yy872;
+                       goto yy874;
                }
-               goto yy862;
+               goto yy864;
        }
 /* *********************************** */
 yyc_ST_LOOKING_FOR_VARNAME:
@@ -7992,27 +8002,27 @@ yyc_ST_LOOKING_FOR_VARNAME:
                        128, 128, 128, 128, 128, 128, 128, 128, 
                        128, 128, 128, 128, 128, 128, 128, 128, 
                };
-               YYDEBUG(874, *YYCURSOR);
+               YYDEBUG(876, *YYCURSOR);
                YYFILL(2);
                yych = *YYCURSOR;
                if (yych <= '_') {
-                       if (yych <= '@') goto yy878;
-                       if (yych <= 'Z') goto yy876;
-                       if (yych <= '^') goto yy878;
+                       if (yych <= '@') goto yy880;
+                       if (yych <= 'Z') goto yy878;
+                       if (yych <= '^') goto yy880;
                } else {
-                       if (yych <= '`') goto yy878;
-                       if (yych <= 'z') goto yy876;
-                       if (yych <= '~') goto yy878;
+                       if (yych <= '`') goto yy880;
+                       if (yych <= 'z') goto yy878;
+                       if (yych <= '~') goto yy880;
                }
-yy876:
-               YYDEBUG(876, *YYCURSOR);
+yy878:
+               YYDEBUG(878, *YYCURSOR);
                ++YYCURSOR;
                yych = *YYCURSOR;
-               goto yy881;
-yy877:
-               YYDEBUG(877, *YYCURSOR);
+               goto yy883;
+yy879:
+               YYDEBUG(879, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1374 "Zend/zend_language_scanner.l"
+#line 1378 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        zendlval->type = IS_STRING;
@@ -8020,31 +8030,31 @@ yy877:
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        return T_STRING_VARNAME;
 }
-#line 8024 "Zend/zend_language_scanner.c"
-yy878:
-               YYDEBUG(878, *YYCURSOR);
+#line 8034 "Zend/zend_language_scanner.c"
+yy880:
+               YYDEBUG(880, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(879, *YYCURSOR);
+               YYDEBUG(881, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1383 "Zend/zend_language_scanner.l"
+#line 1387 "Zend/zend_language_scanner.l"
                {
        yyless(0);
        yy_pop_state(TSRMLS_C);
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        goto restart;
 }
-#line 8037 "Zend/zend_language_scanner.c"
-yy880:
-               YYDEBUG(880, *YYCURSOR);
+#line 8047 "Zend/zend_language_scanner.c"
+yy882:
+               YYDEBUG(882, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-yy881:
-               YYDEBUG(881, *YYCURSOR);
+yy883:
+               YYDEBUG(883, *YYCURSOR);
                if (yybm[0+yych] & 128) {
-                       goto yy880;
+                       goto yy882;
                }
-               goto yy877;
+               goto yy879;
        }
 /* *********************************** */
 yyc_ST_NOWDOC:
@@ -8083,106 +8093,106 @@ yyc_ST_NOWDOC:
                        144, 144, 144, 144, 144, 144, 144, 144, 
                        144, 144, 144, 144, 144, 144, 144, 144, 
                };
-               YYDEBUG(882, *YYCURSOR);
+               YYDEBUG(884, *YYCURSOR);
                YYFILL(1);
                yych = *YYCURSOR;
                if (yybm[0+yych] & 16) {
-                       goto yy884;
+                       goto yy886;
                }
-               if (yych <= '\f') goto yy886;
-               goto yy888;
-yy884:
-               YYDEBUG(884, *YYCURSOR);
+               if (yych <= '\f') goto yy888;
+               goto yy890;
+yy886:
+               YYDEBUG(886, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(885, *YYCURSOR);
+               YYDEBUG(887, *YYCURSOR);
                if (yybm[0+yych] & 16) {
-                       goto yy884;
+                       goto yy886;
                }
-               if (yych <= '\f') goto yy895;
-               goto yy897;
-yy886:
-               YYDEBUG(886, *YYCURSOR);
+               if (yych <= '\f') goto yy897;
+               goto yy899;
+yy888:
+               YYDEBUG(888, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(887, *YYCURSOR);
+               YYDEBUG(889, *YYCURSOR);
                if (yybm[0+yych] & 32) {
-                       goto yy886;
+                       goto yy888;
                }
                if (yych <= '^') {
                        if (yych <= '\r') {
-                               if (yych <= '\f') goto yy884;
+                               if (yych <= '\f') goto yy886;
                        } else {
-                               if (yych <= '@') goto yy884;
-                               if (yych <= 'Z') goto yy890;
-                               goto yy884;
+                               if (yych <= '@') goto yy886;
+                               if (yych <= 'Z') goto yy892;
+                               goto yy886;
                        }
                } else {
                        if (yych <= '`') {
-                               if (yych <= '_') goto yy890;
-                               goto yy884;
+                               if (yych <= '_') goto yy892;
+                               goto yy886;
                        } else {
-                               if (yych <= 'z') goto yy890;
-                               if (yych <= '~') goto yy884;
-                               goto yy890;
+                               if (yych <= 'z') goto yy892;
+                               if (yych <= '~') goto yy886;
+                               goto yy892;
                        }
                }
-yy888:
-               YYDEBUG(888, *YYCURSOR);
+yy890:
+               YYDEBUG(890, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(889, *YYCURSOR);
+               YYDEBUG(891, *YYCURSOR);
                if (yybm[0+yych] & 32) {
-                       goto yy886;
+                       goto yy888;
                }
                if (yych <= '^') {
                        if (yych <= '\r') {
-                               if (yych <= '\f') goto yy884;
-                               goto yy888;
+                               if (yych <= '\f') goto yy886;
+                               goto yy890;
                        } else {
-                               if (yych <= '@') goto yy884;
-                               if (yych >= '[') goto yy884;
+                               if (yych <= '@') goto yy886;
+                               if (yych >= '[') goto yy886;
                        }
                } else {
                        if (yych <= '`') {
-                               if (yych >= '`') goto yy884;
+                               if (yych >= '`') goto yy886;
                        } else {
-                               if (yych <= 'z') goto yy890;
-                               if (yych <= '~') goto yy884;
+                               if (yych <= 'z') goto yy892;
+                               if (yych <= '~') goto yy886;
                        }
                }
-yy890:
-               YYDEBUG(890, *YYCURSOR);
+yy892:
+               YYDEBUG(892, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(891, *YYCURSOR);
+               YYDEBUG(893, *YYCURSOR);
                if (yybm[0+yych] & 128) {
-                       goto yy890;
+                       goto yy892;
                }
                if (yych <= '\f') {
-                       if (yych == '\n') goto yy893;
-                       goto yy884;
+                       if (yych == '\n') goto yy895;
+                       goto yy886;
                } else {
-                       if (yych <= '\r') goto yy893;
-                       if (yych != ';') goto yy884;
+                       if (yych <= '\r') goto yy895;
+                       if (yych != ';') goto yy886;
                }
-               YYDEBUG(892, *YYCURSOR);
+               YYDEBUG(894, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
                if (yybm[0+yych] & 16) {
-                       goto yy884;
+                       goto yy886;
                }
-yy893:
-               YYDEBUG(893, *YYCURSOR);
+yy895:
+               YYDEBUG(895, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(894, *YYCURSOR);
+               YYDEBUG(896, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2073 "Zend/zend_language_scanner.l"
+#line 2077 "Zend/zend_language_scanner.l"
                {
        char *end = yytext + yyleng - 1;
 
@@ -8222,55 +8232,55 @@ yy893:
                yymore();
        }
 }
-#line 8226 "Zend/zend_language_scanner.c"
-yy895:
-               YYDEBUG(895, *YYCURSOR);
+#line 8236 "Zend/zend_language_scanner.c"
+yy897:
+               YYDEBUG(897, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(896, *YYCURSOR);
+               YYDEBUG(898, *YYCURSOR);
                if (yych <= 'Z') {
                        if (yych <= '\f') {
-                               if (yych == '\n') goto yy895;
-                               goto yy884;
+                               if (yych == '\n') goto yy897;
+                               goto yy886;
                        } else {
-                               if (yych <= '\r') goto yy897;
-                               if (yych <= '@') goto yy884;
-                               goto yy890;
+                               if (yych <= '\r') goto yy899;
+                               if (yych <= '@') goto yy886;
+                               goto yy892;
                        }
                } else {
                        if (yych <= '`') {
-                               if (yych == '_') goto yy890;
-                               goto yy884;
+                               if (yych == '_') goto yy892;
+                               goto yy886;
                        } else {
-                               if (yych <= 'z') goto yy890;
-                               if (yych <= '~') goto yy884;
-                               goto yy890;
+                               if (yych <= 'z') goto yy892;
+                               if (yych <= '~') goto yy886;
+                               goto yy892;
                        }
                }
-yy897:
-               YYDEBUG(897, *YYCURSOR);
+yy899:
+               YYDEBUG(899, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(898, *YYCURSOR);
+               YYDEBUG(900, *YYCURSOR);
                if (yych <= 'Z') {
                        if (yych <= '\f') {
-                               if (yych == '\n') goto yy895;
-                               goto yy884;
+                               if (yych == '\n') goto yy897;
+                               goto yy886;
                        } else {
-                               if (yych <= '\r') goto yy897;
-                               if (yych <= '@') goto yy884;
-                               goto yy890;
+                               if (yych <= '\r') goto yy899;
+                               if (yych <= '@') goto yy886;
+                               goto yy892;
                        }
                } else {
                        if (yych <= '`') {
-                               if (yych == '_') goto yy890;
-                               goto yy884;
+                               if (yych == '_') goto yy892;
+                               goto yy886;
                        } else {
-                               if (yych <= 'z') goto yy890;
-                               if (yych <= '~') goto yy884;
-                               goto yy890;
+                               if (yych <= 'z') goto yy892;
+                               if (yych <= '~') goto yy886;
+                               goto yy892;
                        }
                }
        }
@@ -8311,52 +8321,52 @@ yyc_ST_ONE_LINE_COMMENT:
                        128, 128, 128, 128, 128, 128, 128, 128, 
                        128, 128, 128, 128, 128, 128, 128, 128, 
                };
-               YYDEBUG(899, *YYCURSOR);
+               YYDEBUG(901, *YYCURSOR);
                YYFILL(2);
                yych = *YYCURSOR;
                if (yybm[0+yych] & 128) {
-                       goto yy905;
+                       goto yy907;
                }
-               if (yych <= '\f') goto yy908;
-               if (yych <= '\r') goto yy909;
-               if (yych <= '=') goto yy901;
-               if (yych <= '>') goto yy903;
-               goto yy904;
-yy901:
-               YYDEBUG(901, *YYCURSOR);
+               if (yych <= '\f') goto yy910;
+               if (yych <= '\r') goto yy911;
+               if (yych <= '=') goto yy903;
+               if (yych <= '>') goto yy905;
+               goto yy906;
+yy903:
+               YYDEBUG(903, *YYCURSOR);
                ++YYCURSOR;
-               if ((yych = *YYCURSOR) == '>') goto yy913;
-yy902:
-               YYDEBUG(902, *YYCURSOR);
+               if ((yych = *YYCURSOR) == '>') goto yy915;
+yy904:
+               YYDEBUG(904, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1741 "Zend/zend_language_scanner.l"
+#line 1745 "Zend/zend_language_scanner.l"
                {
        yymore();
 }
-#line 8337 "Zend/zend_language_scanner.c"
-yy903:
-               YYDEBUG(903, *YYCURSOR);
-               yych = *++YYCURSOR;
-               goto yy902;
-yy904:
-               YYDEBUG(904, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '>') goto yy913;
-               goto yy902;
+#line 8347 "Zend/zend_language_scanner.c"
 yy905:
                YYDEBUG(905, *YYCURSOR);
+               yych = *++YYCURSOR;
+               goto yy904;
+yy906:
+               YYDEBUG(906, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '>') goto yy915;
+               goto yy904;
+yy907:
+               YYDEBUG(907, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(906, *YYCURSOR);
+               YYDEBUG(908, *YYCURSOR);
                if (yybm[0+yych] & 128) {
-                       goto yy905;
+                       goto yy907;
                }
-               goto yy912;
-yy907:
-               YYDEBUG(907, *YYCURSOR);
+               goto yy914;
+yy909:
+               YYDEBUG(909, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1745 "Zend/zend_language_scanner.l"
+#line 1749 "Zend/zend_language_scanner.l"
                {
        switch (yytext[yyleng-1]) {
                case '?': case '%': case '>':
@@ -8374,20 +8384,20 @@ yy907:
                        return T_COMMENT;
        }
 }
-#line 8378 "Zend/zend_language_scanner.c"
-yy908:
-               YYDEBUG(908, *YYCURSOR);
+#line 8388 "Zend/zend_language_scanner.c"
+yy910:
+               YYDEBUG(910, *YYCURSOR);
                yych = *++YYCURSOR;
-               goto yy907;
-yy909:
-               YYDEBUG(909, *YYCURSOR);
+               goto yy909;
+yy911:
+               YYDEBUG(911, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych != '\n') goto yy907;
-               YYDEBUG(910, *YYCURSOR);
+               if (yych != '\n') goto yy909;
+               YYDEBUG(912, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(911, *YYCURSOR);
+               YYDEBUG(913, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1763 "Zend/zend_language_scanner.l"
+#line 1767 "Zend/zend_language_scanner.l"
                {
        zendlval->value.str.val = yytext; /* no copying - intentional */
        zendlval->value.str.len = yyleng;
@@ -8396,17 +8406,17 @@ yy909:
        CG(zend_lineno)++;
        return T_COMMENT;
 }
-#line 8400 "Zend/zend_language_scanner.c"
-yy912:
-               YYDEBUG(912, *YYCURSOR);
+#line 8410 "Zend/zend_language_scanner.c"
+yy914:
+               YYDEBUG(914, *YYCURSOR);
                yych = *++YYCURSOR;
-               goto yy907;
-yy913:
-               YYDEBUG(913, *YYCURSOR);
+               goto yy909;
+yy915:
+               YYDEBUG(915, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(914, *YYCURSOR);
+               YYDEBUG(916, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1772 "Zend/zend_language_scanner.l"
+#line 1776 "Zend/zend_language_scanner.l"
                {
        if (CG(asp_tags) || yytext[yyleng-2] != '%') { /* asp comment? */
                zendlval->value.str.val = yytext; /* no copying - intentional */
@@ -8419,7 +8429,7 @@ yy913:
                yymore();
        }
 }
-#line 8423 "Zend/zend_language_scanner.c"
+#line 8433 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_VAR_OFFSET:
@@ -8458,69 +8468,69 @@ yyc_ST_VAR_OFFSET:
                         32,  32,  32,  32,  32,  32,  32,  32, 
                         32,  32,  32,  32,  32,  32,  32,  32, 
                };
-               YYDEBUG(915, *YYCURSOR);
+               YYDEBUG(917, *YYCURSOR);
                YYFILL(3);
                yych = *YYCURSOR;
                if (yych <= '/') {
                        if (yych <= ' ') {
                                if (yych <= '\f') {
-                                       if (yych <= 0x08) goto yy929;
-                                       if (yych <= '\n') goto yy925;
-                                       goto yy929;
+                                       if (yych <= 0x08) goto yy931;
+                                       if (yych <= '\n') goto yy927;
+                                       goto yy931;
                                } else {
-                                       if (yych <= '\r') goto yy925;
-                                       if (yych <= 0x1F) goto yy929;
-                                       goto yy925;
+                                       if (yych <= '\r') goto yy927;
+                                       if (yych <= 0x1F) goto yy931;
+                                       goto yy927;
                                }
                        } else {
                                if (yych <= '$') {
-                                       if (yych <= '"') goto yy924;
-                                       if (yych <= '#') goto yy925;
-                                       goto yy920;
+                                       if (yych <= '"') goto yy926;
+                                       if (yych <= '#') goto yy927;
+                                       goto yy922;
                                } else {
-                                       if (yych == '\'') goto yy925;
-                                       goto yy924;
+                                       if (yych == '\'') goto yy927;
+                                       goto yy926;
                                }
                        }
                } else {
                        if (yych <= '\\') {
                                if (yych <= '@') {
-                                       if (yych <= '0') goto yy917;
-                                       if (yych <= '9') goto yy919;
-                                       goto yy924;
+                                       if (yych <= '0') goto yy919;
+                                       if (yych <= '9') goto yy921;
+                                       goto yy926;
                                } else {
-                                       if (yych <= 'Z') goto yy927;
-                                       if (yych <= '[') goto yy924;
-                                       goto yy925;
+                                       if (yych <= 'Z') goto yy929;
+                                       if (yych <= '[') goto yy926;
+                                       goto yy927;
                                }
                        } else {
                                if (yych <= '_') {
-                                       if (yych <= ']') goto yy922;
-                                       if (yych <= '^') goto yy924;
-                                       goto yy927;
+                                       if (yych <= ']') goto yy924;
+                                       if (yych <= '^') goto yy926;
+                                       goto yy929;
                                } else {
-                                       if (yych <= '`') goto yy924;
-                                       if (yych <= 'z') goto yy927;
-                                       if (yych <= '~') goto yy924;
-                                       goto yy927;
+                                       if (yych <= '`') goto yy926;
+                                       if (yych <= 'z') goto yy929;
+                                       if (yych <= '~') goto yy926;
+                                       goto yy929;
                                }
                        }
                }
-yy917:
-               YYDEBUG(917, *YYCURSOR);
+yy919:
+               YYDEBUG(919, *YYCURSOR);
                yyaccept = 0;
                yych = *(YYMARKER = ++YYCURSOR);
                if (yych <= 'W') {
-                       if (yych <= '/') goto yy918;
-                       if (yych <= '9') goto yy940;
+                       if (yych <= '/') goto yy920;
+                       if (yych <= '9') goto yy942;
                } else {
-                       if (yych <= 'X') goto yy938;
-                       if (yych == 'x') goto yy938;
+                       if (yych <= 'X') goto yy940;
+                       if (yych == 'x') goto yy940;
                }
-yy918:
-               YYDEBUG(918, *YYCURSOR);
+yy920:
+               YYDEBUG(920, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1433 "Zend/zend_language_scanner.l"
+#line 1437 "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)) {
                zendlval->value.lval = strtol(yytext, NULL, 10);
@@ -8532,53 +8542,53 @@ yy918:
        }
        return T_NUM_STRING;
 }
-#line 8536 "Zend/zend_language_scanner.c"
-yy919:
-               YYDEBUG(919, *YYCURSOR);
+#line 8546 "Zend/zend_language_scanner.c"
+yy921:
+               YYDEBUG(921, *YYCURSOR);
                yych = *++YYCURSOR;
-               goto yy937;
-yy920:
-               YYDEBUG(920, *YYCURSOR);
+               goto yy939;
+yy922:
+               YYDEBUG(922, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '_') {
-                       if (yych <= '@') goto yy921;
-                       if (yych <= 'Z') goto yy933;
-                       if (yych >= '_') goto yy933;
+                       if (yych <= '@') goto yy923;
+                       if (yych <= 'Z') goto yy935;
+                       if (yych >= '_') goto yy935;
                } else {
-                       if (yych <= '`') goto yy921;
-                       if (yych <= 'z') goto yy933;
-                       if (yych >= 0x7F) goto yy933;
+                       if (yych <= '`') goto yy923;
+                       if (yych <= 'z') goto yy935;
+                       if (yych >= 0x7F) goto yy935;
                }
-yy921:
-               YYDEBUG(921, *YYCURSOR);
+yy923:
+               YYDEBUG(923, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1716 "Zend/zend_language_scanner.l"
+#line 1720 "Zend/zend_language_scanner.l"
                {
        /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */
        return yytext[0];
 }
-#line 8561 "Zend/zend_language_scanner.c"
-yy922:
-               YYDEBUG(922, *YYCURSOR);
+#line 8571 "Zend/zend_language_scanner.c"
+yy924:
+               YYDEBUG(924, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(923, *YYCURSOR);
+               YYDEBUG(925, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1711 "Zend/zend_language_scanner.l"
+#line 1715 "Zend/zend_language_scanner.l"
                {
        yy_pop_state(TSRMLS_C);
        return ']';
 }
-#line 8572 "Zend/zend_language_scanner.c"
-yy924:
-               YYDEBUG(924, *YYCURSOR);
+#line 8582 "Zend/zend_language_scanner.c"
+yy926:
+               YYDEBUG(926, *YYCURSOR);
                yych = *++YYCURSOR;
-               goto yy921;
-yy925:
-               YYDEBUG(925, *YYCURSOR);
+               goto yy923;
+yy927:
+               YYDEBUG(927, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(926, *YYCURSOR);
+               YYDEBUG(928, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1721 "Zend/zend_language_scanner.l"
+#line 1725 "Zend/zend_language_scanner.l"
                {
        /* Invalid rule to return a more explicit parse error with proper line number */
        yyless(0);
@@ -8586,126 +8596,126 @@ yy925:
        ZVAL_EMPTY_STRING(zendlval); /* Empty since it won't be used */
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 8590 "Zend/zend_language_scanner.c"
-yy927:
-               YYDEBUG(927, *YYCURSOR);
+#line 8600 "Zend/zend_language_scanner.c"
+yy929:
+               YYDEBUG(929, *YYCURSOR);
                ++YYCURSOR;
                yych = *YYCURSOR;
-               goto yy932;
-yy928:
-               YYDEBUG(928, *YYCURSOR);
+               goto yy934;
+yy930:
+               YYDEBUG(930, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1729 "Zend/zend_language_scanner.l"
+#line 1733 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        zendlval->type = IS_STRING;
        return T_STRING;
 }
-#line 8605 "Zend/zend_language_scanner.c"
-yy929:
-               YYDEBUG(929, *YYCURSOR);
+#line 8615 "Zend/zend_language_scanner.c"
+yy931:
+               YYDEBUG(931, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(930, *YYCURSOR);
+               YYDEBUG(932, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2126 "Zend/zend_language_scanner.l"
+#line 2130 "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 8616 "Zend/zend_language_scanner.c"
-yy931:
-               YYDEBUG(931, *YYCURSOR);
+#line 8626 "Zend/zend_language_scanner.c"
+yy933:
+               YYDEBUG(933, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-yy932:
-               YYDEBUG(932, *YYCURSOR);
+yy934:
+               YYDEBUG(934, *YYCURSOR);
                if (yybm[0+yych] & 32) {
-                       goto yy931;
+                       goto yy933;
                }
-               goto yy928;
-yy933:
-               YYDEBUG(933, *YYCURSOR);
+               goto yy930;
+yy935:
+               YYDEBUG(935, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(934, *YYCURSOR);
+               YYDEBUG(936, *YYCURSOR);
                if (yych <= '^') {
                        if (yych <= '9') {
-                               if (yych >= '0') goto yy933;
+                               if (yych >= '0') goto yy935;
                        } else {
-                               if (yych <= '@') goto yy935;
-                               if (yych <= 'Z') goto yy933;
+                               if (yych <= '@') goto yy937;
+                               if (yych <= 'Z') goto yy935;
                        }
                } else {
                        if (yych <= '`') {
-                               if (yych <= '_') goto yy933;
+                               if (yych <= '_') goto yy935;
                        } else {
-                               if (yych <= 'z') goto yy933;
-                               if (yych >= 0x7F) goto yy933;
+                               if (yych <= 'z') goto yy935;
+                               if (yych >= 0x7F) goto yy935;
                        }
                }
-yy935:
-               YYDEBUG(935, *YYCURSOR);
+yy937:
+               YYDEBUG(937, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1705 "Zend/zend_language_scanner.l"
+#line 1709 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
        return T_VARIABLE;
 }
-#line 8658 "Zend/zend_language_scanner.c"
-yy936:
-               YYDEBUG(936, *YYCURSOR);
+#line 8668 "Zend/zend_language_scanner.c"
+yy938:
+               YYDEBUG(938, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-yy937:
-               YYDEBUG(937, *YYCURSOR);
+yy939:
+               YYDEBUG(939, *YYCURSOR);
                if (yybm[0+yych] & 64) {
-                       goto yy936;
+                       goto yy938;
                }
-               goto yy918;
-yy938:
-               YYDEBUG(938, *YYCURSOR);
+               goto yy920;
+yy940:
+               YYDEBUG(940, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yybm[0+yych] & 128) {
-                       goto yy943;
+                       goto yy945;
                }
-               YYDEBUG(939, *YYCURSOR);
+               YYDEBUG(941, *YYCURSOR);
                YYCURSOR = YYMARKER;
-               goto yy918;
-yy940:
-               YYDEBUG(940, *YYCURSOR);
+               goto yy920;
+yy942:
+               YYDEBUG(942, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(941, *YYCURSOR);
-               if (yych <= '/') goto yy942;
-               if (yych <= '9') goto yy940;
-yy942:
-               YYDEBUG(942, *YYCURSOR);
+               YYDEBUG(943, *YYCURSOR);
+               if (yych <= '/') goto yy944;
+               if (yych <= '9') goto yy942;
+yy944:
+               YYDEBUG(944, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1445 "Zend/zend_language_scanner.l"
+#line 1449 "Zend/zend_language_scanner.l"
                { /* Offset must be treated as a string */
        zendlval->value.str.val = (char *)estrndup(yytext, yyleng);
        zendlval->value.str.len = yyleng;
        zendlval->type = IS_STRING;
        return T_NUM_STRING;
 }
-#line 8697 "Zend/zend_language_scanner.c"
-yy943:
-               YYDEBUG(943, *YYCURSOR);
+#line 8707 "Zend/zend_language_scanner.c"
+yy945:
+               YYDEBUG(945, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(944, *YYCURSOR);
+               YYDEBUG(946, *YYCURSOR);
                if (yybm[0+yych] & 128) {
-                       goto yy943;
+                       goto yy945;
                }
-               goto yy942;
+               goto yy944;
        }
 }
-#line 2131 "Zend/zend_language_scanner.l"
+#line 2135 "Zend/zend_language_scanner.l"
 
 }
index 8952b8ee4623fce50aa986c467f94b58a4a326b7..cd7d2ba5308a693bc5b50b9803b2e0c1a020c121 100644 (file)
@@ -1113,6 +1113,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 756241e714db9616123f54d8f66121f1f4b45cae..3b2d270fd07ec8e6c0ac405336812be4d16d2c29 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Fri Oct 24 12:09:58 2008 */
+/* Generated by re2c 0.13.6.dev on Tue Nov  4 01:40:34 2008 */
 #line 3 "Zend/zend_language_scanner_defs.h"
 
 enum YYCONDTYPE {
index c9657dbdeb7d924c41fa38feb5c4b9001942ca83..a6b4c88415de3334106b6fd4a04645e6cada40c7 100644 (file)
@@ -1957,16 +1957,9 @@ ZEND_VM_HANDLER(113, ZEND_INIT_STATIC_METHOD_CALL, CONST|VAR, CONST|TMP|VAR|UNUS
        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
 
        if (OP1_TYPE == IS_CONST && OP2_TYPE == IS_CONST) {
-               /* try a function in namespace */
-               zend_op *op_data = opline+1;
 
                ZEND_VM_INC_OPCODE();
 
-               if (zend_hash_quick_find(EG(function_table), Z_STRVAL(op_data->op1.u.constant), Z_STRLEN(op_data->op1.u.constant)+1, op_data->extended_value, (void **) &EX(fbc))==SUCCESS) {
-                       EX(object) = NULL;
-                       ZEND_VM_NEXT_OPCODE();
-               }
-
                /* no function found. try a static method in class */
                ce = zend_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
                if (!ce) {
@@ -2087,11 +2080,10 @@ ZEND_VM_HANDLER(59, ZEND_INIT_FCALL_BY_NAME, ANY, CONST|TMP|VAR|CV)
                }
                function_name_strval = Z_STRVAL_P(function_name);
                function_name_strlen = Z_STRLEN_P(function_name);
-               if (function_name_strval[0] == ':' &&
-                   function_name_strval[1] == ':') {
+               if (function_name_strval[0] == '\\') {
 
-                   function_name_strlen -= 2;
-                       lcname = zend_str_tolower_dup(function_name_strval + 2, function_name_strlen);
+                   function_name_strlen -= 1;
+                       lcname = zend_str_tolower_dup(function_name_strval + 1, function_name_strlen);
                } else {
                        lcname = zend_str_tolower_dup(function_name_strval, function_name_strlen);
                }
@@ -2117,7 +2109,7 @@ ZEND_VM_HANDLER(69, ZEND_INIT_NS_FCALL_BY_NAME, ANY, CONST)
 
        if (zend_hash_quick_find(EG(function_table), Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant)+1, opline->extended_value, (void **) &EX(fbc))==FAILURE) {
                if (zend_hash_quick_find(EG(function_table), Z_STRVAL(op_data->op1.u.constant), Z_STRLEN(op_data->op1.u.constant)+1, op_data->extended_value, (void **) &EX(fbc))==FAILURE ||
-                   EX(fbc)->type != ZEND_INTERNAL_FUNCTION) {
+                   (Z_BVAL(op_data->op2.u.constant) && EX(fbc)->type != ZEND_INTERNAL_FUNCTION)) {
                        zend_error_noreturn(E_ERROR, "Call to undefined function %s()", Z_STRVAL(opline->op2.u.constant));
                }
        }
@@ -2980,46 +2972,50 @@ ZEND_VM_HANDLER(99, ZEND_FETCH_CONSTANT, VAR|CONST|UNUSED, CONST)
        zend_op *opline = EX(opline);
 
        if (OP1_TYPE == IS_UNUSED) {
-               if (!zend_get_constant(Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var TSRMLS_CC)) {
-                       if (opline->extended_value & ZEND_FETCH_CLASS_RT_NS_CHECK) {
-                               zend_error_noreturn(E_ERROR, "Undefined constant '%s'", Z_STRVAL(opline->op2.u.constant));
+               /* namespaced constant */
+               if (!zend_get_constant_ex(Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var, NULL, opline->extended_value TSRMLS_CC)) {
+                       char *actual = Z_STRVAL(opline->op2.u.constant);
+
+                       if (opline->extended_value & IS_CONSTANT_RT_NS_CHECK) {
+                               actual = zend_memrchr(actual, '\\', Z_STRLEN(opline->op2.u.constant)) + 1;
+                               Z_STRLEN(opline->op2.u.constant) -= (actual - Z_STRVAL(opline->op2.u.constant));
+                               actual = estrndup(actual, Z_STRLEN(opline->op2.u.constant));
+                               efree(Z_STRVAL(opline->op2.u.constant));
+                               Z_STRVAL(opline->op2.u.constant) = actual;
+                       }
+                       if (Z_STRVAL(opline->op2.u.constant)[0] == '\\') {
+                               if (opline->extended_value & ZEND_FETCH_CLASS_RT_NS_CHECK) {
+                                       zend_error_noreturn(E_ERROR, "Undefined constant '%s'",
+                                               Z_STRVAL(opline->op2.u.constant)+1,
+                                               Z_STRVAL(opline->op2.u.constant)+1);
+                               }
+                               zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",
+                                       Z_STRVAL(opline->op2.u.constant)+1,
+                                       Z_STRVAL(opline->op2.u.constant)+1);
+                               EX_T(opline->result.u.var).tmp_var = opline->op2.u.constant;
+                               ++Z_STRVAL(EX_T(opline->result.u.var).tmp_var);
+                               --Z_STRLEN(EX_T(opline->result.u.var).tmp_var);
+                       } else {
+                               if (opline->extended_value & ZEND_FETCH_CLASS_RT_NS_CHECK) {
+                                       zend_error_noreturn(E_ERROR, "Undefined constant '%s'",
+                                               Z_STRVAL(opline->op2.u.constant),
+                                               Z_STRVAL(opline->op2.u.constant));
+                               }
+                               zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",
+                                       Z_STRVAL(opline->op2.u.constant),
+                                       Z_STRVAL(opline->op2.u.constant));
+                               EX_T(opline->result.u.var).tmp_var = opline->op2.u.constant;
                        }
-                       zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",
-                               Z_STRVAL(opline->op2.u.constant),
-                               Z_STRVAL(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_hash_quick_find(EG(zend_constants), Z_STRVAL(op_data->op1.u.constant), Z_STRLEN(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 '%s::%s'", Z_STRVAL(opline->op1.u.constant), Z_STRVAL(opline->op2.u.constant));
-                               } else if (!zend_get_constant(Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var TSRMLS_CC)) {
-                                       zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",
-                                               Z_STRVAL(opline->op2.u.constant),
-                                               Z_STRVAL(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_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
                        if (!ce) {
                                zend_error_noreturn(E_ERROR, "Undefined class constant '%s'", Z_STRVAL(opline->op2.u.constant));
index 09a49379f9b4281a2fec4192e5090e85696e353f..5b698207e49e14f5d887fcb3622977dd04bc6955 100644 (file)
@@ -768,11 +768,10 @@ static int ZEND_FASTCALL  ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE
                }
                function_name_strval = Z_STRVAL_P(function_name);
                function_name_strlen = Z_STRLEN_P(function_name);
-               if (function_name_strval[0] == ':' &&
-                   function_name_strval[1] == ':') {
+               if (function_name_strval[0] == '\\') {
 
-                   function_name_strlen -= 2;
-                       lcname = zend_str_tolower_dup(function_name_strval + 2, function_name_strlen);
+                   function_name_strlen -= 1;
+                       lcname = zend_str_tolower_dup(function_name_strval + 1, function_name_strlen);
                } else {
                        lcname = zend_str_tolower_dup(function_name_strval, function_name_strlen);
                }
@@ -798,7 +797,7 @@ static int ZEND_FASTCALL  ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPC
 
        if (zend_hash_quick_find(EG(function_table), Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant)+1, opline->extended_value, (void **) &EX(fbc))==FAILURE) {
                if (zend_hash_quick_find(EG(function_table), Z_STRVAL(op_data->op1.u.constant), Z_STRLEN(op_data->op1.u.constant)+1, op_data->extended_value, (void **) &EX(fbc))==FAILURE ||
-                   EX(fbc)->type != ZEND_INTERNAL_FUNCTION) {
+                   (Z_BVAL(op_data->op2.u.constant) && EX(fbc)->type != ZEND_INTERNAL_FUNCTION)) {
                        zend_error_noreturn(E_ERROR, "Call to undefined function %s()", Z_STRVAL(opline->op2.u.constant));
                }
        }
@@ -966,11 +965,10 @@ static int ZEND_FASTCALL  ZEND_INIT_FCALL_BY_NAME_SPEC_TMP_HANDLER(ZEND_OPCODE_H
                }
                function_name_strval = Z_STRVAL_P(function_name);
                function_name_strlen = Z_STRLEN_P(function_name);
-               if (function_name_strval[0] == ':' &&
-                   function_name_strval[1] == ':') {
+               if (function_name_strval[0] == '\\') {
 
-                   function_name_strlen -= 2;
-                       lcname = zend_str_tolower_dup(function_name_strval + 2, function_name_strlen);
+                   function_name_strlen -= 1;
+                       lcname = zend_str_tolower_dup(function_name_strval + 1, function_name_strlen);
                } else {
                        lcname = zend_str_tolower_dup(function_name_strval, function_name_strlen);
                }
@@ -1072,11 +1070,10 @@ static int ZEND_FASTCALL  ZEND_INIT_FCALL_BY_NAME_SPEC_VAR_HANDLER(ZEND_OPCODE_H
                }
                function_name_strval = Z_STRVAL_P(function_name);
                function_name_strlen = Z_STRLEN_P(function_name);
-               if (function_name_strval[0] == ':' &&
-                   function_name_strval[1] == ':') {
+               if (function_name_strval[0] == '\\') {
 
-                   function_name_strlen -= 2;
-                       lcname = zend_str_tolower_dup(function_name_strval + 2, function_name_strlen);
+                   function_name_strlen -= 1;
+                       lcname = zend_str_tolower_dup(function_name_strval + 1, function_name_strlen);
                } else {
                        lcname = zend_str_tolower_dup(function_name_strval, function_name_strlen);
                }
@@ -1206,11 +1203,10 @@ static int ZEND_FASTCALL  ZEND_INIT_FCALL_BY_NAME_SPEC_CV_HANDLER(ZEND_OPCODE_HA
                }
                function_name_strval = Z_STRVAL_P(function_name);
                function_name_strlen = Z_STRLEN_P(function_name);
-               if (function_name_strval[0] == ':' &&
-                   function_name_strval[1] == ':') {
+               if (function_name_strval[0] == '\\') {
 
-                   function_name_strlen -= 2;
-                       lcname = zend_str_tolower_dup(function_name_strval + 2, function_name_strlen);
+                   function_name_strlen -= 1;
+                       lcname = zend_str_tolower_dup(function_name_strval + 1, function_name_strlen);
                } else {
                        lcname = zend_str_tolower_dup(function_name_strval, function_name_strlen);
                }
@@ -2604,16 +2600,9 @@ static int ZEND_FASTCALL  ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_HANDLER(
        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
 
        if (IS_CONST == IS_CONST && IS_CONST == IS_CONST) {
-               /* try a function in namespace */
-               zend_op *op_data = opline+1;
 
                ZEND_VM_INC_OPCODE();
 
-               if (zend_hash_quick_find(EG(function_table), Z_STRVAL(op_data->op1.u.constant), Z_STRLEN(op_data->op1.u.constant)+1, op_data->extended_value, (void **) &EX(fbc))==SUCCESS) {
-                       EX(object) = NULL;
-                       ZEND_VM_NEXT_OPCODE();
-               }
-
                /* no function found. try a static method in class */
                ce = zend_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
                if (!ce) {
@@ -2738,46 +2727,50 @@ 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_get_constant(Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var TSRMLS_CC)) {
-                       if (opline->extended_value & ZEND_FETCH_CLASS_RT_NS_CHECK) {
-                               zend_error_noreturn(E_ERROR, "Undefined constant '%s'", Z_STRVAL(opline->op2.u.constant));
-                       }
-                       zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",
-                               Z_STRVAL(opline->op2.u.constant),
-                               Z_STRVAL(opline->op2.u.constant));
-                       EX_T(opline->result.u.var).tmp_var = opline->op2.u.constant;
+               /* namespaced constant */
+               if (!zend_get_constant_ex(Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var, NULL, opline->extended_value TSRMLS_CC)) {
+                       char *actual = Z_STRVAL(opline->op2.u.constant);
+
+                       if (opline->extended_value & IS_CONSTANT_RT_NS_CHECK) {
+                               actual = zend_memrchr(actual, '\\', Z_STRLEN(opline->op2.u.constant)) + 1;
+                               Z_STRLEN(opline->op2.u.constant) -= (actual - Z_STRVAL(opline->op2.u.constant));
+                               actual = estrndup(actual, Z_STRLEN(opline->op2.u.constant));
+                               efree(Z_STRVAL(opline->op2.u.constant));
+                               Z_STRVAL(opline->op2.u.constant) = actual;
+                       }
+                       if (Z_STRVAL(opline->op2.u.constant)[0] == '\\') {
+                               if (opline->extended_value & ZEND_FETCH_CLASS_RT_NS_CHECK) {
+                                       zend_error_noreturn(E_ERROR, "Undefined constant '%s'",
+                                               Z_STRVAL(opline->op2.u.constant)+1,
+                                               Z_STRVAL(opline->op2.u.constant)+1);
+                               }
+                               zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",
+                                       Z_STRVAL(opline->op2.u.constant)+1,
+                                       Z_STRVAL(opline->op2.u.constant)+1);
+                               EX_T(opline->result.u.var).tmp_var = opline->op2.u.constant;
+                               ++Z_STRVAL(EX_T(opline->result.u.var).tmp_var);
+                               --Z_STRLEN(EX_T(opline->result.u.var).tmp_var);
+                       } else {
+                               if (opline->extended_value & ZEND_FETCH_CLASS_RT_NS_CHECK) {
+                                       zend_error_noreturn(E_ERROR, "Undefined constant '%s'",
+                                               Z_STRVAL(opline->op2.u.constant),
+                                               Z_STRVAL(opline->op2.u.constant));
+                               }
+                               zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",
+                                       Z_STRVAL(opline->op2.u.constant),
+                                       Z_STRVAL(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_hash_quick_find(EG(zend_constants), Z_STRVAL(op_data->op1.u.constant), Z_STRLEN(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 '%s::%s'", Z_STRVAL(opline->op1.u.constant), Z_STRVAL(opline->op2.u.constant));
-                               } else if (!zend_get_constant(Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var TSRMLS_CC)) {
-                                       zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",
-                                               Z_STRVAL(opline->op2.u.constant),
-                                               Z_STRVAL(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_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
                        if (!ce) {
                                zend_error_noreturn(E_ERROR, "Undefined class constant '%s'", Z_STRVAL(opline->op2.u.constant));
@@ -3200,16 +3193,9 @@ static int ZEND_FASTCALL  ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMP_HANDLER(ZE
        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
 
        if (IS_CONST == IS_CONST && IS_TMP_VAR == IS_CONST) {
-               /* try a function in namespace */
-               zend_op *op_data = opline+1;
 
                ZEND_VM_INC_OPCODE();
 
-               if (zend_hash_quick_find(EG(function_table), Z_STRVAL(op_data->op1.u.constant), Z_STRLEN(op_data->op1.u.constant)+1, op_data->extended_value, (void **) &EX(fbc))==SUCCESS) {
-                       EX(object) = NULL;
-                       ZEND_VM_NEXT_OPCODE();
-               }
-
                /* no function found. try a static method in class */
                ce = zend_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
                if (!ce) {
@@ -3676,16 +3662,9 @@ static int ZEND_FASTCALL  ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_VAR_HANDLER(ZE
        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
 
        if (IS_CONST == IS_CONST && IS_VAR == IS_CONST) {
-               /* try a function in namespace */
-               zend_op *op_data = opline+1;
 
                ZEND_VM_INC_OPCODE();
 
-               if (zend_hash_quick_find(EG(function_table), Z_STRVAL(op_data->op1.u.constant), Z_STRLEN(op_data->op1.u.constant)+1, op_data->extended_value, (void **) &EX(fbc))==SUCCESS) {
-                       EX(object) = NULL;
-                       ZEND_VM_NEXT_OPCODE();
-               }
-
                /* no function found. try a static method in class */
                ce = zend_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
                if (!ce) {
@@ -3908,16 +3887,9 @@ static int ZEND_FASTCALL  ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_HANDLER
        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
 
        if (IS_CONST == IS_CONST && IS_UNUSED == IS_CONST) {
-               /* try a function in namespace */
-               zend_op *op_data = opline+1;
 
                ZEND_VM_INC_OPCODE();
 
-               if (zend_hash_quick_find(EG(function_table), Z_STRVAL(op_data->op1.u.constant), Z_STRLEN(op_data->op1.u.constant)+1, op_data->extended_value, (void **) &EX(fbc))==SUCCESS) {
-                       EX(object) = NULL;
-                       ZEND_VM_NEXT_OPCODE();
-               }
-
                /* no function found. try a static method in class */
                ce = zend_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
                if (!ce) {
@@ -4352,16 +4324,9 @@ static int ZEND_FASTCALL  ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_HANDLER(ZEN
        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
 
        if (IS_CONST == IS_CONST && IS_CV == IS_CONST) {
-               /* try a function in namespace */
-               zend_op *op_data = opline+1;
 
                ZEND_VM_INC_OPCODE();
 
-               if (zend_hash_quick_find(EG(function_table), Z_STRVAL(op_data->op1.u.constant), Z_STRLEN(op_data->op1.u.constant)+1, op_data->extended_value, (void **) &EX(fbc))==SUCCESS) {
-                       EX(object) = NULL;
-                       ZEND_VM_NEXT_OPCODE();
-               }
-
                /* no function found. try a static method in class */
                ce = zend_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
                if (!ce) {
@@ -10345,16 +10310,9 @@ static int ZEND_FASTCALL  ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZE
        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
 
        if (IS_VAR == IS_CONST && IS_CONST == IS_CONST) {
-               /* try a function in namespace */
-               zend_op *op_data = opline+1;
 
                ZEND_VM_INC_OPCODE();
 
-               if (zend_hash_quick_find(EG(function_table), Z_STRVAL(op_data->op1.u.constant), Z_STRLEN(op_data->op1.u.constant)+1, op_data->extended_value, (void **) &EX(fbc))==SUCCESS) {
-                       EX(object) = NULL;
-                       ZEND_VM_NEXT_OPCODE();
-               }
-
                /* no function found. try a static method in class */
                ce = zend_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
                if (!ce) {
@@ -10479,46 +10437,50 @@ 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_get_constant(Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var TSRMLS_CC)) {
-                       if (opline->extended_value & ZEND_FETCH_CLASS_RT_NS_CHECK) {
-                               zend_error_noreturn(E_ERROR, "Undefined constant '%s'", Z_STRVAL(opline->op2.u.constant));
-                       }
-                       zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",
-                               Z_STRVAL(opline->op2.u.constant),
-                               Z_STRVAL(opline->op2.u.constant));
-                       EX_T(opline->result.u.var).tmp_var = opline->op2.u.constant;
+               /* namespaced constant */
+               if (!zend_get_constant_ex(Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var, NULL, opline->extended_value TSRMLS_CC)) {
+                       char *actual = Z_STRVAL(opline->op2.u.constant);
+
+                       if (opline->extended_value & IS_CONSTANT_RT_NS_CHECK) {
+                               actual = zend_memrchr(actual, '\\', Z_STRLEN(opline->op2.u.constant)) + 1;
+                               Z_STRLEN(opline->op2.u.constant) -= (actual - Z_STRVAL(opline->op2.u.constant));
+                               actual = estrndup(actual, Z_STRLEN(opline->op2.u.constant));
+                               efree(Z_STRVAL(opline->op2.u.constant));
+                               Z_STRVAL(opline->op2.u.constant) = actual;
+                       }
+                       if (Z_STRVAL(opline->op2.u.constant)[0] == '\\') {
+                               if (opline->extended_value & ZEND_FETCH_CLASS_RT_NS_CHECK) {
+                                       zend_error_noreturn(E_ERROR, "Undefined constant '%s'",
+                                               Z_STRVAL(opline->op2.u.constant)+1,
+                                               Z_STRVAL(opline->op2.u.constant)+1);
+                               }
+                               zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",
+                                       Z_STRVAL(opline->op2.u.constant)+1,
+                                       Z_STRVAL(opline->op2.u.constant)+1);
+                               EX_T(opline->result.u.var).tmp_var = opline->op2.u.constant;
+                               ++Z_STRVAL(EX_T(opline->result.u.var).tmp_var);
+                               --Z_STRLEN(EX_T(opline->result.u.var).tmp_var);
+                       } else {
+                               if (opline->extended_value & ZEND_FETCH_CLASS_RT_NS_CHECK) {
+                                       zend_error_noreturn(E_ERROR, "Undefined constant '%s'",
+                                               Z_STRVAL(opline->op2.u.constant),
+                                               Z_STRVAL(opline->op2.u.constant));
+                               }
+                               zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",
+                                       Z_STRVAL(opline->op2.u.constant),
+                                       Z_STRVAL(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_hash_quick_find(EG(zend_constants), Z_STRVAL(op_data->op1.u.constant), Z_STRLEN(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 '%s::%s'", Z_STRVAL(opline->op1.u.constant), Z_STRVAL(opline->op2.u.constant));
-                               } else if (!zend_get_constant(Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var TSRMLS_CC)) {
-                                       zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",
-                                               Z_STRVAL(opline->op2.u.constant),
-                                               Z_STRVAL(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_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
                        if (!ce) {
                                zend_error_noreturn(E_ERROR, "Undefined class constant '%s'", Z_STRVAL(opline->op2.u.constant));
@@ -12199,16 +12161,9 @@ static int ZEND_FASTCALL  ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND
        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
 
        if (IS_VAR == IS_CONST && IS_TMP_VAR == IS_CONST) {
-               /* try a function in namespace */
-               zend_op *op_data = opline+1;
 
                ZEND_VM_INC_OPCODE();
 
-               if (zend_hash_quick_find(EG(function_table), Z_STRVAL(op_data->op1.u.constant), Z_STRLEN(op_data->op1.u.constant)+1, op_data->extended_value, (void **) &EX(fbc))==SUCCESS) {
-                       EX(object) = NULL;
-                       ZEND_VM_NEXT_OPCODE();
-               }
-
                /* no function found. try a static method in class */
                ce = zend_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
                if (!ce) {
@@ -14033,16 +13988,9 @@ static int ZEND_FASTCALL  ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND
        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
 
        if (IS_VAR == IS_CONST && IS_VAR == IS_CONST) {
-               /* try a function in namespace */
-               zend_op *op_data = opline+1;
 
                ZEND_VM_INC_OPCODE();
 
-               if (zend_hash_quick_find(EG(function_table), Z_STRVAL(op_data->op1.u.constant), Z_STRLEN(op_data->op1.u.constant)+1, op_data->extended_value, (void **) &EX(fbc))==SUCCESS) {
-                       EX(object) = NULL;
-                       ZEND_VM_NEXT_OPCODE();
-               }
-
                /* no function found. try a static method in class */
                ce = zend_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
                if (!ce) {
@@ -14960,16 +14908,9 @@ static int ZEND_FASTCALL  ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED_HANDLER(Z
        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
 
        if (IS_VAR == IS_CONST && IS_UNUSED == IS_CONST) {
-               /* try a function in namespace */
-               zend_op *op_data = opline+1;
 
                ZEND_VM_INC_OPCODE();
 
-               if (zend_hash_quick_find(EG(function_table), Z_STRVAL(op_data->op1.u.constant), Z_STRLEN(op_data->op1.u.constant)+1, op_data->extended_value, (void **) &EX(fbc))==SUCCESS) {
-                       EX(object) = NULL;
-                       ZEND_VM_NEXT_OPCODE();
-               }
-
                /* no function found. try a static method in class */
                ce = zend_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
                if (!ce) {
@@ -16481,16 +16422,9 @@ static int ZEND_FASTCALL  ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_
        zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(called_scope));
 
        if (IS_VAR == IS_CONST && IS_CV == IS_CONST) {
-               /* try a function in namespace */
-               zend_op *op_data = opline+1;
 
                ZEND_VM_INC_OPCODE();
 
-               if (zend_hash_quick_find(EG(function_table), Z_STRVAL(op_data->op1.u.constant), Z_STRLEN(op_data->op1.u.constant)+1, op_data->extended_value, (void **) &EX(fbc))==SUCCESS) {
-                       EX(object) = NULL;
-                       ZEND_VM_NEXT_OPCODE();
-               }
-
                /* no function found. try a static method in class */
                ce = zend_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
                if (!ce) {
@@ -17850,46 +17784,50 @@ 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_get_constant(Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var TSRMLS_CC)) {
-                       if (opline->extended_value & ZEND_FETCH_CLASS_RT_NS_CHECK) {
-                               zend_error_noreturn(E_ERROR, "Undefined constant '%s'", Z_STRVAL(opline->op2.u.constant));
-                       }
-                       zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",
-                               Z_STRVAL(opline->op2.u.constant),
-                               Z_STRVAL(opline->op2.u.constant));
-                       EX_T(opline->result.u.var).tmp_var = opline->op2.u.constant;
+               /* namespaced constant */
+               if (!zend_get_constant_ex(Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var, NULL, opline->extended_value TSRMLS_CC)) {
+                       char *actual = Z_STRVAL(opline->op2.u.constant);
+
+                       if (opline->extended_value & IS_CONSTANT_RT_NS_CHECK) {
+                               actual = zend_memrchr(actual, '\\', Z_STRLEN(opline->op2.u.constant)) + 1;
+                               Z_STRLEN(opline->op2.u.constant) -= (actual - Z_STRVAL(opline->op2.u.constant));
+                               actual = estrndup(actual, Z_STRLEN(opline->op2.u.constant));
+                               efree(Z_STRVAL(opline->op2.u.constant));
+                               Z_STRVAL(opline->op2.u.constant) = actual;
+                       }
+                       if (Z_STRVAL(opline->op2.u.constant)[0] == '\\') {
+                               if (opline->extended_value & ZEND_FETCH_CLASS_RT_NS_CHECK) {
+                                       zend_error_noreturn(E_ERROR, "Undefined constant '%s'",
+                                               Z_STRVAL(opline->op2.u.constant)+1,
+                                               Z_STRVAL(opline->op2.u.constant)+1);
+                               }
+                               zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",
+                                       Z_STRVAL(opline->op2.u.constant)+1,
+                                       Z_STRVAL(opline->op2.u.constant)+1);
+                               EX_T(opline->result.u.var).tmp_var = opline->op2.u.constant;
+                               ++Z_STRVAL(EX_T(opline->result.u.var).tmp_var);
+                               --Z_STRLEN(EX_T(opline->result.u.var).tmp_var);
+                       } else {
+                               if (opline->extended_value & ZEND_FETCH_CLASS_RT_NS_CHECK) {
+                                       zend_error_noreturn(E_ERROR, "Undefined constant '%s'",
+                                               Z_STRVAL(opline->op2.u.constant),
+                                               Z_STRVAL(opline->op2.u.constant));
+                               }
+                               zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",
+                                       Z_STRVAL(opline->op2.u.constant),
+                                       Z_STRVAL(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_hash_quick_find(EG(zend_constants), Z_STRVAL(op_data->op1.u.constant), Z_STRLEN(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 '%s::%s'", Z_STRVAL(opline->op1.u.constant), Z_STRVAL(opline->op2.u.constant));
-                               } else if (!zend_get_constant(Z_STRVAL(opline->op2.u.constant), Z_STRLEN(opline->op2.u.constant), &EX_T(opline->result.u.var).tmp_var TSRMLS_CC)) {
-                                       zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'",
-                                               Z_STRVAL(opline->op2.u.constant),
-                                               Z_STRVAL(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_fetch_class(Z_STRVAL(opline->op1.u.constant), Z_STRLEN(opline->op1.u.constant), opline->extended_value TSRMLS_CC);
                        if (!ce) {
                                zend_error_noreturn(E_ERROR, "Undefined class constant '%s'", Z_STRVAL(opline->op2.u.constant));
index 6952d26341ceb33610d88a1276dc65506f2a898d..7c08329130f3bfb1ca9551001dee3b3229010a46 100644 (file)
@@ -2714,8 +2714,8 @@ ZEND_METHOD(reflection_function, inNamespace)
                RETURN_FALSE;
        }
        if (Z_TYPE_PP(name) == IS_STRING
-               && (colon = zend_memrchr(Z_STRVAL_PP(name), ':', Z_STRLEN_PP(name)))
-               && colon > Z_STRVAL_PP(name) && *(colon-1) == ':')
+               && (colon = zend_memrchr(Z_STRVAL_PP(name), '\\', Z_STRLEN_PP(name)))
+               && colon > Z_STRVAL_PP(name))
        {
                RETURN_TRUE;
        }
@@ -2728,17 +2728,17 @@ ZEND_METHOD(reflection_function, inNamespace)
 ZEND_METHOD(reflection_function, getNamespaceName)
 {
        zval **name;
-       char *colon;
+       char *backslash;
 
        METHOD_NOTSTATIC_NUMPARAMS(reflection_function_abstract_ptr, 0);
        if (zend_hash_find(Z_OBJPROP_P(getThis()), "name", sizeof("name"), (void **) &name) == FAILURE) {
                RETURN_FALSE;
        }
        if (Z_TYPE_PP(name) == IS_STRING
-               && (colon = zend_memrchr(Z_STRVAL_PP(name), ':', Z_STRLEN_PP(name)))
-               && colon > Z_STRVAL_PP(name) && *(colon-1) == ':')
+               && (backslash = zend_memrchr(Z_STRVAL_PP(name), '\\', Z_STRLEN_PP(name)))
+               && backslash > Z_STRVAL_PP(name))
        {
-               RETURN_STRINGL(Z_STRVAL_PP(name), colon - Z_STRVAL_PP(name) - 1, 1);
+               RETURN_STRINGL(Z_STRVAL_PP(name), backslash - Z_STRVAL_PP(name), 1);
        }
        RETURN_EMPTY_STRING();
 }
@@ -2749,17 +2749,17 @@ ZEND_METHOD(reflection_function, getNamespaceName)
 ZEND_METHOD(reflection_function, getShortName)
 {
        zval **name;
-       char *colon;
+       char *backslash;
 
        METHOD_NOTSTATIC_NUMPARAMS(reflection_function_abstract_ptr, 0);
        if (zend_hash_find(Z_OBJPROP_P(getThis()), "name", sizeof("name"), (void **) &name) == FAILURE) {
                RETURN_FALSE;
        }
        if (Z_TYPE_PP(name) == IS_STRING
-               && (colon = zend_memrchr(Z_STRVAL_PP(name), ':', Z_STRLEN_PP(name)))
-               && colon > Z_STRVAL_PP(name) && *(colon-1) == ':')
+               && (backslash = zend_memrchr(Z_STRVAL_PP(name), '\\', Z_STRLEN_PP(name)))
+               && backslash > Z_STRVAL_PP(name))
        {
-               RETURN_STRINGL(colon + 1, Z_STRLEN_PP(name) - (colon - Z_STRVAL_PP(name) + 1), 1);
+               RETURN_STRINGL(backslash + 1, Z_STRLEN_PP(name) - (backslash - Z_STRVAL_PP(name) + 1), 1);
        }
        RETURN_ZVAL(*name, 1, 0);
 }
@@ -4032,8 +4032,8 @@ ZEND_METHOD(reflection_class, inNamespace)
                RETURN_FALSE;
        }
        if (Z_TYPE_PP(name) == IS_STRING
-               && (colon = zend_memrchr(Z_STRVAL_PP(name), ':', Z_STRLEN_PP(name)))
-               && colon > Z_STRVAL_PP(name) && *(colon-1) == ':')
+               && (colon = zend_memrchr(Z_STRVAL_PP(name), '\\', Z_STRLEN_PP(name)))
+               && colon > Z_STRVAL_PP(name))
        {
                RETURN_TRUE;
        }
@@ -4046,17 +4046,17 @@ ZEND_METHOD(reflection_class, inNamespace)
 ZEND_METHOD(reflection_class, getNamespaceName)
 {
        zval **name;
-       char *colon;
+       char *backslash;
 
        METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        if (zend_hash_find(Z_OBJPROP_P(getThis()), "name", sizeof("name"), (void **) &name) == FAILURE) {
                RETURN_FALSE;
        }
        if (Z_TYPE_PP(name) == IS_STRING
-               && (colon = zend_memrchr(Z_STRVAL_PP(name), ':', Z_STRLEN_PP(name)))
-               && colon > Z_STRVAL_PP(name) && *(colon-1) == ':')
+               && (backslash = zend_memrchr(Z_STRVAL_PP(name), '\\', Z_STRLEN_PP(name)))
+               && backslash > Z_STRVAL_PP(name))
        {
-               RETURN_STRINGL(Z_STRVAL_PP(name), colon - Z_STRVAL_PP(name) - 1, 1);
+               RETURN_STRINGL(Z_STRVAL_PP(name), backslash - Z_STRVAL_PP(name), 1);
        }
        RETURN_EMPTY_STRING();
 }
@@ -4067,17 +4067,17 @@ ZEND_METHOD(reflection_class, getNamespaceName)
 ZEND_METHOD(reflection_class, getShortName)
 {
        zval **name;
-       char *colon;
+       char *backslash;
 
        METHOD_NOTSTATIC_NUMPARAMS(reflection_class_ptr, 0);
        if (zend_hash_find(Z_OBJPROP_P(getThis()), "name", sizeof("name"), (void **) &name) == FAILURE) {
                RETURN_FALSE;
        }
        if (Z_TYPE_PP(name) == IS_STRING
-               && (colon = zend_memrchr(Z_STRVAL_PP(name), ':', Z_STRLEN_PP(name)))
-               && colon > Z_STRVAL_PP(name) && *(colon-1) == ':')
+               && (backslash = zend_memrchr(Z_STRVAL_PP(name), '\\', Z_STRLEN_PP(name)))
+               && backslash > Z_STRVAL_PP(name))
        {
-               RETURN_STRINGL(colon + 1, Z_STRLEN_PP(name) - (colon - Z_STRVAL_PP(name) + 1), 1);
+               RETURN_STRINGL(backslash + 1, Z_STRLEN_PP(name) - (backslash - Z_STRVAL_PP(name) + 1), 1);
        }
        RETURN_ZVAL(*name, 1, 0);
 }
index cd1f52c2abc023b3acb92be5870f88d97c5dae79..a17e1a7226f73618ac9759d5f1e06b8c30148e2e 100644 (file)
@@ -2,7 +2,7 @@
 ReflectionFunction::getNamespaceName()
 --FILE--
 <?php
-namespace A::B;
+namespace A\B;
 function foo() {}
 
 $function = new ReflectionFunction('sort');
@@ -11,7 +11,7 @@ var_dump($function->getName());
 var_dump($function->getNamespaceName());
 var_dump($function->getShortName());
 
-$function = new ReflectionFunction('A::B::foo');
+$function = new ReflectionFunction('A\\B\\foo');
 var_dump($function->inNamespace());
 var_dump($function->getName());
 var_dump($function->getNamespaceName());
@@ -23,7 +23,7 @@ string(4) "sort"
 string(0) ""
 string(4) "sort"
 bool(true)
-string(9) "A::B::foo"
-string(4) "A::B"
+string(7) "A\B\foo"
+string(3) "A\B"
 string(3) "foo"
 
index 4b511908fe5e98809815313b21ec3d2a2bc5c3d3..921cd5b1f3fc2c6c6b3d379438d8f0eec0c5e5cc 100644 (file)
@@ -2,7 +2,7 @@
 ReflectionClass::getNamespaceName()
 --FILE--
 <?php
-namespace A::B;
+namespace A\B;
 class Foo {
 }
 
@@ -12,7 +12,7 @@ var_dump($function->getName());
 var_dump($function->getNamespaceName());
 var_dump($function->getShortName());
 
-$function = new ReflectionClass('A::B::Foo');
+$function = new ReflectionClass('A\\B\\Foo');
 var_dump($function->inNamespace());
 var_dump($function->getName());
 var_dump($function->getNamespaceName());
@@ -24,7 +24,7 @@ string(8) "stdClass"
 string(0) ""
 string(8) "stdClass"
 bool(true)
-string(9) "A::B::Foo"
-string(4) "A::B"
+string(7) "A\B\Foo"
+string(3) "A\B"
 string(3) "Foo"
 
index 655725dca6fb0875ab818b99549552519eff7f03..2d007b6ee18647e12f78ed3996bcd567318cf803 100644 (file)
@@ -54,14 +54,14 @@ PHPAPI void php_print_credits(int flag TSRMLS_DC) /* {{{ */
                } else {
                        php_info_print_table_header(1, "Language Design & Concept");
                }
-               php_info_print_table_row(1, "Andi Gutmans, Rasmus Lerdorf, Zeev Suraski");
+               php_info_print_table_row(1, "Andi Gutmans, Rasmus Lerdorf, Zeev Suraski, Marcus Boerger");
                php_info_print_table_end();
 
                /* PHP Language */
                php_info_print_table_start();
                php_info_print_table_colspan_header(2, "PHP Authors");
                php_info_print_table_header(2, "Contribution", "Authors");
-               CREDIT_LINE("Zend Scripting Language Engine", "Andi Gutmans, Zeev Suraski");
+               CREDIT_LINE("Zend Scripting Language Engine", "Andi Gutmans, Zeev Suraski, Stanislav Malyshev, Marcus Boerger, Dmitry Stogov");
                CREDIT_LINE("Extension Module API", "Andi Gutmans, Zeev Suraski, Andrei Zmievski");
                CREDIT_LINE("UNIX Build and Modularization", "Stig Bakken, Sascha Schumann");
                CREDIT_LINE("Win32 Port", "Shane Caraveo, Zeev Suraski, Wez Furlong");
index 7dc84b0bc2c73a25cfdc929526ba9ef7dea70e9d..241321a1878dc32658bdf8144298f7a2f8930c37 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Fri Aug 29 18:39:52 2008 */
+/* Generated by re2c 0.13.6.dev on Tue Nov  4 01:37:59 2008 */
 #line 1 "ext/standard/var_unserializer.re"
 /*
   +----------------------------------------------------------------------+
@@ -578,7 +578,7 @@ yy20:
                return 0;
        }
 
-       len3 = strspn(class_name, "0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377:");
+       len3 = strspn(class_name, "0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377\\");
        if (len3 != len)
        {
                *p = YYCURSOR + len3 - len;
index 1c009462b2979bdd0059825de1464a3b68280a38..366164185748f3fb9e908305ed05d3050b75381f 100644 (file)
@@ -613,7 +613,7 @@ object ":" uiv ":" ["]      {
                return 0;
        }
 
-       len3 = strspn(class_name, "0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377:");
+       len3 = strspn(class_name, "0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377\\");
        if (len3 != len)
        {
                *p = YYCURSOR + len3 - len;