]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-7.0' into PHP-7.1
authorNikita Popov <nikita.ppv@gmail.com>
Thu, 23 Mar 2017 21:49:51 +0000 (22:49 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Thu, 23 Mar 2017 21:49:51 +0000 (22:49 +0100)
1  2 
Zend/zend_ast.c
Zend/zend_ast.h
Zend/zend_compile.c
Zend/zend_language_scanner.c
Zend/zend_language_scanner.l

diff --cc Zend/zend_ast.c
Simple merge
diff --cc Zend/zend_ast.h
Simple merge
Simple merge
index 52583560da16329485f1e2de89d849cb8067b759,d5b41a1ef5748582b877bb315d965b5e2500c654..99372f0f2dcbb8496b924778c718fb1b7932fc86
@@@ -1151,18 -1164,16 +1151,16 @@@ restart
        }
  /* *********************************** */
  yyc_INITIAL:
-       YYDEBUG(0, *YYCURSOR);
+       YYDEBUG(1, *YYCURSOR);
        YYFILL(7);
        yych = *YYCURSOR;
-       if (yych != '<') goto yy4;
-       YYDEBUG(2, *YYCURSOR);
-       ++YYCURSOR;
-       if ((yych = *YYCURSOR) == '?') goto yy5;
- yy3:
+       if (yych == '<') goto yy5;
        YYDEBUG(3, *YYCURSOR);
+       ++YYCURSOR;
+ yy4:
+       YYDEBUG(4, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
- #line 1804 "Zend/zend_language_scanner.l"
 -#line 1818 "Zend/zend_language_scanner.l"
++#line 1805 "Zend/zend_language_scanner.l"
        {
        if (YYCURSOR > YYLIMIT) {
                RETURN_TOKEN(END);
@@@ -1207,25 -1218,23 +1205,23 @@@ inline_char_handler
        HANDLE_NEWLINES(yytext, yyleng);
        RETURN_TOKEN(T_INLINE_HTML);
  }
- #line 1211 "Zend/zend_language_scanner.c"
- yy4:
-       YYDEBUG(4, *YYCURSOR);
-       yych = *++YYCURSOR;
-       goto yy3;
 -#line 1222 "Zend/zend_language_scanner.c"
++#line 1209 "Zend/zend_language_scanner.c"
  yy5:
        YYDEBUG(5, *YYCURSOR);
-       yyaccept = 0;
+       yych = *++YYCURSOR;
+       if (yych != '?') goto yy4;
+       YYDEBUG(6, *YYCURSOR);
        yych = *(YYMARKER = ++YYCURSOR);
        if (yych <= 'O') {
-               if (yych == '=') goto yy7;
+               if (yych == '=') goto yy8;
        } else {
-               if (yych <= 'P') goto yy9;
-               if (yych == 'p') goto yy9;
+               if (yych <= 'P') goto yy10;
+               if (yych == 'p') goto yy10;
        }
- yy6:
-       YYDEBUG(6, *YYCURSOR);
+ yy7:
+       YYDEBUG(7, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
- #line 1795 "Zend/zend_language_scanner.l"
 -#line 1809 "Zend/zend_language_scanner.l"
++#line 1796 "Zend/zend_language_scanner.l"
        {
        if (CG(short_tags)) {
                BEGIN(ST_IN_SCRIPTING);
                goto inline_char_handler;
        }
  }
- #line 1238 "Zend/zend_language_scanner.c"
- yy7:
-       YYDEBUG(7, *YYCURSOR);
-       ++YYCURSOR;
 -#line 1247 "Zend/zend_language_scanner.c"
++#line 1234 "Zend/zend_language_scanner.c"
+ yy8:
        YYDEBUG(8, *YYCURSOR);
+       ++YYCURSOR;
+       YYDEBUG(9, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
- #line 1782 "Zend/zend_language_scanner.l"
 -#line 1796 "Zend/zend_language_scanner.l"
++#line 1783 "Zend/zend_language_scanner.l"
        {
        BEGIN(ST_IN_SCRIPTING);
        RETURN_TOKEN(T_OPEN_TAG_WITH_ECHO);
  }
- #line 1249 "Zend/zend_language_scanner.c"
- yy9:
-       YYDEBUG(9, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if (yych == 'H') goto yy11;
-       if (yych == 'h') goto yy11;
 -#line 1258 "Zend/zend_language_scanner.c"
++#line 1245 "Zend/zend_language_scanner.c"
  yy10:
        YYDEBUG(10, *YYCURSOR);
-       YYCURSOR = YYMARKER;
-       goto yy6;
+       yych = *++YYCURSOR;
+       if (yych == 'H') goto yy12;
+       if (yych == 'h') goto yy12;
  yy11:
        YYDEBUG(11, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if (yych == 'P') goto yy12;
-       if (yych != 'p') goto yy10;
+       YYCURSOR = YYMARKER;
+       goto yy7;
  yy12:
        YYDEBUG(12, *YYCURSOR);
        yych = *++YYCURSOR;
+       if (yych == 'P') goto yy13;
+       if (yych != 'p') goto yy11;
+ yy13:
+       YYDEBUG(13, *YYCURSOR);
+       yych = *++YYCURSOR;
        if (yych <= '\f') {
-               if (yych <= 0x08) goto yy10;
-               if (yych >= '\v') goto yy10;
+               if (yych <= 0x08) goto yy11;
+               if (yych >= '\v') goto yy11;
        } else {
-               if (yych <= '\r') goto yy15;
-               if (yych != ' ') goto yy10;
+               if (yych <= '\r') goto yy16;
+               if (yych != ' ') goto yy11;
        }
- yy13:
-       YYDEBUG(13, *YYCURSOR);
-       ++YYCURSOR;
  yy14:
        YYDEBUG(14, *YYCURSOR);
+       ++YYCURSOR;
+ yy15:
+       YYDEBUG(15, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
- #line 1788 "Zend/zend_language_scanner.l"
 -#line 1802 "Zend/zend_language_scanner.l"
++#line 1789 "Zend/zend_language_scanner.l"
        {
        HANDLE_NEWLINE(yytext[yyleng-1]);
        BEGIN(ST_IN_SCRIPTING);
        RETURN_TOKEN(T_OPEN_TAG);
  }
- #line 1286 "Zend/zend_language_scanner.c"
- yy15:
-       YYDEBUG(15, *YYCURSOR);
 -#line 1295 "Zend/zend_language_scanner.c"
++#line 1282 "Zend/zend_language_scanner.c"
+ yy16:
+       YYDEBUG(16, *YYCURSOR);
        ++YYCURSOR;
-       if ((yych = *YYCURSOR) == '\n') goto yy13;
-       goto yy14;
+       if ((yych = *YYCURSOR) == '\n') goto yy14;
+       goto yy15;
  /* *********************************** */
  yyc_ST_BACKQUOTE:
        {
                YYFILL(2);
                yych = *YYCURSOR;
                if (yych <= '_') {
-                       if (yych != '$') goto yy23;
-               } else {
-                       if (yych <= '`') goto yy21;
-                       if (yych == '{') goto yy20;
-                       goto yy23;
-               }
-               YYDEBUG(18, *YYCURSOR);
-               ++YYCURSOR;
-               if ((yych = *YYCURSOR) <= '_') {
-                       if (yych <= '@') goto yy19;
-                       if (yych <= 'Z') goto yy26;
-                       if (yych >= '_') goto yy26;
+                       if (yych == '$') goto yy21;
                } else {
-                       if (yych <= 'z') {
-                               if (yych >= 'a') goto yy26;
-                       } else {
-                               if (yych <= '{') goto yy29;
-                               if (yych >= 0x80) goto yy26;
-                       }
+                       if (yych <= '`') goto yy22;
+                       if (yych == '{') goto yy24;
                }
- yy19:
                YYDEBUG(19, *YYCURSOR);
+               ++YYCURSOR;
+ yy20:
+               YYDEBUG(20, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 2214 "Zend/zend_language_scanner.l"
 -#line 2228 "Zend/zend_language_scanner.l"
++#line 2215 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                RETURN_TOKEN(END);
        zend_scan_escape_string(zendlval, yytext, yyleng, '`');
        RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
  }
- #line 1397 "Zend/zend_language_scanner.c"
- yy20:
-               YYDEBUG(20, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '$') goto yy24;
-               goto yy19;
 -#line 1393 "Zend/zend_language_scanner.c"
++#line 1380 "Zend/zend_language_scanner.c"
  yy21:
                YYDEBUG(21, *YYCURSOR);
-               ++YYCURSOR;
+               yych = *++YYCURSOR;
+               if (yych <= '_') {
+                       if (yych <= '@') goto yy20;
+                       if (yych <= 'Z') goto yy25;
+                       if (yych <= '^') goto yy20;
+                       goto yy25;
+               } else {
+                       if (yych <= 'z') {
+                               if (yych <= '`') goto yy20;
+                               goto yy25;
+                       } else {
+                               if (yych <= '{') goto yy28;
 -                              if (yych <= '~') goto yy20;
++                              if (yych <= 0x7F) goto yy20;
+                               goto yy25;
+                       }
+               }
+ yy22:
                YYDEBUG(22, *YYCURSOR);
+               ++YYCURSOR;
+               YYDEBUG(23, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 2158 "Zend/zend_language_scanner.l"
 -#line 2172 "Zend/zend_language_scanner.l"
++#line 2159 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        RETURN_TOKEN('`');
  }
- #line 1413 "Zend/zend_language_scanner.c"
- yy23:
-               YYDEBUG(23, *YYCURSOR);
-               yych = *++YYCURSOR;
-               goto yy19;
 -#line 1422 "Zend/zend_language_scanner.c"
++#line 1409 "Zend/zend_language_scanner.c"
  yy24:
                YYDEBUG(24, *YYCURSOR);
-               ++YYCURSOR;
+               yych = *++YYCURSOR;
+               if (yych == '$') goto yy30;
+               goto yy20;
+ yy25:
                YYDEBUG(25, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 2145 "Zend/zend_language_scanner.l"
-               {
-       Z_LVAL_P(zendlval) = (zend_long) '{';
-       yy_push_state(ST_IN_SCRIPTING);
-       yyless(1);
-       RETURN_TOKEN(T_CURLY_OPEN);
- }
- #line 1430 "Zend/zend_language_scanner.c"
- yy26:
-               YYDEBUG(26, *YYCURSOR);
-               yyaccept = 0;
                YYMARKER = ++YYCURSOR;
                YYFILL(3);
                yych = *YYCURSOR;
-               YYDEBUG(27, *YYCURSOR);
+               YYDEBUG(26, *YYCURSOR);
                if (yybm[0+yych] & 128) {
-                       goto yy26;
+                       goto yy25;
                }
-               if (yych == '-') goto yy31;
-               if (yych == '[') goto yy33;
- yy28:
-               YYDEBUG(28, *YYCURSOR);
+               if (yych == '-') goto yy32;
+               if (yych <= '@') goto yy27;
+               if (yych <= '[') goto yy34;
+ yy27:
+               YYDEBUG(27, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1869 "Zend/zend_language_scanner.l"
 -#line 1883 "Zend/zend_language_scanner.l"
++#line 1870 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
  }
- #line 1451 "Zend/zend_language_scanner.c"
- yy29:
-               YYDEBUG(29, *YYCURSOR);
 -#line 1448 "Zend/zend_language_scanner.c"
++#line 1435 "Zend/zend_language_scanner.c"
+ yy28:
+               YYDEBUG(28, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(30, *YYCURSOR);
+               YYDEBUG(29, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1587 "Zend/zend_language_scanner.l"
 -#line 1601 "Zend/zend_language_scanner.l"
++#line 1588 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_VARNAME);
        RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES);
  }
- #line 1462 "Zend/zend_language_scanner.c"
- yy31:
 -#line 1459 "Zend/zend_language_scanner.c"
++#line 1446 "Zend/zend_language_scanner.c"
+ yy30:
+               YYDEBUG(30, *YYCURSOR);
+               ++YYCURSOR;
                YYDEBUG(31, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '>') goto yy35;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 2159 "Zend/zend_language_scanner.l"
++#line 2146 "Zend/zend_language_scanner.l"
+               {
+       Z_LVAL_P(zendlval) = (zend_long) '{';
+       yy_push_state(ST_IN_SCRIPTING);
+       yyless(1);
+       RETURN_TOKEN(T_CURLY_OPEN);
+ }
 -#line 1472 "Zend/zend_language_scanner.c"
++#line 1459 "Zend/zend_language_scanner.c"
  yy32:
                YYDEBUG(32, *YYCURSOR);
-               YYCURSOR = YYMARKER;
-               goto yy28;
+               yych = *++YYCURSOR;
+               if (yych == '>') goto yy36;
  yy33:
                YYDEBUG(33, *YYCURSOR);
-               ++YYCURSOR;
+               YYCURSOR = YYMARKER;
+               goto yy27;
+ yy34:
                YYDEBUG(34, *YYCURSOR);
+               ++YYCURSOR;
+               YYDEBUG(35, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1862 "Zend/zend_language_scanner.l"
 -#line 1876 "Zend/zend_language_scanner.l"
++#line 1863 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
  }
- #line 1483 "Zend/zend_language_scanner.c"
- yy35:
-               YYDEBUG(35, *YYCURSOR);
 -#line 1493 "Zend/zend_language_scanner.c"
++#line 1480 "Zend/zend_language_scanner.c"
+ yy36:
+               YYDEBUG(36, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= '_') {
-                       if (yych <= '@') goto yy32;
-                       if (yych <= 'Z') goto yy36;
-                       if (yych <= '^') goto yy32;
+                       if (yych <= '@') goto yy33;
+                       if (yych <= 'Z') goto yy37;
+                       if (yych <= '^') goto yy33;
                } else {
-                       if (yych <= '`') goto yy32;
-                       if (yych <= 'z') goto yy36;
-                       if (yych <= 0x7F) goto yy32;
+                       if (yych <= '`') goto yy33;
+                       if (yych <= 'z') goto yy37;
 -                      if (yych <= '~') goto yy33;
++                      if (yych <= 0x7F) goto yy33;
                }
- yy36:
-               YYDEBUG(36, *YYCURSOR);
-               ++YYCURSOR;
+ yy37:
                YYDEBUG(37, *YYCURSOR);
+               ++YYCURSOR;
+               YYDEBUG(38, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1853 "Zend/zend_language_scanner.l"
 -#line 1867 "Zend/zend_language_scanner.l"
++#line 1854 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
  }
- #line 1508 "Zend/zend_language_scanner.c"
 -#line 1518 "Zend/zend_language_scanner.c"
++#line 1505 "Zend/zend_language_scanner.c"
        }
  /* *********************************** */
  yyc_ST_DOUBLE_QUOTES:
                yych = *YYCURSOR;
                if (yych <= '#') {
                        if (yych == '"') goto yy43;
-                       goto yy45;
-               } else {
-                       if (yych <= '$') goto yy40;
-                       if (yych == '{') goto yy42;
-                       goto yy45;
-               }
- yy40:
-               YYDEBUG(40, *YYCURSOR);
-               ++YYCURSOR;
-               if ((yych = *YYCURSOR) <= '_') {
-                       if (yych <= '@') goto yy41;
-                       if (yych <= 'Z') goto yy48;
-                       if (yych >= '_') goto yy48;
                } else {
-                       if (yych <= 'z') {
-                               if (yych >= 'a') goto yy48;
-                       } else {
-                               if (yych <= '{') goto yy51;
-                               if (yych >= 0x80) goto yy48;
-                       }
+                       if (yych <= '$') goto yy45;
+                       if (yych == '{') goto yy46;
                }
- yy41:
                YYDEBUG(41, *YYCURSOR);
+               ++YYCURSOR;
+ yy42:
+               YYDEBUG(42, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 2164 "Zend/zend_language_scanner.l"
 -#line 2178 "Zend/zend_language_scanner.l"
++#line 2165 "Zend/zend_language_scanner.l"
                {
        if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) {
                YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1;
@@@ -1621,129 -1616,143 +1603,143 @@@ double_quotes_scan_done
        zend_scan_escape_string(zendlval, yytext, yyleng, '"');
        RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
  }
- #line 1625 "Zend/zend_language_scanner.c"
- yy42:
-               YYDEBUG(42, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '$') goto yy46;
-               goto yy41;
 -#line 1620 "Zend/zend_language_scanner.c"
++#line 1607 "Zend/zend_language_scanner.c"
  yy43:
                YYDEBUG(43, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(44, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 2153 "Zend/zend_language_scanner.l"
 -#line 2167 "Zend/zend_language_scanner.l"
++#line 2154 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        RETURN_TOKEN('"');
  }
- #line 1641 "Zend/zend_language_scanner.c"
 -#line 1631 "Zend/zend_language_scanner.c"
++#line 1618 "Zend/zend_language_scanner.c"
  yy45:
                YYDEBUG(45, *YYCURSOR);
                yych = *++YYCURSOR;
-               goto yy41;
+               if (yych <= '_') {
+                       if (yych <= '@') goto yy42;
+                       if (yych <= 'Z') goto yy47;
+                       if (yych <= '^') goto yy42;
+                       goto yy47;
+               } else {
+                       if (yych <= 'z') {
+                               if (yych <= '`') goto yy42;
+                               goto yy47;
+                       } else {
+                               if (yych <= '{') goto yy50;
 -                              if (yych <= '~') goto yy42;
++                              if (yych <= 0x7F) goto yy42;
+                               goto yy47;
+                       }
+               }
  yy46:
                YYDEBUG(46, *YYCURSOR);
-               ++YYCURSOR;
+               yych = *++YYCURSOR;
+               if (yych == '$') goto yy52;
+               goto yy42;
+ yy47:
                YYDEBUG(47, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 2145 "Zend/zend_language_scanner.l"
-               {
-       Z_LVAL_P(zendlval) = (zend_long) '{';
-       yy_push_state(ST_IN_SCRIPTING);
-       yyless(1);
-       RETURN_TOKEN(T_CURLY_OPEN);
- }
- #line 1658 "Zend/zend_language_scanner.c"
- yy48:
-               YYDEBUG(48, *YYCURSOR);
-               yyaccept = 0;
                YYMARKER = ++YYCURSOR;
                YYFILL(3);
                yych = *YYCURSOR;
-               YYDEBUG(49, *YYCURSOR);
+               YYDEBUG(48, *YYCURSOR);
                if (yybm[0+yych] & 128) {
-                       goto yy48;
+                       goto yy47;
                }
-               if (yych == '-') goto yy53;
-               if (yych == '[') goto yy55;
- yy50:
-               YYDEBUG(50, *YYCURSOR);
+               if (yych == '-') goto yy54;
+               if (yych <= '@') goto yy49;
+               if (yych <= '[') goto yy56;
+ yy49:
+               YYDEBUG(49, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1869 "Zend/zend_language_scanner.l"
 -#line 1883 "Zend/zend_language_scanner.l"
++#line 1870 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
  }
- #line 1679 "Zend/zend_language_scanner.c"
- yy51:
-               YYDEBUG(51, *YYCURSOR);
 -#line 1675 "Zend/zend_language_scanner.c"
++#line 1662 "Zend/zend_language_scanner.c"
+ yy50:
+               YYDEBUG(50, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(52, *YYCURSOR);
+               YYDEBUG(51, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1587 "Zend/zend_language_scanner.l"
 -#line 1601 "Zend/zend_language_scanner.l"
++#line 1588 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_VARNAME);
        RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES);
  }
- #line 1690 "Zend/zend_language_scanner.c"
- yy53:
 -#line 1686 "Zend/zend_language_scanner.c"
++#line 1673 "Zend/zend_language_scanner.c"
+ yy52:
+               YYDEBUG(52, *YYCURSOR);
+               ++YYCURSOR;
                YYDEBUG(53, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '>') goto yy57;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 2159 "Zend/zend_language_scanner.l"
++#line 2146 "Zend/zend_language_scanner.l"
+               {
+       Z_LVAL_P(zendlval) = (zend_long) '{';
+       yy_push_state(ST_IN_SCRIPTING);
+       yyless(1);
+       RETURN_TOKEN(T_CURLY_OPEN);
+ }
 -#line 1699 "Zend/zend_language_scanner.c"
++#line 1686 "Zend/zend_language_scanner.c"
  yy54:
                YYDEBUG(54, *YYCURSOR);
-               YYCURSOR = YYMARKER;
-               goto yy50;
+               yych = *++YYCURSOR;
+               if (yych == '>') goto yy58;
  yy55:
                YYDEBUG(55, *YYCURSOR);
-               ++YYCURSOR;
+               YYCURSOR = YYMARKER;
+               goto yy49;
+ yy56:
                YYDEBUG(56, *YYCURSOR);
+               ++YYCURSOR;
+               YYDEBUG(57, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1862 "Zend/zend_language_scanner.l"
 -#line 1876 "Zend/zend_language_scanner.l"
++#line 1863 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
  }
- #line 1711 "Zend/zend_language_scanner.c"
- yy57:
-               YYDEBUG(57, *YYCURSOR);
 -#line 1720 "Zend/zend_language_scanner.c"
++#line 1707 "Zend/zend_language_scanner.c"
+ yy58:
+               YYDEBUG(58, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= '_') {
-                       if (yych <= '@') goto yy54;
-                       if (yych <= 'Z') goto yy58;
-                       if (yych <= '^') goto yy54;
+                       if (yych <= '@') goto yy55;
+                       if (yych <= 'Z') goto yy59;
+                       if (yych <= '^') goto yy55;
                } else {
-                       if (yych <= '`') goto yy54;
-                       if (yych <= 'z') goto yy58;
-                       if (yych <= 0x7F) goto yy54;
+                       if (yych <= '`') goto yy55;
+                       if (yych <= 'z') goto yy59;
 -                      if (yych <= '~') goto yy55;
++                      if (yych <= 0x7F) goto yy55;
                }
- yy58:
-               YYDEBUG(58, *YYCURSOR);
-               ++YYCURSOR;
+ yy59:
                YYDEBUG(59, *YYCURSOR);
+               ++YYCURSOR;
+               YYDEBUG(60, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1853 "Zend/zend_language_scanner.l"
 -#line 1867 "Zend/zend_language_scanner.l"
++#line 1854 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
  }
- #line 1736 "Zend/zend_language_scanner.c"
 -#line 1745 "Zend/zend_language_scanner.c"
++#line 1732 "Zend/zend_language_scanner.c"
        }
  /* *********************************** */
  yyc_ST_END_HEREDOC:
-       YYDEBUG(60, *YYCURSOR);
+       YYDEBUG(61, *YYCURSOR);
        YYFILL(1);
        yych = *YYCURSOR;
-       YYDEBUG(62, *YYCURSOR);
-       ++YYCURSOR;
        YYDEBUG(63, *YYCURSOR);
+       ++YYCURSOR;
+       YYDEBUG(64, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
- #line 2131 "Zend/zend_language_scanner.l"
 -#line 2145 "Zend/zend_language_scanner.l"
++#line 2132 "Zend/zend_language_scanner.l"
        {
        zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack));
  
        BEGIN(ST_IN_SCRIPTING);
        RETURN_TOKEN(T_END_HEREDOC);
  }
- #line 1760 "Zend/zend_language_scanner.c"
 -#line 1769 "Zend/zend_language_scanner.c"
++#line 1756 "Zend/zend_language_scanner.c"
  /* *********************************** */
  yyc_ST_HEREDOC:
        {
                        128, 128, 128, 128, 128, 128, 128, 128, 
                        128, 128, 128, 128, 128, 128, 128, 128, 
                };
-               YYDEBUG(64, *YYCURSOR);
+               YYDEBUG(65, *YYCURSOR);
                YYFILL(2);
                yych = *YYCURSOR;
-               if (yych == '$') goto yy66;
-               if (yych == '{') goto yy68;
-               goto yy69;
- yy66:
-               YYDEBUG(66, *YYCURSOR);
-               ++YYCURSOR;
-               if ((yych = *YYCURSOR) <= '_') {
-                       if (yych <= '@') goto yy67;
-                       if (yych <= 'Z') goto yy72;
-                       if (yych >= '_') goto yy72;
-               } else {
-                       if (yych <= 'z') {
-                               if (yych >= 'a') goto yy72;
-                       } else {
-                               if (yych <= '{') goto yy75;
-                               if (yych >= 0x80) goto yy72;
-                       }
-               }
- yy67:
+               if (yych == '$') goto yy69;
+               if (yych == '{') goto yy70;
                YYDEBUG(67, *YYCURSOR);
+               ++YYCURSOR;
+ yy68:
+               YYDEBUG(68, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 2256 "Zend/zend_language_scanner.l"
 -#line 2270 "Zend/zend_language_scanner.l"
++#line 2257 "Zend/zend_language_scanner.l"
                {
        int newline = 0;
  
@@@ -1891,149 -1886,165 +1873,165 @@@ heredoc_scan_done
        zend_scan_escape_string(zendlval, yytext, yyleng - newline, 0);
        RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
  }
- #line 1895 "Zend/zend_language_scanner.c"
- yy68:
-               YYDEBUG(68, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '$') goto yy70;
-               goto yy67;
 -#line 1890 "Zend/zend_language_scanner.c"
++#line 1877 "Zend/zend_language_scanner.c"
  yy69:
                YYDEBUG(69, *YYCURSOR);
                yych = *++YYCURSOR;
-               goto yy67;
+               if (yych <= '_') {
+                       if (yych <= '@') goto yy68;
+                       if (yych <= 'Z') goto yy71;
+                       if (yych <= '^') goto yy68;
+                       goto yy71;
+               } else {
+                       if (yych <= 'z') {
+                               if (yych <= '`') goto yy68;
+                               goto yy71;
+                       } else {
+                               if (yych <= '{') goto yy74;
 -                              if (yych <= '~') goto yy68;
++                              if (yych <= 0x7F) goto yy68;
+                               goto yy71;
+                       }
+               }
  yy70:
                YYDEBUG(70, *YYCURSOR);
-               ++YYCURSOR;
+               yych = *++YYCURSOR;
+               if (yych == '$') goto yy76;
+               goto yy68;
+ yy71:
                YYDEBUG(71, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 2145 "Zend/zend_language_scanner.l"
-               {
-       Z_LVAL_P(zendlval) = (zend_long) '{';
-       yy_push_state(ST_IN_SCRIPTING);
-       yyless(1);
-       RETURN_TOKEN(T_CURLY_OPEN);
- }
- #line 1917 "Zend/zend_language_scanner.c"
- yy72:
-               YYDEBUG(72, *YYCURSOR);
-               yyaccept = 0;
                YYMARKER = ++YYCURSOR;
                YYFILL(3);
                yych = *YYCURSOR;
-               YYDEBUG(73, *YYCURSOR);
+               YYDEBUG(72, *YYCURSOR);
                if (yybm[0+yych] & 128) {
-                       goto yy72;
+                       goto yy71;
                }
-               if (yych == '-') goto yy77;
-               if (yych == '[') goto yy79;
- yy74:
-               YYDEBUG(74, *YYCURSOR);
+               if (yych == '-') goto yy78;
+               if (yych <= '@') goto yy73;
+               if (yych <= '[') goto yy80;
+ yy73:
+               YYDEBUG(73, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1869 "Zend/zend_language_scanner.l"
 -#line 1883 "Zend/zend_language_scanner.l"
++#line 1870 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
  }
- #line 1938 "Zend/zend_language_scanner.c"
- yy75:
-               YYDEBUG(75, *YYCURSOR);
 -#line 1934 "Zend/zend_language_scanner.c"
++#line 1921 "Zend/zend_language_scanner.c"
+ yy74:
+               YYDEBUG(74, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(76, *YYCURSOR);
+               YYDEBUG(75, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1587 "Zend/zend_language_scanner.l"
 -#line 1601 "Zend/zend_language_scanner.l"
++#line 1588 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_VARNAME);
        RETURN_TOKEN(T_DOLLAR_OPEN_CURLY_BRACES);
  }
- #line 1949 "Zend/zend_language_scanner.c"
- yy77:
 -#line 1945 "Zend/zend_language_scanner.c"
++#line 1932 "Zend/zend_language_scanner.c"
+ yy76:
+               YYDEBUG(76, *YYCURSOR);
+               ++YYCURSOR;
                YYDEBUG(77, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '>') goto yy81;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 2159 "Zend/zend_language_scanner.l"
++#line 2146 "Zend/zend_language_scanner.l"
+               {
+       Z_LVAL_P(zendlval) = (zend_long) '{';
+       yy_push_state(ST_IN_SCRIPTING);
+       yyless(1);
+       RETURN_TOKEN(T_CURLY_OPEN);
+ }
 -#line 1958 "Zend/zend_language_scanner.c"
++#line 1945 "Zend/zend_language_scanner.c"
  yy78:
                YYDEBUG(78, *YYCURSOR);
-               YYCURSOR = YYMARKER;
-               goto yy74;
+               yych = *++YYCURSOR;
+               if (yych == '>') goto yy82;
  yy79:
                YYDEBUG(79, *YYCURSOR);
-               ++YYCURSOR;
+               YYCURSOR = YYMARKER;
+               goto yy73;
+ yy80:
                YYDEBUG(80, *YYCURSOR);
+               ++YYCURSOR;
+               YYDEBUG(81, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1862 "Zend/zend_language_scanner.l"
 -#line 1876 "Zend/zend_language_scanner.l"
++#line 1863 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
  }
- #line 1970 "Zend/zend_language_scanner.c"
- yy81:
-               YYDEBUG(81, *YYCURSOR);
 -#line 1979 "Zend/zend_language_scanner.c"
++#line 1966 "Zend/zend_language_scanner.c"
+ yy82:
+               YYDEBUG(82, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= '_') {
-                       if (yych <= '@') goto yy78;
-                       if (yych <= 'Z') goto yy82;
-                       if (yych <= '^') goto yy78;
+                       if (yych <= '@') goto yy79;
+                       if (yych <= 'Z') goto yy83;
+                       if (yych <= '^') goto yy79;
                } else {
-                       if (yych <= '`') goto yy78;
-                       if (yych <= 'z') goto yy82;
-                       if (yych <= 0x7F) goto yy78;
+                       if (yych <= '`') goto yy79;
+                       if (yych <= 'z') goto yy83;
 -                      if (yych <= '~') goto yy79;
++                      if (yych <= 0x7F) goto yy79;
                }
- yy82:
-               YYDEBUG(82, *YYCURSOR);
-               ++YYCURSOR;
+ yy83:
                YYDEBUG(83, *YYCURSOR);
+               ++YYCURSOR;
+               YYDEBUG(84, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1853 "Zend/zend_language_scanner.l"
 -#line 1867 "Zend/zend_language_scanner.l"
++#line 1854 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY);
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
  }
- #line 1995 "Zend/zend_language_scanner.c"
 -#line 2004 "Zend/zend_language_scanner.c"
++#line 1991 "Zend/zend_language_scanner.c"
        }
  /* *********************************** */
  yyc_ST_IN_SCRIPTING:
        {
                static const unsigned char yybm[] = {
                          0,   0,   0,   0,   0,   0,   0,   0, 
-                         0, 192,  64,   0,   0,  64,   0,   0, 
+                         0,  36,   4,   0,   0,   4,   0,   0, 
                          0,   0,   0,   0,   0,   0,   0,   0, 
                          0,   0,   0,   0,   0,   0,   0,   0, 
-                       192,   0,   0,   0,   0,   0,   0,   0, 
+                        36,   0,   0,   0,   0,   0,   0,   0, 
                          0,   0,   0,   0,   0,   0,   0,   0, 
-                        60,  60,  44,  44,  44,  44,  44,  44, 
-                        44,  44,   0,   0,   0,   0,   0,   0, 
-                         0,  36,  36,  36,  36,  36,  36,   4, 
-                         4,   4,   4,   4,   4,   4,   4,   4, 
-                         4,   4,   4,   4,   4,   4,   4,   4, 
-                         4,   4,   4,   0,   0,   0,   0,   4, 
-                         0,  36,  36,  36,  36,  36,  36,   4, 
-                         4,   4,   4,   4,   4,   4,   4,   4, 
-                         4,   4,   4,   4,   4,   4,   4,   4, 
-                         4,   4,   4,   0,   0,   0,   0,   0, 
-                         4,   4,   4,   4,   4,   4,   4,   4, 
-                         4,   4,   4,   4,   4,   4,   4,   4, 
-                         4,   4,   4,   4,   4,   4,   4,   4, 
-                         4,   4,   4,   4,   4,   4,   4,   4, 
-                         4,   4,   4,   4,   4,   4,   4,   4, 
-                         4,   4,   4,   4,   4,   4,   4,   4, 
-                         4,   4,   4,   4,   4,   4,   4,   4, 
-                         4,   4,   4,   4,   4,   4,   4,   4, 
-                         4,   4,   4,   4,   4,   4,   4,   4, 
-                         4,   4,   4,   4,   4,   4,   4,   4, 
-                         4,   4,   4,   4,   4,   4,   4,   4, 
-                         4,   4,   4,   4,   4,   4,   4,   4, 
-                         4,   4,   4,   4,   4,   4,   4,   4, 
-                         4,   4,   4,   4,   4,   4,   4,   4, 
-                         4,   4,   4,   4,   4,   4,   4,   4, 
-                         4,   4,   4,   4,   4,   4,   4,   4, 
+                       216, 216, 152, 152, 152, 152, 152, 152, 
+                       152, 152,   0,   0,   0,   0,   0,   0, 
+                         0, 144, 144, 144, 144, 144, 144,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,   0,   0,   0,   0,  16, 
+                         0, 144, 144, 144, 144, 144, 144,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
 -                       16,  16,  16,   0,   0,   0,   0,  16, 
++                       16,  16,  16,   0,   0,   0,   0,   0, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
+                        16,  16,  16,  16,  16,  16,  16,  16, 
                };
-               YYDEBUG(84, *YYCURSOR);
+               YYDEBUG(85, *YYCURSOR);
                YYFILL(16);
                yych = *YYCURSOR;
-               YYDEBUG(-1, yych);
+               if (yybm[0+yych] & 4) {
+                       goto yy89;
+               }
                switch (yych) {
                case 0x00:
                case 0x01:
                case 0x1C:
                case 0x1D:
                case 0x1E:
 -              case 0x1F:      goto yy87;
 +              case 0x1F:
-               case 0x7F:      goto yy147;
-               case '\t':
-               case '\n':
-               case '\r':
-               case ' ':       goto yy103;
-               case '!':       goto yy118;
-               case '"':       goto yy143;
-               case '#':       goto yy139;
-               case '$':       goto yy129;
-               case '%':       goto yy123;
-               case '&':       goto yy124;
-               case '\'':      goto yy141;
-               case '(':       goto yy112;
++              case 0x7F:      goto yy87;
+               case ' ':
+               case '!':       goto yy92;
+               case '"':       goto yy94;
+               case '#':       goto yy96;
+               case '$':       goto yy98;
+               case '%':       goto yy99;
+               case '&':       goto yy100;
+               case '\'':      goto yy101;
+               case '(':       goto yy103;
                case ')':
                case ',':
                case ';':
                }
  yy87:
                YYDEBUG(87, *YYCURSOR);
+               ++YYCURSOR;
+               YYDEBUG(88, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1892 "Zend/zend_language_scanner.l"
 -#line 2401 "Zend/zend_language_scanner.l"
++#line 2388 "Zend/zend_language_scanner.l"
                {
-       zend_copy_value(zendlval, yytext, yyleng);
-       RETURN_TOKEN(T_STRING);
+       if (YYCURSOR > YYLIMIT) {
+               RETURN_TOKEN(END);
+       }
+       zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
+       goto restart;
  }
- #line 2184 "Zend/zend_language_scanner.c"
- yy88:
-               YYDEBUG(88, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych <= 'O') {
-                       if (yych <= 'H') {
-                               if (yych == 'E') goto yy686;
-                               goto yy150;
-                       } else {
-                               if (yych <= 'I') goto yy687;
-                               if (yych <= 'N') goto yy150;
-                               goto yy688;
-                       }
-               } else {
-                       if (yych <= 'h') {
-                               if (yych == 'e') goto yy686;
-                               goto yy150;
-                       } else {
-                               if (yych <= 'i') goto yy687;
-                               if (yych == 'o') goto yy688;
-                               goto yy150;
-                       }
-               }
 -#line 2181 "Zend/zend_language_scanner.c"
++#line 2169 "Zend/zend_language_scanner.c"
  yy89:
                YYDEBUG(89, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych <= 'U') {
-                       if (yych <= 'N') {
-                               if (yych == 'I') goto yy662;
-                               goto yy150;
-                       } else {
-                               if (yych <= 'O') goto yy663;
-                               if (yych <= 'T') goto yy150;
-                               goto yy664;
-                       }
-               } else {
-                       if (yych <= 'n') {
-                               if (yych == 'i') goto yy662;
-                               goto yy150;
-                       } else {
-                               if (yych <= 'o') goto yy663;
-                               if (yych == 'u') goto yy664;
-                               goto yy150;
-                       }
-               }
- yy90:
+               ++YYCURSOR;
+               YYFILL(1);
+               yych = *YYCURSOR;
                YYDEBUG(90, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych <= 'O') {
-                       if (yych <= 'K') {
-                               if (yych == 'A') goto yy627;
-                               goto yy150;
-                       } else {
-                               if (yych <= 'L') goto yy628;
-                               if (yych <= 'N') goto yy150;
-                               goto yy629;
-                       }
-               } else {
-                       if (yych <= 'k') {
-                               if (yych == 'a') goto yy627;
-                               goto yy150;
-                       } else {
-                               if (yych <= 'l') goto yy628;
-                               if (yych == 'o') goto yy629;
-                               goto yy150;
-                       }
+               if (yybm[0+yych] & 4) {
+                       goto yy89;
                }
- yy91:
                YYDEBUG(91, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy609;
-               if (yych == 'e') goto yy609;
-               goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1305 "Zend/zend_language_scanner.l"
++#line 1292 "Zend/zend_language_scanner.l"
+               {
+       HANDLE_NEWLINES(yytext, yyleng);
+       RETURN_TOKEN(T_WHITESPACE);
+ }
 -#line 2198 "Zend/zend_language_scanner.c"
++#line 2186 "Zend/zend_language_scanner.c"
  yy92:
                YYDEBUG(92, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'I') goto yy597;
-               if (yych == 'i') goto yy597;
-               goto yy150;
+               ++YYCURSOR;
+               if ((yych = *YYCURSOR) == '=') goto yy153;
  yy93:
                YYDEBUG(93, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych <= 'R') {
-                       if (yych == 'H') goto yy585;
-                       if (yych <= 'Q') goto yy150;
-                       goto yy586;
-               } else {
-                       if (yych <= 'h') {
-                               if (yych <= 'g') goto yy150;
-                               goto yy585;
-                       } else {
-                               if (yych == 'r') goto yy586;
-                               goto yy150;
-                       }
-               }
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1590 "Zend/zend_language_scanner.l"
++#line 1577 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(yytext[0]);
+ }
 -#line 2210 "Zend/zend_language_scanner.c"
++#line 2198 "Zend/zend_language_scanner.c"
  yy94:
                YYDEBUG(94, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych <= 'S') {
-                       if (yych <= 'L') {
-                               if (yych == 'F') goto yy532;
-                               goto yy150;
-                       } else {
-                               if (yych <= 'M') goto yy534;
-                               if (yych <= 'N') goto yy535;
-                               if (yych <= 'R') goto yy150;
-                               goto yy536;
-                       }
-               } else {
-                       if (yych <= 'm') {
-                               if (yych == 'f') goto yy532;
-                               if (yych <= 'l') goto yy150;
-                               goto yy534;
-                       } else {
-                               if (yych <= 'n') goto yy535;
-                               if (yych == 's') goto yy536;
-                               goto yy150;
-                       }
-               }
- yy95:
+               ++YYCURSOR;
                YYDEBUG(95, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'H') goto yy527;
-               if (yych == 'h') goto yy527;
-               goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 2049 "Zend/zend_language_scanner.l"
++#line 2036 "Zend/zend_language_scanner.l"
+               {
+       int bprefix = (yytext[0] != '"') ? 1 : 0;
+       while (YYCURSOR < YYLIMIT) {
+               switch (*YYCURSOR++) {
+                       case '"':
+                               yyleng = YYCURSOR - SCNG(yy_text);
+                               zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"');
+                               RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING);
+                       case '$':
+                               if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
+                                       break;
+                               }
+                               continue;
+                       case '{':
+                               if (*YYCURSOR == '$') {
+                                       break;
+                               }
+                               continue;
+                       case '\\':
+                               if (YYCURSOR < YYLIMIT) {
+                                       YYCURSOR++;
+                               }
+                               /* fall through */
+                       default:
+                               continue;
+               }
+               YYCURSOR--;
+               break;
+       }
+       /* Remember how much was scanned to save rescanning */
+       SET_DOUBLE_QUOTES_SCANNED_LENGTH(YYCURSOR - SCNG(yy_text) - yyleng);
+       YYCURSOR = SCNG(yy_text) + yyleng;
+       BEGIN(ST_DOUBLE_QUOTES);
+       RETURN_TOKEN('"');
+ }
 -#line 2257 "Zend/zend_language_scanner.c"
++#line 2245 "Zend/zend_language_scanner.c"
  yy96:
                YYDEBUG(96, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych <= 'S') {
-                       if (yych <= 'M') {
-                               if (yych == 'B') goto yy509;
-                               goto yy150;
-                       } else {
-                               if (yych <= 'N') goto yy510;
-                               if (yych <= 'Q') goto yy150;
-                               if (yych <= 'R') goto yy511;
-                               goto yy512;
-                       }
-               } else {
-                       if (yych <= 'n') {
-                               if (yych == 'b') goto yy509;
-                               if (yych <= 'm') goto yy150;
-                               goto yy510;
-                       } else {
-                               if (yych <= 'q') goto yy150;
-                               if (yych <= 'r') goto yy511;
-                               if (yych <= 's') goto yy512;
-                               goto yy150;
-                       }
-               }
- yy97:
+               ++YYCURSOR;
                YYDEBUG(97, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych <= 'W') {
-                       if (yych == 'T') goto yy497;
-                       if (yych <= 'V') goto yy150;
-                       goto yy498;
-               } else {
-                       if (yych <= 't') {
-                               if (yych <= 's') goto yy150;
-                               goto yy497;
-                       } else {
-                               if (yych == 'w') goto yy498;
-                               goto yy150;
-                       }
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1912 "Zend/zend_language_scanner.l"
++#line 1899 "Zend/zend_language_scanner.l"
+               {
+       while (YYCURSOR < YYLIMIT) {
+               switch (*YYCURSOR++) {
+                       case '\r':
+                               if (*YYCURSOR == '\n') {
+                                       YYCURSOR++;
+                               }
+                               /* fall through */
+                       case '\n':
+                               CG(zend_lineno)++;
+                               break;
+                       case '?':
+                               if (*YYCURSOR == '>') {
+                                       YYCURSOR--;
+                                       break;
+                               }
+                               /* fall through */
+                       default:
+                               continue;
                }
 -#line 2292 "Zend/zend_language_scanner.c"
+               break;
+       }
+       yyleng = YYCURSOR - SCNG(yy_text);
+       RETURN_TOKEN(T_COMMENT);
+ }
++#line 2280 "Zend/zend_language_scanner.c"
  yy98:
                YYDEBUG(98, *YYCURSOR);
-               yyaccept = 0;
-               yych = *(YYMARKER = ++YYCURSOR);
-               if (yych <= ';') {
-                       if (yych <= '"') {
-                               if (yych <= '!') goto yy150;
-                               goto yy489;
-                       } else {
-                               if (yych == '\'') goto yy490;
-                               goto yy150;
-                       }
+               yych = *++YYCURSOR;
+               if (yych <= '_') {
+                       if (yych <= '@') goto yy93;
+                       if (yych <= 'Z') goto yy155;
+                       if (yych <= '^') goto yy93;
+                       goto yy155;
                } else {
-                       if (yych <= 'R') {
-                               if (yych <= '<') goto yy488;
-                               if (yych <= 'Q') goto yy150;
-                               goto yy491;
-                       } else {
-                               if (yych == 'r') goto yy491;
-                               goto yy150;
-                       }
+                       if (yych <= '`') goto yy93;
+                       if (yych <= 'z') goto yy155;
 -                      if (yych <= '~') goto yy93;
++                      if (yych <= 0x7F) goto yy93;
+                       goto yy155;
                }
  yy99:
                YYDEBUG(99, *YYCURSOR);
@@@ -2403,93 -2317,80 +2305,80 @@@ yy100
  yy101:
                YYDEBUG(101, *YYCURSOR);
                ++YYCURSOR;
-               if ((yych = *YYCURSOR) <= '<') {
-                       if (yych == '-') goto yy450;
-               } else {
-                       if (yych <= '=') goto yy448;
-                       if (yych <= '>') goto yy452;
-               }
- yy102:
                YYDEBUG(102, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1576 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(yytext[0]);
- }
- #line 2420 "Zend/zend_language_scanner.c"
- yy103:
-               YYDEBUG(103, *YYCURSOR);
-               ++YYCURSOR;
-               yych = *YYCURSOR;
-               goto yy447;
- yy104:
-               YYDEBUG(104, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1291 "Zend/zend_language_scanner.l"
-               {
-       HANDLE_NEWLINES(yytext, yyleng);
-       RETURN_TOKEN(T_WHITESPACE);
- }
- #line 2434 "Zend/zend_language_scanner.c"
- yy105:
-               YYDEBUG(105, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == ':') goto yy444;
-               goto yy102;
- yy106:
-               YYDEBUG(106, *YYCURSOR);
-               ++YYCURSOR;
-               YYDEBUG(107, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1316 "Zend/zend_language_scanner.l"
 -#line 1980 "Zend/zend_language_scanner.l"
++#line 1967 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_NS_SEPARATOR);
- }
- #line 2449 "Zend/zend_language_scanner.c"
- yy108:
-               YYDEBUG(108, *YYCURSOR);
-               yyaccept = 1;
-               yych = *(YYMARKER = ++YYCURSOR);
-               if (yych <= '/') {
-                       if (yych == '.') goto yy441;
-                       goto yy102;
+       register char *s, *t;
+       char *end;
+       int bprefix = (yytext[0] != '\'') ? 1 : 0;
+       while (1) {
+               if (YYCURSOR < YYLIMIT) {
+                       if (*YYCURSOR == '\'') {
+                               YYCURSOR++;
+                               yyleng = YYCURSOR - SCNG(yy_text);
+                               break;
+                       } else if (*YYCURSOR++ == '\\' && YYCURSOR < YYLIMIT) {
+                               YYCURSOR++;
+                       }
                } else {
-                       if (yych <= '9') goto yy437;
-                       if (yych == '=') goto yy439;
-                       goto yy102;
+                       yyleng = YYLIMIT - SCNG(yy_text);
+                       /* Unclosed single quotes; treat similar to double quotes, but without a separate token
+                        * for ' (unrecognized by parser), instead of old flex fallback to "Unexpected character..."
+                        * rule, which continued in ST_IN_SCRIPTING state after the quote */
+                       ZVAL_NULL(zendlval);
+                       RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
                }
- yy109:
-               YYDEBUG(109, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych <= '=') goto yy102;
-               if (yych <= '>') goto yy431;
-               if (yych <= '?') goto yy433;
-               goto yy102;
- yy110:
-               YYDEBUG(110, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych <= 'E') {
-                       if (yych == 'A') goto yy419;
-                       if (yych <= 'D') goto yy150;
-                       goto yy420;
-               } else {
-                       if (yych <= 'a') {
-                               if (yych <= '`') goto yy150;
-                               goto yy419;
-                       } else {
-                               if (yych == 'e') goto yy420;
-                               goto yy150;
+       }
+       ZVAL_STRINGL(zendlval, yytext+bprefix+1, yyleng-bprefix-2);
+       /* convert escape sequences */
+       s = t = Z_STRVAL_P(zendlval);
+       end = s+Z_STRLEN_P(zendlval);
+       while (s<end) {
+               if (*s=='\\') {
+                       s++;
+                       switch(*s) {
+                               case '\\':
+                               case '\'':
+                                       *t++ = *s;
+                                       Z_STRLEN_P(zendlval)--;
+                                       break;
+                               default:
+                                       *t++ = '\\';
+                                       *t++ = *s;
+                                       break;
                        }
+               } else {
+                       *t++ = *s;
                }
- yy111:
-               YYDEBUG(111, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy416;
-               if (yych == 'a') goto yy416;
-               goto yy150;
- yy112:
-               YYDEBUG(112, *YYCURSOR);
-               yyaccept = 1;
+               if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) {
+                       CG(zend_lineno)++;
+               }
+               s++;
+       }
+       *t = 0;
+       if (SCNG(output_filter)) {
+               size_t sz = 0;
+               char *str = NULL;
+               s = Z_STRVAL_P(zendlval);
+               // TODO: avoid reallocation ???
+               SCNG(output_filter)((unsigned char **)&str, &sz, (unsigned char *)s, (size_t)Z_STRLEN_P(zendlval));
+               ZVAL_STRINGL(zendlval, str, sz);
+       }
+       RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING);
+ }
 -#line 2391 "Zend/zend_language_scanner.c"
++#line 2379 "Zend/zend_language_scanner.c"
+ yy103:
+               YYDEBUG(103, *YYCURSOR);
+               yyaccept = 0;
                yych = *(YYMARKER = ++YYCURSOR);
                if (yych <= 'S') {
                        if (yych <= 'D') {
                                }
                        }
                }
- yy113:
-               YYDEBUG(113, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych <= 'S') {
-                       if (yych == 'N') goto yy332;
-                       if (yych <= 'R') goto yy150;
-                       goto yy333;
-               } else {
-                       if (yych <= 'n') {
-                               if (yych <= 'm') goto yy150;
-                               goto yy332;
-                       } else {
-                               if (yych == 's') goto yy333;
-                               goto yy150;
-                       }
-               }
- yy114:
-               YYDEBUG(114, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '_') goto yy250;
-               goto yy150;
- yy115:
-               YYDEBUG(115, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych <= '<') goto yy102;
-               if (yych <= '=') goto yy244;
-               if (yych <= '>') goto yy246;
-               goto yy102;
- yy116:
-               YYDEBUG(116, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'I') goto yy240;
-               if (yych == 'i') goto yy240;
-               goto yy150;
- yy117:
-               YYDEBUG(117, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '+') goto yy238;
-               if (yych == '=') goto yy236;
-               goto yy102;
- yy118:
-               YYDEBUG(118, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '=') goto yy233;
-               goto yy102;
- yy119:
-               YYDEBUG(119, *YYCURSOR);
+ yy104:
+               YYDEBUG(104, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych <= ';') goto yy102;
-               if (yych <= '<') goto yy209;
-               if (yych <= '=') goto yy211;
-               if (yych <= '>') goto yy213;
-               goto yy102;
- yy120:
-               YYDEBUG(120, *YYCURSOR);
+               goto yy93;
+ yy105:
+               YYDEBUG(105, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych <= '<') goto yy102;
-               if (yych <= '=') goto yy205;
-               if (yych <= '>') goto yy203;
-               goto yy102;
- yy121:
-               YYDEBUG(121, *YYCURSOR);
+               if (yych == '*') goto yy176;
+               if (yych == '=') goto yy178;
+               goto yy93;
+ yy106:
+               YYDEBUG(106, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == '*') goto yy197;
-               if (yych == '=') goto yy199;
-               goto yy102;
- yy122:
-               YYDEBUG(122, *YYCURSOR);
+               if (yych == '+') goto yy180;
+               if (yych == '=') goto yy182;
+               goto yy93;
+ yy107:
+               YYDEBUG(107, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych <= '.') {
-                       if (yych == '*') goto yy189;
-                       goto yy102;
+               if (yych <= '<') {
+                       if (yych == '-') goto yy184;
+                       goto yy93;
                } else {
-                       if (yych <= '/') goto yy191;
-                       if (yych == '=') goto yy192;
-                       goto yy102;
+                       if (yych <= '=') goto yy186;
+                       if (yych <= '>') goto yy188;
+                       goto yy93;
                }
- yy123:
-               YYDEBUG(123, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '=') goto yy187;
-               goto yy102;
- yy124:
-               YYDEBUG(124, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '&') goto yy183;
-               if (yych == '=') goto yy185;
-               goto yy102;
- yy125:
-               YYDEBUG(125, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '=') goto yy181;
-               if (yych == '|') goto yy179;
-               goto yy102;
- yy126:
-               YYDEBUG(126, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '=') goto yy177;
-               goto yy102;
- yy127:
-               YYDEBUG(127, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'R') goto yy175;
-               if (yych == 'r') goto yy175;
-               goto yy150;
- yy128:
-               YYDEBUG(128, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'O') goto yy172;
-               if (yych == 'o') goto yy172;
-               goto yy150;
- yy129:
-               YYDEBUG(129, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych <= '_') {
-                       if (yych <= '@') goto yy102;
-                       if (yych <= 'Z') goto yy169;
-                       if (yych <= '^') goto yy102;
-                       goto yy169;
+ yy108:
+               YYDEBUG(108, *YYCURSOR);
+               yyaccept = 0;
+               yych = *(YYMARKER = ++YYCURSOR);
+               if (yych <= '/') {
+                       if (yych == '.') goto yy190;
+                       goto yy93;
                } else {
-                       if (yych <= '`') goto yy102;
-                       if (yych <= 'z') goto yy169;
-                       if (yych <= 0x7F) goto yy102;
-                       goto yy169;
+                       if (yych <= '9') goto yy191;
+                       if (yych == '=') goto yy194;
+                       goto yy93;
                }
- yy130:
-               YYDEBUG(130, *YYCURSOR);
+ yy109:
+               YYDEBUG(109, *YYCURSOR);
                yych = *++YYCURSOR;
-               goto yy102;
- yy131:
-               YYDEBUG(131, *YYCURSOR);
-               ++YYCURSOR;
-               YYDEBUG(132, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1581 "Zend/zend_language_scanner.l"
-               {
-       yy_push_state(ST_IN_SCRIPTING);
-       RETURN_TOKEN('{');
- }
- #line 2683 "Zend/zend_language_scanner.c"
- yy133:
-               YYDEBUG(133, *YYCURSOR);
-               ++YYCURSOR;
-               YYDEBUG(134, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1593 "Zend/zend_language_scanner.l"
-               {
-       RESET_DOC_COMMENT();
-       if (!zend_stack_is_empty(&SCNG(state_stack))) {
-               yy_pop_state();
-       }
-       RETURN_TOKEN('}');
- }
- #line 2697 "Zend/zend_language_scanner.c"
- yy135:
-               YYDEBUG(135, *YYCURSOR);
-               yyaccept = 2;
+               if (yych <= '.') {
+                       if (yych == '*') goto yy196;
+                       goto yy93;
+               } else {
+                       if (yych <= '/') goto yy96;
+                       if (yych == '=') goto yy198;
+                       goto yy93;
+               }
+ yy110:
+               YYDEBUG(110, *YYCURSOR);
+               yyaccept = 1;
                yych = *(YYMARKER = ++YYCURSOR);
-               if (yych <= 'E') {
-                       if (yych <= '9') {
-                               if (yych == '.') goto yy151;
-                               if (yych >= '0') goto yy154;
+               if (yybm[0+yych] & 8) {
+                       goto yy112;
+               }
+               if (yych <= 'W') {
+                       if (yych <= 'A') {
+                               if (yych == '.') goto yy191;
                        } else {
-                               if (yych == 'B') goto yy162;
-                               if (yych >= 'E') goto yy156;
+                               if (yych <= 'B') goto yy200;
+                               if (yych == 'E') goto yy201;
                        }
                } else {
-                       if (yych <= 'b') {
-                               if (yych == 'X') goto yy161;
-                               if (yych >= 'b') goto yy162;
+                       if (yych <= 'd') {
+                               if (yych <= 'X') goto yy202;
+                               if (yych == 'b') goto yy200;
                        } else {
-                               if (yych <= 'e') {
-                                       if (yych >= 'e') goto yy156;
-                               } else {
-                                       if (yych == 'x') goto yy161;
-                               }
+                               if (yych <= 'e') goto yy201;
+                               if (yych == 'x') goto yy202;
                        }
                }
- yy136:
-               YYDEBUG(136, *YYCURSOR);
+ yy111:
+               YYDEBUG(111, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1646 "Zend/zend_language_scanner.l"
 -#line 1660 "Zend/zend_language_scanner.l"
++#line 1647 "Zend/zend_language_scanner.l"
                {
        char *end;
        if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */
        ZEND_ASSERT(!errno);
        RETURN_TOKEN(T_LNUMBER);
  }
- #line 2770 "Zend/zend_language_scanner.c"
- yy137:
-               YYDEBUG(137, *YYCURSOR);
-               yyaccept = 2;
-               yych = *(YYMARKER = ++YYCURSOR);
-               if (yych <= '9') {
-                       if (yych == '.') goto yy151;
-                       if (yych <= '/') goto yy136;
-                       goto yy154;
 -#line 2566 "Zend/zend_language_scanner.c"
++#line 2554 "Zend/zend_language_scanner.c"
+ yy112:
+               YYDEBUG(112, *YYCURSOR);
+               yyaccept = 1;
+               YYMARKER = ++YYCURSOR;
+               YYFILL(3);
+               yych = *YYCURSOR;
+               YYDEBUG(113, *YYCURSOR);
+               if (yybm[0+yych] & 8) {
+                       goto yy112;
+               }
+               if (yych <= 'D') {
+                       if (yych == '.') goto yy191;
+                       goto yy111;
                } else {
-                       if (yych <= 'E') {
-                               if (yych <= 'D') goto yy136;
-                               goto yy156;
-                       } else {
-                               if (yych == 'e') goto yy156;
-                               goto yy136;
-                       }
+                       if (yych <= 'E') goto yy201;
+                       if (yych == 'e') goto yy201;
+                       goto yy111;
                }
- yy138:
-               YYDEBUG(138, *YYCURSOR);
+ yy114:
+               YYDEBUG(114, *YYCURSOR);
                yych = *++YYCURSOR;
-               goto yy150;
- yy139:
-               YYDEBUG(139, *YYCURSOR);
+               if (yych == ':') goto yy203;
+               goto yy93;
+ yy115:
+               YYDEBUG(115, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych <= ';') goto yy93;
+               if (yych <= '<') goto yy205;
+               if (yych <= '=') goto yy207;
+               if (yych <= '>') goto yy209;
+               goto yy93;
+ yy116:
+               YYDEBUG(116, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych <= '<') goto yy93;
+               if (yych <= '=') goto yy210;
+               if (yych <= '>') goto yy212;
+               goto yy93;
+ yy117:
+               YYDEBUG(117, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych <= '<') goto yy93;
+               if (yych <= '=') goto yy214;
+               if (yych <= '>') goto yy216;
+               goto yy93;
+ yy118:
+               YYDEBUG(118, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych <= '=') goto yy93;
+               if (yych <= '>') goto yy218;
+               if (yych <= '?') goto yy220;
+               goto yy93;
+ yy119:
+               YYDEBUG(119, *YYCURSOR);
                ++YYCURSOR;
- yy140:
-               YYDEBUG(140, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1898 "Zend/zend_language_scanner.l"
-               {
-       while (YYCURSOR < YYLIMIT) {
-               switch (*YYCURSOR++) {
-                       case '\r':
-                               if (*YYCURSOR == '\n') {
-                                       YYCURSOR++;
-                               }
-                               /* fall through */
-                       case '\n':
-                               CG(zend_lineno)++;
-                               break;
-                       case '?':
-                               if (*YYCURSOR == '>') {
-                                       YYCURSOR--;
-                                       break;
-                               }
-                               /* fall through */
-                       default:
-                               continue;
+               if ((yych = *YYCURSOR) <= 'S') {
+                       if (yych <= 'M') {
+                               if (yych == 'B') goto yy222;
+                               goto yy128;
+                       } else {
+                               if (yych <= 'N') goto yy223;
+                               if (yych <= 'Q') goto yy128;
+                               if (yych <= 'R') goto yy224;
+                               goto yy225;
+                       }
+               } else {
+                       if (yych <= 'n') {
+                               if (yych == 'b') goto yy222;
+                               if (yych <= 'm') goto yy128;
+                               goto yy223;
+                       } else {
+                               if (yych <= 'q') goto yy128;
+                               if (yych <= 'r') goto yy224;
+                               if (yych <= 's') goto yy225;
+                               goto yy128;
+                       }
                }
-               break;
-       }
-       yyleng = YYCURSOR - SCNG(yy_text);
-       RETURN_TOKEN(T_COMMENT);
- }
- #line 2827 "Zend/zend_language_scanner.c"
- yy141:
-               YYDEBUG(141, *YYCURSOR);
-               ++YYCURSOR;
- yy142:
-               YYDEBUG(142, *YYCURSOR);
+ yy120:
+               YYDEBUG(120, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1966 "Zend/zend_language_scanner.l"
 -#line 1906 "Zend/zend_language_scanner.l"
++#line 1893 "Zend/zend_language_scanner.l"
                {
-       register char *s, *t;
-       char *end;
-       int bprefix = (yytext[0] != '\'') ? 1 : 0;
-       while (1) {
-               if (YYCURSOR < YYLIMIT) {
-                       if (*YYCURSOR == '\'') {
-                               YYCURSOR++;
-                               yyleng = YYCURSOR - SCNG(yy_text);
-                               break;
-                       } else if (*YYCURSOR++ == '\\' && YYCURSOR < YYLIMIT) {
-                               YYCURSOR++;
+       zend_copy_value(zendlval, yytext, yyleng);
+       RETURN_TOKEN(T_STRING);
+ }
 -#line 2652 "Zend/zend_language_scanner.c"
++#line 2640 "Zend/zend_language_scanner.c"
+ yy121:
+               YYDEBUG(121, *YYCURSOR);
+               yyaccept = 2;
+               yych = *(YYMARKER = ++YYCURSOR);
+               if (yych <= ';') {
+                       if (yych <= '"') {
+                               if (yych <= '!') goto yy128;
+                               goto yy94;
+                       } else {
+                               if (yych == '\'') goto yy101;
+                               goto yy128;
                        }
                } else {
-                       yyleng = YYLIMIT - SCNG(yy_text);
-                       /* Unclosed single quotes; treat similar to double quotes, but without a separate token
-                        * for ' (unrecognized by parser), instead of old flex fallback to "Unexpected character..."
-                        * rule, which continued in ST_IN_SCRIPTING state after the quote */
-                       ZVAL_NULL(zendlval);
-                       RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
+                       if (yych <= 'R') {
+                               if (yych <= '<') goto yy227;
+                               if (yych <= 'Q') goto yy128;
+                               goto yy228;
+                       } else {
+                               if (yych == 'r') goto yy228;
+                               goto yy128;
+                       }
                }
-       }
-       ZVAL_STRINGL(zendlval, yytext+bprefix+1, yyleng-bprefix-2);
-       /* convert escape sequences */
-       s = t = Z_STRVAL_P(zendlval);
-       end = s+Z_STRLEN_P(zendlval);
-       while (s<end) {
-               if (*s=='\\') {
-                       s++;
-                       switch(*s) {
-                               case '\\':
-                               case '\'':
-                                       *t++ = *s;
-                                       Z_STRLEN_P(zendlval)--;
-                                       break;
-                               default:
-                                       *t++ = '\\';
-                                       *t++ = *s;
-                                       break;
+ yy122:
+               YYDEBUG(122, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych <= 'O') {
+                       if (yych <= 'K') {
+                               if (yych == 'A') goto yy229;
+                               goto yy128;
+                       } else {
+                               if (yych <= 'L') goto yy230;
+                               if (yych <= 'N') goto yy128;
+                               goto yy231;
                        }
                } else {
-                       *t++ = *s;
+                       if (yych <= 'k') {
+                               if (yych == 'a') goto yy229;
+                               goto yy128;
+                       } else {
+                               if (yych <= 'l') goto yy230;
+                               if (yych == 'o') goto yy231;
+                               goto yy128;
+                       }
                }
-               if (*s == '\n' || (*s == '\r' && (*(s+1) != '\n'))) {
-                       CG(zend_lineno)++;
+ yy123:
+               YYDEBUG(123, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych <= 'O') {
+                       if (yych <= 'H') {
+                               if (yych == 'E') goto yy232;
+                               goto yy128;
+                       } else {
+                               if (yych <= 'I') goto yy233;
+                               if (yych <= 'N') goto yy128;
+                               goto yy234;
+                       }
+               } else {
+                       if (yych <= 'h') {
+                               if (yych == 'e') goto yy232;
+                               goto yy128;
+                       } else {
+                               if (yych <= 'i') goto yy233;
+                               if (yych == 'o') goto yy234;
+                               goto yy128;
+                       }
                }
-               s++;
-       }
-       *t = 0;
-       if (SCNG(output_filter)) {
-               size_t sz = 0;
-               char *str = NULL;
-               s = Z_STRVAL_P(zendlval);
-               // TODO: avoid reallocation ???
-               SCNG(output_filter)((unsigned char **)&str, &sz, (unsigned char *)s, (size_t)Z_STRLEN_P(zendlval));
-               ZVAL_STRINGL(zendlval, str, sz);
-       }
-       RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING);
- }
- #line 2902 "Zend/zend_language_scanner.c"
- yy143:
-               YYDEBUG(143, *YYCURSOR);
+ yy124:
+               YYDEBUG(124, *YYCURSOR);
+               yych = *++YYCURSOR;
+               switch (yych) {
+               case 'C':
+               case 'c':       goto yy236;
+               case 'L':
+               case 'l':       goto yy237;
+               case 'M':
+               case 'm':       goto yy238;
+               case 'N':
+               case 'n':       goto yy239;
+               case 'V':
+               case 'v':       goto yy240;
+               case 'X':
+               case 'x':       goto yy241;
+               default:        goto yy128;
+               }
+ yy125:
+               YYDEBUG(125, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych <= 'U') {
+                       if (yych <= 'N') {
+                               if (yych == 'I') goto yy242;
+                               goto yy128;
+                       } else {
+                               if (yych <= 'O') goto yy243;
+                               if (yych <= 'T') goto yy128;
+                               goto yy244;
+                       }
+               } else {
+                       if (yych <= 'n') {
+                               if (yych == 'i') goto yy242;
+                               goto yy128;
+                       } else {
+                               if (yych <= 'o') goto yy243;
+                               if (yych == 'u') goto yy244;
+                               goto yy128;
+                       }
+               }
+ yy126:
+               YYDEBUG(126, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych <= 'O') {
+                       if (yych == 'L') goto yy245;
+                       if (yych <= 'N') goto yy128;
+                       goto yy246;
+               } else {
+                       if (yych <= 'l') {
+                               if (yych <= 'k') goto yy128;
+                               goto yy245;
+                       } else {
+                               if (yych == 'o') goto yy246;
+                               goto yy128;
+                       }
+               }
+ yy127:
+               YYDEBUG(127, *YYCURSOR);
+               ++YYCURSOR;
+               YYFILL(1);
+               yych = *YYCURSOR;
+ yy128:
+               YYDEBUG(128, *YYCURSOR);
+               if (yybm[0+yych] & 16) {
+                       goto yy127;
+               }
+               goto yy120;
+ yy129:
+               YYDEBUG(129, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych <= 'S') {
+                       if (yych <= 'L') {
+                               if (yych == 'F') goto yy247;
+                               goto yy128;
+                       } else {
+                               if (yych <= 'M') goto yy249;
+                               if (yych <= 'N') goto yy250;
+                               if (yych <= 'R') goto yy128;
+                               goto yy251;
+                       }
+               } else {
+                       if (yych <= 'm') {
+                               if (yych == 'f') goto yy247;
+                               if (yych <= 'l') goto yy128;
+                               goto yy249;
+                       } else {
+                               if (yych <= 'n') goto yy250;
+                               if (yych == 's') goto yy251;
+                               goto yy128;
+                       }
+               }
+ yy130:
+               YYDEBUG(130, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'I') goto yy252;
+               if (yych == 'i') goto yy252;
+               goto yy128;
+ yy131:
+               YYDEBUG(131, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych <= 'E') {
+                       if (yych == 'A') goto yy253;
+                       if (yych <= 'D') goto yy128;
+                       goto yy254;
+               } else {
+                       if (yych <= 'a') {
+                               if (yych <= '`') goto yy128;
+                               goto yy253;
+                       } else {
+                               if (yych == 'e') goto yy254;
+                               goto yy128;
+                       }
+               }
+ yy132:
+               YYDEBUG(132, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'R') goto yy255;
+               if (yych == 'r') goto yy255;
+               goto yy128;
+ yy133:
+               YYDEBUG(133, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych <= 'U') {
+                       if (yych == 'R') goto yy257;
+                       if (yych <= 'T') goto yy128;
+                       goto yy258;
+               } else {
+                       if (yych <= 'r') {
+                               if (yych <= 'q') goto yy128;
+                               goto yy257;
+                       } else {
+                               if (yych == 'u') goto yy258;
+                               goto yy128;
+                       }
+               }
+ yy134:
+               YYDEBUG(134, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy259;
+               if (yych == 'e') goto yy259;
+               goto yy128;
+ yy135:
+               YYDEBUG(135, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych <= 'W') {
+                       if (yych == 'T') goto yy260;
+                       if (yych <= 'V') goto yy128;
+                       goto yy261;
+               } else {
+                       if (yych <= 't') {
+                               if (yych <= 's') goto yy128;
+                               goto yy260;
+                       } else {
+                               if (yych == 'w') goto yy261;
+                               goto yy128;
+                       }
+               }
+ yy136:
+               YYDEBUG(136, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych <= 'R') {
+                       if (yych == 'H') goto yy262;
+                       if (yych <= 'Q') goto yy128;
+                       goto yy263;
+               } else {
+                       if (yych <= 'h') {
+                               if (yych <= 'g') goto yy128;
+                               goto yy262;
+                       } else {
+                               if (yych == 'r') goto yy263;
+                               goto yy128;
+                       }
+               }
+ yy137:
+               YYDEBUG(137, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych <= 'S') {
+                       if (yych == 'N') goto yy264;
+                       if (yych <= 'R') goto yy128;
+                       goto yy265;
+               } else {
+                       if (yych <= 'n') {
+                               if (yych <= 'm') goto yy128;
+                               goto yy264;
+                       } else {
+                               if (yych == 's') goto yy265;
+                               goto yy128;
+                       }
+               }
+ yy138:
+               YYDEBUG(138, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'A') goto yy266;
+               if (yych == 'a') goto yy266;
+               goto yy128;
+ yy139:
+               YYDEBUG(139, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'H') goto yy267;
+               if (yych == 'h') goto yy267;
+               goto yy128;
+ yy140:
+               YYDEBUG(140, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'O') goto yy268;
+               if (yych == 'o') goto yy268;
+               goto yy128;
+ yy141:
+               YYDEBUG(141, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'I') goto yy269;
+               if (yych == 'i') goto yy269;
+               goto yy128;
+ yy142:
+               YYDEBUG(142, *YYCURSOR);
                ++YYCURSOR;
 -#line 1330 "Zend/zend_language_scanner.l"
+               YYDEBUG(143, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 2941 "Zend/zend_language_scanner.c"
++#line 1317 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_NS_SEPARATOR);
+ }
++#line 2929 "Zend/zend_language_scanner.c"
  yy144:
                YYDEBUG(144, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '=') goto yy270;
+               goto yy93;
+ yy145:
+               YYDEBUG(145, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '_') goto yy272;
+               goto yy128;
+ yy146:
+               YYDEBUG(146, *YYCURSOR);
+               ++YYCURSOR;
+               YYDEBUG(147, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 2035 "Zend/zend_language_scanner.l"
 -#line 2139 "Zend/zend_language_scanner.l"
++#line 2126 "Zend/zend_language_scanner.l"
                {
-       int bprefix = (yytext[0] != '"') ? 1 : 0;
-       while (YYCURSOR < YYLIMIT) {
-               switch (*YYCURSOR++) {
-                       case '"':
-                               yyleng = YYCURSOR - SCNG(yy_text);
-                               zend_scan_escape_string(zendlval, yytext+bprefix+1, yyleng-bprefix-2, '"');
-                               RETURN_TOKEN(T_CONSTANT_ENCAPSED_STRING);
-                       case '$':
-                               if (IS_LABEL_START(*YYCURSOR) || *YYCURSOR == '{') {
-                                       break;
-                               }
-                               continue;
-                       case '{':
-                               if (*YYCURSOR == '$') {
-                                       break;
-                               }
-                               continue;
-                       case '\\':
-                               if (YYCURSOR < YYLIMIT) {
-                                       YYCURSOR++;
-                               }
-                               /* fall through */
-                       default:
-                               continue;
-               }
-               YYCURSOR--;
-               break;
+       BEGIN(ST_BACKQUOTE);
+       RETURN_TOKEN('`');
+ }
 -#line 2962 "Zend/zend_language_scanner.c"
++#line 2950 "Zend/zend_language_scanner.c"
+ yy148:
+               YYDEBUG(148, *YYCURSOR);
+               ++YYCURSOR;
+               YYDEBUG(149, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1595 "Zend/zend_language_scanner.l"
++#line 1582 "Zend/zend_language_scanner.l"
+               {
+       yy_push_state(ST_IN_SCRIPTING);
+       RETURN_TOKEN('{');
+ }
 -#line 2973 "Zend/zend_language_scanner.c"
++#line 2961 "Zend/zend_language_scanner.c"
+ yy150:
+               YYDEBUG(150, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '=') goto yy273;
+               if (yych == '|') goto yy275;
+               goto yy93;
+ yy151:
+               YYDEBUG(151, *YYCURSOR);
+               ++YYCURSOR;
+               YYDEBUG(152, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1607 "Zend/zend_language_scanner.l"
++#line 1594 "Zend/zend_language_scanner.l"
+               {
+       RESET_DOC_COMMENT();
+       if (!zend_stack_is_empty(&SCNG(state_stack))) {
+               yy_pop_state();
        }
-       /* Remember how much was scanned to save rescanning */
-       SET_DOUBLE_QUOTES_SCANNED_LENGTH(YYCURSOR - SCNG(yy_text) - yyleng);
-       YYCURSOR = SCNG(yy_text) + yyleng;
-       BEGIN(ST_DOUBLE_QUOTES);
-       RETURN_TOKEN('"');
+       RETURN_TOKEN('}');
+ }
 -#line 2993 "Zend/zend_language_scanner.c"
++#line 2981 "Zend/zend_language_scanner.c"
+ yy153:
+               YYDEBUG(153, *YYCURSOR);
+               ++YYCURSOR;
+               if ((yych = *YYCURSOR) == '=') goto yy277;
+ yy154:
+               YYDEBUG(154, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1494 "Zend/zend_language_scanner.l"
++#line 1481 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_IS_NOT_EQUAL);
+ }
 -#line 3005 "Zend/zend_language_scanner.c"
++#line 2993 "Zend/zend_language_scanner.c"
+ yy155:
+               YYDEBUG(155, *YYCURSOR);
+               ++YYCURSOR;
+               YYFILL(1);
+               yych = *YYCURSOR;
+               YYDEBUG(156, *YYCURSOR);
+               if (yych <= '^') {
+                       if (yych <= '9') {
+                               if (yych >= '0') goto yy155;
+                       } else {
+                               if (yych <= '@') goto yy157;
+                               if (yych <= 'Z') goto yy155;
+                       }
+               } else {
+                       if (yych <= '`') {
+                               if (yych <= '_') goto yy155;
+                       } else {
+                               if (yych <= 'z') goto yy155;
 -                              if (yych >= 0x7F) goto yy155;
++                              if (yych >= 0x80) goto yy155;
+                       }
+               }
+ yy157:
+               YYDEBUG(157, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1883 "Zend/zend_language_scanner.l"
++#line 1870 "Zend/zend_language_scanner.l"
+               {
+       zend_copy_value(zendlval, (yytext+1), (yyleng-1));
+       RETURN_TOKEN(T_VARIABLE);
  }
- #line 2950 "Zend/zend_language_scanner.c"
- yy145:
-               YYDEBUG(145, *YYCURSOR);
 -#line 3035 "Zend/zend_language_scanner.c"
++#line 3023 "Zend/zend_language_scanner.c"
+ yy158:
+               YYDEBUG(158, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(146, *YYCURSOR);
+               YYDEBUG(159, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 2125 "Zend/zend_language_scanner.l"
 -#line 1538 "Zend/zend_language_scanner.l"
++#line 1525 "Zend/zend_language_scanner.l"
                {
-       BEGIN(ST_BACKQUOTE);
-       RETURN_TOKEN('`');
+       RETURN_TOKEN(T_MOD_EQUAL);
  }
- #line 2961 "Zend/zend_language_scanner.c"
- yy147:
-               YYDEBUG(147, *YYCURSOR);
 -#line 3045 "Zend/zend_language_scanner.c"
++#line 3033 "Zend/zend_language_scanner.c"
+ yy160:
+               YYDEBUG(160, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(148, *YYCURSOR);
+               YYDEBUG(161, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 2387 "Zend/zend_language_scanner.l"
 -#line 1566 "Zend/zend_language_scanner.l"
++#line 1553 "Zend/zend_language_scanner.l"
                {
-       if (YYCURSOR > YYLIMIT) {
-               RETURN_TOKEN(END);
-       }
-       zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
-       goto restart;
+       RETURN_TOKEN(T_BOOLEAN_AND);
  }
- #line 2976 "Zend/zend_language_scanner.c"
- yy149:
-               YYDEBUG(149, *YYCURSOR);
 -#line 3055 "Zend/zend_language_scanner.c"
++#line 3043 "Zend/zend_language_scanner.c"
+ yy162:
+               YYDEBUG(162, *YYCURSOR);
                ++YYCURSOR;
-               YYFILL(1);
-               yych = *YYCURSOR;
- yy150:
-               YYDEBUG(150, *YYCURSOR);
-               if (yybm[0+yych] & 4) {
-                       goto yy149;
-               }
-               goto yy87;
- yy151:
-               YYDEBUG(151, *YYCURSOR);
-               yyaccept = 3;
-               YYMARKER = ++YYCURSOR;
-               YYFILL(3);
-               yych = *YYCURSOR;
-               YYDEBUG(152, *YYCURSOR);
-               if (yybm[0+yych] & 8) {
-                       goto yy151;
-               }
-               if (yych == 'E') goto yy156;
-               if (yych == 'e') goto yy156;
- yy153:
-               YYDEBUG(153, *YYCURSOR);
+               YYDEBUG(163, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1740 "Zend/zend_language_scanner.l"
 -#line 1550 "Zend/zend_language_scanner.l"
++#line 1537 "Zend/zend_language_scanner.l"
                {
-       const char *end;
-       ZVAL_DOUBLE(zendlval, zend_strtod(yytext, &end));
-       /* errno isn't checked since we allow HUGE_VAL/INF overflow */
-       ZEND_ASSERT(end == yytext + yyleng);
-       RETURN_TOKEN(T_DNUMBER);
+       RETURN_TOKEN(T_AND_EQUAL);
  }
- #line 3012 "Zend/zend_language_scanner.c"
- yy154:
-               YYDEBUG(154, *YYCURSOR);
-               yyaccept = 2;
-               YYMARKER = ++YYCURSOR;
-               YYFILL(3);
 -#line 3065 "Zend/zend_language_scanner.c"
++#line 3053 "Zend/zend_language_scanner.c"
+ yy164:
+               YYDEBUG(164, *YYCURSOR);
+               ++YYCURSOR;
+               YYFILL(7);
                yych = *YYCURSOR;
-               YYDEBUG(155, *YYCURSOR);
-               if (yych <= '9') {
-                       if (yych == '.') goto yy151;
-                       if (yych <= '/') goto yy136;
-                       goto yy154;
-               } else {
-                       if (yych <= 'E') {
-                               if (yych <= 'D') goto yy136;
-                       } else {
-                               if (yych != 'e') goto yy136;
-                       }
+ yy165:
+               YYDEBUG(165, *YYCURSOR);
+               if (yybm[0+yych] & 32) {
+                       goto yy164;
                }
- yy156:
-               YYDEBUG(156, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych <= ',') {
-                       if (yych == '+') goto yy158;
-               } else {
-                       if (yych <= '-') goto yy158;
-                       if (yych <= '/') goto yy157;
-                       if (yych <= '9') goto yy159;
+               switch (yych) {
+               case 'A':
+               case 'a':       goto yy167;
+               case 'B':
+               case 'b':       goto yy168;
+               case 'D':
+               case 'd':       goto yy169;
+               case 'F':
+               case 'f':       goto yy170;
+               case 'I':
+               case 'i':       goto yy171;
+               case 'O':
+               case 'o':       goto yy172;
+               case 'R':
+               case 'r':       goto yy173;
+               case 'S':
+               case 's':       goto yy174;
+               case 'U':
+               case 'u':       goto yy175;
+               default:        goto yy166;
                }
- yy157:
-               YYDEBUG(157, *YYCURSOR);
+ yy166:
+               YYDEBUG(166, *YYCURSOR);
                YYCURSOR = YYMARKER;
                if (yyaccept <= 3) {
                        if (yyaccept <= 1) {
  yy172:
                YYDEBUG(172, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy173;
-               if (yych != 'r') goto yy150;
+               if (yych == 'B') goto yy285;
+               if (yych == 'b') goto yy285;
+               goto yy166;
  yy173:
                YYDEBUG(173, *YYCURSOR);
-               ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
-               }
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy286;
+               if (yych == 'e') goto yy286;
+               goto yy166;
+ yy174:
                YYDEBUG(174, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy287;
+               if (yych == 't') goto yy287;
+               goto yy166;
+ yy175:
+               YYDEBUG(175, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'N') goto yy288;
+               if (yych == 'n') goto yy288;
+               goto yy166;
+ yy176:
+               YYDEBUG(176, *YYCURSOR);
+               ++YYCURSOR;
+               if ((yych = *YYCURSOR) == '=') goto yy289;
+               YYDEBUG(177, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1564 "Zend/zend_language_scanner.l"
 -#line 1522 "Zend/zend_language_scanner.l"
++#line 1509 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_LOGICAL_XOR);
+       RETURN_TOKEN(T_POW);
  }
- #line 3224 "Zend/zend_language_scanner.c"
- yy175:
-               YYDEBUG(175, *YYCURSOR);
 -#line 3199 "Zend/zend_language_scanner.c"
++#line 3187 "Zend/zend_language_scanner.c"
+ yy178:
+               YYDEBUG(178, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
-               }
-               YYDEBUG(176, *YYCURSOR);
+               YYDEBUG(179, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1556 "Zend/zend_language_scanner.l"
 -#line 1518 "Zend/zend_language_scanner.l"
++#line 1505 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_LOGICAL_OR);
+       RETURN_TOKEN(T_MUL_EQUAL);
  }
- #line 3237 "Zend/zend_language_scanner.c"
- yy177:
-               YYDEBUG(177, *YYCURSOR);
 -#line 3209 "Zend/zend_language_scanner.c"
++#line 3197 "Zend/zend_language_scanner.c"
+ yy180:
+               YYDEBUG(180, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(178, *YYCURSOR);
+               YYDEBUG(181, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1544 "Zend/zend_language_scanner.l"
 -#line 1474 "Zend/zend_language_scanner.l"
++#line 1461 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_XOR_EQUAL);
+       RETURN_TOKEN(T_INC);
  }
- #line 3247 "Zend/zend_language_scanner.c"
- yy179:
-               YYDEBUG(179, *YYCURSOR);
 -#line 3219 "Zend/zend_language_scanner.c"
++#line 3207 "Zend/zend_language_scanner.c"
+ yy182:
+               YYDEBUG(182, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(180, *YYCURSOR);
+               YYDEBUG(183, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1548 "Zend/zend_language_scanner.l"
 -#line 1510 "Zend/zend_language_scanner.l"
++#line 1497 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_BOOLEAN_OR);
+       RETURN_TOKEN(T_PLUS_EQUAL);
  }
- #line 3257 "Zend/zend_language_scanner.c"
- yy181:
-               YYDEBUG(181, *YYCURSOR);
 -#line 3229 "Zend/zend_language_scanner.c"
++#line 3217 "Zend/zend_language_scanner.c"
+ yy184:
+               YYDEBUG(184, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(182, *YYCURSOR);
+               YYDEBUG(185, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1540 "Zend/zend_language_scanner.l"
 -#line 1478 "Zend/zend_language_scanner.l"
++#line 1465 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_OR_EQUAL);
+       RETURN_TOKEN(T_DEC);
  }
- #line 3267 "Zend/zend_language_scanner.c"
- yy183:
-               YYDEBUG(183, *YYCURSOR);
 -#line 3239 "Zend/zend_language_scanner.c"
++#line 3227 "Zend/zend_language_scanner.c"
+ yy186:
+               YYDEBUG(186, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(184, *YYCURSOR);
+               YYDEBUG(187, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1514 "Zend/zend_language_scanner.l"
++#line 1501 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_MINUS_EQUAL);
+ }
 -#line 3249 "Zend/zend_language_scanner.c"
++#line 3237 "Zend/zend_language_scanner.c"
+ yy188:
+               YYDEBUG(188, *YYCURSOR);
+               ++YYCURSOR;
+               YYDEBUG(189, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1552 "Zend/zend_language_scanner.l"
 -#line 1300 "Zend/zend_language_scanner.l"
++#line 1287 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_BOOLEAN_AND);
+       yy_push_state(ST_LOOKING_FOR_PROPERTY);
+       RETURN_TOKEN(T_OBJECT_OPERATOR);
  }
- #line 3277 "Zend/zend_language_scanner.c"
- yy185:
-               YYDEBUG(185, *YYCURSOR);
-               ++YYCURSOR;
-               YYDEBUG(186, *YYCURSOR);
 -#line 3260 "Zend/zend_language_scanner.c"
++#line 3248 "Zend/zend_language_scanner.c"
+ yy190:
+               YYDEBUG(190, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '.') goto yy291;
+               goto yy166;
+ yy191:
+               YYDEBUG(191, *YYCURSOR);
+               yyaccept = 3;
+               YYMARKER = ++YYCURSOR;
+               YYFILL(3);
+               yych = *YYCURSOR;
+               YYDEBUG(192, *YYCURSOR);
+               if (yych <= 'D') {
+                       if (yych <= '/') goto yy193;
+                       if (yych <= '9') goto yy191;
+               } else {
+                       if (yych <= 'E') goto yy201;
+                       if (yych == 'e') goto yy201;
+               }
+ yy193:
+               YYDEBUG(193, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1536 "Zend/zend_language_scanner.l"
 -#line 1754 "Zend/zend_language_scanner.l"
++#line 1741 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_AND_EQUAL);
+       const char *end;
+       ZVAL_DOUBLE(zendlval, zend_strtod(yytext, &end));
+       /* errno isn't checked since we allow HUGE_VAL/INF overflow */
+       ZEND_ASSERT(end == yytext + yyleng);
+       RETURN_TOKEN(T_DNUMBER);
  }
- #line 3287 "Zend/zend_language_scanner.c"
- yy187:
-               YYDEBUG(187, *YYCURSOR);
 -#line 3292 "Zend/zend_language_scanner.c"
++#line 3280 "Zend/zend_language_scanner.c"
+ yy194:
+               YYDEBUG(194, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(188, *YYCURSOR);
+               YYDEBUG(195, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1524 "Zend/zend_language_scanner.l"
 -#line 1534 "Zend/zend_language_scanner.l"
++#line 1521 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_MOD_EQUAL);
+       RETURN_TOKEN(T_CONCAT_EQUAL);
  }
- #line 3297 "Zend/zend_language_scanner.c"
- yy189:
-               YYDEBUG(189, *YYCURSOR);
 -#line 3302 "Zend/zend_language_scanner.c"
++#line 3290 "Zend/zend_language_scanner.c"
+ yy196:
+               YYDEBUG(196, *YYCURSOR);
                yyaccept = 4;
                yych = *(YYMARKER = ++YYCURSOR);
-               if (yych == '*') goto yy194;
- yy190:
-               YYDEBUG(190, *YYCURSOR);
+               if (yych == '*') goto yy293;
+ yy197:
+               YYDEBUG(197, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1927 "Zend/zend_language_scanner.l"
 -#line 1941 "Zend/zend_language_scanner.l"
++#line 1928 "Zend/zend_language_scanner.l"
                {
        int doc_com;
  
  
        RETURN_TOKEN(T_COMMENT);
  }
- #line 3339 "Zend/zend_language_scanner.c"
- yy191:
-               YYDEBUG(191, *YYCURSOR);
-               yych = *++YYCURSOR;
-               goto yy140;
- yy192:
-               YYDEBUG(192, *YYCURSOR);
 -#line 3344 "Zend/zend_language_scanner.c"
++#line 3332 "Zend/zend_language_scanner.c"
+ yy198:
+               YYDEBUG(198, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(193, *YYCURSOR);
+               YYDEBUG(199, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1516 "Zend/zend_language_scanner.l"
 -#line 1530 "Zend/zend_language_scanner.l"
++#line 1517 "Zend/zend_language_scanner.l"
                {
        RETURN_TOKEN(T_DIV_EQUAL);
  }
- #line 3353 "Zend/zend_language_scanner.c"
- yy194:
-               YYDEBUG(194, *YYCURSOR);
 -#line 3354 "Zend/zend_language_scanner.c"
++#line 3342 "Zend/zend_language_scanner.c"
+ yy200:
+               YYDEBUG(200, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yybm[0+yych] & 64) {
-                       goto yy195;
-               }
-               goto yy157;
- yy195:
-               YYDEBUG(195, *YYCURSOR);
-               ++YYCURSOR;
-               YYFILL(1);
-               yych = *YYCURSOR;
-               YYDEBUG(196, *YYCURSOR);
-               if (yybm[0+yych] & 64) {
-                       goto yy195;
+                       goto yy294;
                }
-               goto yy190;
- yy197:
-               YYDEBUG(197, *YYCURSOR);
-               ++YYCURSOR;
-               if ((yych = *YYCURSOR) == '=') goto yy201;
-               YYDEBUG(198, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1508 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_POW);
- }
- #line 3381 "Zend/zend_language_scanner.c"
- yy199:
-               YYDEBUG(199, *YYCURSOR);
-               ++YYCURSOR;
-               YYDEBUG(200, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1504 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_MUL_EQUAL);
- }
- #line 3391 "Zend/zend_language_scanner.c"
+               goto yy166;
  yy201:
                YYDEBUG(201, *YYCURSOR);
-               ++YYCURSOR;
+               yych = *++YYCURSOR;
+               if (yych <= ',') {
+                       if (yych == '+') goto yy297;
+                       goto yy166;
+               } else {
+                       if (yych <= '-') goto yy297;
+                       if (yych <= '/') goto yy166;
+                       if (yych <= '9') goto yy298;
+                       goto yy166;
+               }
+ yy202:
                YYDEBUG(202, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1512 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_POW_EQUAL);
- }
- #line 3401 "Zend/zend_language_scanner.c"
+               yych = *++YYCURSOR;
+               if (yybm[0+yych] & 128) {
+                       goto yy300;
+               }
+               goto yy166;
  yy203:
                YYDEBUG(203, *YYCURSOR);
                ++YYCURSOR;
-               if ((yych = *YYCURSOR) == '=') goto yy207;
                YYDEBUG(204, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1572 "Zend/zend_language_scanner.l"
 -#line 1326 "Zend/zend_language_scanner.l"
++#line 1313 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_SR);
+       RETURN_TOKEN(T_PAAMAYIM_NEKUDOTAYIM);
  }
- #line 3412 "Zend/zend_language_scanner.c"
 -#line 3390 "Zend/zend_language_scanner.c"
++#line 3378 "Zend/zend_language_scanner.c"
  yy205:
                YYDEBUG(205, *YYCURSOR);
-               ++YYCURSOR;
+               yyaccept = 5;
+               yych = *(YYMARKER = ++YYCURSOR);
+               if (yych <= ';') goto yy206;
+               if (yych <= '<') goto yy303;
+               if (yych <= '=') goto yy305;
+ yy206:
                YYDEBUG(206, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1492 "Zend/zend_language_scanner.l"
 -#line 1582 "Zend/zend_language_scanner.l"
++#line 1569 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_IS_GREATER_OR_EQUAL);
+       RETURN_TOKEN(T_SL);
  }
- #line 3422 "Zend/zend_language_scanner.c"
 -#line 3405 "Zend/zend_language_scanner.c"
++#line 3393 "Zend/zend_language_scanner.c"
  yy207:
                YYDEBUG(207, *YYCURSOR);
                ++YYCURSOR;
+               if ((yych = *YYCURSOR) == '>') goto yy307;
                YYDEBUG(208, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1532 "Zend/zend_language_scanner.l"
 -#line 1502 "Zend/zend_language_scanner.l"
++#line 1489 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_SR_EQUAL);
+       RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL);
  }
- #line 3432 "Zend/zend_language_scanner.c"
 -#line 3416 "Zend/zend_language_scanner.c"
++#line 3404 "Zend/zend_language_scanner.c"
  yy209:
                YYDEBUG(209, *YYCURSOR);
-               yyaccept = 5;
-               yych = *(YYMARKER = ++YYCURSOR);
-               if (yych <= ';') goto yy210;
-               if (yych <= '<') goto yy219;
-               if (yych <= '=') goto yy217;
+               yych = *++YYCURSOR;
+               goto yy154;
  yy210:
                YYDEBUG(210, *YYCURSOR);
+               ++YYCURSOR;
+               if ((yych = *YYCURSOR) == '=') goto yy309;
+               YYDEBUG(211, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1568 "Zend/zend_language_scanner.l"
 -#line 1490 "Zend/zend_language_scanner.l"
++#line 1477 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_SL);
+       RETURN_TOKEN(T_IS_EQUAL);
  }
- #line 3447 "Zend/zend_language_scanner.c"
- yy211:
-               YYDEBUG(211, *YYCURSOR);
-               ++YYCURSOR;
-               if ((yych = *YYCURSOR) == '>') goto yy215;
 -#line 3431 "Zend/zend_language_scanner.c"
++#line 3419 "Zend/zend_language_scanner.c"
+ yy212:
                YYDEBUG(212, *YYCURSOR);
+               ++YYCURSOR;
+               YYDEBUG(213, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1488 "Zend/zend_language_scanner.l"
 -#line 1458 "Zend/zend_language_scanner.l"
++#line 1445 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_IS_SMALLER_OR_EQUAL);
+       RETURN_TOKEN(T_DOUBLE_ARROW);
  }
- #line 3458 "Zend/zend_language_scanner.c"
- yy213:
-               YYDEBUG(213, *YYCURSOR);
-               ++YYCURSOR;
 -#line 3441 "Zend/zend_language_scanner.c"
++#line 3429 "Zend/zend_language_scanner.c"
  yy214:
                YYDEBUG(214, *YYCURSOR);
+               ++YYCURSOR;
+               YYDEBUG(215, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1480 "Zend/zend_language_scanner.l"
 -#line 1506 "Zend/zend_language_scanner.l"
++#line 1493 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_IS_NOT_EQUAL);
+       RETURN_TOKEN(T_IS_GREATER_OR_EQUAL);
  }
- #line 3469 "Zend/zend_language_scanner.c"
- yy215:
-               YYDEBUG(215, *YYCURSOR);
-               ++YYCURSOR;
 -#line 3451 "Zend/zend_language_scanner.c"
++#line 3439 "Zend/zend_language_scanner.c"
+ yy216:
                YYDEBUG(216, *YYCURSOR);
+               ++YYCURSOR;
+               if ((yych = *YYCURSOR) == '=') goto yy311;
+               YYDEBUG(217, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1484 "Zend/zend_language_scanner.l"
 -#line 1586 "Zend/zend_language_scanner.l"
++#line 1573 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_SPACESHIP);
+       RETURN_TOKEN(T_SR);
  }
- #line 3479 "Zend/zend_language_scanner.c"
- yy217:
-               YYDEBUG(217, *YYCURSOR);
-               ++YYCURSOR;
 -#line 3462 "Zend/zend_language_scanner.c"
++#line 3450 "Zend/zend_language_scanner.c"
+ yy218:
                YYDEBUG(218, *YYCURSOR);
+               ++YYCURSOR;
+               if ((yych = *YYCURSOR) == '\n') goto yy313;
+               if (yych == '\r') goto yy314;
+ yy219:
+               YYDEBUG(219, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1528 "Zend/zend_language_scanner.l"
 -#line 1974 "Zend/zend_language_scanner.l"
++#line 1961 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_SL_EQUAL);
+       BEGIN(INITIAL);
+       RETURN_TOKEN(T_CLOSE_TAG);  /* implicit ';' at php-end tag */
  }
- #line 3489 "Zend/zend_language_scanner.c"
- yy219:
-               YYDEBUG(219, *YYCURSOR);
-               ++YYCURSOR;
-               YYFILL(2);
-               yych = *YYCURSOR;
 -#line 3476 "Zend/zend_language_scanner.c"
++#line 3464 "Zend/zend_language_scanner.c"
+ yy220:
                YYDEBUG(220, *YYCURSOR);
-               if (yybm[0+yych] & 128) {
-                       goto yy219;
-               }
-               if (yych <= 'Z') {
-                       if (yych <= '&') {
-                               if (yych == '"') goto yy224;
-                               goto yy157;
-                       } else {
-                               if (yych <= '\'') goto yy223;
-                               if (yych <= '@') goto yy157;
-                       }
-               } else {
-                       if (yych <= '`') {
-                               if (yych != '_') goto yy157;
-                       } else {
-                               if (yych <= 'z') goto yy221;
-                               if (yych <= 0x7F) goto yy157;
-                       }
-               }
- yy221:
-               YYDEBUG(221, *YYCURSOR);
                ++YYCURSOR;
-               YYFILL(2);
-               yych = *YYCURSOR;
+               YYDEBUG(221, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1338 "Zend/zend_language_scanner.l"
++#line 1325 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_COALESCE);
+ }
 -#line 3486 "Zend/zend_language_scanner.c"
++#line 3474 "Zend/zend_language_scanner.c"
+ yy222:
                YYDEBUG(222, *YYCURSOR);
-               if (yych <= '@') {
-                       if (yych <= '\f') {
-                               if (yych == '\n') goto yy228;
-                               goto yy157;
-                       } else {
-                               if (yych <= '\r') goto yy230;
-                               if (yych <= '/') goto yy157;
-                               if (yych <= '9') goto yy221;
-                               goto yy157;
-                       }
-               } else {
-                       if (yych <= '_') {
-                               if (yych <= 'Z') goto yy221;
-                               if (yych <= '^') goto yy157;
-                               goto yy221;
-                       } else {
-                               if (yych <= '`') goto yy157;
-                               if (yych <= 'z') goto yy221;
-                               if (yych <= 0x7F) goto yy157;
-                               goto yy221;
-                       }
-               }
+               yych = *++YYCURSOR;
+               if (yych == 'S') goto yy315;
+               if (yych == 's') goto yy315;
+               goto yy128;
  yy223:
                YYDEBUG(223, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -3556,28 -3504,16 +3492,16 @@@ yy224
  yy225:
                YYDEBUG(225, *YYCURSOR);
                ++YYCURSOR;
-               YYFILL(3);
-               yych = *YYCURSOR;
- yy226:
-               YYDEBUG(226, *YYCURSOR);
-               if (yych <= 'Z') {
-                       if (yych <= '/') {
-                               if (yych != '"') goto yy157;
-                       } else {
-                               if (yych <= '9') goto yy225;
-                               if (yych <= '@') goto yy157;
-                               goto yy225;
-                       }
-               } else {
-                       if (yych <= '`') {
-                               if (yych == '_') goto yy225;
-                               goto yy157;
-                       } else {
-                               if (yych <= 'z') goto yy225;
-                               if (yych <= 0x7F) goto yy157;
-                               goto yy225;
-                       }
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
 -#line 1240 "Zend/zend_language_scanner.l"
+               YYDEBUG(226, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 3517 "Zend/zend_language_scanner.c"
++#line 1227 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_AS);
+ }
++#line 3505 "Zend/zend_language_scanner.c"
  yy227:
                YYDEBUG(227, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -3672,36 -3588,46 +3576,46 @@@ yy232
  yy233:
                YYDEBUG(233, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych != '=') goto yy214;
+               if (yych == 'E') goto yy329;
+               if (yych == 'e') goto yy329;
+               goto yy128;
+ yy234:
                YYDEBUG(234, *YYCURSOR);
                ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
                YYDEBUG(235, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1472 "Zend/zend_language_scanner.l"
 -#line 1208 "Zend/zend_language_scanner.l"
++#line 1195 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_IS_NOT_IDENTICAL);
+       RETURN_TOKEN(T_DO);
  }
- #line 3685 "Zend/zend_language_scanner.c"
 -#line 3607 "Zend/zend_language_scanner.c"
++#line 3595 "Zend/zend_language_scanner.c"
  yy236:
                YYDEBUG(236, *YYCURSOR);
-               ++YYCURSOR;
+               yych = *++YYCURSOR;
+               if (yych == 'H') goto yy331;
+               if (yych == 'h') goto yy331;
+               goto yy128;
+ yy237:
                YYDEBUG(237, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1496 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_PLUS_EQUAL);
- }
- #line 3695 "Zend/zend_language_scanner.c"
+               yych = *++YYCURSOR;
+               if (yych == 'S') goto yy332;
+               if (yych == 's') goto yy332;
+               goto yy128;
  yy238:
                YYDEBUG(238, *YYCURSOR);
-               ++YYCURSOR;
+               yych = *++YYCURSOR;
+               if (yych == 'P') goto yy333;
+               if (yych == 'p') goto yy333;
+               goto yy128;
+ yy239:
                YYDEBUG(239, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1460 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_INC);
- }
- #line 3705 "Zend/zend_language_scanner.c"
+               yych = *++YYCURSOR;
+               if (yych == 'D') goto yy334;
+               if (yych == 'd') goto yy334;
+               goto yy128;
  yy240:
                YYDEBUG(240, *YYCURSOR);
                yych = *++YYCURSOR;
  yy241:
                YYDEBUG(241, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy242;
-               if (yych != 't') goto yy150;
+               if (yych <= 'T') {
+                       if (yych == 'I') goto yy336;
+                       if (yych <= 'S') goto yy128;
+                       goto yy337;
+               } else {
+                       if (yych <= 'i') {
+                               if (yych <= 'h') goto yy128;
+                               goto yy336;
+                       } else {
+                               if (yych == 't') goto yy337;
+                               goto yy128;
+                       }
+               }
  yy242:
                YYDEBUG(242, *YYCURSOR);
-               ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
-               }
+               yych = *++YYCURSOR;
+               if (yych == 'N') goto yy338;
+               if (yych == 'n') goto yy338;
+               goto yy128;
+ yy243:
                YYDEBUG(243, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1448 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_LIST);
- }
- #line 3728 "Zend/zend_language_scanner.c"
+               yych = *++YYCURSOR;
+               if (yych == 'R') goto yy339;
+               if (yych == 'r') goto yy339;
+               goto yy128;
  yy244:
                YYDEBUG(244, *YYCURSOR);
-               ++YYCURSOR;
-               if ((yych = *YYCURSOR) == '=') goto yy248;
+               yych = *++YYCURSOR;
+               if (yych == 'N') goto yy341;
+               if (yych == 'n') goto yy341;
+               goto yy128;
+ yy245:
                YYDEBUG(245, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1476 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_IS_EQUAL);
- }
- #line 3739 "Zend/zend_language_scanner.c"
+               yych = *++YYCURSOR;
+               if (yych == 'O') goto yy342;
+               if (yych == 'o') goto yy342;
+               goto yy128;
  yy246:
                YYDEBUG(246, *YYCURSOR);
-               ++YYCURSOR;
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy343;
+               if (yych == 't') goto yy343;
+               goto yy128;
+ yy247:
                YYDEBUG(247, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1444 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_DOUBLE_ARROW);
- }
- #line 3749 "Zend/zend_language_scanner.c"
- yy248:
-               YYDEBUG(248, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(249, *YYCURSOR);
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
+               YYDEBUG(248, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1468 "Zend/zend_language_scanner.l"
 -#line 1184 "Zend/zend_language_scanner.l"
++#line 1171 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_IS_IDENTICAL);
+       RETURN_TOKEN(T_IF);
  }
- #line 3759 "Zend/zend_language_scanner.c"
 -#line 3696 "Zend/zend_language_scanner.c"
++#line 3684 "Zend/zend_language_scanner.c"
+ yy249:
+               YYDEBUG(249, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'P') goto yy344;
+               if (yych == 'p') goto yy344;
+               goto yy128;
  yy250:
                YYDEBUG(250, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -3800,31 -3742,22 +3730,22 @@@ yy253
  yy254:
                YYDEBUG(254, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych <= 'U') {
-                       if (yych == 'I') goto yy289;
-                       if (yych <= 'T') goto yy150;
-                       goto yy290;
-               } else {
-                       if (yych <= 'i') {
-                               if (yych <= 'h') goto yy150;
-                               goto yy289;
-                       } else {
-                               if (yych == 'u') goto yy290;
-                               goto yy150;
-                       }
-               }
+               if (yych == 'W') goto yy351;
+               if (yych == 'w') goto yy351;
+               goto yy128;
  yy255:
                YYDEBUG(255, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy281;
-               if (yych == 'e') goto yy281;
-               goto yy150;
- yy256:
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
                YYDEBUG(256, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'I') goto yy275;
-               if (yych == 'i') goto yy275;
-               goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1570 "Zend/zend_language_scanner.l"
++#line 1557 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_LOGICAL_OR);
+ }
 -#line 3761 "Zend/zend_language_scanner.c"
++#line 3749 "Zend/zend_language_scanner.c"
  yy257:
                YYDEBUG(257, *YYCURSOR);
                yych = *++YYCURSOR;
  yy266:
                YYDEBUG(266, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych != '_') goto yy150;
+               if (yych == 'R') goto yy367;
+               if (yych == 'r') goto yy367;
+               goto yy128;
+ yy267:
                YYDEBUG(267, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych != '_') goto yy150;
+               if (yych == 'I') goto yy369;
+               if (yych == 'i') goto yy369;
+               goto yy128;
+ yy268:
                YYDEBUG(268, *YYCURSOR);
-               ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
-               }
+               yych = *++YYCURSOR;
+               if (yych == 'R') goto yy370;
+               if (yych == 'r') goto yy370;
+               goto yy128;
+ yy269:
                YYDEBUG(269, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1777 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_NS_C);
- }
- #line 3893 "Zend/zend_language_scanner.c"
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy372;
+               if (yych == 'e') goto yy372;
+               goto yy128;
  yy270:
                YYDEBUG(270, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'R') goto yy271;
-               if (yych != 'r') goto yy150;
- yy271:
+               ++YYCURSOR;
                YYDEBUG(271, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych != '_') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1558 "Zend/zend_language_scanner.l"
++#line 1545 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_XOR_EQUAL);
+ }
 -#line 3879 "Zend/zend_language_scanner.c"
++#line 3867 "Zend/zend_language_scanner.c"
+ yy272:
                YYDEBUG(272, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych != '_') goto yy150;
+               switch (yych) {
+               case 'C':
+               case 'c':       goto yy373;
+               case 'D':
+               case 'd':       goto yy374;
+               case 'F':
+               case 'f':       goto yy375;
+               case 'H':
+               case 'h':       goto yy376;
+               case 'L':
+               case 'l':       goto yy377;
+               case 'M':
+               case 'm':       goto yy378;
+               case 'N':
+               case 'n':       goto yy379;
+               case 'T':
+               case 't':       goto yy380;
+               default:        goto yy128;
+               }
+ yy273:
                YYDEBUG(273, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
-               }
                YYDEBUG(274, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1773 "Zend/zend_language_scanner.l"
 -#line 1554 "Zend/zend_language_scanner.l"
++#line 1541 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_DIR);
+       RETURN_TOKEN(T_OR_EQUAL);
  }
- #line 3917 "Zend/zend_language_scanner.c"
 -#line 3911 "Zend/zend_language_scanner.c"
++#line 3899 "Zend/zend_language_scanner.c"
  yy275:
                YYDEBUG(275, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'N') goto yy276;
-               if (yych != 'n') goto yy150;
- yy276:
+               ++YYCURSOR;
                YYDEBUG(276, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy277;
-               if (yych != 'e') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1562 "Zend/zend_language_scanner.l"
++#line 1549 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_BOOLEAN_OR);
+ }
 -#line 3921 "Zend/zend_language_scanner.c"
++#line 3909 "Zend/zend_language_scanner.c"
  yy277:
                YYDEBUG(277, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych != '_') goto yy150;
-               YYDEBUG(278, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych != '_') goto yy150;
-               YYDEBUG(279, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
-               }
-               YYDEBUG(280, *YYCURSOR);
+               YYDEBUG(278, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1765 "Zend/zend_language_scanner.l"
 -#line 1486 "Zend/zend_language_scanner.l"
++#line 1473 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_LINE);
+       RETURN_TOKEN(T_IS_NOT_IDENTICAL);
  }
- #line 3946 "Zend/zend_language_scanner.c"
 -#line 3931 "Zend/zend_language_scanner.c"
++#line 3919 "Zend/zend_language_scanner.c"
+ yy279:
+               YYDEBUG(279, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'R') goto yy381;
+               if (yych == 'r') goto yy381;
+               goto yy166;
+ yy280:
+               YYDEBUG(280, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'N') goto yy382;
+               if (yych == 'n') goto yy382;
+               goto yy166;
  yy281:
                YYDEBUG(281, *YYCURSOR);
                yych = *++YYCURSOR;
  yy285:
                YYDEBUG(285, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych != '_') goto yy150;
+               if (yych == 'J') goto yy387;
+               if (yych == 'j') goto yy387;
+               goto yy166;
+ yy286:
                YYDEBUG(286, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych != '_') goto yy150;
+               if (yych == 'A') goto yy388;
+               if (yych == 'a') goto yy388;
+               goto yy166;
+ yy287:
                YYDEBUG(287, *YYCURSOR);
-               ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
-               }
+               yych = *++YYCURSOR;
+               if (yych == 'R') goto yy389;
+               if (yych == 'r') goto yy389;
+               goto yy166;
+ yy288:
                YYDEBUG(288, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1761 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_METHOD_C);
- }
- #line 3985 "Zend/zend_language_scanner.c"
+               yych = *++YYCURSOR;
+               if (yych == 'S') goto yy390;
+               if (yych == 's') goto yy390;
+               goto yy166;
  yy289:
                YYDEBUG(289, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'L') goto yy300;
-               if (yych == 'l') goto yy300;
-               goto yy150;
- yy290:
+               ++YYCURSOR;
                YYDEBUG(290, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'N') goto yy291;
-               if (yych != 'n') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1526 "Zend/zend_language_scanner.l"
++#line 1513 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_POW_EQUAL);
+ }
 -#line 4001 "Zend/zend_language_scanner.c"
++#line 3989 "Zend/zend_language_scanner.c"
  yy291:
                YYDEBUG(291, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'C') goto yy292;
-               if (yych != 'c') goto yy150;
- yy292:
+               ++YYCURSOR;
                YYDEBUG(292, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy293;
-               if (yych != 't') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1334 "Zend/zend_language_scanner.l"
++#line 1321 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_ELLIPSIS);
+ }
 -#line 4011 "Zend/zend_language_scanner.c"
++#line 3999 "Zend/zend_language_scanner.c"
  yy293:
                YYDEBUG(293, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'I') goto yy294;
-               if (yych != 'i') goto yy150;
+               if (yych <= '\f') {
+                       if (yych <= 0x08) goto yy166;
+                       if (yych <= '\n') goto yy391;
+                       goto yy166;
+               } else {
+                       if (yych <= '\r') goto yy391;
+                       if (yych == ' ') goto yy391;
+                       goto yy166;
+               }
  yy294:
                YYDEBUG(294, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'O') goto yy295;
-               if (yych != 'o') goto yy150;
- yy295:
+               ++YYCURSOR;
+               YYFILL(1);
+               yych = *YYCURSOR;
                YYDEBUG(295, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'N') goto yy296;
-               if (yych != 'n') goto yy150;
- yy296:
+               if (yybm[0+yych] & 64) {
+                       goto yy294;
+               }
                YYDEBUG(296, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych != '_') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1632 "Zend/zend_language_scanner.l"
++#line 1619 "Zend/zend_language_scanner.l"
+               {
+       char *bin = yytext + 2; /* Skip "0b" */
+       int len = yyleng - 2;
+       char *end;
+       /* Skip any leading 0s */
+       while (*bin == '0') {
+               ++bin;
+               --len;
+       }
+       if (len < SIZEOF_ZEND_LONG * 8) {
+               if (len == 0) {
+                       ZVAL_LONG(zendlval, 0);
+               } else {
+                       errno = 0;
+                       ZVAL_LONG(zendlval, ZEND_STRTOL(bin, &end, 2));
+                       ZEND_ASSERT(!errno && end == yytext + yyleng);
+               }
+               RETURN_TOKEN(T_LNUMBER);
+       } else {
+               ZVAL_DOUBLE(zendlval, zend_bin_strtod(bin, (const char **)&end));
+               /* errno isn't checked since we allow HUGE_VAL/INF overflow */
+               ZEND_ASSERT(end == yytext + yyleng);
+               RETURN_TOKEN(T_DNUMBER);
+       }
+ }
 -#line 4063 "Zend/zend_language_scanner.c"
++#line 4051 "Zend/zend_language_scanner.c"
+ yy297:
                YYDEBUG(297, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych != '_') goto yy150;
+               if (yych <= '/') goto yy166;
+               if (yych >= ':') goto yy166;
+ yy298:
                YYDEBUG(298, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
-               }
+               YYFILL(1);
+               yych = *YYCURSOR;
                YYDEBUG(299, *YYCURSOR);
+               if (yych <= '/') goto yy193;
+               if (yych <= '9') goto yy298;
+               goto yy193;
+ yy300:
+               YYDEBUG(300, *YYCURSOR);
+               ++YYCURSOR;
+               YYFILL(1);
+               yych = *YYCURSOR;
+               YYDEBUG(301, *YYCURSOR);
+               if (yybm[0+yych] & 128) {
+                       goto yy300;
+               }
+               YYDEBUG(302, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1757 "Zend/zend_language_scanner.l"
 -#line 1705 "Zend/zend_language_scanner.l"
++#line 1692 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_FUNC_C);
+       char *hex = yytext + 2; /* Skip "0x" */
+       int len = yyleng - 2;
+       char *end;
+       /* Skip any leading 0s */
+       while (*hex == '0') {
+               hex++;
+               len--;
+       }
+       if (len < SIZEOF_ZEND_LONG * 2 || (len == SIZEOF_ZEND_LONG * 2 && *hex <= '7')) {
+               if (len == 0) {
+                       ZVAL_LONG(zendlval, 0);
+               } else {
+                       errno = 0;
+                       ZVAL_LONG(zendlval, ZEND_STRTOL(hex, &end, 16));
+                       ZEND_ASSERT(!errno && end == hex + len);
+               }
+               RETURN_TOKEN(T_LNUMBER);
+       } else {
+               ZVAL_DOUBLE(zendlval, zend_hex_strtod(hex, (const char **)&end));
+               /* errno isn't checked since we allow HUGE_VAL/INF overflow */
+               ZEND_ASSERT(end == hex + len);
+               RETURN_TOKEN(T_DNUMBER);
+       }
  }
- #line 4040 "Zend/zend_language_scanner.c"
- yy300:
-               YYDEBUG(300, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy301;
-               if (yych != 'e') goto yy150;
- yy301:
-               YYDEBUG(301, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych != '_') goto yy150;
-               YYDEBUG(302, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych != '_') goto yy150;
 -#line 4117 "Zend/zend_language_scanner.c"
++#line 4105 "Zend/zend_language_scanner.c"
+ yy303:
                YYDEBUG(303, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
-               }
+               YYFILL(2);
+               yych = *YYCURSOR;
                YYDEBUG(304, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1769 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_FILE);
- }
- #line 4064 "Zend/zend_language_scanner.c"
+               if (yych <= '\'') {
+                       if (yych <= ' ') {
+                               if (yych == '\t') goto yy303;
+                               if (yych <= 0x1F) goto yy166;
+                               goto yy303;
+                       } else {
+                               if (yych == '"') goto yy393;
+                               if (yych <= '&') goto yy166;
+                               goto yy394;
+                       }
+               } else {
+                       if (yych <= '_') {
+                               if (yych <= '@') goto yy166;
+                               if (yych <= 'Z') goto yy395;
+                               if (yych <= '^') goto yy166;
+                               goto yy395;
+                       } else {
+                               if (yych <= '`') goto yy166;
+                               if (yych <= 'z') goto yy395;
 -                              if (yych <= '~') goto yy166;
++                              if (yych <= 0x7F) goto yy166;
+                               goto yy395;
+                       }
+               }
  yy305:
                YYDEBUG(305, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy306;
-               if (yych != 'a') goto yy150;
- yy306:
+               ++YYCURSOR;
                YYDEBUG(306, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'I') goto yy307;
-               if (yych != 'i') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1542 "Zend/zend_language_scanner.l"
++#line 1529 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_SL_EQUAL);
+ }
 -#line 4156 "Zend/zend_language_scanner.c"
++#line 4144 "Zend/zend_language_scanner.c"
  yy307:
                YYDEBUG(307, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy308;
-               if (yych != 't') goto yy150;
- yy308:
+               ++YYCURSOR;
                YYDEBUG(308, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych != '_') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1498 "Zend/zend_language_scanner.l"
++#line 1485 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_SPACESHIP);
+ }
 -#line 4166 "Zend/zend_language_scanner.c"
++#line 4154 "Zend/zend_language_scanner.c"
+ yy309:
                YYDEBUG(309, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych != '_') goto yy150;
-               YYDEBUG(310, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
-               }
-               YYDEBUG(311, *YYCURSOR);
+               YYDEBUG(310, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1753 "Zend/zend_language_scanner.l"
 -#line 1482 "Zend/zend_language_scanner.l"
++#line 1469 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_TRAIT_C);
+       RETURN_TOKEN(T_IS_IDENTICAL);
  }
- #line 4098 "Zend/zend_language_scanner.c"
- yy312:
 -#line 4176 "Zend/zend_language_scanner.c"
++#line 4164 "Zend/zend_language_scanner.c"
+ yy311:
+               YYDEBUG(311, *YYCURSOR);
+               ++YYCURSOR;
                YYDEBUG(312, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy313;
-               if (yych != 'a') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1546 "Zend/zend_language_scanner.l"
++#line 1533 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_SR_EQUAL);
+ }
 -#line 4186 "Zend/zend_language_scanner.c"
++#line 4174 "Zend/zend_language_scanner.c"
  yy313:
                YYDEBUG(313, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -4113,22 -4195,28 +4183,28 @@@ yy314
  yy315:
                YYDEBUG(315, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych != '_') goto yy150;
+               if (yych == 'T') goto yy397;
+               if (yych == 't') goto yy397;
+               goto yy128;
+ yy316:
                YYDEBUG(316, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych != '_') goto yy150;
-               YYDEBUG(317, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(318, *YYCURSOR);
+               YYDEBUG(317, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1749 "Zend/zend_language_scanner.l"
 -#line 1574 "Zend/zend_language_scanner.l"
++#line 1561 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_CLASS_C);
+       RETURN_TOKEN(T_LOGICAL_AND);
  }
- #line 4132 "Zend/zend_language_scanner.c"
 -#line 4214 "Zend/zend_language_scanner.c"
++#line 4202 "Zend/zend_language_scanner.c"
+ yy318:
+               YYDEBUG(318, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'A') goto yy398;
+               if (yych == 'a') goto yy398;
+               goto yy128;
  yy319:
                YYDEBUG(319, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -4175,26 -4280,28 +4268,28 @@@ yy327
  yy328:
                YYDEBUG(328, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy329;
-               if (yych != 'e') goto yy150;
+               if (yych == 'A') goto yy409;
+               if (yych == 'a') goto yy409;
+               goto yy128;
  yy329:
                YYDEBUG(329, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'R') goto yy330;
-               if (yych != 'r') goto yy150;
- yy330:
-               YYDEBUG(330, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(331, *YYCURSOR);
+               YYDEBUG(330, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1412 "Zend/zend_language_scanner.l"
 -#line 1142 "Zend/zend_language_scanner.l"
++#line 1129 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_HALT_COMPILER);
+       RETURN_TOKEN(T_EXIT);
  }
- #line 4198 "Zend/zend_language_scanner.c"
 -#line 4299 "Zend/zend_language_scanner.c"
++#line 4287 "Zend/zend_language_scanner.c"
+ yy331:
+               YYDEBUG(331, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'O') goto yy410;
+               if (yych == 'o') goto yy410;
+               goto yy128;
  yy332:
                YYDEBUG(332, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -4227,95 -4345,49 +4333,49 @@@ yy336
  yy337:
                YYDEBUG(337, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy338;
-               if (yych != 't') goto yy150;
+               if (yych == 'E') goto yy424;
+               if (yych == 'e') goto yy424;
+               goto yy128;
  yy338:
                YYDEBUG(338, *YYCURSOR);
-               ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
-               }
+               yych = *++YYCURSOR;
+               if (yych == 'A') goto yy425;
+               if (yych == 'a') goto yy425;
+               goto yy128;
+ yy339:
                YYDEBUG(339, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1440 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_UNSET);
- }
- #line 4245 "Zend/zend_language_scanner.c"
- yy340:
-               YYDEBUG(340, *YYCURSOR);
                ++YYCURSOR;
-               YYFILL(7);
-               yych = *YYCURSOR;
- yy341:
-               YYDEBUG(341, *YYCURSOR);
-               if (yych <= 'S') {
-                       if (yych <= 'D') {
-                               if (yych <= ' ') {
-                                       if (yych == '\t') goto yy340;
-                                       if (yych <= 0x1F) goto yy157;
-                                       goto yy340;
-                               } else {
-                                       if (yych <= 'A') {
-                                               if (yych <= '@') goto yy157;
-                                               goto yy345;
-                                       } else {
-                                               if (yych <= 'B') goto yy343;
-                                               if (yych <= 'C') goto yy157;
-                                               goto yy348;
-                                       }
-                               }
+               if ((yych = *YYCURSOR) <= '^') {
+                       if (yych <= '@') {
+                               if (yych <= '/') goto yy340;
+                               if (yych <= '9') goto yy127;
                        } else {
-                               if (yych <= 'I') {
-                                       if (yych == 'F') goto yy349;
-                                       if (yych <= 'H') goto yy157;
-                                       goto yy350;
-                               } else {
-                                       if (yych <= 'O') {
-                                               if (yych <= 'N') goto yy157;
-                                               goto yy344;
-                                       } else {
-                                               if (yych <= 'Q') goto yy157;
-                                               if (yych <= 'R') goto yy347;
-                                               goto yy346;
-                                       }
-                               }
+                               if (yych == 'E') goto yy426;
+                               if (yych <= 'Z') goto yy127;
                        }
                } else {
-                       if (yych <= 'f') {
-                               if (yych <= 'a') {
-                                       if (yych == 'U') goto yy342;
-                                       if (yych <= '`') goto yy157;
-                                       goto yy345;
-                               } else {
-                                       if (yych <= 'c') {
-                                               if (yych <= 'b') goto yy343;
-                                               goto yy157;
-                                       } else {
-                                               if (yych <= 'd') goto yy348;
-                                               if (yych <= 'e') goto yy157;
-                                               goto yy349;
-                                       }
-                               }
+                       if (yych <= 'd') {
+                               if (yych != '`') goto yy127;
                        } else {
-                               if (yych <= 'q') {
-                                       if (yych <= 'i') {
-                                               if (yych <= 'h') goto yy157;
-                                               goto yy350;
-                                       } else {
-                                               if (yych == 'o') goto yy344;
-                                               goto yy157;
-                                       }
-                               } else {
-                                       if (yych <= 's') {
-                                               if (yych <= 'r') goto yy347;
-                                               goto yy346;
-                                       } else {
-                                               if (yych != 'u') goto yy157;
-                                       }
-                               }
+                               if (yych <= 'e') goto yy426;
+                               if (yych <= 'z') goto yy127;
 -                              if (yych >= 0x7F) goto yy127;
++                              if (yych >= 0x80) goto yy127;
                        }
                }
 -#line 1212 "Zend/zend_language_scanner.l"
+ yy340:
+               YYDEBUG(340, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 4385 "Zend/zend_language_scanner.c"
++#line 1199 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_FOR);
+ }
++#line 4373 "Zend/zend_language_scanner.c"
+ yy341:
+               YYDEBUG(341, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'C') goto yy427;
+               if (yych == 'c') goto yy427;
+               goto yy128;
  yy342:
                YYDEBUG(342, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -4377,18 -4439,22 +4427,22 @@@ yy349
  yy350:
                YYDEBUG(350, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy351;
-               if (yych != 'n') goto yy157;
+               if (yych == 'E') goto yy438;
+               if (yych == 'e') goto yy438;
+               goto yy128;
  yy351:
                YYDEBUG(351, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy352;
-               if (yych != 't') goto yy157;
- yy352:
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
                YYDEBUG(352, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy353;
-               if (yych != 'e') goto yy355;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1342 "Zend/zend_language_scanner.l"
++#line 1329 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_NEW);
+ }
 -#line 4458 "Zend/zend_language_scanner.c"
++#line 4446 "Zend/zend_language_scanner.c"
  yy353:
                YYDEBUG(353, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -4437,61 -4516,73 +4504,73 @@@ yy360
  yy361:
                YYDEBUG(361, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy362;
-               if (yych != 'a') goto yy157;
+               if (yych == 'I') goto yy448;
+               if (yych == 'i') goto yy448;
+               goto yy128;
  yy362:
                YYDEBUG(362, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy363;
-               if (yych != 't') goto yy157;
- yy363:
-               YYDEBUG(363, *YYCURSOR);
                ++YYCURSOR;
-               YYFILL(1);
-               yych = *YYCURSOR;
-               YYDEBUG(364, *YYCURSOR);
-               if (yych <= 0x1F) {
-                       if (yych == '\t') goto yy363;
-                       goto yy157;
-               } else {
-                       if (yych <= ' ') goto yy363;
-                       if (yych != ')') goto yy157;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
 -#line 1168 "Zend/zend_language_scanner.l"
+               YYDEBUG(363, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 4535 "Zend/zend_language_scanner.c"
++#line 1155 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_TRY);
+ }
++#line 4523 "Zend/zend_language_scanner.c"
+ yy364:
+               YYDEBUG(364, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy449;
+               if (yych == 'e') goto yy449;
+               goto yy128;
+ yy365:
                YYDEBUG(365, *YYCURSOR);
                ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
                YYDEBUG(366, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1344 "Zend/zend_language_scanner.l"
 -#line 1406 "Zend/zend_language_scanner.l"
++#line 1393 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_DOUBLE_CAST);
+       RETURN_TOKEN(T_USE);
  }
- #line 4469 "Zend/zend_language_scanner.c"
 -#line 4554 "Zend/zend_language_scanner.c"
++#line 4542 "Zend/zend_language_scanner.c"
  yy367:
                YYDEBUG(367, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'U') goto yy368;
-               if (yych != 'u') goto yy157;
- yy368:
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
                YYDEBUG(368, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'B') goto yy369;
-               if (yych != 'b') goto yy157;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1350 "Zend/zend_language_scanner.l"
++#line 1337 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_VAR);
+ }
 -#line 4567 "Zend/zend_language_scanner.c"
++#line 4555 "Zend/zend_language_scanner.c"
  yy369:
                YYDEBUG(369, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy370;
-               if (yych != 'l') goto yy157;
+               if (yych == 'L') goto yy450;
+               if (yych == 'l') goto yy450;
+               goto yy128;
  yy370:
                YYDEBUG(370, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy363;
-               if (yych == 'e') goto yy363;
-               goto yy157;
- yy371:
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
                YYDEBUG(371, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy372;
-               if (yych != 'a') goto yy157;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1578 "Zend/zend_language_scanner.l"
++#line 1565 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_LOGICAL_XOR);
+ }
 -#line 4586 "Zend/zend_language_scanner.c"
++#line 4574 "Zend/zend_language_scanner.c"
  yy372:
                YYDEBUG(372, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -4597,34 -4712,58 +4700,58 @@@ yy391
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(393, *YYCURSOR);
-               if (yych <= 0x1F) {
-                       if (yych == '\t') goto yy392;
-                       goto yy157;
+               YYDEBUG(392, *YYCURSOR);
+               if (yych <= '\f') {
+                       if (yych <= 0x08) goto yy197;
+                       if (yych <= '\n') goto yy391;
+                       goto yy197;
                } else {
-                       if (yych <= ' ') goto yy392;
-                       if (yych != ')') goto yy157;
+                       if (yych <= '\r') goto yy391;
+                       if (yych == ' ') goto yy391;
+                       goto yy197;
                }
+ yy393:
+               YYDEBUG(393, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '"') goto yy166;
+               if (yych <= '/') goto yy477;
+               if (yych <= '9') goto yy166;
+               goto yy477;
+ yy394:
                YYDEBUG(394, *YYCURSOR);
-               ++YYCURSOR;
+               yych = *++YYCURSOR;
+               if (yych == '\'') goto yy166;
+               if (yych <= '/') goto yy479;
+               if (yych <= '9') goto yy166;
+               goto yy479;
+ yy395:
                YYDEBUG(395, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1356 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_OBJECT_CAST);
- }
- #line 4622 "Zend/zend_language_scanner.c"
- yy396:
+               ++YYCURSOR;
+               YYFILL(2);
+               yych = *YYCURSOR;
                YYDEBUG(396, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'N') goto yy406;
-               if (yych == 'n') goto yy406;
-               goto yy157;
+               if (yych <= '@') {
+                       if (yych <= '\f') {
+                               if (yych == '\n') goto yy480;
+                               goto yy166;
+                       } else {
+                               if (yych <= '\r') goto yy482;
+                               if (yych <= '/') goto yy166;
+                               if (yych <= '9') goto yy395;
+                               goto yy166;
+                       }
+               } else {
+                       if (yych <= '_') {
+                               if (yych <= 'Z') goto yy395;
+                               if (yych <= '^') goto yy166;
+                               goto yy395;
+                       } else {
+                               if (yych <= '`') goto yy166;
+                               if (yych <= 'z') goto yy395;
 -                              if (yych <= '~') goto yy166;
++                              if (yych <= 0x7F) goto yy166;
+                               goto yy395;
+                       }
+               }
  yy397:
                YYDEBUG(397, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -4638,32 -4779,34 +4767,34 @@@ yy398
  yy399:
                YYDEBUG(399, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy404;
-               if (yych == 'e') goto yy404;
-               goto yy401;
+               if (yych == 'K') goto yy486;
+               if (yych == 'k') goto yy486;
+               goto yy128;
  yy400:
                YYDEBUG(400, *YYCURSOR);
-               ++YYCURSOR;
-               YYFILL(1);
-               yych = *YYCURSOR;
+               yych = *++YYCURSOR;
+               if (yych == 'A') goto yy488;
+               if (yych == 'a') goto yy488;
+               goto yy128;
  yy401:
                YYDEBUG(401, *YYCURSOR);
-               if (yych <= 0x1F) {
-                       if (yych == '\t') goto yy400;
-                       goto yy157;
-               } else {
-                       if (yych <= ' ') goto yy400;
-                       if (yych != ')') goto yy157;
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
                YYDEBUG(402, *YYCURSOR);
-               ++YYCURSOR;
-               YYDEBUG(403, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1360 "Zend/zend_language_scanner.l"
 -#line 1252 "Zend/zend_language_scanner.l"
++#line 1239 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_BOOL_CAST);
+       RETURN_TOKEN(T_CASE);
  }
- #line 4667 "Zend/zend_language_scanner.c"
 -#line 4804 "Zend/zend_language_scanner.c"
++#line 4792 "Zend/zend_language_scanner.c"
+ yy403:
+               YYDEBUG(403, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'H') goto yy489;
+               if (yych == 'h') goto yy489;
+               goto yy128;
  yy404:
                YYDEBUG(404, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -4694,40 -4840,62 +4828,62 @@@ yy408
  yy409:
                YYDEBUG(409, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'S') goto yy410;
-               if (yych != 's') goto yy157;
+               if (yych == 'U') goto yy499;
+               if (yych == 'u') goto yy499;
+               goto yy128;
  yy410:
                YYDEBUG(410, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy411;
-               if (yych != 'e') goto yy157;
- yy411:
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
                YYDEBUG(411, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy412;
-               if (yych != 't') goto yy157;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1272 "Zend/zend_language_scanner.l"
++#line 1259 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_ECHO);
+ }
 -#line 4859 "Zend/zend_language_scanner.c"
++#line 4847 "Zend/zend_language_scanner.c"
  yy412:
                YYDEBUG(412, *YYCURSOR);
                ++YYCURSOR;
-               YYFILL(1);
-               yych = *YYCURSOR;
-               YYDEBUG(413, *YYCURSOR);
-               if (yych <= 0x1F) {
-                       if (yych == '\t') goto yy412;
-                       goto yy157;
+               if ((yych = *YYCURSOR) <= '^') {
+                       if (yych <= '@') {
+                               if (yych <= '/') goto yy413;
+                               if (yych <= '9') goto yy127;
+                       } else {
+                               if (yych == 'I') goto yy500;
+                               if (yych <= 'Z') goto yy127;
+                       }
                } else {
-                       if (yych <= ' ') goto yy412;
-                       if (yych != ')') goto yy157;
+                       if (yych <= 'h') {
+                               if (yych != '`') goto yy127;
+                       } else {
+                               if (yych <= 'i') goto yy500;
+                               if (yych <= 'z') goto yy127;
 -                              if (yych >= 0x7F) goto yy127;
++                              if (yych >= 0x80) goto yy127;
+                       }
                }
-               YYDEBUG(414, *YYCURSOR);
-               ++YYCURSOR;
-               YYDEBUG(415, *YYCURSOR);
+ yy413:
+               YYDEBUG(413, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1364 "Zend/zend_language_scanner.l"
 -#line 1196 "Zend/zend_language_scanner.l"
++#line 1183 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_UNSET_CAST);
+       RETURN_TOKEN(T_ELSE);
  }
- #line 4731 "Zend/zend_language_scanner.c"
 -#line 4887 "Zend/zend_language_scanner.c"
++#line 4875 "Zend/zend_language_scanner.c"
+ yy414:
+               YYDEBUG(414, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'Y') goto yy501;
+               if (yych == 'y') goto yy501;
+               goto yy128;
+ yy415:
+               YYDEBUG(415, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy503;
+               if (yych == 'e') goto yy503;
+               goto yy128;
  yy416:
                YYDEBUG(416, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -4749,32 -4917,35 +4905,35 @@@ yy418
  yy419:
                YYDEBUG(419, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'M') goto yy423;
-               if (yych == 'm') goto yy423;
-               goto yy150;
+               if (yych == 'H') goto yy508;
+               if (yych == 'h') goto yy508;
+               goto yy128;
  yy420:
                YYDEBUG(420, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'W') goto yy421;
-               if (yych != 'w') goto yy150;
- yy421:
-               YYDEBUG(421, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(422, *YYCURSOR);
+               YYDEBUG(421, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1328 "Zend/zend_language_scanner.l"
 -#line 1382 "Zend/zend_language_scanner.l"
++#line 1369 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_NEW);
+       RETURN_TOKEN(T_EVAL);
  }
- #line 4773 "Zend/zend_language_scanner.c"
- yy423:
 -#line 4936 "Zend/zend_language_scanner.c"
++#line 4924 "Zend/zend_language_scanner.c"
+ yy422:
+               YYDEBUG(422, *YYCURSOR);
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
                YYDEBUG(423, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy424;
-               if (yych != 'e') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1138 "Zend/zend_language_scanner.l"
++#line 1125 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_EXIT);
+ }
 -#line 4949 "Zend/zend_language_scanner.c"
++#line 4937 "Zend/zend_language_scanner.c"
  yy424:
                YYDEBUG(424, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -4808,70 -4984,82 +4972,82 @@@ yy429
                }
                YYDEBUG(430, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1388 "Zend/zend_language_scanner.l"
 -#line 1268 "Zend/zend_language_scanner.l"
++#line 1255 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_NAMESPACE);
+       RETURN_TOKEN(T_GOTO);
  }
- #line 4816 "Zend/zend_language_scanner.c"
 -#line 4992 "Zend/zend_language_scanner.c"
++#line 4980 "Zend/zend_language_scanner.c"
  yy431:
                YYDEBUG(431, *YYCURSOR);
-               ++YYCURSOR;
-               if ((yych = *YYCURSOR) == '\n') goto yy435;
-               if (yych == '\r') goto yy436;
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy515;
+               if (yych == 'e') goto yy515;
+               goto yy128;
  yy432:
                YYDEBUG(432, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1960 "Zend/zend_language_scanner.l"
-               {
-       BEGIN(INITIAL);
-       RETURN_TOKEN(T_CLOSE_TAG);  /* implicit ';' at php-end tag */
- }
- #line 4830 "Zend/zend_language_scanner.c"
+               yych = *++YYCURSOR;
+               if (yych == 'U') goto yy516;
+               if (yych == 'u') goto yy516;
+               goto yy128;
  yy433:
                YYDEBUG(433, *YYCURSOR);
-               ++YYCURSOR;
+               yych = *++YYCURSOR;
+               if (yych <= 'E') {
+                       if (yych == 'A') goto yy517;
+                       if (yych <= 'D') goto yy128;
+                       goto yy518;
+               } else {
+                       if (yych <= 'a') {
+                               if (yych <= '`') goto yy128;
+                               goto yy517;
+                       } else {
+                               if (yych == 'e') goto yy518;
+                               goto yy128;
+                       }
+               }
+ yy434:
                YYDEBUG(434, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1324 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_COALESCE);
- }
- #line 4840 "Zend/zend_language_scanner.c"
+               yych = *++YYCURSOR;
+               if (yych == 'R') goto yy519;
+               if (yych == 'r') goto yy519;
+               goto yy128;
  yy435:
                YYDEBUG(435, *YYCURSOR);
                yych = *++YYCURSOR;
-               goto yy432;
+               if (yych == 'T') goto yy520;
+               if (yych == 't') goto yy520;
+               goto yy128;
  yy436:
                YYDEBUG(436, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '\n') goto yy435;
-               goto yy432;
- yy437:
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
                YYDEBUG(437, *YYCURSOR);
-               yyaccept = 3;
-               YYMARKER = ++YYCURSOR;
-               YYFILL(3);
-               yych = *YYCURSOR;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1462 "Zend/zend_language_scanner.l"
++#line 1449 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_LIST);
+ }
 -#line 5045 "Zend/zend_language_scanner.c"
++#line 5033 "Zend/zend_language_scanner.c"
+ yy438:
                YYDEBUG(438, *YYCURSOR);
-               if (yych <= 'D') {
-                       if (yych <= '/') goto yy153;
-                       if (yych <= '9') goto yy437;
-                       goto yy153;
-               } else {
-                       if (yych <= 'E') goto yy156;
-                       if (yych == 'e') goto yy156;
-                       goto yy153;
-               }
+               yych = *++YYCURSOR;
+               if (yych == 'S') goto yy522;
+               if (yych == 's') goto yy522;
+               goto yy128;
  yy439:
                YYDEBUG(439, *YYCURSOR);
-               ++YYCURSOR;
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy523;
+               if (yych == 't') goto yy523;
+               goto yy128;
+ yy440:
                YYDEBUG(440, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1520 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_CONCAT_EQUAL);
- }
- #line 4875 "Zend/zend_language_scanner.c"
+               yych = *++YYCURSOR;
+               if (yych == 'A') goto yy525;
+               if (yych == 'a') goto yy525;
+               goto yy128;
  yy441:
                YYDEBUG(441, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -5025,31 -5207,32 +5195,32 @@@ yy464
  yy465:
                YYDEBUG(465, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy466;
-               if (yych != 't') goto yy150;
+               if (yych == 'T') goto yy472;
+               if (yych == 't') goto yy472;
+               goto yy166;
  yy466:
                YYDEBUG(466, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy467;
-               if (yych != 'e') goto yy150;
+               ++YYCURSOR;
+               YYFILL(1);
+               yych = *YYCURSOR;
  yy467:
                YYDEBUG(467, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'D') goto yy468;
-               if (yych != 'd') goto yy150;
- yy468:
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy466;
+                       goto yy166;
+               } else {
+                       if (yych <= ' ') goto yy466;
+                       if (yych != ')') goto yy166;
+               }
                YYDEBUG(468, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
-               }
                YYDEBUG(469, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1432 "Zend/zend_language_scanner.l"
 -#line 1354 "Zend/zend_language_scanner.l"
++#line 1341 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_PROTECTED);
+       RETURN_TOKEN(T_INT_CAST);
  }
- #line 5053 "Zend/zend_language_scanner.c"
 -#line 5236 "Zend/zend_language_scanner.c"
++#line 5224 "Zend/zend_language_scanner.c"
  yy470:
                YYDEBUG(470, *YYCURSOR);
                yych = *++YYCURSOR;
  yy476:
                YYDEBUG(476, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
-               }
+               YYFILL(3);
+               yych = *YYCURSOR;
+ yy477:
                YYDEBUG(477, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1262 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_PRINT);
- }
- #line 5100 "Zend/zend_language_scanner.c"
+               if (yych <= 'Z') {
+                       if (yych <= '/') {
+                               if (yych == '"') goto yy567;
+                               goto yy166;
+                       } else {
+                               if (yych <= '9') goto yy476;
+                               if (yych <= '@') goto yy166;
+                               goto yy476;
+                       }
+               } else {
+                       if (yych <= '`') {
+                               if (yych == '_') goto yy476;
+                               goto yy166;
+                       } else {
+                               if (yych <= 'z') goto yy476;
 -                              if (yych <= '~') goto yy166;
++                              if (yych <= 0x7F) goto yy166;
+                               goto yy476;
+                       }
+               }
  yy478:
                YYDEBUG(478, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'O') goto yy483;
-               if (yych == 'o') goto yy483;
-               goto yy150;
+               ++YYCURSOR;
+               YYFILL(3);
+               yych = *YYCURSOR;
  yy479:
                YYDEBUG(479, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy480;
-               if (yych != 't') goto yy150;
+               if (yych <= 'Z') {
+                       if (yych <= '/') {
+                               if (yych == '\'') goto yy567;
+                               goto yy166;
+                       } else {
+                               if (yych <= '9') goto yy478;
+                               if (yych <= '@') goto yy166;
+                               goto yy478;
+                       }
+               } else {
+                       if (yych <= '`') {
+                               if (yych == '_') goto yy478;
+                               goto yy166;
+                       } else {
+                               if (yych <= 'z') goto yy478;
 -                              if (yych <= '~') goto yy166;
++                              if (yych <= 0x7F) goto yy166;
+                               goto yy478;
+                       }
+               }
  yy480:
                YYDEBUG(480, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'O') goto yy481;
-               if (yych != 'o') goto yy150;
+               ++YYCURSOR;
  yy481:
                YYDEBUG(481, *YYCURSOR);
-               ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
-               }
-               YYDEBUG(482, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1254 "Zend/zend_language_scanner.l"
 -#line 2091 "Zend/zend_language_scanner.l"
++#line 2078 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_GOTO);
+       char *s;
+       int bprefix = (yytext[0] != '<') ? 1 : 0;
+       zend_heredoc_label *heredoc_label = emalloc(sizeof(zend_heredoc_label));
+       CG(zend_lineno)++;
+       heredoc_label->length = yyleng-bprefix-3-1-(yytext[yyleng-2]=='\r'?1:0);
+       s = yytext+bprefix+3;
+       while ((*s == ' ') || (*s == '\t')) {
+               s++;
+               heredoc_label->length--;
+       }
+       if (*s == '\'') {
+               s++;
+               heredoc_label->length -= 2;
+               BEGIN(ST_NOWDOC);
+       } else {
+               if (*s == '"') {
+                       s++;
+                       heredoc_label->length -= 2;
+               }
+               BEGIN(ST_HEREDOC);
+       }
+       heredoc_label->label = estrndup(s, heredoc_label->length);
+       /* Check for ending label on the next line */
+       if (heredoc_label->length < YYLIMIT - YYCURSOR && !memcmp(YYCURSOR, s, heredoc_label->length)) {
+               YYCTYPE *end = YYCURSOR + heredoc_label->length;
+               if (*end == ';') {
+                       end++;
+               }
+               if (*end == '\n' || *end == '\r') {
+                       BEGIN(ST_END_HEREDOC);
+               }
+       }
+       zend_ptr_stack_push(&SCNG(heredoc_label_stack), (void *) heredoc_label);
+       RETURN_TOKEN(T_START_HEREDOC);
  }
- #line 5129 "Zend/zend_language_scanner.c"
 -#line 5380 "Zend/zend_language_scanner.c"
++#line 5368 "Zend/zend_language_scanner.c"
+ yy482:
+               YYDEBUG(482, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '\n') goto yy480;
+               goto yy481;
  yy483:
                YYDEBUG(483, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'B') goto yy484;
-               if (yych != 'b') goto yy150;
+               if (yych == 'A') goto yy568;
+               if (yych == 'a') goto yy568;
+               goto yy128;
  yy484:
                YYDEBUG(484, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy485;
-               if (yych != 'a') goto yy150;
- yy485:
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
                YYDEBUG(485, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'L') goto yy486;
-               if (yych != 'l') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1466 "Zend/zend_language_scanner.l"
++#line 1453 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_ARRAY);
+ }
 -#line 5404 "Zend/zend_language_scanner.c"
++#line 5392 "Zend/zend_language_scanner.c"
  yy486:
                YYDEBUG(486, *YYCURSOR);
                ++YYCURSOR;
                }
                YYDEBUG(487, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1400 "Zend/zend_language_scanner.l"
 -#line 1260 "Zend/zend_language_scanner.l"
++#line 1247 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_GLOBAL);
+       RETURN_TOKEN(T_BREAK);
  }
- #line 5157 "Zend/zend_language_scanner.c"
 -#line 5417 "Zend/zend_language_scanner.c"
++#line 5405 "Zend/zend_language_scanner.c"
  yy488:
                YYDEBUG(488, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == '<') goto yy496;
-               goto yy157;
+               if (yych == 'B') goto yy569;
+               if (yych == 'b') goto yy569;
+               goto yy128;
  yy489:
                YYDEBUG(489, *YYCURSOR);
-               yych = *++YYCURSOR;
-               goto yy144;
- yy490:
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
                YYDEBUG(490, *YYCURSOR);
-               yych = *++YYCURSOR;
-               goto yy142;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1172 "Zend/zend_language_scanner.l"
++#line 1159 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_CATCH);
+ }
 -#line 5436 "Zend/zend_language_scanner.c"
++#line 5424 "Zend/zend_language_scanner.c"
  yy491:
                YYDEBUG(491, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy492;
-               if (yych != 'e') goto yy150;
- yy492:
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
                YYDEBUG(492, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy493;
-               if (yych != 'a') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1280 "Zend/zend_language_scanner.l"
++#line 1267 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_CLASS);
+ }
 -#line 5449 "Zend/zend_language_scanner.c"
++#line 5437 "Zend/zend_language_scanner.c"
  yy493:
                YYDEBUG(493, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'K') goto yy494;
-               if (yych != 'k') goto yy150;
- yy494:
-               YYDEBUG(494, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(495, *YYCURSOR);
+               YYDEBUG(494, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1246 "Zend/zend_language_scanner.l"
 -#line 1346 "Zend/zend_language_scanner.l"
++#line 1333 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_BREAK);
+       RETURN_TOKEN(T_CLONE);
  }
- #line 5198 "Zend/zend_language_scanner.c"
- yy496:
 -#line 5462 "Zend/zend_language_scanner.c"
++#line 5450 "Zend/zend_language_scanner.c"
+ yy495:
+               YYDEBUG(495, *YYCURSOR);
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
                YYDEBUG(496, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == '<') goto yy219;
-               goto yy157;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1150 "Zend/zend_language_scanner.l"
++#line 1137 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_CONST);
+ }
 -#line 5475 "Zend/zend_language_scanner.c"
++#line 5463 "Zend/zend_language_scanner.c"
  yy497:
                YYDEBUG(497, *YYCURSOR);
                yych = *++YYCURSOR;
  yy500:
                YYDEBUG(500, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy501;
-               if (yych != 'c') goto yy150;
+               if (yych == 'F') goto yy573;
+               if (yych == 'f') goto yy573;
+               goto yy128;
  yy501:
                YYDEBUG(501, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'H') goto yy502;
-               if (yych != 'h') goto yy150;
- yy502:
-               YYDEBUG(502, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(503, *YYCURSOR);
+               YYDEBUG(502, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1230 "Zend/zend_language_scanner.l"
 -#line 1422 "Zend/zend_language_scanner.l"
++#line 1409 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_SWITCH);
+       RETURN_TOKEN(T_EMPTY);
  }
- #line 5242 "Zend/zend_language_scanner.c"
 -#line 5512 "Zend/zend_language_scanner.c"
++#line 5500 "Zend/zend_language_scanner.c"
+ yy503:
+               YYDEBUG(503, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'C') goto yy575;
+               if (yych == 'c') goto yy575;
+               goto yy128;
  yy504:
                YYDEBUG(504, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy505;
-               if (yych != 't') goto yy150;
+               if (yych == 'R') goto yy576;
+               if (yych == 'r') goto yy576;
+               goto yy128;
  yy505:
                YYDEBUG(505, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'I') goto yy506;
-               if (yych != 'i') goto yy150;
- yy506:
-               YYDEBUG(506, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'C') goto yy507;
-               if (yych != 'c') goto yy150;
- yy507:
-               YYDEBUG(507, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(508, *YYCURSOR);
+               YYDEBUG(506, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1416 "Zend/zend_language_scanner.l"
 -#line 1192 "Zend/zend_language_scanner.l"
++#line 1179 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_STATIC);
+       RETURN_TOKEN(T_ENDIF);
  }
- #line 5270 "Zend/zend_language_scanner.c"
 -#line 5537 "Zend/zend_language_scanner.c"
++#line 5525 "Zend/zend_language_scanner.c"
+ yy507:
+               YYDEBUG(507, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'I') goto yy578;
+               if (yych == 'i') goto yy578;
+               goto yy128;
+ yy508:
+               YYDEBUG(508, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'I') goto yy579;
+               if (yych == 'i') goto yy579;
+               goto yy128;
  yy509:
                YYDEBUG(509, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'S') goto yy520;
-               if (yych == 's') goto yy520;
-               goto yy150;
+               if (yych == 'D') goto yy580;
+               if (yych == 'd') goto yy580;
+               goto yy128;
  yy510:
                YYDEBUG(510, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'D') goto yy518;
-               if (yych == 'd') goto yy518;
-               goto yy150;
- yy511:
-               YYDEBUG(511, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'R') goto yy514;
-               if (yych == 'r') goto yy514;
-               goto yy150;
- yy512:
-               YYDEBUG(512, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if ((yych = *YYCURSOR) <= '^') {
+                       if (yych <= '@') {
+                               if (yych <= '/') goto yy511;
+                               if (yych <= '9') goto yy127;
+                       } else {
+                               if (yych == 'L') goto yy581;
+                               if (yych <= 'Z') goto yy127;
+                       }
+               } else {
+                       if (yych <= 'k') {
+                               if (yych != '`') goto yy127;
+                       } else {
+                               if (yych <= 'l') goto yy581;
+                               if (yych <= 'z') goto yy127;
 -                              if (yych >= 0x7F) goto yy127;
++                              if (yych >= 0x80) goto yy127;
+                       }
                }
-               YYDEBUG(513, *YYCURSOR);
+ yy511:
+               YYDEBUG(511, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1226 "Zend/zend_language_scanner.l"
 -#line 1438 "Zend/zend_language_scanner.l"
++#line 1425 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_AS);
+       RETURN_TOKEN(T_FINAL);
  }
- #line 5301 "Zend/zend_language_scanner.c"
 -#line 5583 "Zend/zend_language_scanner.c"
++#line 5571 "Zend/zend_language_scanner.c"
+ yy512:
+               YYDEBUG(512, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'C') goto yy582;
+               if (yych == 'c') goto yy582;
+               goto yy128;
+ yy513:
+               YYDEBUG(513, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'I') goto yy583;
+               if (yych == 'i') goto yy583;
+               goto yy128;
  yy514:
                YYDEBUG(514, *YYCURSOR);
                yych = *++YYCURSOR;
  yy515:
                YYDEBUG(515, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'Y') goto yy516;
-               if (yych != 'y') goto yy150;
+               if (yych == 'M') goto yy586;
+               if (yych == 'm') goto yy586;
+               goto yy128;
  yy516:
                YYDEBUG(516, *YYCURSOR);
-               ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
-               }
+               yych = *++YYCURSOR;
+               if (yych == 'D') goto yy587;
+               if (yych == 'd') goto yy587;
+               goto yy128;
+ yy517:
                YYDEBUG(517, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1452 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_ARRAY);
- }
- #line 5324 "Zend/zend_language_scanner.c"
+               yych = *++YYCURSOR;
+               if (yych == 'N') goto yy588;
+               if (yych == 'n') goto yy588;
+               goto yy128;
  yy518:
                YYDEBUG(518, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'A') goto yy589;
+               if (yych == 'a') goto yy589;
+               goto yy128;
+ yy519:
+               YYDEBUG(519, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'F') goto yy590;
+               if (yych == 'f') goto yy590;
+               goto yy128;
+ yy520:
+               YYDEBUG(520, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(519, *YYCURSOR);
+               YYDEBUG(521, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1560 "Zend/zend_language_scanner.l"
 -#line 1418 "Zend/zend_language_scanner.l"
++#line 1405 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_LOGICAL_AND);
+       RETURN_TOKEN(T_ISSET);
  }
- #line 5337 "Zend/zend_language_scanner.c"
- yy520:
-               YYDEBUG(520, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy521;
-               if (yych != 't') goto yy150;
- yy521:
-               YYDEBUG(521, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'R') goto yy522;
-               if (yych != 'r') goto yy150;
 -#line 5644 "Zend/zend_language_scanner.c"
++#line 5632 "Zend/zend_language_scanner.c"
  yy522:
                YYDEBUG(522, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy523;
-               if (yych != 'a') goto yy150;
+               if (yych == 'P') goto yy591;
+               if (yych == 'p') goto yy591;
+               goto yy128;
  yy523:
                YYDEBUG(523, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'C') goto yy524;
-               if (yych != 'c') goto yy150;
- yy524:
-               YYDEBUG(524, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy525;
-               if (yych != 't') goto yy150;
- yy525:
-               YYDEBUG(525, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(526, *YYCURSOR);
+               YYDEBUG(524, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1420 "Zend/zend_language_scanner.l"
 -#line 1276 "Zend/zend_language_scanner.l"
++#line 1263 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_ABSTRACT);
+       RETURN_TOKEN(T_PRINT);
  }
- #line 5375 "Zend/zend_language_scanner.c"
 -#line 5663 "Zend/zend_language_scanner.c"
++#line 5651 "Zend/zend_language_scanner.c"
+ yy525:
+               YYDEBUG(525, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy592;
+               if (yych == 't') goto yy592;
+               goto yy128;
+ yy526:
+               YYDEBUG(526, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'C') goto yy593;
+               if (yych == 'c') goto yy593;
+               goto yy128;
  yy527:
                YYDEBUG(527, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -5408,73 -5710,72 +5698,72 @@@ yy532
                }
                YYDEBUG(533, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1170 "Zend/zend_language_scanner.l"
 -#line 1180 "Zend/zend_language_scanner.l"
++#line 1167 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_IF);
+       RETURN_TOKEN(T_THROW);
  }
- #line 5416 "Zend/zend_language_scanner.c"
 -#line 5718 "Zend/zend_language_scanner.c"
++#line 5706 "Zend/zend_language_scanner.c"
  yy534:
                YYDEBUG(534, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'P') goto yy576;
-               if (yych == 'p') goto yy576;
-               goto yy150;
- yy535:
-               YYDEBUG(535, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych <= 'T') {
-                       if (yych <= 'C') {
-                               if (yych <= 'B') goto yy150;
-                               goto yy543;
-                       } else {
-                               if (yych <= 'R') goto yy150;
-                               if (yych <= 'S') goto yy541;
-                               goto yy542;
-                       }
-               } else {
-                       if (yych <= 'r') {
-                               if (yych == 'c') goto yy543;
-                               goto yy150;
-                       } else {
-                               if (yych <= 's') goto yy541;
-                               if (yych <= 't') goto yy542;
-                               goto yy150;
-                       }
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
 -#line 1288 "Zend/zend_language_scanner.l"
+               YYDEBUG(535, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 5731 "Zend/zend_language_scanner.c"
++#line 1275 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_TRAIT);
+ }
++#line 5719 "Zend/zend_language_scanner.c"
  yy536:
                YYDEBUG(536, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'S') goto yy537;
-               if (yych != 's') goto yy150;
- yy537:
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
                YYDEBUG(537, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy538;
-               if (yych != 'e') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1454 "Zend/zend_language_scanner.l"
++#line 1441 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_UNSET);
+ }
 -#line 5744 "Zend/zend_language_scanner.c"
++#line 5732 "Zend/zend_language_scanner.c"
  yy538:
                YYDEBUG(538, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy539;
-               if (yych != 't') goto yy150;
- yy539:
-               YYDEBUG(539, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(540, *YYCURSOR);
+               YYDEBUG(539, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1404 "Zend/zend_language_scanner.l"
 -#line 1200 "Zend/zend_language_scanner.l"
++#line 1187 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_ISSET);
+       RETURN_TOKEN(T_WHILE);
  }
- #line 5472 "Zend/zend_language_scanner.c"
 -#line 5757 "Zend/zend_language_scanner.c"
++#line 5745 "Zend/zend_language_scanner.c"
+ yy540:
+               YYDEBUG(540, *YYCURSOR);
+               yyaccept = 6;
+               yych = *(YYMARKER = ++YYCURSOR);
+               if (yybm[0+yych] & 16) {
+                       goto yy127;
+               }
+               if (yych <= '\f') {
+                       if (yych <= 0x08) goto yy541;
+                       if (yych <= '\n') goto yy603;
+               } else {
+                       if (yych <= '\r') goto yy603;
+                       if (yych == ' ') goto yy603;
+               }
  yy541:
                YYDEBUG(541, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy562;
-               if (yych == 't') goto yy562;
-               goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1164 "Zend/zend_language_scanner.l"
++#line 1151 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_YIELD);
+ }
 -#line 5779 "Zend/zend_language_scanner.c"
++#line 5767 "Zend/zend_language_scanner.c"
  yy542:
                YYDEBUG(542, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -5535,46 -5826,52 +5814,52 @@@ yy549
  yy550:
                YYDEBUG(550, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy551;
-               if (yych != 'n') goto yy150;
+               if (yych == 'I') goto yy613;
+               if (yych == 'i') goto yy613;
+               goto yy128;
  yy551:
                YYDEBUG(551, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'C') goto yy552;
-               if (yych != 'c') goto yy150;
- yy552:
+               ++YYCURSOR;
+               YYFILL(1);
+               yych = *YYCURSOR;
                YYDEBUG(552, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy553;
-               if (yych != 'e') goto yy150;
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy551;
+                       goto yy166;
+               } else {
+                       if (yych <= ' ') goto yy551;
+                       if (yych == ')') goto yy614;
+                       goto yy166;
+               }
  yy553:
                YYDEBUG(553, *YYCURSOR);
-               ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
-               }
+               yych = *++YYCURSOR;
+               if (yych == 'Y') goto yy616;
+               if (yych == 'y') goto yy616;
+               goto yy166;
+ yy554:
                YYDEBUG(554, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1376 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_INCLUDE_ONCE);
- }
- #line 5563 "Zend/zend_language_scanner.c"
+               ++YYCURSOR;
+               YYFILL(1);
+               yych = *YYCURSOR;
  yy555:
                YYDEBUG(555, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'R') goto yy556;
-               if (yych != 'r') goto yy150;
- yy556:
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy554;
+                       goto yy166;
+               } else {
+                       if (yych <= ' ') goto yy554;
+                       if (yych != ')') goto yy166;
+               }
                YYDEBUG(556, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'F') goto yy557;
-               if (yych != 'f') goto yy150;
- yy557:
+               ++YYCURSOR;
                YYDEBUG(557, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy558;
-               if (yych != 'a') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1374 "Zend/zend_language_scanner.l"
++#line 1361 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_BOOL_CAST);
+ }
 -#line 5875 "Zend/zend_language_scanner.c"
++#line 5863 "Zend/zend_language_scanner.c"
  yy558:
                YYDEBUG(558, *YYCURSOR);
                yych = *++YYCURSOR;
  yy559:
                YYDEBUG(559, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy560;
-               if (yych != 'e') goto yy150;
+               if (yych == 'E') goto yy472;
+               if (yych == 'e') goto yy472;
+               goto yy166;
  yy560:
                YYDEBUG(560, *YYCURSOR);
-               ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
-               }
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy619;
+               if (yych == 'e') goto yy619;
+               goto yy166;
+ yy561:
                YYDEBUG(561, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1270 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_INTERFACE);
- }
- #line 5601 "Zend/zend_language_scanner.c"
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy620;
+               if (yych == 't') goto yy620;
+               goto yy166;
  yy562:
                YYDEBUG(562, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych <= 'E') {
-                       if (yych == 'A') goto yy563;
-                       if (yych <= 'D') goto yy150;
-                       goto yy564;
-               } else {
-                       if (yych <= 'a') {
-                               if (yych <= '`') goto yy150;
-                       } else {
-                               if (yych == 'e') goto yy564;
-                               goto yy150;
-                       }
-               }
- yy563:
+               ++YYCURSOR;
                YYDEBUG(563, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'N') goto yy570;
-               if (yych == 'n') goto yy570;
-               goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1358 "Zend/zend_language_scanner.l"
++#line 1345 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_DOUBLE_CAST);
+ }
 -#line 5909 "Zend/zend_language_scanner.c"
++#line 5897 "Zend/zend_language_scanner.c"
  yy564:
                YYDEBUG(564, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -5665,36 -5959,56 +5947,56 @@@ yy571
  yy572:
                YYDEBUG(572, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy573;
-               if (yych != 'o') goto yy150;
+               if (yych == 'T') goto yy629;
+               if (yych == 't') goto yy629;
+               goto yy128;
  yy573:
                YYDEBUG(573, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'F') goto yy574;
-               if (yych != 'f') goto yy150;
- yy574:
-               YYDEBUG(574, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(575, *YYCURSOR);
+               YYDEBUG(574, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1222 "Zend/zend_language_scanner.l"
 -#line 1188 "Zend/zend_language_scanner.l"
++#line 1175 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_INSTANCEOF);
+       RETURN_TOKEN(T_ELSEIF);
  }
- #line 5688 "Zend/zend_language_scanner.c"
 -#line 5978 "Zend/zend_language_scanner.c"
++#line 5966 "Zend/zend_language_scanner.c"
+ yy575:
+               YYDEBUG(575, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'L') goto yy631;
+               if (yych == 'l') goto yy631;
+               goto yy128;
  yy576:
                YYDEBUG(576, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'L') goto yy577;
-               if (yych != 'l') goto yy150;
+               ++YYCURSOR;
+               if ((yych = *YYCURSOR) <= '^') {
+                       if (yych <= '@') {
+                               if (yych <= '/') goto yy577;
+                               if (yych <= '9') goto yy127;
+                       } else {
+                               if (yych == 'E') goto yy632;
+                               if (yych <= 'Z') goto yy127;
+                       }
+               } else {
+                       if (yych <= 'd') {
+                               if (yych != '`') goto yy127;
+                       } else {
+                               if (yych <= 'e') goto yy632;
+                               if (yych <= 'z') goto yy127;
 -                              if (yych >= 0x7F) goto yy127;
++                              if (yych >= 0x80) goto yy127;
+                       }
+               }
  yy577:
                YYDEBUG(577, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy578;
-               if (yych != 'e') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1216 "Zend/zend_language_scanner.l"
++#line 1203 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_ENDFOR);
+ }
 -#line 6012 "Zend/zend_language_scanner.c"
++#line 6000 "Zend/zend_language_scanner.c"
  yy578:
                YYDEBUG(578, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -5718,27 -6036,28 +6024,28 @@@ yy581
  yy582:
                YYDEBUG(582, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'S') goto yy583;
-               if (yych != 's') goto yy150;
+               if (yych == 'H') goto yy639;
+               if (yych == 'h') goto yy639;
+               goto yy128;
  yy583:
                YYDEBUG(583, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'O') goto yy641;
+               if (yych == 'o') goto yy641;
+               goto yy128;
+ yy584:
+               YYDEBUG(584, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(584, *YYCURSOR);
+               YYDEBUG(585, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1282 "Zend/zend_language_scanner.l"
 -#line 1414 "Zend/zend_language_scanner.l"
++#line 1401 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_IMPLEMENTS);
+       RETURN_TOKEN(T_GLOBAL);
  }
- #line 5736 "Zend/zend_language_scanner.c"
- yy585:
-               YYDEBUG(585, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'R') goto yy593;
-               if (yych == 'r') goto yy593;
-               goto yy150;
 -#line 6061 "Zend/zend_language_scanner.c"
++#line 6049 "Zend/zend_language_scanner.c"
  yy586:
                YYDEBUG(586, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -5791,76 -6103,80 +6091,80 @@@ yy592
  yy593:
                YYDEBUG(593, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy594;
-               if (yych != 'o') goto yy150;
+               if (yych == 'T') goto yy651;
+               if (yych == 't') goto yy651;
+               goto yy128;
  yy594:
                YYDEBUG(594, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'W') goto yy595;
-               if (yych != 'w') goto yy150;
- yy595:
-               YYDEBUG(595, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(596, *YYCURSOR);
+               YYDEBUG(595, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1166 "Zend/zend_language_scanner.l"
 -#line 1450 "Zend/zend_language_scanner.l"
++#line 1437 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_THROW);
+       RETURN_TOKEN(T_PUBLIC);
  }
- #line 5814 "Zend/zend_language_scanner.c"
 -#line 6122 "Zend/zend_language_scanner.c"
++#line 6110 "Zend/zend_language_scanner.c"
+ yy596:
+               YYDEBUG(596, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy652;
+               if (yych == 'e') goto yy652;
+               goto yy128;
  yy597:
                YYDEBUG(597, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy598;
-               if (yych != 'e') goto yy150;
- yy598:
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
                YYDEBUG(598, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'L') goto yy599;
-               if (yych != 'l') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1154 "Zend/zend_language_scanner.l"
++#line 1141 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_RETURN);
+ }
 -#line 6141 "Zend/zend_language_scanner.c"
++#line 6129 "Zend/zend_language_scanner.c"
  yy599:
                YYDEBUG(599, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'D') goto yy600;
-               if (yych != 'd') goto yy150;
- yy600:
-               YYDEBUG(600, *YYCURSOR);
-               yyaccept = 6;
-               yych = *(YYMARKER = ++YYCURSOR);
-               if (yybm[0+yych] & 4) {
-                       goto yy149;
-               }
-               if (yych <= '\f') {
-                       if (yych <= 0x08) goto yy601;
-                       if (yych <= '\n') goto yy602;
-               } else {
-                       if (yych <= '\r') goto yy602;
-                       if (yych == ' ') goto yy602;
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
 -#line 1430 "Zend/zend_language_scanner.l"
+               YYDEBUG(600, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 6154 "Zend/zend_language_scanner.c"
++#line 1417 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_STATIC);
+ }
++#line 6142 "Zend/zend_language_scanner.c"
  yy601:
                YYDEBUG(601, *YYCURSOR);
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
+               YYDEBUG(602, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1150 "Zend/zend_language_scanner.l"
 -#line 1244 "Zend/zend_language_scanner.l"
++#line 1231 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_YIELD);
+       RETURN_TOKEN(T_SWITCH);
  }
- #line 5851 "Zend/zend_language_scanner.c"
- yy602:
-               YYDEBUG(602, *YYCURSOR);
 -#line 6167 "Zend/zend_language_scanner.c"
++#line 6155 "Zend/zend_language_scanner.c"
+ yy603:
+               YYDEBUG(603, *YYCURSOR);
                ++YYCURSOR;
-               YYFILL(4);
+               YYFILL(5);
                yych = *YYCURSOR;
-               YYDEBUG(603, *YYCURSOR);
+               YYDEBUG(604, *YYCURSOR);
                if (yych <= 0x1F) {
                        if (yych <= '\n') {
-                               if (yych <= 0x08) goto yy157;
-                               goto yy602;
+                               if (yych <= 0x08) goto yy166;
+                               goto yy603;
                        } else {
-                               if (yych == '\r') goto yy602;
-                               goto yy157;
+                               if (yych == '\r') goto yy603;
+                               goto yy166;
                        }
                } else {
                        if (yych <= 'F') {
@@@ -5927,44 -6235,33 +6223,33 @@@ yy612
  yy613:
                YYDEBUG(613, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy614;
-               if (yych != 'r') goto yy150;
+               if (yych == 'T') goto yy664;
+               if (yych == 't') goto yy664;
+               goto yy128;
  yy614:
                YYDEBUG(614, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy615;
-               if (yych != 'e') goto yy150;
- yy615:
-               YYDEBUG(615, *YYCURSOR);
                ++YYCURSOR;
-               if ((yych = *YYCURSOR) <= '^') {
-                       if (yych <= '9') {
-                               if (yych >= '0') goto yy149;
-                       } else {
-                               if (yych <= '@') goto yy616;
-                               if (yych <= 'Z') goto yy149;
-                       }
-               } else {
-                       if (yych <= '`') {
-                               if (yych <= '_') goto yy617;
-                       } else {
-                               if (yych <= 'z') goto yy149;
-                               if (yych >= 0x80) goto yy149;
-                       }
-               }
- yy616:
-               YYDEBUG(616, *YYCURSOR);
+               YYDEBUG(615, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1380 "Zend/zend_language_scanner.l"
 -#line 1366 "Zend/zend_language_scanner.l"
++#line 1353 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_REQUIRE);
+       RETURN_TOKEN(T_ARRAY_CAST);
  }
- #line 5963 "Zend/zend_language_scanner.c"
- yy617:
 -#line 6251 "Zend/zend_language_scanner.c"
++#line 6239 "Zend/zend_language_scanner.c"
+ yy616:
+               YYDEBUG(616, *YYCURSOR);
+               ++YYCURSOR;
+               YYFILL(1);
+               yych = *YYCURSOR;
                YYDEBUG(617, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'O') goto yy618;
-               if (yych != 'o') goto yy150;
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy616;
+                       goto yy166;
+               } else {
+                       if (yych <= ' ') goto yy616;
+                       if (yych == ')') goto yy665;
+                       goto yy166;
+               }
  yy618:
                YYDEBUG(618, *YYCURSOR);
                yych = *++YYCURSOR;
  yy619:
                YYDEBUG(619, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy620;
-               if (yych != 'c') goto yy150;
+               if (yych == 'R') goto yy466;
+               if (yych == 'r') goto yy466;
+               goto yy166;
  yy620:
                YYDEBUG(620, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy621;
-               if (yych != 'e') goto yy150;
- yy621:
-               YYDEBUG(621, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               YYFILL(1);
+               yych = *YYCURSOR;
+               YYDEBUG(621, *YYCURSOR);
+               if (yych <= 0x1F) {
+                       if (yych == '\t') goto yy620;
+                       goto yy166;
+               } else {
+                       if (yych <= ' ') goto yy620;
+                       if (yych == ')') goto yy667;
+                       goto yy166;
                }
+ yy622:
                YYDEBUG(622, *YYCURSOR);
+               ++YYCURSOR;
+               YYDEBUG(623, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1384 "Zend/zend_language_scanner.l"
 -#line 1378 "Zend/zend_language_scanner.l"
++#line 1365 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_REQUIRE_ONCE);
+       RETURN_TOKEN(T_UNSET_CAST);
  }
- #line 5996 "Zend/zend_language_scanner.c"
- yy623:
-               YYDEBUG(623, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'R') goto yy624;
-               if (yych != 'r') goto yy150;
 -#line 6301 "Zend/zend_language_scanner.c"
++#line 6289 "Zend/zend_language_scanner.c"
  yy624:
                YYDEBUG(624, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy625;
-               if (yych != 'n') goto yy150;
+               if (yych == 'T') goto yy669;
+               if (yych == 't') goto yy669;
+               goto yy128;
  yy625:
                YYDEBUG(625, *YYCURSOR);
-               ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
-               }
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy671;
+               if (yych == 'e') goto yy671;
+               goto yy128;
+ yy626:
                YYDEBUG(626, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1141 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_RETURN);
- }
- #line 6019 "Zend/zend_language_scanner.c"
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy673;
+               if (yych == 'e') goto yy673;
+               goto yy128;
  yy627:
                YYDEBUG(627, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych <= 'T') {
-                       if (yych <= 'L') {
-                               if (yych <= 'K') goto yy150;
-                               goto yy650;
-                       } else {
-                               if (yych <= 'R') goto yy150;
-                               if (yych <= 'S') goto yy649;
-                               goto yy648;
-                       }
-               } else {
-                       if (yych <= 'r') {
-                               if (yych == 'l') goto yy650;
-                               goto yy150;
-                       } else {
-                               if (yych <= 's') goto yy649;
-                               if (yych <= 't') goto yy648;
-                               goto yy150;
-                       }
-               }
- yy628:
-               YYDEBUG(628, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych <= 'O') {
-                       if (yych == 'A') goto yy640;
-                       if (yych <= 'N') goto yy150;
-                       goto yy641;
-               } else {
-                       if (yych <= 'a') {
-                               if (yych <= '`') goto yy150;
-                               goto yy640;
-                       } else {
-                               if (yych == 'o') goto yy641;
-                               goto yy150;
-                       }
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
 -#line 1228 "Zend/zend_language_scanner.l"
+               YYDEBUG(628, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 6332 "Zend/zend_language_scanner.c"
++#line 1215 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_DECLARE);
+ }
++#line 6320 "Zend/zend_language_scanner.c"
  yy629:
                YYDEBUG(629, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'N') goto yy630;
-               if (yych != 'n') goto yy150;
- yy630:
-               YYDEBUG(630, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych <= 'T') {
-                       if (yych <= 'R') goto yy150;
-                       if (yych >= 'T') goto yy632;
-               } else {
-                       if (yych <= 'r') goto yy150;
-                       if (yych <= 's') goto yy631;
-                       if (yych <= 't') goto yy632;
-                       goto yy150;
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
 -#line 1256 "Zend/zend_language_scanner.l"
+               YYDEBUG(630, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 6345 "Zend/zend_language_scanner.c"
++#line 1243 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_DEFAULT);
+ }
++#line 6333 "Zend/zend_language_scanner.c"
  yy631:
                YYDEBUG(631, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -6090,45 -6363,48 +6351,48 @@@ yy633
  yy634:
                YYDEBUG(634, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'U') goto yy635;
-               if (yych != 'u') goto yy150;
+               if (yych == 'E') goto yy678;
+               if (yych == 'e') goto yy678;
+               goto yy128;
  yy635:
                YYDEBUG(635, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy636;
-               if (yych != 'e') goto yy150;
- yy636:
-               YYDEBUG(636, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(637, *YYCURSOR);
+               YYDEBUG(636, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1250 "Zend/zend_language_scanner.l"
 -#line 1292 "Zend/zend_language_scanner.l"
++#line 1279 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_CONTINUE);
+       RETURN_TOKEN(T_EXTENDS);
  }
- #line 6113 "Zend/zend_language_scanner.c"
- yy638:
-               YYDEBUG(638, *YYCURSOR);
 -#line 6382 "Zend/zend_language_scanner.c"
++#line 6370 "Zend/zend_language_scanner.c"
+ yy637:
+               YYDEBUG(637, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(639, *YYCURSOR);
+               YYDEBUG(638, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1137 "Zend/zend_language_scanner.l"
 -#line 1176 "Zend/zend_language_scanner.l"
++#line 1163 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_CONST);
+       RETURN_TOKEN(T_FINALLY);
  }
- #line 6126 "Zend/zend_language_scanner.c"
- yy640:
 -#line 6395 "Zend/zend_language_scanner.c"
++#line 6383 "Zend/zend_language_scanner.c"
+ yy639:
+               YYDEBUG(639, *YYCURSOR);
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
                YYDEBUG(640, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'S') goto yy645;
-               if (yych == 's') goto yy645;
-               goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1220 "Zend/zend_language_scanner.l"
++#line 1207 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_FOREACH);
+ }
 -#line 6408 "Zend/zend_language_scanner.c"
++#line 6396 "Zend/zend_language_scanner.c"
  yy641:
                YYDEBUG(641, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -6142,16 -6420,29 +6408,29 @@@ yy642
  yy643:
                YYDEBUG(643, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if ((yych = *YYCURSOR) <= '^') {
+                       if (yych <= '9') {
+                               if (yych >= '0') goto yy127;
+                       } else {
+                               if (yych <= '@') goto yy644;
+                               if (yych <= 'Z') goto yy127;
+                       }
+               } else {
+                       if (yych <= '`') {
+                               if (yych <= '_') goto yy683;
+                       } else {
+                               if (yych <= 'z') goto yy127;
 -                              if (yych >= 0x7F) goto yy127;
++                              if (yych >= 0x80) goto yy127;
+                       }
                }
+ yy644:
                YYDEBUG(644, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1332 "Zend/zend_language_scanner.l"
 -#line 1386 "Zend/zend_language_scanner.l"
++#line 1373 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_CLONE);
+       RETURN_TOKEN(T_INCLUDE);
  }
- #line 6155 "Zend/zend_language_scanner.c"
 -#line 6446 "Zend/zend_language_scanner.c"
++#line 6434 "Zend/zend_language_scanner.c"
  yy645:
                YYDEBUG(645, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -6173,66 -6464,83 +6452,83 @@@ yy647
  yy648:
                YYDEBUG(648, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy659;
-               if (yych == 'c') goto yy659;
-               goto yy150;
+               if (yych == 'C') goto yy687;
+               if (yych == 'c') goto yy687;
+               goto yy128;
  yy649:
                YYDEBUG(649, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy657;
-               if (yych == 'e') goto yy657;
-               goto yy150;
- yy650:
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
                YYDEBUG(650, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'L') goto yy651;
-               if (yych != 'l') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1442 "Zend/zend_language_scanner.l"
++#line 1429 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_PRIVATE);
+ }
 -#line 6483 "Zend/zend_language_scanner.c"
++#line 6471 "Zend/zend_language_scanner.c"
  yy651:
                YYDEBUG(651, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy652;
-               if (yych != 'a') goto yy150;
+               if (yych == 'E') goto yy688;
+               if (yych == 'e') goto yy688;
+               goto yy128;
  yy652:
                YYDEBUG(652, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'B') goto yy653;
-               if (yych != 'b') goto yy150;
+               ++YYCURSOR;
+               if ((yych = *YYCURSOR) <= '^') {
+                       if (yych <= '9') {
+                               if (yych >= '0') goto yy127;
+                       } else {
+                               if (yych <= '@') goto yy653;
+                               if (yych <= 'Z') goto yy127;
+                       }
+               } else {
+                       if (yych <= '`') {
+                               if (yych <= '_') goto yy689;
+                       } else {
+                               if (yych <= 'z') goto yy127;
 -                              if (yych >= 0x7F) goto yy127;
++                              if (yych >= 0x80) goto yy127;
+                       }
+               }
  yy653:
                YYDEBUG(653, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'L') goto yy654;
-               if (yych != 'l') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1394 "Zend/zend_language_scanner.l"
++#line 1381 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_REQUIRE);
+ }
 -#line 6515 "Zend/zend_language_scanner.c"
++#line 6503 "Zend/zend_language_scanner.c"
  yy654:
                YYDEBUG(654, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy655;
-               if (yych != 'e') goto yy150;
+               if (yych == 'R') goto yy690;
+               if (yych == 'r') goto yy690;
+               goto yy166;
  yy655:
                YYDEBUG(655, *YYCURSOR);
-               ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
-               }
+               yych = *++YYCURSOR;
+               if (yych == '_') goto yy691;
+               goto yy128;
+ yy656:
                YYDEBUG(656, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1456 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_CALLABLE);
- }
- #line 6223 "Zend/zend_language_scanner.c"
- yy657:
-               YYDEBUG(657, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(658, *YYCURSOR);
+               YYDEBUG(657, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1238 "Zend/zend_language_scanner.l"
 -#line 1787 "Zend/zend_language_scanner.l"
++#line 1774 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_CASE);
+       RETURN_TOKEN(T_DIR);
  }
- #line 6236 "Zend/zend_language_scanner.c"
 -#line 6539 "Zend/zend_language_scanner.c"
++#line 6527 "Zend/zend_language_scanner.c"
+ yy658:
+               YYDEBUG(658, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '_') goto yy692;
+               goto yy128;
  yy659:
                YYDEBUG(659, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -6266,79 -6573,67 +6561,67 @@@ yy663
  yy664:
                YYDEBUG(664, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'N') goto yy665;
-               if (yych != 'n') goto yy150;
+               if (yych == '_') goto yy700;
+               goto yy128;
  yy665:
                YYDEBUG(665, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'C') goto yy666;
-               if (yych != 'c') goto yy150;
- yy666:
+               ++YYCURSOR;
                YYDEBUG(666, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy667;
-               if (yych != 't') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1362 "Zend/zend_language_scanner.l"
++#line 1349 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_STRING_CAST);
+ }
 -#line 6588 "Zend/zend_language_scanner.c"
++#line 6576 "Zend/zend_language_scanner.c"
  yy667:
                YYDEBUG(667, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'I') goto yy668;
-               if (yych != 'i') goto yy150;
- yy668:
+               ++YYCURSOR;
                YYDEBUG(668, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'O') goto yy669;
-               if (yych != 'o') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1370 "Zend/zend_language_scanner.l"
++#line 1357 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_OBJECT_CAST);
+ }
 -#line 6598 "Zend/zend_language_scanner.c"
++#line 6586 "Zend/zend_language_scanner.c"
  yy669:
                YYDEBUG(669, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'N') goto yy670;
-               if (yych != 'n') goto yy150;
- yy670:
-               YYDEBUG(670, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(671, *YYCURSOR);
+               YYDEBUG(670, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1133 "Zend/zend_language_scanner.l"
 -#line 1434 "Zend/zend_language_scanner.l"
++#line 1421 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_FUNCTION);
+       RETURN_TOKEN(T_ABSTRACT);
  }
- #line 6309 "Zend/zend_language_scanner.c"
- yy672:
-               YYDEBUG(672, *YYCURSOR);
 -#line 6611 "Zend/zend_language_scanner.c"
++#line 6599 "Zend/zend_language_scanner.c"
+ yy671:
+               YYDEBUG(671, *YYCURSOR);
                ++YYCURSOR;
-               if ((yych = *YYCURSOR) <= '^') {
-                       if (yych <= '@') {
-                               if (yych <= '/') goto yy673;
-                               if (yych <= '9') goto yy149;
-                       } else {
-                               if (yych == 'E') goto yy674;
-                               if (yych <= 'Z') goto yy149;
-                       }
-               } else {
-                       if (yych <= 'd') {
-                               if (yych != '`') goto yy149;
-                       } else {
-                               if (yych <= 'e') goto yy674;
-                               if (yych <= 'z') goto yy149;
-                               if (yych >= 0x80) goto yy149;
-                       }
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
 -#line 1470 "Zend/zend_language_scanner.l"
+               YYDEBUG(672, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 6624 "Zend/zend_language_scanner.c"
++#line 1457 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_CALLABLE);
+ }
++#line 6612 "Zend/zend_language_scanner.c"
  yy673:
                YYDEBUG(673, *YYCURSOR);
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
+               YYDEBUG(674, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1198 "Zend/zend_language_scanner.l"
 -#line 1264 "Zend/zend_language_scanner.l"
++#line 1251 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_FOR);
+       RETURN_TOKEN(T_CONTINUE);
  }
- #line 6337 "Zend/zend_language_scanner.c"
- yy674:
-               YYDEBUG(674, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy675;
-               if (yych != 'a') goto yy150;
 -#line 6637 "Zend/zend_language_scanner.c"
++#line 6625 "Zend/zend_language_scanner.c"
  yy675:
                YYDEBUG(675, *YYCURSOR);
                yych = *++YYCURSOR;
  yy676:
                YYDEBUG(676, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'H') goto yy677;
-               if (yych != 'h') goto yy150;
+               if (yych == 'C') goto yy702;
+               if (yych == 'c') goto yy702;
+               goto yy128;
  yy677:
                YYDEBUG(677, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'H') goto yy703;
+               if (yych == 'h') goto yy703;
+               goto yy128;
+ yy678:
+               YYDEBUG(678, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(678, *YYCURSOR);
+               YYDEBUG(679, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1206 "Zend/zend_language_scanner.l"
 -#line 1204 "Zend/zend_language_scanner.l"
++#line 1191 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_FOREACH);
+       RETURN_TOKEN(T_ENDWHILE);
  }
- #line 6365 "Zend/zend_language_scanner.c"
- yy679:
-               YYDEBUG(679, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy680;
-               if (yych != 'a') goto yy150;
 -#line 6668 "Zend/zend_language_scanner.c"
++#line 6656 "Zend/zend_language_scanner.c"
  yy680:
                YYDEBUG(680, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'L') goto yy681;
-               if (yych != 'l') goto yy150;
- yy681:
-               YYDEBUG(681, *YYCURSOR);
                ++YYCURSOR;
-               if ((yych = *YYCURSOR) <= '^') {
-                       if (yych <= '@') {
-                               if (yych <= '/') goto yy682;
-                               if (yych <= '9') goto yy149;
-                       } else {
-                               if (yych == 'L') goto yy683;
-                               if (yych <= 'Z') goto yy149;
-                       }
-               } else {
-                       if (yych <= 'k') {
-                               if (yych != '`') goto yy149;
-                       } else {
-                               if (yych <= 'l') goto yy683;
-                               if (yych <= 'z') goto yy149;
-                               if (yych >= 0x80) goto yy149;
-                       }
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
- yy682:
-               YYDEBUG(682, *YYCURSOR);
+               YYDEBUG(681, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1424 "Zend/zend_language_scanner.l"
 -#line 1146 "Zend/zend_language_scanner.l"
++#line 1133 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_FINAL);
+       RETURN_TOKEN(T_FUNCTION);
  }
- #line 6403 "Zend/zend_language_scanner.c"
 -#line 6681 "Zend/zend_language_scanner.c"
++#line 6669 "Zend/zend_language_scanner.c"
+ yy682:
+               YYDEBUG(682, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'T') goto yy705;
+               if (yych == 't') goto yy705;
+               goto yy128;
  yy683:
                YYDEBUG(683, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -6437,46 -6711,45 +6699,45 @@@ yy686
  yy687:
                YYDEBUG(687, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy690;
-               if (yych == 'e') goto yy690;
-               goto yy150;
+               if (yych == 'E') goto yy712;
+               if (yych == 'e') goto yy712;
+               goto yy128;
  yy688:
                YYDEBUG(688, *YYCURSOR);
-               ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
-               }
+               yych = *++YYCURSOR;
+               if (yych == 'D') goto yy714;
+               if (yych == 'd') goto yy714;
+               goto yy128;
+ yy689:
                YYDEBUG(689, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1194 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_DO);
- }
- #line 6456 "Zend/zend_language_scanner.c"
+               yych = *++YYCURSOR;
+               if (yych == 'O') goto yy716;
+               if (yych == 'o') goto yy716;
+               goto yy128;
  yy690:
                YYDEBUG(690, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'O') goto yy717;
+               if (yych == 'o') goto yy717;
+               goto yy166;
+ yy691:
+               YYDEBUG(691, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '_') goto yy718;
+               goto yy128;
+ yy692:
+               YYDEBUG(692, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(691, *YYCURSOR);
+               YYDEBUG(693, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1129 "Zend/zend_language_scanner.l"
 -#line 1783 "Zend/zend_language_scanner.l"
++#line 1770 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_EXIT);
+       RETURN_TOKEN(T_FILE);
  }
- #line 6469 "Zend/zend_language_scanner.c"
- yy692:
-               YYDEBUG(692, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'L') goto yy699;
-               if (yych == 'l') goto yy699;
-               goto yy150;
- yy693:
-               YYDEBUG(693, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy694;
-               if (yych != 'a') goto yy150;
 -#line 6753 "Zend/zend_language_scanner.c"
++#line 6741 "Zend/zend_language_scanner.c"
  yy694:
                YYDEBUG(694, *YYCURSOR);
                yych = *++YYCURSOR;
  yy695:
                YYDEBUG(695, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy696;
-               if (yych != 'l') goto yy150;
+               if (yych == 'O') goto yy721;
+               if (yych == 'o') goto yy721;
+               goto yy128;
  yy696:
                YYDEBUG(696, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy697;
-               if (yych != 't') goto yy150;
- yy697:
-               YYDEBUG(697, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(698, *YYCURSOR);
+               YYDEBUG(697, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1242 "Zend/zend_language_scanner.l"
 -#line 1779 "Zend/zend_language_scanner.l"
++#line 1766 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_DEFAULT);
+       RETURN_TOKEN(T_LINE);
  }
- #line 6508 "Zend/zend_language_scanner.c"
 -#line 6778 "Zend/zend_language_scanner.c"
++#line 6766 "Zend/zend_language_scanner.c"
+ yy698:
+               YYDEBUG(698, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '_') goto yy722;
+               goto yy128;
  yy699:
                YYDEBUG(699, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -6518,27 -6794,28 +6782,28 @@@ yy700
  yy701:
                YYDEBUG(701, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy702;
-               if (yych != 'e') goto yy150;
+               if (yych == 'E') goto yy726;
+               if (yych == 'e') goto yy726;
+               goto yy128;
  yy702:
                YYDEBUG(702, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'H') goto yy728;
+               if (yych == 'h') goto yy728;
+               goto yy128;
+ yy703:
+               YYDEBUG(703, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(703, *YYCURSOR);
+               YYDEBUG(704, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1214 "Zend/zend_language_scanner.l"
 -#line 1248 "Zend/zend_language_scanner.l"
++#line 1235 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_DECLARE);
+       RETURN_TOKEN(T_ENDSWITCH);
  }
- #line 6536 "Zend/zend_language_scanner.c"
- yy704:
-               YYDEBUG(704, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'H') goto yy766;
-               if (yych == 'h') goto yy766;
-               goto yy150;
 -#line 6819 "Zend/zend_language_scanner.c"
++#line 6807 "Zend/zend_language_scanner.c"
  yy705:
                YYDEBUG(705, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -6554,100 -6831,98 +6819,98 @@@ yy706
  yy707:
                YYDEBUG(707, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'D') goto yy722;
-               if (yych == 'd') goto yy722;
-               goto yy150;
+               if (yych == 'F') goto yy733;
+               if (yych == 'f') goto yy733;
+               goto yy128;
  yy708:
                YYDEBUG(708, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy719;
-               if (yych == 'a') goto yy719;
-               goto yy150;
- yy709:
-               YYDEBUG(709, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych <= 'T') {
-                       if (yych == 'I') goto yy710;
-                       if (yych <= 'S') goto yy150;
-                       goto yy711;
-               } else {
-                       if (yych <= 'i') {
-                               if (yych <= 'h') goto yy150;
-                       } else {
-                               if (yych == 't') goto yy711;
-                               goto yy150;
-                       }
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
 -#line 1410 "Zend/zend_language_scanner.l"
+               YYDEBUG(709, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 6850 "Zend/zend_language_scanner.c"
++#line 1397 "Zend/zend_language_scanner.l"
+               {
+     RETURN_TOKEN(T_INSTEADOF);
+ }
++#line 6838 "Zend/zend_language_scanner.c"
  yy710:
                YYDEBUG(710, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy717;
-               if (yych == 't') goto yy717;
-               goto yy150;
- yy711:
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
                YYDEBUG(711, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy712;
-               if (yych != 'e') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1284 "Zend/zend_language_scanner.l"
++#line 1271 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_INTERFACE);
+ }
 -#line 6863 "Zend/zend_language_scanner.c"
++#line 6851 "Zend/zend_language_scanner.c"
  yy712:
                YYDEBUG(712, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'N') goto yy713;
-               if (yych != 'n') goto yy150;
- yy713:
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
                YYDEBUG(713, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'D') goto yy714;
-               if (yych != 'd') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1402 "Zend/zend_language_scanner.l"
++#line 1389 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_NAMESPACE);
+ }
 -#line 6876 "Zend/zend_language_scanner.c"
++#line 6864 "Zend/zend_language_scanner.c"
  yy714:
                YYDEBUG(714, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'S') goto yy715;
-               if (yych != 's') goto yy150;
- yy715:
-               YYDEBUG(715, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(716, *YYCURSOR);
+               YYDEBUG(715, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1278 "Zend/zend_language_scanner.l"
 -#line 1446 "Zend/zend_language_scanner.l"
++#line 1433 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_EXTENDS);
+       RETURN_TOKEN(T_PROTECTED);
  }
- #line 6620 "Zend/zend_language_scanner.c"
 -#line 6889 "Zend/zend_language_scanner.c"
++#line 6877 "Zend/zend_language_scanner.c"
+ yy716:
+               YYDEBUG(716, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'N') goto yy735;
+               if (yych == 'n') goto yy735;
+               goto yy128;
  yy717:
                YYDEBUG(717, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'M') goto yy736;
+               if (yych == 'm') goto yy736;
+               goto yy166;
+ yy718:
+               YYDEBUG(718, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(718, *YYCURSOR);
+               YYDEBUG(719, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1125 "Zend/zend_language_scanner.l"
 -#line 1763 "Zend/zend_language_scanner.l"
++#line 1750 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_EXIT);
+       RETURN_TOKEN(T_CLASS_C);
  }
- #line 6633 "Zend/zend_language_scanner.c"
- yy719:
-               YYDEBUG(719, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'L') goto yy720;
-               if (yych != 'l') goto yy150;
 -#line 6914 "Zend/zend_language_scanner.c"
++#line 6902 "Zend/zend_language_scanner.c"
  yy720:
                YYDEBUG(720, *YYCURSOR);
-               ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
-               }
+               yych = *++YYCURSOR;
+               if (yych == 'N') goto yy737;
+               if (yych == 'n') goto yy737;
+               goto yy128;
+ yy721:
                YYDEBUG(721, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1368 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_EVAL);
- }
- #line 6651 "Zend/zend_language_scanner.c"
+               yych = *++YYCURSOR;
+               if (yych == 'M') goto yy738;
+               if (yych == 'm') goto yy738;
+               goto yy128;
  yy722:
                YYDEBUG(722, *YYCURSOR);
                yych = *++YYCURSOR;
  yy723:
                YYDEBUG(723, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy749;
-               if (yych == 'e') goto yy749;
-               goto yy150;
+               if (yych == 'C') goto yy741;
+               if (yych == 'c') goto yy741;
+               goto yy128;
  yy724:
                YYDEBUG(724, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'O') goto yy741;
-               if (yych == 'o') goto yy741;
-               goto yy150;
- yy725:
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
                YYDEBUG(725, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'F') goto yy739;
-               if (yych == 'f') goto yy739;
-               goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1767 "Zend/zend_language_scanner.l"
++#line 1754 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_TRAIT_C);
+ }
 -#line 6950 "Zend/zend_language_scanner.c"
++#line 6938 "Zend/zend_language_scanner.c"
  yy726:
                YYDEBUG(726, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'W') goto yy733;
-               if (yych == 'w') goto yy733;
-               goto yy150;
- yy727:
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
                YYDEBUG(727, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'H') goto yy728;
-               if (yych != 'h') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1232 "Zend/zend_language_scanner.l"
++#line 1219 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_ENDDECLARE);
+ }
 -#line 6963 "Zend/zend_language_scanner.c"
++#line 6951 "Zend/zend_language_scanner.c"
  yy728:
                YYDEBUG(728, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'I') goto yy729;
-               if (yych != 'i') goto yy150;
- yy729:
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
                YYDEBUG(729, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'L') goto yy730;
-               if (yych != 'l') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1224 "Zend/zend_language_scanner.l"
++#line 1211 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_ENDFOREACH);
+ }
 -#line 6976 "Zend/zend_language_scanner.c"
++#line 6964 "Zend/zend_language_scanner.c"
  yy730:
                YYDEBUG(730, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy731;
-               if (yych != 'e') goto yy150;
- yy731:
-               YYDEBUG(731, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(732, *YYCURSOR);
+               YYDEBUG(731, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1190 "Zend/zend_language_scanner.l"
 -#line 1296 "Zend/zend_language_scanner.l"
++#line 1283 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_ENDWHILE);
+       RETURN_TOKEN(T_IMPLEMENTS);
  }
- #line 6725 "Zend/zend_language_scanner.c"
 -#line 6989 "Zend/zend_language_scanner.c"
++#line 6977 "Zend/zend_language_scanner.c"
+ yy732:
+               YYDEBUG(732, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'C') goto yy742;
+               if (yych == 'c') goto yy742;
+               goto yy128;
  yy733:
                YYDEBUG(733, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'I') goto yy734;
-               if (yych != 'i') goto yy150;
- yy734:
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
                YYDEBUG(734, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'T') goto yy735;
-               if (yych != 't') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1236 "Zend/zend_language_scanner.l"
++#line 1223 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_INSTANCEOF);
+ }
 -#line 7008 "Zend/zend_language_scanner.c"
++#line 6996 "Zend/zend_language_scanner.c"
  yy735:
                YYDEBUG(735, *YYCURSOR);
                yych = *++YYCURSOR;
                }
                YYDEBUG(740, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1178 "Zend/zend_language_scanner.l"
 -#line 1775 "Zend/zend_language_scanner.l"
++#line 1762 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_ENDIF);
+       RETURN_TOKEN(T_METHOD_C);
  }
- #line 6771 "Zend/zend_language_scanner.c"
 -#line 7060 "Zend/zend_language_scanner.c"
++#line 7048 "Zend/zend_language_scanner.c"
  yy741:
                YYDEBUG(741, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy742;
-               if (yych != 'r') goto yy150;
+               if (yych == 'E') goto yy748;
+               if (yych == 'e') goto yy748;
+               goto yy128;
  yy742:
                YYDEBUG(742, *YYCURSOR);
-               ++YYCURSOR;
-               if ((yych = *YYCURSOR) <= '^') {
-                       if (yych <= '@') {
-                               if (yych <= '/') goto yy743;
-                               if (yych <= '9') goto yy149;
-                       } else {
-                               if (yych == 'E') goto yy744;
-                               if (yych <= 'Z') goto yy149;
-                       }
-               } else {
-                       if (yych <= 'd') {
-                               if (yych != '`') goto yy149;
-                       } else {
-                               if (yych <= 'e') goto yy744;
-                               if (yych <= 'z') goto yy149;
-                               if (yych >= 0x80) goto yy149;
-                       }
-               }
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy749;
+               if (yych == 'e') goto yy749;
+               goto yy128;
  yy743:
                YYDEBUG(743, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1202 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_ENDFOR);
- }
- #line 6804 "Zend/zend_language_scanner.c"
+               yych = *++YYCURSOR;
+               if (yych == 'E') goto yy751;
+               if (yych == 'e') goto yy751;
+               goto yy128;
  yy744:
                YYDEBUG(744, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy745;
-               if (yych != 'a') goto yy150;
- yy745:
+               ++YYCURSOR;
                YYDEBUG(745, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'C') goto yy746;
-               if (yych != 'c') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1158 "Zend/zend_language_scanner.l"
++#line 1145 "Zend/zend_language_scanner.l"
+               {
+       yyless(yyleng - 1);
+       HANDLE_NEWLINES(yytext, yyleng);
+       RETURN_TOKEN(T_YIELD_FROM);
+ }
 -#line 7090 "Zend/zend_language_scanner.c"
++#line 7078 "Zend/zend_language_scanner.c"
  yy746:
                YYDEBUG(746, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'H') goto yy747;
-               if (yych != 'h') goto yy150;
+               if (yych == '_') goto yy753;
+               goto yy128;
  yy747:
                YYDEBUG(747, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'I') goto yy755;
+               if (yych == 'i') goto yy755;
+               goto yy128;
+ yy748:
+               YYDEBUG(748, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '_') goto yy756;
+               goto yy128;
+ yy749:
+               YYDEBUG(749, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(748, *YYCURSOR);
+               YYDEBUG(750, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1210 "Zend/zend_language_scanner.l"
 -#line 1390 "Zend/zend_language_scanner.l"
++#line 1377 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_ENDFOREACH);
+       RETURN_TOKEN(T_INCLUDE_ONCE);
  }
- #line 6832 "Zend/zend_language_scanner.c"
- yy749:
-               YYDEBUG(749, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'C') goto yy750;
-               if (yych != 'c') goto yy150;
- yy750:
-               YYDEBUG(750, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'L') goto yy751;
-               if (yych != 'l') goto yy150;
 -#line 7119 "Zend/zend_language_scanner.c"
++#line 7107 "Zend/zend_language_scanner.c"
  yy751:
                YYDEBUG(751, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'A') goto yy752;
-               if (yych != 'a') goto yy150;
- yy752:
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
+               }
                YYDEBUG(752, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'R') goto yy753;
-               if (yych != 'r') goto yy150;
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1398 "Zend/zend_language_scanner.l"
++#line 1385 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_REQUIRE_ONCE);
+ }
 -#line 7132 "Zend/zend_language_scanner.c"
++#line 7120 "Zend/zend_language_scanner.c"
  yy753:
                YYDEBUG(753, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'E') goto yy754;
-               if (yych != 'e') goto yy150;
- yy754:
-               YYDEBUG(754, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
-               YYDEBUG(755, *YYCURSOR);
+               YYDEBUG(754, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1218 "Zend/zend_language_scanner.l"
 -#line 1771 "Zend/zend_language_scanner.l"
++#line 1758 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_ENDDECLARE);
+       RETURN_TOKEN(T_FUNC_C);
  }
- #line 6870 "Zend/zend_language_scanner.c"
 -#line 7145 "Zend/zend_language_scanner.c"
++#line 7133 "Zend/zend_language_scanner.c"
+ yy755:
+               YYDEBUG(755, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == 'L') goto yy757;
+               if (yych == 'l') goto yy757;
+               goto yy128;
  yy756:
                YYDEBUG(756, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -6885,11 -7167,11 +7155,11 @@@ yy758
                }
                YYDEBUG(759, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1408 "Zend/zend_language_scanner.l"
 -#line 1791 "Zend/zend_language_scanner.l"
++#line 1778 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_EMPTY);
+       RETURN_TOKEN(T_NS_C);
  }
- #line 6893 "Zend/zend_language_scanner.c"
 -#line 7175 "Zend/zend_language_scanner.c"
++#line 7163 "Zend/zend_language_scanner.c"
  yy760:
                YYDEBUG(760, *YYCURSOR);
                yych = *++YYCURSOR;
  yy761:
                YYDEBUG(761, *YYCURSOR);
                ++YYCURSOR;
-               if ((yych = *YYCURSOR) <= '^') {
-                       if (yych <= '@') {
-                               if (yych <= '/') goto yy762;
-                               if (yych <= '9') goto yy149;
-                       } else {
-                               if (yych == 'I') goto yy763;
-                               if (yych <= 'Z') goto yy149;
-                       }
-               } else {
-                       if (yych <= 'h') {
-                               if (yych != '`') goto yy149;
-                       } else {
-                               if (yych <= 'i') goto yy763;
-                               if (yych <= 'z') goto yy149;
-                               if (yych >= 0x80) goto yy149;
-                       }
+               if (yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy127;
                }
- yy762:
                YYDEBUG(762, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1182 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_ELSE);
- }
- #line 6926 "Zend/zend_language_scanner.c"
- yy763:
-               YYDEBUG(763, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'F') goto yy764;
-               if (yych != 'f') goto yy150;
- yy764:
-               YYDEBUG(764, *YYCURSOR);
-               ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
-               }
-               YYDEBUG(765, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1174 "Zend/zend_language_scanner.l"
-               {
-       RETURN_TOKEN(T_ELSEIF);
- }
- #line 6944 "Zend/zend_language_scanner.c"
- yy766:
-               YYDEBUG(766, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'O') goto yy767;
-               if (yych != 'o') goto yy150;
- yy767:
-               YYDEBUG(767, *YYCURSOR);
-               ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy149;
-               }
-               YYDEBUG(768, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1258 "Zend/zend_language_scanner.l"
 -#line 1426 "Zend/zend_language_scanner.l"
++#line 1413 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_ECHO);
+       RETURN_TOKEN(T_HALT_COMPILER);
  }
- #line 6962 "Zend/zend_language_scanner.c"
 -#line 7193 "Zend/zend_language_scanner.c"
++#line 7181 "Zend/zend_language_scanner.c"
        }
  /* *********************************** */
  yyc_ST_LOOKING_FOR_PROPERTY:
        {
                static const unsigned char yybm[] = {
                          0,   0,   0,   0,   0,   0,   0,   0, 
-                         0, 128, 128,   0,   0, 128,   0,   0, 
+                         0,  64,  64,   0,   0,  64,   0,   0, 
                          0,   0,   0,   0,   0,   0,   0,   0, 
                          0,   0,   0,   0,   0,   0,   0,   0, 
-                       128,   0,   0,   0,   0,   0,   0,   0, 
+                        64,   0,   0,   0,   0,   0,   0,   0, 
                          0,   0,   0,   0,   0,   0,   0,   0, 
-                        64,  64,  64,  64,  64,  64,  64,  64, 
-                        64,  64,   0,   0,   0,   0,   0,   0, 
-                         0,  64,  64,  64,  64,  64,  64,  64, 
-                        64,  64,  64,  64,  64,  64,  64,  64, 
-                        64,  64,  64,  64,  64,  64,  64,  64, 
-                        64,  64,  64,   0,   0,   0,   0,  64, 
-                         0,  64,  64,  64,  64,  64,  64,  64, 
-                        64,  64,  64,  64,  64,  64,  64,  64, 
-                        64,  64,  64,  64,  64,  64,  64,  64, 
-                        64,  64,  64,   0,   0,   0,   0,   0, 
-                        64,  64,  64,  64,  64,  64,  64,  64, 
-                        64,  64,  64,  64,  64,  64,  64,  64, 
-                        64,  64,  64,  64,  64,  64,  64,  64, 
-                        64,  64,  64,  64,  64,  64,  64,  64, 
-                        64,  64,  64,  64,  64,  64,  64,  64, 
-                        64,  64,  64,  64,  64,  64,  64,  64, 
-                        64,  64,  64,  64,  64,  64,  64,  64, 
-                        64,  64,  64,  64,  64,  64,  64,  64, 
-                        64,  64,  64,  64,  64,  64,  64,  64, 
-                        64,  64,  64,  64,  64,  64,  64,  64, 
-                        64,  64,  64,  64,  64,  64,  64,  64, 
-                        64,  64,  64,  64,  64,  64,  64,  64, 
-                        64,  64,  64,  64,  64,  64,  64,  64, 
-                        64,  64,  64,  64,  64,  64,  64,  64, 
-                        64,  64,  64,  64,  64,  64,  64,  64, 
-                        64,  64,  64,  64,  64,  64,  64,  64, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128,   0,   0,   0,   0,   0,   0, 
+                         0, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128,   0,   0,   0,   0, 128, 
+                         0, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
 -                      128, 128, 128,   0,   0,   0,   0, 128, 
++                      128, 128, 128,   0,   0,   0,   0,   0, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
+                       128, 128, 128, 128, 128, 128, 128, 128, 
                };
-               YYDEBUG(769, *YYCURSOR);
+               YYDEBUG(763, *YYCURSOR);
                YYFILL(2);
                yych = *YYCURSOR;
-               if (yych <= '-') {
-                       if (yych <= '\r') {
-                               if (yych <= 0x08) goto yy777;
-                               if (yych <= '\n') goto yy771;
-                               if (yych <= '\f') goto yy777;
+               if (yybm[0+yych] & 64) {
+                       goto yy767;
+               }
+               if (yych <= '^') {
+                       if (yych <= '-') {
+                               if (yych >= '-') goto yy770;
                        } else {
-                               if (yych == ' ') goto yy771;
-                               if (yych <= ',') goto yy777;
-                               goto yy773;
+                               if (yych <= '@') goto yy765;
+                               if (yych <= 'Z') goto yy771;
                        }
                } else {
-                       if (yych <= '_') {
-                               if (yych <= '@') goto yy777;
-                               if (yych <= 'Z') goto yy775;
-                               if (yych <= '^') goto yy777;
-                               goto yy775;
+                       if (yych <= '`') {
+                               if (yych <= '_') goto yy771;
                        } else {
-                               if (yych <= '`') goto yy777;
-                               if (yych <= 'z') goto yy775;
-                               if (yych <= 0x7F) goto yy777;
-                               goto yy775;
+                               if (yych <= 'z') goto yy771;
 -                              if (yych >= 0x7F) goto yy771;
++                              if (yych >= 0x80) goto yy771;
                        }
                }
- yy771:
-               YYDEBUG(771, *YYCURSOR);
-               ++YYCURSOR;
-               yych = *YYCURSOR;
-               goto yy783;
- yy772:
-               YYDEBUG(772, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1291 "Zend/zend_language_scanner.l"
-               {
-       HANDLE_NEWLINES(yytext, yyleng);
-       RETURN_TOKEN(T_WHITESPACE);
- }
- #line 7040 "Zend/zend_language_scanner.c"
- yy773:
-               YYDEBUG(773, *YYCURSOR);
+ yy765:
+               YYDEBUG(765, *YYCURSOR);
                ++YYCURSOR;
-               if ((yych = *YYCURSOR) == '>') goto yy780;
- yy774:
-               YYDEBUG(774, *YYCURSOR);
+ yy766:
+               YYDEBUG(766, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1306 "Zend/zend_language_scanner.l"
 -#line 1320 "Zend/zend_language_scanner.l"
++#line 1307 "Zend/zend_language_scanner.l"
                {
        yyless(0);
        yy_pop_state();
-       goto restart;
- }
- #line 7054 "Zend/zend_language_scanner.c"
- yy775:
-               YYDEBUG(775, *YYCURSOR);
-               ++YYCURSOR;
-               yych = *YYCURSOR;
-               goto yy779;
- yy776:
-               YYDEBUG(776, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1300 "Zend/zend_language_scanner.l"
-               {
-       yy_pop_state();
-       zend_copy_value(zendlval, yytext, yyleng);
-       RETURN_TOKEN(T_STRING);
+       goto restart;
  }
- #line 7069 "Zend/zend_language_scanner.c"
- yy777:
-               YYDEBUG(777, *YYCURSOR);
-               yych = *++YYCURSOR;
-               goto yy774;
- yy778:
-               YYDEBUG(778, *YYCURSOR);
 -#line 7265 "Zend/zend_language_scanner.c"
++#line 7253 "Zend/zend_language_scanner.c"
+ yy767:
+               YYDEBUG(767, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
- yy779:
-               YYDEBUG(779, *YYCURSOR);
+               YYDEBUG(768, *YYCURSOR);
                if (yybm[0+yych] & 64) {
-                       goto yy778;
+                       goto yy767;
                }
-               goto yy776;
- yy780:
-               YYDEBUG(780, *YYCURSOR);
-               ++YYCURSOR;
-               YYDEBUG(781, *YYCURSOR);
+               YYDEBUG(769, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1296 "Zend/zend_language_scanner.l"
 -#line 1305 "Zend/zend_language_scanner.l"
++#line 1292 "Zend/zend_language_scanner.l"
                {
-       RETURN_TOKEN(T_OBJECT_OPERATOR);
+       HANDLE_NEWLINES(yytext, yyleng);
+       RETURN_TOKEN(T_WHITESPACE);
  }
- #line 7094 "Zend/zend_language_scanner.c"
- yy782:
-               YYDEBUG(782, *YYCURSOR);
 -#line 7282 "Zend/zend_language_scanner.c"
++#line 7270 "Zend/zend_language_scanner.c"
+ yy770:
+               YYDEBUG(770, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych == '>') goto yy774;
+               goto yy766;
+ yy771:
+               YYDEBUG(771, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
- yy783:
-               YYDEBUG(783, *YYCURSOR);
+               YYDEBUG(772, *YYCURSOR);
                if (yybm[0+yych] & 128) {
-                       goto yy782;
+                       goto yy771;
                }
-               goto yy772;
+               YYDEBUG(773, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1314 "Zend/zend_language_scanner.l"
++#line 1301 "Zend/zend_language_scanner.l"
+               {
+       yy_pop_state();
+       zend_copy_value(zendlval, yytext, yyleng);
+       RETURN_TOKEN(T_STRING);
+ }
 -#line 7305 "Zend/zend_language_scanner.c"
++#line 7293 "Zend/zend_language_scanner.c"
+ yy774:
+               YYDEBUG(774, *YYCURSOR);
+               ++YYCURSOR;
+               YYDEBUG(775, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1310 "Zend/zend_language_scanner.l"
++#line 1297 "Zend/zend_language_scanner.l"
+               {
+       RETURN_TOKEN(T_OBJECT_OPERATOR);
+ }
 -#line 7315 "Zend/zend_language_scanner.c"
++#line 7303 "Zend/zend_language_scanner.c"
        }
  /* *********************************** */
  yyc_ST_LOOKING_FOR_VARNAME:
                YYFILL(2);
                yych = *YYCURSOR;
                if (yych <= '_') {
-                       if (yych <= '@') goto yy788;
-                       if (yych <= 'Z') goto yy786;
-                       if (yych <= '^') goto yy788;
+                       if (yych <= '@') goto yy778;
+                       if (yych <= 'Z') goto yy780;
+                       if (yych >= '_') goto yy780;
                } else {
-                       if (yych <= '`') goto yy788;
-                       if (yych <= 'z') goto yy786;
-                       if (yych <= 0x7F) goto yy788;
+                       if (yych <= '`') goto yy778;
+                       if (yych <= 'z') goto yy780;
 -                      if (yych >= 0x7F) goto yy780;
++                      if (yych >= 0x80) goto yy780;
                }
- yy786:
-               YYDEBUG(786, *YYCURSOR);
-               yyaccept = 0;
+ yy778:
+               YYDEBUG(778, *YYCURSOR);
+               ++YYCURSOR;
+ yy779:
+               YYDEBUG(779, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1625 "Zend/zend_language_scanner.l"
++#line 1612 "Zend/zend_language_scanner.l"
+               {
+       yyless(0);
+       yy_pop_state();
+       yy_push_state(ST_IN_SCRIPTING);
+       goto restart;
+ }
 -#line 7379 "Zend/zend_language_scanner.c"
++#line 7367 "Zend/zend_language_scanner.c"
+ yy780:
+               YYDEBUG(780, *YYCURSOR);
                yych = *(YYMARKER = ++YYCURSOR);
                if (yych <= '_') {
                        if (yych <= '@') {
                        }
                } else {
                        if (yych <= '|') {
-                               if (yych <= '`') goto yy787;
-                               if (yych <= 'z') goto yy790;
+                               if (yych <= '`') goto yy779;
+                               if (yych <= 'z') goto yy782;
+                               goto yy779;
                        } else {
-                               if (yych <= '}') goto yy790;
-                               if (yych >= 0x80) goto yy790;
 -                              if (yych == '~') goto yy779;
++                              if (yych <= '}') goto yy782;
++                              if (yych <= 0x7F) goto yy779;
+                               goto yy782;
                        }
                }
- yy787:
-               YYDEBUG(787, *YYCURSOR);
-               yyleng = YYCURSOR - SCNG(yy_text);
- #line 1611 "Zend/zend_language_scanner.l"
-               {
-       yyless(0);
-       yy_pop_state();
-       yy_push_state(ST_IN_SCRIPTING);
-       goto restart;
- }
- #line 7187 "Zend/zend_language_scanner.c"
- yy788:
-               YYDEBUG(788, *YYCURSOR);
-               yych = *++YYCURSOR;
-               goto yy787;
- yy789:
-               YYDEBUG(789, *YYCURSOR);
+ yy781:
+               YYDEBUG(781, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
- yy790:
-               YYDEBUG(790, *YYCURSOR);
+ yy782:
+               YYDEBUG(782, *YYCURSOR);
                if (yybm[0+yych] & 128) {
-                       goto yy789;
+                       goto yy781;
                }
-               if (yych == '[') goto yy792;
-               if (yych == '}') goto yy792;
-               YYDEBUG(791, *YYCURSOR);
+               if (yych <= '@') goto yy783;
+               if (yych <= '[') goto yy784;
+               if (yych == '}') goto yy784;
+ yy783:
+               YYDEBUG(783, *YYCURSOR);
                YYCURSOR = YYMARKER;
-               goto yy787;
- yy792:
-               YYDEBUG(792, *YYCURSOR);
+               goto yy779;
+ yy784:
+               YYDEBUG(784, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(793, *YYCURSOR);
+               YYDEBUG(785, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1602 "Zend/zend_language_scanner.l"
 -#line 1616 "Zend/zend_language_scanner.l"
++#line 1603 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        zend_copy_value(zendlval, yytext, yyleng);
        yy_push_state(ST_IN_SCRIPTING);
        RETURN_TOKEN(T_STRING_VARNAME);
  }
- #line 7220 "Zend/zend_language_scanner.c"
 -#line 7433 "Zend/zend_language_scanner.c"
++#line 7422 "Zend/zend_language_scanner.c"
        }
  /* *********************************** */
  yyc_ST_NOWDOC:
-       YYDEBUG(794, *YYCURSOR);
+       YYDEBUG(786, *YYCURSOR);
        YYFILL(1);
        yych = *YYCURSOR;
-       YYDEBUG(796, *YYCURSOR);
+       YYDEBUG(788, *YYCURSOR);
        ++YYCURSOR;
-       YYDEBUG(797, *YYCURSOR);
+       YYDEBUG(789, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
- #line 2330 "Zend/zend_language_scanner.l"
 -#line 2344 "Zend/zend_language_scanner.l"
++#line 2331 "Zend/zend_language_scanner.l"
        {
        int newline = 0;
  
@@@ -7283,7 -7496,7 +7485,7 @@@ nowdoc_scan_done
        HANDLE_NEWLINES(yytext, yyleng - newline);
        RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
  }
- #line 7287 "Zend/zend_language_scanner.c"
 -#line 7500 "Zend/zend_language_scanner.c"
++#line 7489 "Zend/zend_language_scanner.c"
  /* *********************************** */
  yyc_ST_VAR_OFFSET:
        {
                          0,   0,   0,   0,   0,   0,   0,   0, 
                          0,   0,   0,   0,   0,   0,   0,   0, 
                          0,   0,   0,   0,   0,   0,   0,   0, 
-                       240, 240, 112, 112, 112, 112, 112, 112, 
-                       112, 112,   0,   0,   0,   0,   0,   0, 
-                         0,  80,  80,  80,  80,  80,  80,  16, 
-                        16,  16,  16,  16,  16,  16,  16,  16, 
-                        16,  16,  16,  16,  16,  16,  16,  16, 
-                        16,  16,  16,   0,   0,   0,   0,  16, 
-                         0,  80,  80,  80,  80,  80,  80,  16, 
-                        16,  16,  16,  16,  16,  16,  16,  16, 
-                        16,  16,  16,  16,  16,  16,  16,  16, 
-                        16,  16,  16,   0,   0,   0,   0,   0, 
-                        16,  16,  16,  16,  16,  16,  16,  16, 
-                        16,  16,  16,  16,  16,  16,  16,  16, 
-                        16,  16,  16,  16,  16,  16,  16,  16, 
-                        16,  16,  16,  16,  16,  16,  16,  16, 
-                        16,  16,  16,  16,  16,  16,  16,  16, 
-                        16,  16,  16,  16,  16,  16,  16,  16, 
-                        16,  16,  16,  16,  16,  16,  16,  16, 
-                        16,  16,  16,  16,  16,  16,  16,  16, 
-                        16,  16,  16,  16,  16,  16,  16,  16, 
-                        16,  16,  16,  16,  16,  16,  16,  16, 
-                        16,  16,  16,  16,  16,  16,  16,  16, 
-                        16,  16,  16,  16,  16,  16,  16,  16, 
-                        16,  16,  16,  16,  16,  16,  16,  16, 
-                        16,  16,  16,  16,  16,  16,  16,  16, 
-                        16,  16,  16,  16,  16,  16,  16,  16, 
-                        16,  16,  16,  16,  16,  16,  16,  16, 
+                       240, 240, 176, 176, 176, 176, 176, 176, 
+                       176, 176,   0,   0,   0,   0,   0,   0, 
+                         0, 160, 160, 160, 160, 160, 160,  32, 
+                        32,  32,  32,  32,  32,  32,  32,  32, 
+                        32,  32,  32,  32,  32,  32,  32,  32, 
+                        32,  32,  32,   0,   0,   0,   0,  32, 
+                         0, 160, 160, 160, 160, 160, 160,  32, 
+                        32,  32,  32,  32,  32,  32,  32,  32, 
+                        32,  32,  32,  32,  32,  32,  32,  32, 
 -                       32,  32,  32,   0,   0,   0,   0,  32, 
++                       32,  32,  32,   0,   0,   0,   0,   0, 
+                        32,  32,  32,  32,  32,  32,  32,  32, 
+                        32,  32,  32,  32,  32,  32,  32,  32, 
+                        32,  32,  32,  32,  32,  32,  32,  32, 
+                        32,  32,  32,  32,  32,  32,  32,  32, 
+                        32,  32,  32,  32,  32,  32,  32,  32, 
+                        32,  32,  32,  32,  32,  32,  32,  32, 
+                        32,  32,  32,  32,  32,  32,  32,  32, 
+                        32,  32,  32,  32,  32,  32,  32,  32, 
+                        32,  32,  32,  32,  32,  32,  32,  32, 
+                        32,  32,  32,  32,  32,  32,  32,  32, 
+                        32,  32,  32,  32,  32,  32,  32,  32, 
+                        32,  32,  32,  32,  32,  32,  32,  32, 
+                        32,  32,  32,  32,  32,  32,  32,  32, 
+                        32,  32,  32,  32,  32,  32,  32,  32, 
+                        32,  32,  32,  32,  32,  32,  32,  32, 
+                        32,  32,  32,  32,  32,  32,  32,  32, 
                };
-               YYDEBUG(798, *YYCURSOR);
+               YYDEBUG(790, *YYCURSOR);
                YYFILL(3);
                yych = *YYCURSOR;
 -              if (yych <= '/') {
 +              if (yych <= '0') {
                        if (yych <= ' ') {
                                if (yych <= '\f') {
-                                       if (yych <= 0x08) goto yy812;
-                                       if (yych <= '\n') goto yy808;
-                                       goto yy812;
+                                       if (yych <= 0x08) goto yy792;
+                                       if (yych <= '\n') goto yy794;
                                } else {
-                                       if (yych <= '\r') goto yy808;
-                                       if (yych <= 0x1F) goto yy812;
-                                       goto yy808;
+                                       if (yych <= '\r') goto yy794;
+                                       if (yych >= ' ') goto yy794;
                                }
                        } else {
                                if (yych <= '$') {
-                                       if (yych <= '"') goto yy807;
-                                       if (yych <= '#') goto yy808;
-                                       goto yy803;
+                                       if (yych <= '"') goto yy796;
+                                       if (yych <= '#') goto yy794;
+                                       goto yy798;
                                } else {
-                                       if (yych == '\'') goto yy808;
-                                       if (yych <= '/') goto yy807;
+                                       if (yych == '\'') goto yy794;
 -                                      goto yy796;
++                                      if (yych <= '/') goto yy796;
++                                      goto yy799;
                                }
                        }
                } else {
 -                      if (yych <= '\\') {
 -                              if (yych <= '@') {
 -                                      if (yych <= '0') goto yy799;
 +                      if (yych <= ']') {
 +                              if (yych <= 'Z') {
-                                       if (yych <= '9') goto yy802;
-                                       if (yych <= '@') goto yy807;
-                                       goto yy810;
+                                       if (yych <= '9') goto yy801;
 -                                      goto yy796;
++                                      if (yych <= '@') goto yy796;
++                                      goto yy803;
                                } else {
-                                       if (yych <= '[') goto yy807;
-                                       if (yych <= '\\') goto yy808;
-                                       goto yy805;
 -                                      if (yych <= 'Z') goto yy803;
+                                       if (yych <= '[') goto yy796;
 -                                      goto yy794;
++                                      if (yych <= '\\') goto yy794;
++                                      goto yy806;
                                }
                        } else {
 -                              if (yych <= '_') {
 -                                      if (yych <= ']') goto yy806;
 -                                      if (yych <= '^') goto yy796;
 -                                      goto yy803;
 +                              if (yych <= '`') {
-                                       if (yych == '_') goto yy810;
-                                       goto yy807;
++                                      if (yych == '_') goto yy803;
++                                      goto yy796;
                                } else {
-                                       if (yych <= 'z') goto yy810;
-                                       if (yych <= '~') goto yy807;
-                                       if (yych <= 0x7F) goto yy812;
-                                       goto yy810;
 -                                      if (yych <= '`') goto yy796;
+                                       if (yych <= 'z') goto yy803;
+                                       if (yych <= '~') goto yy796;
 -                                      goto yy803;
++                                      if (yych >= 0x80) goto yy803;
                                }
                        }
                }
-               YYDEBUG(800, *YYCURSOR);
-               yyaccept = 0;
+ yy792:
+               YYDEBUG(792, *YYCURSOR);
+               ++YYCURSOR;
+               YYDEBUG(793, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 2401 "Zend/zend_language_scanner.l"
++#line 2388 "Zend/zend_language_scanner.l"
+               {
+       if (YYCURSOR > YYLIMIT) {
+               RETURN_TOKEN(END);
+       }
+       zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
+       goto restart;
+ }
 -#line 7598 "Zend/zend_language_scanner.c"
++#line 7586 "Zend/zend_language_scanner.c"
+ yy794:
+               YYDEBUG(794, *YYCURSOR);
+               ++YYCURSOR;
+               YYDEBUG(795, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1898 "Zend/zend_language_scanner.l"
++#line 1885 "Zend/zend_language_scanner.l"
+               {
+       /* Invalid rule to return a more explicit parse error with proper line number */
+       yyless(0);
+       yy_pop_state();
+       ZVAL_NULL(zendlval);
+       RETURN_TOKEN(T_ENCAPSED_AND_WHITESPACE);
+ }
 -#line 7612 "Zend/zend_language_scanner.c"
++#line 7600 "Zend/zend_language_scanner.c"
+ yy796:
+               YYDEBUG(796, *YYCURSOR);
+               ++YYCURSOR;
+ yy797:
+               YYDEBUG(797, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1893 "Zend/zend_language_scanner.l"
++#line 1880 "Zend/zend_language_scanner.l"
+               {
 -      /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */
++      /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */
+       RETURN_TOKEN(yytext[0]);
+ }
 -#line 7624 "Zend/zend_language_scanner.c"
++#line 7612 "Zend/zend_language_scanner.c"
+ yy798:
+               YYDEBUG(798, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yych <= '_') {
+                       if (yych <= '@') goto yy797;
+                       if (yych <= 'Z') goto yy808;
+                       if (yych <= '^') goto yy797;
+                       goto yy808;
+               } else {
+                       if (yych <= '`') goto yy797;
+                       if (yych <= 'z') goto yy808;
 -                      if (yych <= '~') goto yy797;
++                      if (yych <= 0x7F) goto yy797;
+                       goto yy808;
+               }
+ yy799:
+               YYDEBUG(799, *YYCURSOR);
                yych = *(YYMARKER = ++YYCURSOR);
                if (yych <= 'W') {
                        if (yych <= '9') {
                        }
                } else {
                        if (yych <= 'b') {
-                               if (yych <= 'X') goto yy823;
-                               if (yych >= 'b') goto yy821;
+                               if (yych <= 'X') goto yy816;
+                               if (yych >= 'b') goto yy814;
                        } else {
-                               if (yych == 'x') goto yy823;
+                               if (yych == 'x') goto yy816;
                        }
                }
- yy801:
-               YYDEBUG(801, *YYCURSOR);
+ yy800:
+               YYDEBUG(800, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1719 "Zend/zend_language_scanner.l"
 -#line 1733 "Zend/zend_language_scanner.l"
++#line 1720 "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)) {
                char *end;
@@@ -7404,47 -7671,45 +7659,45 @@@ string
        }
        RETURN_TOKEN(T_NUM_STRING);
  }
- #line 7408 "Zend/zend_language_scanner.c"
- yy802:
 -#line 7675 "Zend/zend_language_scanner.c"
++#line 7663 "Zend/zend_language_scanner.c"
+ yy801:
+               YYDEBUG(801, *YYCURSOR);
+               ++YYCURSOR;
+               YYFILL(1);
+               yych = *YYCURSOR;
                YYDEBUG(802, *YYCURSOR);
-               yych = *++YYCURSOR;
-               goto yy820;
+               if (yybm[0+yych] & 16) {
+                       goto yy801;
+               }
+               goto yy800;
  yy803:
                YYDEBUG(803, *YYCURSOR);
                ++YYCURSOR;
-               if ((yych = *YYCURSOR) <= '_') {
-                       if (yych <= '@') goto yy804;
-                       if (yych <= 'Z') goto yy816;
-                       if (yych >= '_') goto yy816;
-               } else {
-                       if (yych <= '`') goto yy804;
-                       if (yych <= 'z') goto yy816;
-                       if (yych >= 0x80) goto yy816;
-               }
- yy804:
+               YYFILL(1);
+               yych = *YYCURSOR;
                YYDEBUG(804, *YYCURSOR);
+               if (yybm[0+yych] & 32) {
+                       goto yy803;
+               }
+               YYDEBUG(805, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1879 "Zend/zend_language_scanner.l"
 -#line 1906 "Zend/zend_language_scanner.l"
++#line 1893 "Zend/zend_language_scanner.l"
                {
-       /* Only '[' or '-' can be valid, but returning other tokens will allow a more explicit parse error */
-       RETURN_TOKEN(yytext[0]);
+       zend_copy_value(zendlval, yytext, yyleng);
+       RETURN_TOKEN(T_STRING);
  }
- #line 7433 "Zend/zend_language_scanner.c"
- yy805:
-               YYDEBUG(805, *YYCURSOR);
-               ++YYCURSOR;
 -#line 7702 "Zend/zend_language_scanner.c"
++#line 7690 "Zend/zend_language_scanner.c"
+ yy806:
                YYDEBUG(806, *YYCURSOR);
+               ++YYCURSOR;
+               YYDEBUG(807, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1874 "Zend/zend_language_scanner.l"
 -#line 1888 "Zend/zend_language_scanner.l"
++#line 1875 "Zend/zend_language_scanner.l"
                {
        yy_pop_state();
        RETURN_TOKEN(']');
  }
- #line 7444 "Zend/zend_language_scanner.c"
- yy807:
-               YYDEBUG(807, *YYCURSOR);
-               yych = *++YYCURSOR;
-               goto yy804;
 -#line 7713 "Zend/zend_language_scanner.c"
++#line 7701 "Zend/zend_language_scanner.c"
  yy808:
                YYDEBUG(808, *YYCURSOR);
                ++YYCURSOR;
                        }
                } else {
                        if (yych <= '`') {
-                               if (yych <= '_') goto yy816;
+                               if (yych <= '_') goto yy808;
                        } else {
-                               if (yych <= 'z') goto yy816;
-                               if (yych >= 0x80) goto yy816;
+                               if (yych <= 'z') goto yy808;
 -                              if (yych >= 0x7F) goto yy808;
++                              if (yych >= 0x80) goto yy808;
                        }
                }
- yy818:
-               YYDEBUG(818, *YYCURSOR);
+ yy810:
+               YYDEBUG(810, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1869 "Zend/zend_language_scanner.l"
 -#line 1883 "Zend/zend_language_scanner.l"
++#line 1870 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        RETURN_TOKEN(T_VARIABLE);
  }
- #line 7532 "Zend/zend_language_scanner.c"
- yy819:
-               YYDEBUG(819, *YYCURSOR);
-               ++YYCURSOR;
-               YYFILL(1);
-               yych = *YYCURSOR;
- yy820:
-               YYDEBUG(820, *YYCURSOR);
-               if (yybm[0+yych] & 32) {
-                       goto yy819;
-               }
-               goto yy801;
- yy821:
-               YYDEBUG(821, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yybm[0+yych] & 128) {
-                       goto yy829;
-               }
- yy822:
-               YYDEBUG(822, *YYCURSOR);
-               YYCURSOR = YYMARKER;
-               goto yy801;
- yy823:
-               YYDEBUG(823, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yybm[0+yych] & 64) {
-                       goto yy827;
-               }
-               goto yy822;
- yy824:
-               YYDEBUG(824, *YYCURSOR);
 -#line 7743 "Zend/zend_language_scanner.c"
++#line 7731 "Zend/zend_language_scanner.c"
+ yy811:
+               YYDEBUG(811, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(825, *YYCURSOR);
-               if (yych <= '/') goto yy826;
-               if (yych <= '9') goto yy824;
- yy826:
-               YYDEBUG(826, *YYCURSOR);
+               YYDEBUG(812, *YYCURSOR);
+               if (yych <= '/') goto yy813;
+               if (yych <= '9') goto yy811;
+ yy813:
+               YYDEBUG(813, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1735 "Zend/zend_language_scanner.l"
 -#line 1749 "Zend/zend_language_scanner.l"
++#line 1736 "Zend/zend_language_scanner.l"
                { /* Offset must be treated as a string */
        ZVAL_STRINGL(zendlval, yytext, yyleng);
        RETURN_TOKEN(T_NUM_STRING);
  }
- #line 7577 "Zend/zend_language_scanner.c"
- yy827:
-               YYDEBUG(827, *YYCURSOR);
 -#line 7760 "Zend/zend_language_scanner.c"
++#line 7748 "Zend/zend_language_scanner.c"
+ yy814:
+               YYDEBUG(814, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yybm[0+yych] & 64) {
+                       goto yy817;
+               }
+ yy815:
+               YYDEBUG(815, *YYCURSOR);
+               YYCURSOR = YYMARKER;
+               goto yy800;
+ yy816:
+               YYDEBUG(816, *YYCURSOR);
+               yych = *++YYCURSOR;
+               if (yybm[0+yych] & 128) {
+                       goto yy819;
+               }
+               goto yy815;
+ yy817:
+               YYDEBUG(817, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
@@@ -7589,13 -7789,13 +7777,13 @@@ yy819
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(830, *YYCURSOR);
+               YYDEBUG(820, *YYCURSOR);
                if (yybm[0+yych] & 128) {
-                       goto yy829;
+                       goto yy819;
                }
-               goto yy826;
+               goto yy813;
        }
  }
- #line 2396 "Zend/zend_language_scanner.l"
 -#line 2410 "Zend/zend_language_scanner.l"
++#line 2397 "Zend/zend_language_scanner.l"
  
  }
Simple merge