]> granicus.if.org Git - php/commitdiff
Merge remote-tracking branch 'php-src/master' into addGeneratorsSupport
authorNikita Popov <nikic@php.net>
Mon, 13 Aug 2012 14:51:41 +0000 (16:51 +0200)
committerNikita Popov <nikic@php.net>
Mon, 13 Aug 2012 14:54:53 +0000 (16:54 +0200)
This is just an intial merge. It does not yet make generators and finally
work together.

Conflicts:
Zend/zend_language_scanner.c
Zend/zend_language_scanner_defs.h
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
Zend/zend_vm_execute.skl
Zend/zend_vm_opcodes.h

14 files changed:
1  2 
Zend/zend_compile.c
Zend/zend_compile.h
Zend/zend_execute.c
Zend/zend_language_parser.y
Zend/zend_language_scanner.c
Zend/zend_language_scanner.l
Zend/zend_language_scanner_defs.h
Zend/zend_opcode.c
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
Zend/zend_vm_execute.skl
Zend/zend_vm_opcodes.h
configure.in
win32/build/config.w32

Simple merge
Simple merge
Simple merge
Simple merge
index e20fc19581a2e30b2361d883f7e00da9c7e1c36f,f4289c3800026cce695622fb8fbd8f5bc4b4aed2..bcf1055ce75f836e18e5b97d7890be65975819c8
@@@ -1,4 -1,4 +1,4 @@@
- /* Generated by re2c 0.13.5 on Sat Jun 16 12:57:03 2012 */
 -/* Generated by re2c 0.13.5 on Tue Jul 24 17:16:42 2012 */
++/* Generated by re2c 0.13.5 on Mon Aug 13 16:40:42 2012 */
  #line 1 "Zend/zend_language_scanner.l"
  /*
     +----------------------------------------------------------------------+
@@@ -1097,7 -1097,7 +1097,7 @@@ yyc_INITIAL
  yy3:
                YYDEBUG(3, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1795 "Zend/zend_language_scanner.l"
++#line 1799 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@@ -1175,7 -1175,7 +1175,7 @@@ yy5
  yy6:
                YYDEBUG(6, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1783 "Zend/zend_language_scanner.l"
++#line 1787 "Zend/zend_language_scanner.l"
                {
        if (CG(short_tags)) {
                zendlval->value.str.val = yytext; /* no copying - intentional */
@@@ -1194,7 -1194,7 +1194,7 @@@ yy7
                if ((yych = *YYCURSOR) == '=') goto yy43;
                YYDEBUG(8, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1760 "Zend/zend_language_scanner.l"
++#line 1764 "Zend/zend_language_scanner.l"
                {
        if (CG(asp_tags)) {
                zendlval->value.str.val = yytext; /* no copying - intentional */
@@@ -1392,7 -1392,7 +1392,7 @@@ yy35
                ++YYCURSOR;
                YYDEBUG(38, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1720 "Zend/zend_language_scanner.l"
++#line 1724 "Zend/zend_language_scanner.l"
                {
        YYCTYPE *bracket = (YYCTYPE*)zend_memrchr(yytext, '<', yyleng - (sizeof("script language=php>") - 1));
  
@@@ -1436,7 -1436,7 +1436,7 @@@ yy43
                ++YYCURSOR;
                YYDEBUG(44, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1738 "Zend/zend_language_scanner.l"
++#line 1742 "Zend/zend_language_scanner.l"
                {
        if (CG(asp_tags)) {
                zendlval->value.str.val = yytext; /* no copying - intentional */
@@@ -1454,7 -1454,7 +1454,7 @@@ yy45
                ++YYCURSOR;
                YYDEBUG(46, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1751 "Zend/zend_language_scanner.l"
++#line 1755 "Zend/zend_language_scanner.l"
                {
        zendlval->value.str.val = yytext; /* no copying - intentional */
        zendlval->value.str.len = yyleng;
@@@ -1489,7 -1489,7 +1489,7 @@@ yy50
  yy51:
                YYDEBUG(51, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1773 "Zend/zend_language_scanner.l"
++#line 1777 "Zend/zend_language_scanner.l"
                {
        zendlval->value.str.val = yytext; /* no copying - intentional */
        zendlval->value.str.len = yyleng;
@@@ -1569,7 -1569,7 +1569,7 @@@ yyc_ST_BACKQUOTE
  yy56:
                YYDEBUG(56, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 2246 "Zend/zend_language_scanner.l"
++#line 2250 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@@ -1621,7 -1621,7 +1621,7 @@@ yy58
                ++YYCURSOR;
                YYDEBUG(59, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 2190 "Zend/zend_language_scanner.l"
++#line 2194 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        return '`';
@@@ -1636,7 -1636,7 +1636,7 @@@ yy61
                ++YYCURSOR;
                YYDEBUG(62, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 2177 "Zend/zend_language_scanner.l"
++#line 2181 "Zend/zend_language_scanner.l"
                {
        zendlval->value.lval = (long) '{';
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@@ -1659,7 -1659,7 +1659,7 @@@ yy63
  yy65:
                YYDEBUG(65, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1877 "Zend/zend_language_scanner.l"
++#line 1881 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
@@@ -1671,7 -1671,7 +1671,7 @@@ yy66
                ++YYCURSOR;
                YYDEBUG(67, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1453 "Zend/zend_language_scanner.l"
++#line 1457 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC);
        return T_DOLLAR_OPEN_CURLY_BRACES;
@@@ -1690,7 -1690,7 +1690,7 @@@ yy70
                ++YYCURSOR;
                YYDEBUG(71, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1869 "Zend/zend_language_scanner.l"
++#line 1873 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
@@@ -1716,7 -1716,7 +1716,7 @@@ yy73
                ++YYCURSOR;
                YYDEBUG(74, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1859 "Zend/zend_language_scanner.l"
++#line 1863 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
@@@ -1792,7 -1792,7 +1792,7 @@@ yy77
  yy78:
                YYDEBUG(78, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 2196 "Zend/zend_language_scanner.l"
++#line 2200 "Zend/zend_language_scanner.l"
                {
        if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) {
                YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1;
@@@ -1852,7 -1852,7 +1852,7 @@@ yy80
                ++YYCURSOR;
                YYDEBUG(81, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 2185 "Zend/zend_language_scanner.l"
++#line 2189 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        return '"';
@@@ -1867,7 -1867,7 +1867,7 @@@ yy83
                ++YYCURSOR;
                YYDEBUG(84, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 2177 "Zend/zend_language_scanner.l"
++#line 2181 "Zend/zend_language_scanner.l"
                {
        zendlval->value.lval = (long) '{';
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@@ -1890,7 -1890,7 +1890,7 @@@ yy85
  yy87:
                YYDEBUG(87, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1877 "Zend/zend_language_scanner.l"
++#line 1881 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
@@@ -1902,7 -1902,7 +1902,7 @@@ yy88
                ++YYCURSOR;
                YYDEBUG(89, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1453 "Zend/zend_language_scanner.l"
++#line 1457 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC);
        return T_DOLLAR_OPEN_CURLY_BRACES;
@@@ -1921,7 -1921,7 +1921,7 @@@ yy92
                ++YYCURSOR;
                YYDEBUG(93, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1869 "Zend/zend_language_scanner.l"
++#line 1873 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
@@@ -1947,7 -1947,7 +1947,7 @@@ yy95
                ++YYCURSOR;
                YYDEBUG(96, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1859 "Zend/zend_language_scanner.l"
++#line 1863 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
@@@ -1966,7 -1966,7 +1966,7 @@@ yyc_ST_END_HEREDOC
        ++YYCURSOR;
        YYDEBUG(100, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
--#line 2164 "Zend/zend_language_scanner.l"
++#line 2168 "Zend/zend_language_scanner.l"
        {
        YYCURSOR += CG(heredoc_len) - 1;
        yyleng = CG(heredoc_len);
@@@ -2040,7 -2040,7 +2040,7 @@@ yy103
  yy104:
                YYDEBUG(104, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 2288 "Zend/zend_language_scanner.l"
++#line 2292 "Zend/zend_language_scanner.l"
                {
        int newline = 0;
  
@@@ -2126,7 -2126,7 +2126,7 @@@ yy107
                ++YYCURSOR;
                YYDEBUG(108, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 2177 "Zend/zend_language_scanner.l"
++#line 2181 "Zend/zend_language_scanner.l"
                {
        zendlval->value.lval = (long) '{';
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@@ -2149,7 -2149,7 +2149,7 @@@ yy109
  yy111:
                YYDEBUG(111, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1877 "Zend/zend_language_scanner.l"
++#line 1881 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
@@@ -2161,7 -2161,7 +2161,7 @@@ yy112
                ++YYCURSOR;
                YYDEBUG(113, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1453 "Zend/zend_language_scanner.l"
++#line 1457 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_VARNAME TSRMLS_CC);
        return T_DOLLAR_OPEN_CURLY_BRACES;
@@@ -2180,7 -2180,7 +2180,7 @@@ yy116
                ++YYCURSOR;
                YYDEBUG(117, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1869 "Zend/zend_language_scanner.l"
++#line 1873 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
@@@ -2206,7 -2206,7 +2206,7 @@@ yy119
                ++YYCURSOR;
                YYDEBUG(120, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1859 "Zend/zend_language_scanner.l"
++#line 1863 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
@@@ -2381,23 -2379,23 +2381,23 @@@ yy123
                YYDEBUG(-1, yych);
                switch ((yych = *YYCURSOR)) {
                case 'C':
-               case 'c':       goto yy732;
 -              case 'c':       goto yy729;
++              case 'c':       goto yy735;
                case 'L':
-               case 'l':       goto yy733;
 -              case 'l':       goto yy730;
++              case 'l':       goto yy736;
                case 'M':
-               case 'm':       goto yy734;
 -              case 'm':       goto yy731;
++              case 'm':       goto yy737;
                case 'N':
-               case 'n':       goto yy735;
 -              case 'n':       goto yy732;
++              case 'n':       goto yy738;
                case 'V':
-               case 'v':       goto yy736;
 -              case 'v':       goto yy733;
++              case 'v':       goto yy739;
                case 'X':
-               case 'x':       goto yy737;
 -              case 'x':       goto yy734;
 -              default:        goto yy186;
++              case 'x':       goto yy740;
 +              default:        goto yy187;
                }
  yy124:
                YYDEBUG(124, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1900 "Zend/zend_language_scanner.l"
++#line 1904 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        zendlval->type = IS_STRING;
@@@ -2409,21 -2407,21 +2409,21 @@@ yy125
                yych = *++YYCURSOR;
                if (yych <= 'O') {
                        if (yych <= 'H') {
-                               if (yych == 'E') goto yy714;
 -                              if (yych == 'E') goto yy711;
 -                              goto yy186;
++                              if (yych == 'E') goto yy717;
 +                              goto yy187;
                        } else {
-                               if (yych <= 'I') goto yy715;
 -                              if (yych <= 'I') goto yy712;
 -                              if (yych <= 'N') goto yy186;
 -                              goto yy713;
++                              if (yych <= 'I') goto yy718;
 +                              if (yych <= 'N') goto yy187;
-                               goto yy716;
++                              goto yy719;
                        }
                } else {
                        if (yych <= 'h') {
-                               if (yych == 'e') goto yy714;
 -                              if (yych == 'e') goto yy711;
 -                              goto yy186;
++                              if (yych == 'e') goto yy717;
 +                              goto yy187;
                        } else {
-                               if (yych <= 'i') goto yy715;
-                               if (yych == 'o') goto yy716;
 -                              if (yych <= 'i') goto yy712;
 -                              if (yych == 'o') goto yy713;
 -                              goto yy186;
++                              if (yych <= 'i') goto yy718;
++                              if (yych == 'o') goto yy719;
 +                              goto yy187;
                        }
                }
  yy126:
@@@ -2583,72 -2575,72 +2583,72 @@@ yy135
                        }
                } else {
                        if (yych <= 'R') {
 -                              if (yych <= '<') goto yy525;
 -                              if (yych <= 'Q') goto yy186;
 -                              goto yy528;
 +                              if (yych <= '<') goto yy526;
 +                              if (yych <= 'Q') goto yy187;
 +                              goto yy529;
                        } else {
 -                              if (yych == 'r') goto yy528;
 -                              goto yy186;
 +                              if (yych == 'r') goto yy529;
 +                              goto yy187;
                        }
                }
 -yy135:
 -              YYDEBUG(135, *YYCURSOR);
 +yy136:
 +              YYDEBUG(136, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'O') {
 -                      if (yych == 'L') goto yy515;
 -                      if (yych <= 'N') goto yy186;
 -                      goto yy516;
 +                      if (yych == 'L') goto yy516;
 +                      if (yych <= 'N') goto yy187;
 +                      goto yy517;
                } else {
                        if (yych <= 'l') {
 -                              if (yych <= 'k') goto yy186;
 -                              goto yy515;
 +                              if (yych <= 'k') goto yy187;
 +                              goto yy516;
                        } else {
 -                              if (yych == 'o') goto yy516;
 -                              goto yy186;
 +                              if (yych == 'o') goto yy517;
 +                              goto yy187;
                        }
                }
 -yy136:
 -              YYDEBUG(136, *YYCURSOR);
 +yy137:
 +              YYDEBUG(137, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'U') {
 -                      if (yych == 'R') goto yy491;
 -                      if (yych <= 'T') goto yy186;
 -                      goto yy492;
 +                      if (yych == 'R') goto yy492;
 +                      if (yych <= 'T') goto yy187;
 +                      goto yy493;
                } else {
                        if (yych <= 'r') {
 -                              if (yych <= 'q') goto yy186;
 -                              goto yy491;
 +                              if (yych <= 'q') goto yy187;
 +                              goto yy492;
                        } else {
 -                              if (yych == 'u') goto yy492;
 -                              goto yy186;
 +                              if (yych == 'u') goto yy493;
 +                              goto yy187;
                        }
                }
 -yy137:
 -              YYDEBUG(137, *YYCURSOR);
 +yy138:
 +              YYDEBUG(138, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '<') {
 -                      if (yych == '-') goto yy487;
 +                      if (yych == '-') goto yy488;
                } else {
 -                      if (yych <= '=') goto yy485;
 -                      if (yych <= '>') goto yy489;
 +                      if (yych <= '=') goto yy486;
 +                      if (yych <= '>') goto yy490;
                }
 -yy138:
 -              YYDEBUG(138, *YYCURSOR);
 +yy139:
 +              YYDEBUG(139, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1442 "Zend/zend_language_scanner.l"
++#line 1446 "Zend/zend_language_scanner.l"
                {
        return yytext[0];
  }
 -#line 2635 "Zend/zend_language_scanner.c"
 -yy139:
 -              YYDEBUG(139, *YYCURSOR);
 -              ++YYCURSOR;
 -              yych = *YYCURSOR;
 -              goto yy484;
 +#line 2643 "Zend/zend_language_scanner.c"
  yy140:
                YYDEBUG(140, *YYCURSOR);
 +              ++YYCURSOR;
 +              yych = *YYCURSOR;
 +              goto yy485;
 +yy141:
 +              YYDEBUG(141, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1173 "Zend/zend_language_scanner.l"
++#line 1177 "Zend/zend_language_scanner.l"
                {
        zendlval->value.str.val = yytext; /* no copying - intentional */
        zendlval->value.str.len = yyleng;
        HANDLE_NEWLINES(yytext, yyleng);
        return T_WHITESPACE;
  }
 -#line 2652 "Zend/zend_language_scanner.c"
 -yy141:
 -              YYDEBUG(141, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych == ':') goto yy481;
 -              goto yy138;
 +#line 2660 "Zend/zend_language_scanner.c"
  yy142:
                YYDEBUG(142, *YYCURSOR);
 -              ++YYCURSOR;
 +              yych = *++YYCURSOR;
 +              if (yych == ':') goto yy482;
 +              goto yy139;
 +yy143:
                YYDEBUG(143, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(144, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1202 "Zend/zend_language_scanner.l"
++#line 1206 "Zend/zend_language_scanner.l"
                {
        return T_NS_SEPARATOR;
  }
@@@ -2888,29 -2884,25 +2888,29 @@@ yy165
  yy166:
                YYDEBUG(166, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == '>') goto yy205;
 -              goto yy138;
 +              goto yy139;
  yy167:
                YYDEBUG(167, *YYCURSOR);
 -              ++YYCURSOR;
 +              yych = *++YYCURSOR;
 +              if (yych == '>') goto yy206;
 +              goto yy139;
 +yy168:
                YYDEBUG(168, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(169, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1447 "Zend/zend_language_scanner.l"
++#line 1451 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        return '{';
  }
 -#line 2900 "Zend/zend_language_scanner.c"
 -yy169:
 -              YYDEBUG(169, *YYCURSOR);
 -              ++YYCURSOR;
 +#line 2908 "Zend/zend_language_scanner.c"
 +yy170:
                YYDEBUG(170, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(171, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1459 "Zend/zend_language_scanner.l"
++#line 1463 "Zend/zend_language_scanner.l"
                {
        RESET_DOC_COMMENT();
        if (!zend_stack_is_empty(&SCNG(state_stack))) {
@@@ -2943,10 -2935,10 +2943,10 @@@ yy172
                                }
                        }
                }
 -yy172:
 -              YYDEBUG(172, *YYCURSOR);
 +yy173:
 +              YYDEBUG(173, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1510 "Zend/zend_language_scanner.l"
++#line 1514 "Zend/zend_language_scanner.l"
                {
        if (yyleng < MAX_LENGTH_OF_LONG - 1) { /* Won't overflow */
                zendlval->value.lval = strtol(yytext, NULL, 0);
@@@ -2973,29 -2965,29 +2973,29 @@@ yy174
                yyaccept = 2;
                yych = *(YYMARKER = ++YYCURSOR);
                if (yych <= '9') {
 -                      if (yych == '.') goto yy187;
 -                      if (yych <= '/') goto yy172;
 -                      goto yy190;
 +                      if (yych == '.') goto yy188;
 +                      if (yych <= '/') goto yy173;
 +                      goto yy191;
                } else {
                        if (yych <= 'E') {
 -                              if (yych <= 'D') goto yy172;
 -                              goto yy192;
 +                              if (yych <= 'D') goto yy173;
 +                              goto yy193;
                        } else {
 -                              if (yych == 'e') goto yy192;
 -                              goto yy172;
 +                              if (yych == 'e') goto yy193;
 +                              goto yy173;
                        }
                }
 -yy174:
 -              YYDEBUG(174, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              goto yy186;
  yy175:
                YYDEBUG(175, *YYCURSOR);
 -              ++YYCURSOR;
 +              yych = *++YYCURSOR;
 +              goto yy187;
  yy176:
                YYDEBUG(176, *YYCURSOR);
 +              ++YYCURSOR;
 +yy177:
 +              YYDEBUG(177, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1907 "Zend/zend_language_scanner.l"
++#line 1911 "Zend/zend_language_scanner.l"
                {
        while (YYCURSOR < YYLIMIT) {
                switch (*YYCURSOR++) {
  
        return T_COMMENT;
  }
 -#line 3025 "Zend/zend_language_scanner.c"
 -yy177:
 -              YYDEBUG(177, *YYCURSOR);
 -              ++YYCURSOR;
 +#line 3033 "Zend/zend_language_scanner.c"
  yy178:
                YYDEBUG(178, *YYCURSOR);
 +              ++YYCURSOR;
 +yy179:
 +              YYDEBUG(179, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1998 "Zend/zend_language_scanner.l"
++#line 2002 "Zend/zend_language_scanner.l"
                {
        register char *s, *t;
        char *end;
        }
        return T_CONSTANT_ENCAPSED_STRING;
  }
 -#line 3100 "Zend/zend_language_scanner.c"
 -yy179:
 -              YYDEBUG(179, *YYCURSOR);
 -              ++YYCURSOR;
 +#line 3108 "Zend/zend_language_scanner.c"
  yy180:
                YYDEBUG(180, *YYCURSOR);
 +              ++YYCURSOR;
 +yy181:
 +              YYDEBUG(181, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 2067 "Zend/zend_language_scanner.l"
++#line 2071 "Zend/zend_language_scanner.l"
                {
        int bprefix = (yytext[0] != '"') ? 1 : 0;
  
        BEGIN(ST_DOUBLE_QUOTES);
        return '"';
  }
 -#line 3148 "Zend/zend_language_scanner.c"
 -yy181:
 -              YYDEBUG(181, *YYCURSOR);
 -              ++YYCURSOR;
 +#line 3156 "Zend/zend_language_scanner.c"
 +yy182:
                YYDEBUG(182, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(183, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 2158 "Zend/zend_language_scanner.l"
++#line 2162 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_BACKQUOTE);
        return '`';
  }
 -#line 3159 "Zend/zend_language_scanner.c"
 -yy183:
 -              YYDEBUG(183, *YYCURSOR);
 -              ++YYCURSOR;
 +#line 3167 "Zend/zend_language_scanner.c"
 +yy184:
                YYDEBUG(184, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(185, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 2416 "Zend/zend_language_scanner.l"
++#line 2420 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@@ -3196,16 -3188,16 +3196,16 @@@ yy188
                YYMARKER = ++YYCURSOR;
                YYFILL(3);
                yych = *YYCURSOR;
 -              YYDEBUG(188, *YYCURSOR);
 +              YYDEBUG(189, *YYCURSOR);
                if (yybm[0+yych] & 8) {
 -                      goto yy187;
 +                      goto yy188;
                }
 -              if (yych == 'E') goto yy192;
 -              if (yych == 'e') goto yy192;
 -yy189:
 -              YYDEBUG(189, *YYCURSOR);
 +              if (yych == 'E') goto yy193;
 +              if (yych == 'e') goto yy193;
 +yy190:
 +              YYDEBUG(190, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1575 "Zend/zend_language_scanner.l"
++#line 1579 "Zend/zend_language_scanner.l"
                {
        zendlval->value.dval = zend_strtod(yytext, NULL);
        zendlval->type = IS_DOUBLE;
@@@ -3297,13 -3289,13 +3297,13 @@@ yy200
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
 -              YYDEBUG(200, *YYCURSOR);
 +              YYDEBUG(201, *YYCURSOR);
                if (yybm[0+yych] & 16) {
 -                      goto yy199;
 +                      goto yy200;
                }
 -              YYDEBUG(201, *YYCURSOR);
 +              YYDEBUG(202, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1485 "Zend/zend_language_scanner.l"
++#line 1489 "Zend/zend_language_scanner.l"
                {
        char *bin = yytext + 2; /* Skip "0b" */
        int len = yyleng - 2;
@@@ -3334,13 -3326,13 +3334,13 @@@ yy203
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
 -              YYDEBUG(203, *YYCURSOR);
 +              YYDEBUG(204, *YYCURSOR);
                if (yybm[0+yych] & 32) {
 -                      goto yy202;
 +                      goto yy203;
                }
 -              YYDEBUG(204, *YYCURSOR);
 +              YYDEBUG(205, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1531 "Zend/zend_language_scanner.l"
++#line 1535 "Zend/zend_language_scanner.l"
                {
        char *hex = yytext + 2; /* Skip "0x" */
        int len = yyleng - 2;
                return T_DNUMBER;
        }
  }
 -#line 3361 "Zend/zend_language_scanner.c"
 -yy205:
 -              YYDEBUG(205, *YYCURSOR);
 -              ++YYCURSOR;
 -              if ((yych = *YYCURSOR) == '\n') goto yy207;
 -              if (yych == '\r') goto yy208;
 +#line 3369 "Zend/zend_language_scanner.c"
  yy206:
                YYDEBUG(206, *YYCURSOR);
 +              ++YYCURSOR;
 +              if ((yych = *YYCURSOR) == '\n') goto yy208;
 +              if (yych == '\r') goto yy209;
 +yy207:
 +              YYDEBUG(207, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1975 "Zend/zend_language_scanner.l"
++#line 1979 "Zend/zend_language_scanner.l"
                {
        zendlval->value.str.val = yytext; /* no copying - intentional */
        zendlval->value.str.len = yyleng;
                        }
                } else {
                        if (yych <= '`') {
 -                              if (yych <= '_') goto yy209;
 +                              if (yych <= '_') goto yy210;
                        } else {
 -                              if (yych <= 'z') goto yy209;
 -                              if (yych >= 0x7F) goto yy209;
 +                              if (yych <= 'z') goto yy210;
 +                              if (yych >= 0x7F) goto yy210;
                        }
                }
 -yy211:
 -              YYDEBUG(211, *YYCURSOR);
 +yy212:
 +              YYDEBUG(212, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1877 "Zend/zend_language_scanner.l"
++#line 1881 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
        return T_VARIABLE;
  }
 -#line 3418 "Zend/zend_language_scanner.c"
 -yy212:
 -              YYDEBUG(212, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych == 'R') goto yy213;
 -              if (yych != 'r') goto yy186;
 +#line 3426 "Zend/zend_language_scanner.c"
  yy213:
                YYDEBUG(213, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'R') goto yy214;
 +              if (yych != 'r') goto yy187;
 +yy214:
 +              YYDEBUG(214, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(214, *YYCURSOR);
 +              YYDEBUG(215, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1430 "Zend/zend_language_scanner.l"
++#line 1434 "Zend/zend_language_scanner.l"
                {
        return T_LOGICAL_XOR;
  }
 -#line 3436 "Zend/zend_language_scanner.c"
 -yy215:
 -              YYDEBUG(215, *YYCURSOR);
 +#line 3444 "Zend/zend_language_scanner.c"
 +yy216:
 +              YYDEBUG(216, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(216, *YYCURSOR);
 +              YYDEBUG(217, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1422 "Zend/zend_language_scanner.l"
++#line 1426 "Zend/zend_language_scanner.l"
                {
        return T_LOGICAL_OR;
  }
 -#line 3449 "Zend/zend_language_scanner.c"
 -yy217:
 -              YYDEBUG(217, *YYCURSOR);
 -              ++YYCURSOR;
 +#line 3457 "Zend/zend_language_scanner.c"
 +yy218:
                YYDEBUG(218, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(219, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1410 "Zend/zend_language_scanner.l"
++#line 1414 "Zend/zend_language_scanner.l"
                {
        return T_XOR_EQUAL;
  }
 -#line 3459 "Zend/zend_language_scanner.c"
 -yy219:
 -              YYDEBUG(219, *YYCURSOR);
 -              ++YYCURSOR;
 +#line 3467 "Zend/zend_language_scanner.c"
 +yy220:
                YYDEBUG(220, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(221, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1414 "Zend/zend_language_scanner.l"
++#line 1418 "Zend/zend_language_scanner.l"
                {
        return T_BOOLEAN_OR;
  }
 -#line 3469 "Zend/zend_language_scanner.c"
 -yy221:
 -              YYDEBUG(221, *YYCURSOR);
 -              ++YYCURSOR;
 +#line 3477 "Zend/zend_language_scanner.c"
 +yy222:
                YYDEBUG(222, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(223, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1406 "Zend/zend_language_scanner.l"
++#line 1410 "Zend/zend_language_scanner.l"
                {
        return T_OR_EQUAL;
  }
 -#line 3479 "Zend/zend_language_scanner.c"
 -yy223:
 -              YYDEBUG(223, *YYCURSOR);
 -              ++YYCURSOR;
 +#line 3487 "Zend/zend_language_scanner.c"
 +yy224:
                YYDEBUG(224, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(225, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1418 "Zend/zend_language_scanner.l"
++#line 1422 "Zend/zend_language_scanner.l"
                {
        return T_BOOLEAN_AND;
  }
 -#line 3489 "Zend/zend_language_scanner.c"
 -yy225:
 -              YYDEBUG(225, *YYCURSOR);
 -              ++YYCURSOR;
 +#line 3497 "Zend/zend_language_scanner.c"
 +yy226:
                YYDEBUG(226, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(227, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1402 "Zend/zend_language_scanner.l"
++#line 1406 "Zend/zend_language_scanner.l"
                {
        return T_AND_EQUAL;
  }
 -#line 3499 "Zend/zend_language_scanner.c"
 -yy227:
 -              YYDEBUG(227, *YYCURSOR);
 -              ++YYCURSOR;
 -              if ((yych = *YYCURSOR) == '\n') goto yy231;
 -              if (yych == '\r') goto yy232;
 +#line 3507 "Zend/zend_language_scanner.c"
  yy228:
                YYDEBUG(228, *YYCURSOR);
 +              ++YYCURSOR;
 +              if ((yych = *YYCURSOR) == '\n') goto yy232;
 +              if (yych == '\r') goto yy233;
 +yy229:
 +              YYDEBUG(229, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1984 "Zend/zend_language_scanner.l"
++#line 1988 "Zend/zend_language_scanner.l"
                {
        if (CG(asp_tags)) {
                BEGIN(INITIAL);
                return yytext[0];
        }
  }
 -#line 3521 "Zend/zend_language_scanner.c"
 -yy229:
 -              YYDEBUG(229, *YYCURSOR);
 -              ++YYCURSOR;
 +#line 3529 "Zend/zend_language_scanner.c"
 +yy230:
                YYDEBUG(230, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(231, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1390 "Zend/zend_language_scanner.l"
++#line 1394 "Zend/zend_language_scanner.l"
                {
        return T_MOD_EQUAL;
  }
@@@ -3551,35 -3543,35 +3551,35 @@@ yy234
                YYMARKER = ++YYCURSOR;
                YYFILL(3);
                yych = *YYCURSOR;
 -              YYDEBUG(234, *YYCURSOR);
 +              YYDEBUG(235, *YYCURSOR);
                if (yych <= 'D') {
 -                      if (yych <= '/') goto yy189;
 -                      if (yych <= '9') goto yy233;
 -                      goto yy189;
 +                      if (yych <= '/') goto yy190;
 +                      if (yych <= '9') goto yy234;
 +                      goto yy190;
                } else {
 -                      if (yych <= 'E') goto yy192;
 -                      if (yych == 'e') goto yy192;
 -                      goto yy189;
 +                      if (yych <= 'E') goto yy193;
 +                      if (yych == 'e') goto yy193;
 +                      goto yy190;
                }
 -yy235:
 -              YYDEBUG(235, *YYCURSOR);
 -              ++YYCURSOR;
 +yy236:
                YYDEBUG(236, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(237, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1386 "Zend/zend_language_scanner.l"
++#line 1390 "Zend/zend_language_scanner.l"
                {
        return T_CONCAT_EQUAL;
  }
 -#line 3566 "Zend/zend_language_scanner.c"
 -yy237:
 -              YYDEBUG(237, *YYCURSOR);
 -              yyaccept = 4;
 -              yych = *(YYMARKER = ++YYCURSOR);
 -              if (yych == '*') goto yy242;
 +#line 3574 "Zend/zend_language_scanner.c"
  yy238:
                YYDEBUG(238, *YYCURSOR);
 +              yyaccept = 4;
 +              yych = *(YYMARKER = ++YYCURSOR);
 +              if (yych == '*') goto yy243;
 +yy239:
 +              YYDEBUG(239, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1941 "Zend/zend_language_scanner.l"
++#line 1945 "Zend/zend_language_scanner.l"
                {
        int doc_com;
  
  
        return T_COMMENT;
  }
 -#line 3609 "Zend/zend_language_scanner.c"
 -yy239:
 -              YYDEBUG(239, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              goto yy176;
 +#line 3617 "Zend/zend_language_scanner.c"
  yy240:
                YYDEBUG(240, *YYCURSOR);
 -              ++YYCURSOR;
 +              yych = *++YYCURSOR;
 +              goto yy177;
 +yy241:
                YYDEBUG(241, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(242, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1382 "Zend/zend_language_scanner.l"
++#line 1386 "Zend/zend_language_scanner.l"
                {
        return T_DIV_EQUAL;
  }
@@@ -3640,90 -3632,90 +3640,90 @@@ yy244
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
 -              YYDEBUG(244, *YYCURSOR);
 +              YYDEBUG(245, *YYCURSOR);
                if (yybm[0+yych] & 64) {
 -                      goto yy243;
 +                      goto yy244;
                }
 -              goto yy238;
 -yy245:
 -              YYDEBUG(245, *YYCURSOR);
 -              ++YYCURSOR;
 +              goto yy239;
 +yy246:
                YYDEBUG(246, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(247, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1378 "Zend/zend_language_scanner.l"
++#line 1382 "Zend/zend_language_scanner.l"
                {
        return T_MUL_EQUAL;
  }
 -#line 3650 "Zend/zend_language_scanner.c"
 -yy247:
 -              YYDEBUG(247, *YYCURSOR);
 -              ++YYCURSOR;
 -              if ((yych = *YYCURSOR) == '=') goto yy251;
 +#line 3658 "Zend/zend_language_scanner.c"
 +yy248:
                YYDEBUG(248, *YYCURSOR);
 +              ++YYCURSOR;
 +              if ((yych = *YYCURSOR) == '=') goto yy252;
 +              YYDEBUG(249, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1438 "Zend/zend_language_scanner.l"
++#line 1442 "Zend/zend_language_scanner.l"
                {
        return T_SR;
  }
 -#line 3661 "Zend/zend_language_scanner.c"
 -yy249:
 -              YYDEBUG(249, *YYCURSOR);
 -              ++YYCURSOR;
 +#line 3669 "Zend/zend_language_scanner.c"
 +yy250:
                YYDEBUG(250, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(251, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1366 "Zend/zend_language_scanner.l"
++#line 1370 "Zend/zend_language_scanner.l"
                {
        return T_IS_GREATER_OR_EQUAL;
  }
 -#line 3671 "Zend/zend_language_scanner.c"
 -yy251:
 -              YYDEBUG(251, *YYCURSOR);
 -              ++YYCURSOR;
 +#line 3679 "Zend/zend_language_scanner.c"
 +yy252:
                YYDEBUG(252, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(253, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1398 "Zend/zend_language_scanner.l"
++#line 1402 "Zend/zend_language_scanner.l"
                {
        return T_SR_EQUAL;
  }
 -#line 3681 "Zend/zend_language_scanner.c"
 -yy253:
 -              YYDEBUG(253, *YYCURSOR);
 -              yyaccept = 5;
 -              yych = *(YYMARKER = ++YYCURSOR);
 -              if (yych <= ';') goto yy254;
 -              if (yych <= '<') goto yy269;
 -              if (yych <= '=') goto yy267;
 +#line 3689 "Zend/zend_language_scanner.c"
  yy254:
                YYDEBUG(254, *YYCURSOR);
 +              yyaccept = 5;
 +              yych = *(YYMARKER = ++YYCURSOR);
 +              if (yych <= ';') goto yy255;
 +              if (yych <= '<') goto yy270;
 +              if (yych <= '=') goto yy268;
 +yy255:
 +              YYDEBUG(255, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1434 "Zend/zend_language_scanner.l"
++#line 1438 "Zend/zend_language_scanner.l"
                {
        return T_SL;
  }
 -#line 3696 "Zend/zend_language_scanner.c"
 -yy255:
 -              YYDEBUG(255, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych == 'S') goto yy260;
 -              if (yych == 's') goto yy260;
 -              goto yy193;
 +#line 3704 "Zend/zend_language_scanner.c"
  yy256:
                YYDEBUG(256, *YYCURSOR);
 -              ++YYCURSOR;
 +              yych = *++YYCURSOR;
 +              if (yych == 'S') goto yy261;
 +              if (yych == 's') goto yy261;
 +              goto yy194;
 +yy257:
                YYDEBUG(257, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(258, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1362 "Zend/zend_language_scanner.l"
++#line 1366 "Zend/zend_language_scanner.l"
                {
        return T_IS_SMALLER_OR_EQUAL;
  }
 -#line 3712 "Zend/zend_language_scanner.c"
 -yy258:
 -              YYDEBUG(258, *YYCURSOR);
 -              ++YYCURSOR;
 +#line 3720 "Zend/zend_language_scanner.c"
  yy259:
                YYDEBUG(259, *YYCURSOR);
 +              ++YYCURSOR;
 +yy260:
 +              YYDEBUG(260, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1358 "Zend/zend_language_scanner.l"
++#line 1362 "Zend/zend_language_scanner.l"
                {
        return T_IS_NOT_EQUAL;
  }
@@@ -3758,27 -3750,27 +3758,27 @@@ yy266
                ++YYCURSOR;
                YYFILL(3);
                yych = *YYCURSOR;
 -              YYDEBUG(266, *YYCURSOR);
 +              YYDEBUG(267, *YYCURSOR);
                if (yych <= '\r') {
 -                      if (yych <= 0x08) goto yy193;
 -                      if (yych <= '\n') goto yy265;
 -                      if (yych <= '\f') goto yy193;
 -                      goto yy265;
 +                      if (yych <= 0x08) goto yy194;
 +                      if (yych <= '\n') goto yy266;
 +                      if (yych <= '\f') goto yy194;
 +                      goto yy266;
                } else {
                        if (yych <= ' ') {
 -                              if (yych <= 0x1F) goto yy193;
 -                              goto yy265;
 +                              if (yych <= 0x1F) goto yy194;
 +                              goto yy266;
                        } else {
 -                              if (yych == '>') goto yy205;
 -                              goto yy193;
 +                              if (yych == '>') goto yy206;
 +                              goto yy194;
                        }
                }
 -yy267:
 -              YYDEBUG(267, *YYCURSOR);
 -              ++YYCURSOR;
 +yy268:
                YYDEBUG(268, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(269, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1394 "Zend/zend_language_scanner.l"
++#line 1398 "Zend/zend_language_scanner.l"
                {
        return T_SL_EQUAL;
  }
@@@ -3867,27 -3859,27 +3867,27 @@@ yy277
                        }
                } else {
                        if (yych <= '`') {
 -                              if (yych == '_') goto yy275;
 -                              goto yy193;
 +                              if (yych == '_') goto yy276;
 +                              goto yy194;
                        } else {
 -                              if (yych <= 'z') goto yy275;
 -                              if (yych <= '~') goto yy193;
 -                              goto yy275;
 +                              if (yych <= 'z') goto yy276;
 +                              if (yych <= '~') goto yy194;
 +                              goto yy276;
                        }
                }
 -yy277:
 -              YYDEBUG(277, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych == '\n') goto yy278;
 -              if (yych == '\r') goto yy280;
 -              goto yy193;
  yy278:
                YYDEBUG(278, *YYCURSOR);
 -              ++YYCURSOR;
 +              yych = *++YYCURSOR;
 +              if (yych == '\n') goto yy279;
 +              if (yych == '\r') goto yy281;
 +              goto yy194;
  yy279:
                YYDEBUG(279, *YYCURSOR);
 +              ++YYCURSOR;
 +yy280:
 +              YYDEBUG(280, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 2109 "Zend/zend_language_scanner.l"
++#line 2113 "Zend/zend_language_scanner.l"
                {
        char *s;
        int bprefix = (yytext[0] != '<') ? 1 : 0;
@@@ -3959,43 -3951,43 +3959,43 @@@ yy283
                        }
                } else {
                        if (yych <= '`') {
 -                              if (yych == '_') goto yy281;
 -                              goto yy193;
 +                              if (yych == '_') goto yy282;
 +                              goto yy194;
                        } else {
 -                              if (yych <= 'z') goto yy281;
 -                              if (yych <= '~') goto yy193;
 -                              goto yy281;
 +                              if (yych <= 'z') goto yy282;
 +                              if (yych <= '~') goto yy194;
 +                              goto yy282;
                        }
                }
 -yy283:
 -              YYDEBUG(283, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych != '=') goto yy259;
 +yy284:
                YYDEBUG(284, *YYCURSOR);
 -              ++YYCURSOR;
 +              yych = *++YYCURSOR;
 +              if (yych != '=') goto yy260;
                YYDEBUG(285, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(286, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1350 "Zend/zend_language_scanner.l"
++#line 1354 "Zend/zend_language_scanner.l"
                {
        return T_IS_NOT_IDENTICAL;
  }
 -#line 3975 "Zend/zend_language_scanner.c"
 -yy286:
 -              YYDEBUG(286, *YYCURSOR);
 -              ++YYCURSOR;
 +#line 3983 "Zend/zend_language_scanner.c"
 +yy287:
                YYDEBUG(287, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(288, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1370 "Zend/zend_language_scanner.l"
++#line 1374 "Zend/zend_language_scanner.l"
                {
        return T_PLUS_EQUAL;
  }
 -#line 3985 "Zend/zend_language_scanner.c"
 -yy288:
 -              YYDEBUG(288, *YYCURSOR);
 -              ++YYCURSOR;
 +#line 3993 "Zend/zend_language_scanner.c"
 +yy289:
                YYDEBUG(289, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(290, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1338 "Zend/zend_language_scanner.l"
++#line 1342 "Zend/zend_language_scanner.l"
                {
        return T_INC;
  }
  yy291:
                YYDEBUG(291, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'T') goto yy292;
 -              if (yych != 't') goto yy186;
 +              if (yych == 'S') goto yy292;
 +              if (yych != 's') goto yy187;
  yy292:
                YYDEBUG(292, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'T') goto yy293;
 +              if (yych != 't') goto yy187;
 +yy293:
 +              YYDEBUG(293, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(293, *YYCURSOR);
 +              YYDEBUG(294, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1326 "Zend/zend_language_scanner.l"
++#line 1330 "Zend/zend_language_scanner.l"
                {
        return T_LIST;
  }
 -#line 4018 "Zend/zend_language_scanner.c"
 -yy294:
 -              YYDEBUG(294, *YYCURSOR);
 -              ++YYCURSOR;
 -              if ((yych = *YYCURSOR) == '=') goto yy298;
 +#line 4026 "Zend/zend_language_scanner.c"
 +yy295:
                YYDEBUG(295, *YYCURSOR);
 +              ++YYCURSOR;
 +              if ((yych = *YYCURSOR) == '=') goto yy299;
 +              YYDEBUG(296, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1354 "Zend/zend_language_scanner.l"
++#line 1358 "Zend/zend_language_scanner.l"
                {
        return T_IS_EQUAL;
  }
 -#line 4029 "Zend/zend_language_scanner.c"
 -yy296:
 -              YYDEBUG(296, *YYCURSOR);
 -              ++YYCURSOR;
 +#line 4037 "Zend/zend_language_scanner.c"
 +yy297:
                YYDEBUG(297, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(298, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1322 "Zend/zend_language_scanner.l"
++#line 1326 "Zend/zend_language_scanner.l"
                {
        return T_DOUBLE_ARROW;
  }
 -#line 4039 "Zend/zend_language_scanner.c"
 -yy298:
 -              YYDEBUG(298, *YYCURSOR);
 -              ++YYCURSOR;
 +#line 4047 "Zend/zend_language_scanner.c"
 +yy299:
                YYDEBUG(299, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(300, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1346 "Zend/zend_language_scanner.l"
++#line 1350 "Zend/zend_language_scanner.l"
                {
        return T_IS_IDENTICAL;
  }
@@@ -4167,23 -4164,18 +4167,23 @@@ yy315
  yy316:
                YYDEBUG(316, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych != '_') goto yy186;
 +              if (yych == 'E') goto yy317;
 +              if (yych != 'e') goto yy187;
 +yy317:
                YYDEBUG(317, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych != '_') goto yy186;
 +              if (yych != '_') goto yy187;
                YYDEBUG(318, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych != '_') goto yy187;
 +              YYDEBUG(319, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(319, *YYCURSOR);
 +              YYDEBUG(320, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1710 "Zend/zend_language_scanner.l"
++#line 1714 "Zend/zend_language_scanner.l"
                {
        if (CG(current_namespace)) {
                *zendlval = *CG(current_namespace);
  yy321:
                YYDEBUG(321, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych != '_') goto yy186;
 +              if (yych == 'R') goto yy322;
 +              if (yych != 'r') goto yy187;
 +yy322:
                YYDEBUG(322, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych != '_') goto yy186;
 +              if (yych != '_') goto yy187;
                YYDEBUG(323, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych != '_') goto yy187;
 +              YYDEBUG(324, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(324, *YYCURSOR);
 +              YYDEBUG(325, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1683 "Zend/zend_language_scanner.l"
++#line 1687 "Zend/zend_language_scanner.l"
                {
        char *filename = zend_get_compiled_filename(TSRMLS_C);
        const size_t filename_len = strlen(filename);
@@@ -4249,23 -4246,18 +4249,23 @@@ yy326
  yy327:
                YYDEBUG(327, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych != '_') goto yy186;
 +              if (yych == 'E') goto yy328;
 +              if (yych != 'e') goto yy187;
 +yy328:
                YYDEBUG(328, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych != '_') goto yy186;
 +              if (yych != '_') goto yy187;
                YYDEBUG(329, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych != '_') goto yy187;
 +              YYDEBUG(330, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(330, *YYCURSOR);
 +              YYDEBUG(331, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1665 "Zend/zend_language_scanner.l"
++#line 1669 "Zend/zend_language_scanner.l"
                {
        zendlval->value.lval = CG(zend_lineno);
        zendlval->type = IS_LONG;
@@@ -4290,23 -4287,18 +4290,23 @@@ yy334
  yy335:
                YYDEBUG(335, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych != '_') goto yy186;
 +              if (yych == 'D') goto yy336;
 +              if (yych != 'd') goto yy187;
 +yy336:
                YYDEBUG(336, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych != '_') goto yy186;
 +              if (yych != '_') goto yy187;
                YYDEBUG(337, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych != '_') goto yy187;
 +              YYDEBUG(338, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(338, *YYCURSOR);
 +              YYDEBUG(339, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1644 "Zend/zend_language_scanner.l"
++#line 1648 "Zend/zend_language_scanner.l"
                {
        const char *class_name = CG(active_class_entry) ? CG(active_class_entry)->name : NULL;
        const char *func_name = CG(active_op_array)? CG(active_op_array)->function_name : NULL;
@@@ -4362,23 -4359,18 +4362,23 @@@ yy345
  yy346:
                YYDEBUG(346, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych != '_') goto yy186;
 +              if (yych == 'N') goto yy347;
 +              if (yych != 'n') goto yy187;
 +yy347:
                YYDEBUG(347, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych != '_') goto yy186;
 +              if (yych != '_') goto yy187;
                YYDEBUG(348, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych != '_') goto yy187;
 +              YYDEBUG(349, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(349, *YYCURSOR);
 +              YYDEBUG(350, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1628 "Zend/zend_language_scanner.l"
++#line 1632 "Zend/zend_language_scanner.l"
                {
        const char *func_name = NULL;
  
  yy351:
                YYDEBUG(351, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych != '_') goto yy186;
 +              if (yych == 'E') goto yy352;
 +              if (yych != 'e') goto yy187;
 +yy352:
                YYDEBUG(352, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych != '_') goto yy186;
 +              if (yych != '_') goto yy187;
                YYDEBUG(353, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych != '_') goto yy187;
 +              YYDEBUG(354, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(354, *YYCURSOR);
 +              YYDEBUG(355, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1671 "Zend/zend_language_scanner.l"
++#line 1675 "Zend/zend_language_scanner.l"
                {
        char *filename = zend_get_compiled_filename(TSRMLS_C);
  
@@@ -4440,23 -4437,18 +4440,23 @@@ yy357
  yy358:
                YYDEBUG(358, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych != '_') goto yy186;
 +              if (yych == 'T') goto yy359;
 +              if (yych != 't') goto yy187;
 +yy359:
                YYDEBUG(359, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych != '_') goto yy186;
 +              if (yych != '_') goto yy187;
                YYDEBUG(360, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych != '_') goto yy187;
 +              YYDEBUG(361, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(361, *YYCURSOR);
 +              YYDEBUG(362, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1608 "Zend/zend_language_scanner.l"
++#line 1612 "Zend/zend_language_scanner.l"
                {
        const char *trait_name = NULL;
        
@@@ -4490,23 -4487,18 +4490,23 @@@ yy364
  yy365:
                YYDEBUG(365, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych != '_') goto yy186;
 +              if (yych == 'S') goto yy366;
 +              if (yych != 's') goto yy187;
 +yy366:
                YYDEBUG(366, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych != '_') goto yy186;
 +              if (yych != '_') goto yy187;
                YYDEBUG(367, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych != '_') goto yy187;
 +              YYDEBUG(368, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(368, *YYCURSOR);
 +              YYDEBUG(369, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1581 "Zend/zend_language_scanner.l"
++#line 1585 "Zend/zend_language_scanner.l"
                {
        const char *class_name = NULL;
        
@@@ -4580,22 -4577,17 +4580,22 @@@ yy378
  yy379:
                YYDEBUG(379, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'R') goto yy380;
 -              if (yych != 'r') goto yy186;
 +              if (yych == 'E') goto yy380;
 +              if (yych != 'e') goto yy187;
  yy380:
                YYDEBUG(380, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'R') goto yy381;
 +              if (yych != 'r') goto yy187;
 +yy381:
 +              YYDEBUG(381, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(381, *YYCURSOR);
 +              YYDEBUG(382, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1290 "Zend/zend_language_scanner.l"
++#line 1294 "Zend/zend_language_scanner.l"
                {
        return T_HALT_COMPILER;
  }
  yy383:
                YYDEBUG(383, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'E') goto yy384;
 -              if (yych != 'e') goto yy186;
 +              if (yych == 'S') goto yy387;
 +              if (yych == 's') goto yy387;
 +              goto yy187;
  yy384:
                YYDEBUG(384, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'E') goto yy385;
 +              if (yych != 'e') goto yy187;
 +yy385:
 +              YYDEBUG(385, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(385, *YYCURSOR);
 +              YYDEBUG(386, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1270 "Zend/zend_language_scanner.l"
++#line 1274 "Zend/zend_language_scanner.l"
                {
        return T_USE;
  }
  yy387:
                YYDEBUG(387, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'T') goto yy388;
 -              if (yych != 't') goto yy186;
 +              if (yych == 'E') goto yy388;
 +              if (yych != 'e') goto yy187;
  yy388:
                YYDEBUG(388, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'T') goto yy389;
 +              if (yych != 't') goto yy187;
 +yy389:
 +              YYDEBUG(389, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(389, *YYCURSOR);
 +              YYDEBUG(390, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1318 "Zend/zend_language_scanner.l"
++#line 1322 "Zend/zend_language_scanner.l"
                {
        return T_UNSET;
  }
@@@ -4805,20 -4797,20 +4805,20 @@@ yy405
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
 -yy405:
 -              YYDEBUG(405, *YYCURSOR);
 +yy406:
 +              YYDEBUG(406, *YYCURSOR);
                if (yych <= 0x1F) {
 -                      if (yych == '\t') goto yy404;
 -                      goto yy193;
 +                      if (yych == '\t') goto yy405;
 +                      goto yy194;
                } else {
 -                      if (yych <= ' ') goto yy404;
 -                      if (yych != ')') goto yy193;
 +                      if (yych <= ' ') goto yy405;
 +                      if (yych != ')') goto yy194;
                }
 -              YYDEBUG(406, *YYCURSOR);
 -              ++YYCURSOR;
                YYDEBUG(407, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(408, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1218 "Zend/zend_language_scanner.l"
++#line 1222 "Zend/zend_language_scanner.l"
                {
        return T_INT_CAST;
  }
@@@ -4854,19 -4846,19 +4854,19 @@@ yy414
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
 -              YYDEBUG(414, *YYCURSOR);
 +              YYDEBUG(415, *YYCURSOR);
                if (yych <= 0x1F) {
 -                      if (yych == '\t') goto yy413;
 -                      goto yy193;
 +                      if (yych == '\t') goto yy414;
 +                      goto yy194;
                } else {
 -                      if (yych <= ' ') goto yy413;
 -                      if (yych != ')') goto yy193;
 +                      if (yych <= ' ') goto yy414;
 +                      if (yych != ')') goto yy194;
                }
 -              YYDEBUG(415, *YYCURSOR);
 -              ++YYCURSOR;
                YYDEBUG(416, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(417, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1222 "Zend/zend_language_scanner.l"
++#line 1226 "Zend/zend_language_scanner.l"
                {
        return T_DOUBLE_CAST;
  }
@@@ -4928,19 -4920,19 +4928,19 @@@ yy428
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
 -              YYDEBUG(428, *YYCURSOR);
 +              YYDEBUG(429, *YYCURSOR);
                if (yych <= 0x1F) {
 -                      if (yych == '\t') goto yy427;
 -                      goto yy193;
 +                      if (yych == '\t') goto yy428;
 +                      goto yy194;
                } else {
 -                      if (yych <= ' ') goto yy427;
 -                      if (yych != ')') goto yy193;
 +                      if (yych <= ' ') goto yy428;
 +                      if (yych != ')') goto yy194;
                }
 -              YYDEBUG(429, *YYCURSOR);
 -              ++YYCURSOR;
                YYDEBUG(430, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(431, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1226 "Zend/zend_language_scanner.l"
++#line 1230 "Zend/zend_language_scanner.l"
                {
        return T_STRING_CAST;
  }
@@@ -4965,19 -4957,19 +4965,19 @@@ yy435
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
 -              YYDEBUG(435, *YYCURSOR);
 +              YYDEBUG(436, *YYCURSOR);
                if (yych <= 0x1F) {
 -                      if (yych == '\t') goto yy434;
 -                      goto yy193;
 +                      if (yych == '\t') goto yy435;
 +                      goto yy194;
                } else {
 -                      if (yych <= ' ') goto yy434;
 -                      if (yych != ')') goto yy193;
 +                      if (yych <= ' ') goto yy435;
 +                      if (yych != ')') goto yy194;
                }
 -              YYDEBUG(436, *YYCURSOR);
 -              ++YYCURSOR;
                YYDEBUG(437, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(438, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1230 "Zend/zend_language_scanner.l"
++#line 1234 "Zend/zend_language_scanner.l"
                {
        return T_ARRAY_CAST;
  }
@@@ -5007,19 -4999,19 +5007,19 @@@ yy443
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
 -              YYDEBUG(443, *YYCURSOR);
 +              YYDEBUG(444, *YYCURSOR);
                if (yych <= 0x1F) {
 -                      if (yych == '\t') goto yy442;
 -                      goto yy193;
 +                      if (yych == '\t') goto yy443;
 +                      goto yy194;
                } else {
 -                      if (yych <= ' ') goto yy442;
 -                      if (yych != ')') goto yy193;
 +                      if (yych <= ' ') goto yy443;
 +                      if (yych != ')') goto yy194;
                }
 -              YYDEBUG(444, *YYCURSOR);
 -              ++YYCURSOR;
                YYDEBUG(445, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(446, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1234 "Zend/zend_language_scanner.l"
++#line 1238 "Zend/zend_language_scanner.l"
                {
        return T_OBJECT_CAST;
  }
@@@ -5051,20 -5043,20 +5051,20 @@@ yy451
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
 -yy451:
 -              YYDEBUG(451, *YYCURSOR);
 +yy452:
 +              YYDEBUG(452, *YYCURSOR);
                if (yych <= 0x1F) {
 -                      if (yych == '\t') goto yy450;
 -                      goto yy193;
 +                      if (yych == '\t') goto yy451;
 +                      goto yy194;
                } else {
 -                      if (yych <= ' ') goto yy450;
 -                      if (yych != ')') goto yy193;
 +                      if (yych <= ' ') goto yy451;
 +                      if (yych != ')') goto yy194;
                }
 -              YYDEBUG(452, *YYCURSOR);
 -              ++YYCURSOR;
                YYDEBUG(453, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(454, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1238 "Zend/zend_language_scanner.l"
++#line 1242 "Zend/zend_language_scanner.l"
                {
        return T_BOOL_CAST;
  }
@@@ -5116,37 -5108,37 +5116,37 @@@ yy463
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
 -              YYDEBUG(463, *YYCURSOR);
 +              YYDEBUG(464, *YYCURSOR);
                if (yych <= 0x1F) {
 -                      if (yych == '\t') goto yy462;
 -                      goto yy193;
 +                      if (yych == '\t') goto yy463;
 +                      goto yy194;
                } else {
 -                      if (yych <= ' ') goto yy462;
 -                      if (yych != ')') goto yy193;
 +                      if (yych <= ' ') goto yy463;
 +                      if (yych != ')') goto yy194;
                }
 -              YYDEBUG(464, *YYCURSOR);
 -              ++YYCURSOR;
                YYDEBUG(465, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(466, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1242 "Zend/zend_language_scanner.l"
++#line 1246 "Zend/zend_language_scanner.l"
                {
        return T_UNSET_CAST;
  }
 -#line 5128 "Zend/zend_language_scanner.c"
 -yy466:
 -              YYDEBUG(466, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych == 'R') goto yy467;
 -              if (yych != 'r') goto yy186;
 +#line 5136 "Zend/zend_language_scanner.c"
  yy467:
                YYDEBUG(467, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'R') goto yy468;
 +              if (yych != 'r') goto yy187;
 +yy468:
 +              YYDEBUG(468, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(468, *YYCURSOR);
 +              YYDEBUG(469, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1214 "Zend/zend_language_scanner.l"
++#line 1218 "Zend/zend_language_scanner.l"
                {
        return T_VAR;
  }
  yy470:
                YYDEBUG(470, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'W') goto yy471;
 -              if (yych != 'w') goto yy186;
 +              if (yych == 'M') goto yy474;
 +              if (yych == 'm') goto yy474;
 +              goto yy187;
  yy471:
                YYDEBUG(471, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'W') goto yy472;
 +              if (yych != 'w') goto yy187;
 +yy472:
 +              YYDEBUG(472, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(472, *YYCURSOR);
 +              YYDEBUG(473, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1206 "Zend/zend_language_scanner.l"
++#line 1210 "Zend/zend_language_scanner.l"
                {
        return T_NEW;
  }
@@@ -5198,32 -5195,27 +5198,32 @@@ yy477
  yy478:
                YYDEBUG(478, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'E') goto yy479;
 -              if (yych != 'e') goto yy186;
 +              if (yych == 'C') goto yy479;
 +              if (yych != 'c') goto yy187;
  yy479:
                YYDEBUG(479, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'E') goto yy480;
 +              if (yych != 'e') goto yy187;
 +yy480:
 +              YYDEBUG(480, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(480, *YYCURSOR);
 +              YYDEBUG(481, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1266 "Zend/zend_language_scanner.l"
++#line 1270 "Zend/zend_language_scanner.l"
                {
        return T_NAMESPACE;
  }
 -#line 5213 "Zend/zend_language_scanner.c"
 -yy481:
 -              YYDEBUG(481, *YYCURSOR);
 -              ++YYCURSOR;
 +#line 5221 "Zend/zend_language_scanner.c"
 +yy482:
                YYDEBUG(482, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(483, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1198 "Zend/zend_language_scanner.l"
++#line 1202 "Zend/zend_language_scanner.l"
                {
        return T_PAAMAYIM_NEKUDOTAYIM;
  }
@@@ -5233,43 -5225,43 +5233,43 @@@ yy484
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
 -yy484:
 -              YYDEBUG(484, *YYCURSOR);
 +yy485:
 +              YYDEBUG(485, *YYCURSOR);
                if (yych <= '\f') {
 -                      if (yych <= 0x08) goto yy140;
 -                      if (yych <= '\n') goto yy483;
 -                      goto yy140;
 +                      if (yych <= 0x08) goto yy141;
 +                      if (yych <= '\n') goto yy484;
 +                      goto yy141;
                } else {
 -                      if (yych <= '\r') goto yy483;
 -                      if (yych == ' ') goto yy483;
 -                      goto yy140;
 +                      if (yych <= '\r') goto yy484;
 +                      if (yych == ' ') goto yy484;
 +                      goto yy141;
                }
 -yy485:
 -              YYDEBUG(485, *YYCURSOR);
 -              ++YYCURSOR;
 +yy486:
                YYDEBUG(486, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(487, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1374 "Zend/zend_language_scanner.l"
++#line 1378 "Zend/zend_language_scanner.l"
                {
        return T_MINUS_EQUAL;
  }
 -#line 5249 "Zend/zend_language_scanner.c"
 -yy487:
 -              YYDEBUG(487, *YYCURSOR);
 -              ++YYCURSOR;
 +#line 5257 "Zend/zend_language_scanner.c"
 +yy488:
                YYDEBUG(488, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(489, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1342 "Zend/zend_language_scanner.l"
++#line 1346 "Zend/zend_language_scanner.l"
                {
        return T_DEC;
  }
 -#line 5259 "Zend/zend_language_scanner.c"
 -yy489:
 -              YYDEBUG(489, *YYCURSOR);
 -              ++YYCURSOR;
 +#line 5267 "Zend/zend_language_scanner.c"
 +yy490:
                YYDEBUG(490, *YYCURSOR);
 +              ++YYCURSOR;
 +              YYDEBUG(491, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1168 "Zend/zend_language_scanner.l"
++#line 1172 "Zend/zend_language_scanner.l"
                {
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
        return T_OBJECT_OPERATOR;
@@@ -5304,22 -5301,17 +5304,22 @@@ yy494
  yy495:
                YYDEBUG(495, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'C') goto yy496;
 -              if (yych != 'c') goto yy186;
 +              if (yych == 'I') goto yy496;
 +              if (yych != 'i') goto yy187;
  yy496:
                YYDEBUG(496, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'C') goto yy497;
 +              if (yych != 'c') goto yy187;
 +yy497:
 +              YYDEBUG(497, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(497, *YYCURSOR);
 +              YYDEBUG(498, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1314 "Zend/zend_language_scanner.l"
++#line 1318 "Zend/zend_language_scanner.l"
                {
        return T_PUBLIC;
  }
@@@ -5363,22 -5360,17 +5363,22 @@@ yy503
  yy504:
                YYDEBUG(504, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'D') goto yy505;
 -              if (yych != 'd') goto yy186;
 +              if (yych == 'E') goto yy505;
 +              if (yych != 'e') goto yy187;
  yy505:
                YYDEBUG(505, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'D') goto yy506;
 +              if (yych != 'd') goto yy187;
 +yy506:
 +              YYDEBUG(506, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(506, *YYCURSOR);
 +              YYDEBUG(507, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1310 "Zend/zend_language_scanner.l"
++#line 1314 "Zend/zend_language_scanner.l"
                {
        return T_PROTECTED;
  }
@@@ -5397,35 -5394,30 +5397,35 @@@ yy509
  yy510:
                YYDEBUG(510, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'E') goto yy511;
 -              if (yych != 'e') goto yy186;
 +              if (yych == 'T') goto yy511;
 +              if (yych != 't') goto yy187;
  yy511:
                YYDEBUG(511, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'E') goto yy512;
 +              if (yych != 'e') goto yy187;
 +yy512:
 +              YYDEBUG(512, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(512, *YYCURSOR);
 +              YYDEBUG(513, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1306 "Zend/zend_language_scanner.l"
++#line 1310 "Zend/zend_language_scanner.l"
                {
        return T_PRIVATE;
  }
 -#line 5412 "Zend/zend_language_scanner.c"
 -yy513:
 -              YYDEBUG(513, *YYCURSOR);
 +#line 5420 "Zend/zend_language_scanner.c"
 +yy514:
 +              YYDEBUG(514, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(514, *YYCURSOR);
 +              YYDEBUG(515, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1144 "Zend/zend_language_scanner.l"
++#line 1148 "Zend/zend_language_scanner.l"
                {
        return T_PRINT;
  }
@@@ -5439,22 -5436,17 +5439,22 @@@ yy516
  yy517:
                YYDEBUG(517, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'O') goto yy518;
 -              if (yych != 'o') goto yy186;
 +              if (yych == 'T') goto yy518;
 +              if (yych != 't') goto yy187;
  yy518:
                YYDEBUG(518, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'O') goto yy519;
 +              if (yych != 'o') goto yy187;
 +yy519:
 +              YYDEBUG(519, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(519, *YYCURSOR);
 +              YYDEBUG(520, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1136 "Zend/zend_language_scanner.l"
++#line 1140 "Zend/zend_language_scanner.l"
                {
        return T_GOTO;
  }
@@@ -5467,22 -5464,17 +5467,22 @@@ yy521
  yy522:
                YYDEBUG(522, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'L') goto yy523;
 -              if (yych != 'l') goto yy186;
 +              if (yych == 'A') goto yy523;
 +              if (yych != 'a') goto yy187;
  yy523:
                YYDEBUG(523, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'L') goto yy524;
 +              if (yych != 'l') goto yy187;
 +yy524:
 +              YYDEBUG(524, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(524, *YYCURSOR);
 +              YYDEBUG(525, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1278 "Zend/zend_language_scanner.l"
++#line 1282 "Zend/zend_language_scanner.l"
                {
        return T_GLOBAL;
  }
@@@ -5508,22 -5505,17 +5508,22 @@@ yy529
  yy530:
                YYDEBUG(530, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'K') goto yy531;
 -              if (yych != 'k') goto yy186;
 +              if (yych == 'A') goto yy531;
 +              if (yych != 'a') goto yy187;
  yy531:
                YYDEBUG(531, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'K') goto yy532;
 +              if (yych != 'k') goto yy187;
 +yy532:
 +              YYDEBUG(532, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(532, *YYCURSOR);
 +              YYDEBUG(533, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1128 "Zend/zend_language_scanner.l"
++#line 1132 "Zend/zend_language_scanner.l"
                {
        return T_BREAK;
  }
@@@ -5552,22 -5549,17 +5552,22 @@@ yy537
  yy538:
                YYDEBUG(538, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'H') goto yy539;
 -              if (yych != 'h') goto yy186;
 +              if (yych == 'C') goto yy539;
 +              if (yych != 'c') goto yy187;
  yy539:
                YYDEBUG(539, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'H') goto yy540;
 +              if (yych != 'h') goto yy187;
 +yy540:
 +              YYDEBUG(540, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(540, *YYCURSOR);
 +              YYDEBUG(541, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1112 "Zend/zend_language_scanner.l"
++#line 1116 "Zend/zend_language_scanner.l"
                {
        return T_SWITCH;
  }
@@@ -5580,22 -5577,17 +5580,22 @@@ yy542
  yy543:
                YYDEBUG(543, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'C') goto yy544;
 -              if (yych != 'c') goto yy186;
 +              if (yych == 'I') goto yy544;
 +              if (yych != 'i') goto yy187;
  yy544:
                YYDEBUG(544, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'C') goto yy545;
 +              if (yych != 'c') goto yy187;
 +yy545:
 +              YYDEBUG(545, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(545, *YYCURSOR);
 +              YYDEBUG(546, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1294 "Zend/zend_language_scanner.l"
++#line 1298 "Zend/zend_language_scanner.l"
                {
        return T_STATIC;
  }
@@@ -5609,24 -5607,18 +5609,24 @@@ yy547
  yy548:
                YYDEBUG(548, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'R') goto yy551;
 -              if (yych == 'r') goto yy551;
 -              goto yy186;
 +              if (yych == 'D') goto yy556;
 +              if (yych == 'd') goto yy556;
 +              goto yy187;
  yy549:
                YYDEBUG(549, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'R') goto yy552;
 +              if (yych == 'r') goto yy552;
 +              goto yy187;
 +yy550:
 +              YYDEBUG(550, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(550, *YYCURSOR);
 +              YYDEBUG(551, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1108 "Zend/zend_language_scanner.l"
++#line 1112 "Zend/zend_language_scanner.l"
                {
        return T_AS;
  }
  yy552:
                YYDEBUG(552, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'Y') goto yy553;
 -              if (yych != 'y') goto yy186;
 +              if (yych == 'A') goto yy553;
 +              if (yych != 'a') goto yy187;
  yy553:
                YYDEBUG(553, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'Y') goto yy554;
 +              if (yych != 'y') goto yy187;
 +yy554:
 +              YYDEBUG(554, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(554, *YYCURSOR);
 +              YYDEBUG(555, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1330 "Zend/zend_language_scanner.l"
++#line 1334 "Zend/zend_language_scanner.l"
                {
        return T_ARRAY;
  }
 -#line 5649 "Zend/zend_language_scanner.c"
 -yy555:
 -              YYDEBUG(555, *YYCURSOR);
 +#line 5657 "Zend/zend_language_scanner.c"
 +yy556:
 +              YYDEBUG(556, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(556, *YYCURSOR);
 +              YYDEBUG(557, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1426 "Zend/zend_language_scanner.l"
++#line 1430 "Zend/zend_language_scanner.l"
                {
        return T_LOGICAL_AND;
  }
@@@ -5685,22 -5682,17 +5685,22 @@@ yy560
  yy561:
                YYDEBUG(561, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'T') goto yy562;
 -              if (yych != 't') goto yy186;
 +              if (yych == 'C') goto yy562;
 +              if (yych != 'c') goto yy187;
  yy562:
                YYDEBUG(562, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'T') goto yy563;
 +              if (yych != 't') goto yy187;
 +yy563:
 +              YYDEBUG(563, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(563, *YYCURSOR);
 +              YYDEBUG(564, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1298 "Zend/zend_language_scanner.l"
++#line 1302 "Zend/zend_language_scanner.l"
                {
        return T_ABSTRACT;
  }
@@@ -5713,35 -5710,30 +5713,35 @@@ yy565
  yy566:
                YYDEBUG(566, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'E') goto yy567;
 -              if (yych != 'e') goto yy186;
 +              if (yych == 'L') goto yy567;
 +              if (yych != 'l') goto yy187;
  yy567:
                YYDEBUG(567, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'E') goto yy568;
 +              if (yych != 'e') goto yy187;
 +yy568:
 +              YYDEBUG(568, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(568, *YYCURSOR);
 +              YYDEBUG(569, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1068 "Zend/zend_language_scanner.l"
++#line 1072 "Zend/zend_language_scanner.l"
                {
        return T_WHILE;
  }
 -#line 5728 "Zend/zend_language_scanner.c"
 -yy569:
 -              YYDEBUG(569, *YYCURSOR);
 +#line 5736 "Zend/zend_language_scanner.c"
 +yy570:
 +              YYDEBUG(570, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(570, *YYCURSOR);
 +              YYDEBUG(571, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1052 "Zend/zend_language_scanner.l"
++#line 1056 "Zend/zend_language_scanner.l"
                {
        return T_IF;
  }
@@@ -5782,22 -5779,17 +5782,22 @@@ yy574
  yy575:
                YYDEBUG(575, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'T') goto yy576;
 -              if (yych != 't') goto yy186;
 +              if (yych == 'E') goto yy576;
 +              if (yych != 'e') goto yy187;
  yy576:
                YYDEBUG(576, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'T') goto yy577;
 +              if (yych != 't') goto yy187;
 +yy577:
 +              YYDEBUG(577, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(577, *YYCURSOR);
 +              YYDEBUG(578, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1282 "Zend/zend_language_scanner.l"
++#line 1286 "Zend/zend_language_scanner.l"
                {
        return T_ISSET;
  }
@@@ -5846,16 -5838,16 +5846,16 @@@ yy585
                        }
                } else {
                        if (yych <= '`') {
 -                              if (yych <= '_') goto yy586;
 +                              if (yych <= '_') goto yy587;
                        } else {
 -                              if (yych <= 'z') goto yy185;
 -                              if (yych >= 0x7F) goto yy185;
 +                              if (yych <= 'z') goto yy186;
 +                              if (yych >= 0x7F) goto yy186;
                        }
                }
 -yy585:
 -              YYDEBUG(585, *YYCURSOR);
 +yy586:
 +              YYDEBUG(586, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1250 "Zend/zend_language_scanner.l"
++#line 1254 "Zend/zend_language_scanner.l"
                {
        return T_INCLUDE;
  }
@@@ -5873,22 -5870,17 +5873,22 @@@ yy588
  yy589:
                YYDEBUG(589, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'E') goto yy590;
 -              if (yych != 'e') goto yy186;
 +              if (yych == 'C') goto yy590;
 +              if (yych != 'c') goto yy187;
  yy590:
                YYDEBUG(590, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'E') goto yy591;
 +              if (yych != 'e') goto yy187;
 +yy591:
 +              YYDEBUG(591, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(591, *YYCURSOR);
 +              YYDEBUG(592, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1254 "Zend/zend_language_scanner.l"
++#line 1258 "Zend/zend_language_scanner.l"
                {
        return T_INCLUDE_ONCE;
  }
@@@ -5911,22 -5908,17 +5911,22 @@@ yy595
  yy596:
                YYDEBUG(596, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'E') goto yy597;
 -              if (yych != 'e') goto yy186;
 +              if (yych == 'C') goto yy597;
 +              if (yych != 'c') goto yy187;
  yy597:
                YYDEBUG(597, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'E') goto yy598;
 +              if (yych != 'e') goto yy187;
 +yy598:
 +              YYDEBUG(598, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(598, *YYCURSOR);
 +              YYDEBUG(599, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1152 "Zend/zend_language_scanner.l"
++#line 1156 "Zend/zend_language_scanner.l"
                {
        return T_INTERFACE;
  }
@@@ -5965,22 -5962,17 +5965,22 @@@ yy603
  yy604:
                YYDEBUG(604, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'F') goto yy605;
 -              if (yych != 'f') goto yy186;
 +              if (yych == 'O') goto yy605;
 +              if (yych != 'o') goto yy187;
  yy605:
                YYDEBUG(605, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'F') goto yy606;
 +              if (yych != 'f') goto yy187;
 +yy606:
 +              YYDEBUG(606, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(606, *YYCURSOR);
 +              YYDEBUG(607, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1274 "Zend/zend_language_scanner.l"
++#line 1278 "Zend/zend_language_scanner.l"
                {
          return T_INSTEADOF;
  }
@@@ -5998,22 -5995,17 +5998,22 @@@ yy609
  yy610:
                YYDEBUG(610, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'F') goto yy611;
 -              if (yych != 'f') goto yy186;
 +              if (yych == 'O') goto yy611;
 +              if (yych != 'o') goto yy187;
  yy611:
                YYDEBUG(611, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'F') goto yy612;
 +              if (yych != 'f') goto yy187;
 +yy612:
 +              YYDEBUG(612, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(612, *YYCURSOR);
 +              YYDEBUG(613, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1104 "Zend/zend_language_scanner.l"
++#line 1108 "Zend/zend_language_scanner.l"
                {
        return T_INSTANCEOF;
  }
@@@ -6046,22 -6043,17 +6046,22 @@@ yy618
  yy619:
                YYDEBUG(619, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'S') goto yy620;
 -              if (yych != 's') goto yy186;
 +              if (yych == 'T') goto yy620;
 +              if (yych != 't') goto yy187;
  yy620:
                YYDEBUG(620, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'S') goto yy621;
 +              if (yych != 's') goto yy187;
 +yy621:
 +              YYDEBUG(621, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(621, *YYCURSOR);
 +              YYDEBUG(622, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1164 "Zend/zend_language_scanner.l"
++#line 1168 "Zend/zend_language_scanner.l"
                {
        return T_IMPLEMENTS;
  }
@@@ -6101,22 -6098,17 +6101,22 @@@ yy624
  yy627:
                YYDEBUG(627, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'T') goto yy628;
 -              if (yych != 't') goto yy186;
 +              if (yych == 'I') goto yy628;
 +              if (yych != 'i') goto yy187;
  yy628:
                YYDEBUG(628, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'T') goto yy629;
 +              if (yych != 't') goto yy187;
 +yy629:
 +              YYDEBUG(629, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(629, *YYCURSOR);
 +              YYDEBUG(630, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1156 "Zend/zend_language_scanner.l"
++#line 1160 "Zend/zend_language_scanner.l"
                {
        return T_TRAIT;
  }
  yy631:
                YYDEBUG(631, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'W') goto yy632;
 -              if (yych != 'w') goto yy186;
 +              if (yych == 'O') goto yy632;
 +              if (yych != 'o') goto yy187;
  yy632:
                YYDEBUG(632, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'W') goto yy633;
 +              if (yych != 'w') goto yy187;
 +yy633:
 +              YYDEBUG(633, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(633, *YYCURSOR);
 +              YYDEBUG(634, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1048 "Zend/zend_language_scanner.l"
++#line 1052 "Zend/zend_language_scanner.l"
                {
        return T_THROW;
  }
@@@ -6214,29 -6224,16 +6214,29 @@@ yy645
  yy646:
                YYDEBUG(646, *YYCURSOR);
                ++YYCURSOR;
 -              if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +              if ((yych = *YYCURSOR) <= '^') {
 +                      if (yych <= '9') {
 +                              if (yych >= '0') goto yy186;
 +                      } else {
 +                              if (yych <= '@') goto yy647;
 +                              if (yych <= 'Z') goto yy186;
 +                      }
 +              } else {
 +                      if (yych <= '`') {
 +                              if (yych <= '_') goto yy648;
 +                      } else {
 +                              if (yych <= 'z') goto yy186;
 +                              if (yych >= 0x7F) goto yy186;
 +                      }
                }
 +yy647:
                YYDEBUG(647, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1258 "Zend/zend_language_scanner.l"
+ #line 1262 "Zend/zend_language_scanner.l"
                {
 -      return T_REQUIRE_ONCE;
 +      return T_REQUIRE;
  }
 -#line 6237 "Zend/zend_language_scanner.c"
 +#line 6240 "Zend/zend_language_scanner.c"
  yy648:
                YYDEBUG(648, *YYCURSOR);
                yych = *++YYCURSOR;
@@@ -6246,47 -6243,14 +6246,47 @@@ yy649
                YYDEBUG(649, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych == 'N') goto yy650;
 -              if (yych != 'n') goto yy186;
 +              if (yych != 'n') goto yy187;
  yy650:
                YYDEBUG(650, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'C') goto yy651;
 +              if (yych != 'c') goto yy187;
 +yy651:
 +              YYDEBUG(651, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'E') goto yy652;
 +              if (yych != 'e') goto yy187;
 +yy652:
 +              YYDEBUG(652, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(651, *YYCURSOR);
 +              YYDEBUG(653, *YYCURSOR);
 +              yyleng = YYCURSOR - SCNG(yy_text);
- #line 1262 "Zend/zend_language_scanner.l"
++#line 1266 "Zend/zend_language_scanner.l"
 +              {
 +      return T_REQUIRE_ONCE;
 +}
 +#line 6273 "Zend/zend_language_scanner.c"
 +yy654:
 +              YYDEBUG(654, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'R') goto yy655;
 +              if (yych != 'r') goto yy187;
 +yy655:
 +              YYDEBUG(655, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'N') goto yy656;
 +              if (yych != 'n') goto yy187;
 +yy656:
 +              YYDEBUG(656, *YYCURSOR);
 +              ++YYCURSOR;
 +              if (yybm[0+(yych = *YYCURSOR)] & 4) {
 +                      goto yy186;
 +              }
 +              YYDEBUG(657, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
  #line 1032 "Zend/zend_language_scanner.l"
                {
@@@ -6307,82 -6271,82 +6307,82 @@@ yy658
                        }
                } else {
                        if (yych <= 'r') {
 -                              if (yych == 'l') goto yy675;
 -                              goto yy186;
 +                              if (yych == 'l') goto yy681;
 +                              goto yy187;
                        } else {
 -                              if (yych <= 's') goto yy674;
 -                              if (yych <= 't') goto yy673;
 -                              goto yy186;
 +                              if (yych <= 's') goto yy680;
 +                              if (yych <= 't') goto yy679;
 +                              goto yy187;
                        }
                }
 -yy653:
 -              YYDEBUG(653, *YYCURSOR);
 +yy659:
 +              YYDEBUG(659, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'O') {
 -                      if (yych == 'A') goto yy665;
 -                      if (yych <= 'N') goto yy186;
 -                      goto yy666;
 +                      if (yych == 'A') goto yy671;
 +                      if (yych <= 'N') goto yy187;
 +                      goto yy672;
                } else {
                        if (yych <= 'a') {
 -                              if (yych <= '`') goto yy186;
 -                              goto yy665;
 +                              if (yych <= '`') goto yy187;
 +                              goto yy671;
                        } else {
 -                              if (yych == 'o') goto yy666;
 -                              goto yy186;
 +                              if (yych == 'o') goto yy672;
 +                              goto yy187;
                        }
                }
 -yy654:
 -              YYDEBUG(654, *YYCURSOR);
 +yy660:
 +              YYDEBUG(660, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'N') goto yy655;
 -              if (yych != 'n') goto yy186;
 -yy655:
 -              YYDEBUG(655, *YYCURSOR);
 +              if (yych == 'N') goto yy661;
 +              if (yych != 'n') goto yy187;
 +yy661:
 +              YYDEBUG(661, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yych <= 'T') {
 -                      if (yych <= 'R') goto yy186;
 -                      if (yych >= 'T') goto yy657;
 +                      if (yych <= 'R') goto yy187;
 +                      if (yych >= 'T') goto yy663;
                } else {
 -                      if (yych <= 'r') goto yy186;
 -                      if (yych <= 's') goto yy656;
 -                      if (yych <= 't') goto yy657;
 -                      goto yy186;
 +                      if (yych <= 'r') goto yy187;
 +                      if (yych <= 's') goto yy662;
 +                      if (yych <= 't') goto yy663;
 +                      goto yy187;
                }
 -yy656:
 -              YYDEBUG(656, *YYCURSOR);
 +yy662:
 +              YYDEBUG(662, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'T') goto yy663;
 -              if (yych == 't') goto yy663;
 -              goto yy186;
 -yy657:
 -              YYDEBUG(657, *YYCURSOR);
 +              if (yych == 'T') goto yy669;
 +              if (yych == 't') goto yy669;
 +              goto yy187;
 +yy663:
 +              YYDEBUG(663, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'I') goto yy658;
 -              if (yych != 'i') goto yy186;
 -yy658:
 -              YYDEBUG(658, *YYCURSOR);
 +              if (yych == 'I') goto yy664;
 +              if (yych != 'i') goto yy187;
 +yy664:
 +              YYDEBUG(664, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'N') goto yy659;
 -              if (yych != 'n') goto yy186;
 -yy659:
 -              YYDEBUG(659, *YYCURSOR);
 +              if (yych == 'N') goto yy665;
 +              if (yych != 'n') goto yy187;
 +yy665:
 +              YYDEBUG(665, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'U') goto yy660;
 -              if (yych != 'u') goto yy186;
 -yy660:
 -              YYDEBUG(660, *YYCURSOR);
 +              if (yych == 'U') goto yy666;
 +              if (yych != 'u') goto yy187;
 +yy666:
 +              YYDEBUG(666, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'E') goto yy661;
 -              if (yych != 'e') goto yy186;
 -yy661:
 -              YYDEBUG(661, *YYCURSOR);
 +              if (yych == 'E') goto yy667;
 +              if (yych != 'e') goto yy187;
 +yy667:
 +              YYDEBUG(667, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(662, *YYCURSOR);
 +              YYDEBUG(668, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1132 "Zend/zend_language_scanner.l"
++#line 1136 "Zend/zend_language_scanner.l"
                {
        return T_CONTINUE;
  }
@@@ -6399,50 -6363,50 +6399,50 @@@ yy669
                {
        return T_CONST;
  }
 -#line 6367 "Zend/zend_language_scanner.c"
 -yy665:
 -              YYDEBUG(665, *YYCURSOR);
 +#line 6403 "Zend/zend_language_scanner.c"
 +yy671:
 +              YYDEBUG(671, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'S') goto yy670;
 -              if (yych == 's') goto yy670;
 -              goto yy186;
 -yy666:
 -              YYDEBUG(666, *YYCURSOR);
 +              if (yych == 'S') goto yy676;
 +              if (yych == 's') goto yy676;
 +              goto yy187;
 +yy672:
 +              YYDEBUG(672, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'N') goto yy667;
 -              if (yych != 'n') goto yy186;
 -yy667:
 -              YYDEBUG(667, *YYCURSOR);
 +              if (yych == 'N') goto yy673;
 +              if (yych != 'n') goto yy187;
 +yy673:
 +              YYDEBUG(673, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'E') goto yy668;
 -              if (yych != 'e') goto yy186;
 -yy668:
 -              YYDEBUG(668, *YYCURSOR);
 +              if (yych == 'E') goto yy674;
 +              if (yych != 'e') goto yy187;
 +yy674:
 +              YYDEBUG(674, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(669, *YYCURSOR);
 +              YYDEBUG(675, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1210 "Zend/zend_language_scanner.l"
++#line 1214 "Zend/zend_language_scanner.l"
                {
        return T_CLONE;
  }
 -#line 6396 "Zend/zend_language_scanner.c"
 -yy670:
 -              YYDEBUG(670, *YYCURSOR);
 +#line 6432 "Zend/zend_language_scanner.c"
 +yy676:
 +              YYDEBUG(676, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'S') goto yy671;
 -              if (yych != 's') goto yy186;
 -yy671:
 -              YYDEBUG(671, *YYCURSOR);
 +              if (yych == 'S') goto yy677;
 +              if (yych != 's') goto yy187;
 +yy677:
 +              YYDEBUG(677, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(672, *YYCURSOR);
 +              YYDEBUG(678, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1148 "Zend/zend_language_scanner.l"
++#line 1152 "Zend/zend_language_scanner.l"
                {
        return T_CLASS;
  }
@@@ -6477,39 -6477,38 +6477,39 @@@ yy683
  yy684:
                YYDEBUG(684, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'H') goto yy685;
 -              if (yych != 'h') goto yy186;
 +              if (yych == 'L') goto yy685;
 +              if (yych != 'l') goto yy187;
  yy685:
                YYDEBUG(685, *YYCURSOR);
 +              yych = *++YYCURSOR;
 +              if (yych == 'E') goto yy686;
 +              if (yych != 'e') goto yy187;
 +yy686:
 +              YYDEBUG(686, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(686, *YYCURSOR);
 +              YYDEBUG(687, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1334 "Zend/zend_language_scanner.l"
 -#line 1040 "Zend/zend_language_scanner.l"
++#line 1338 "Zend/zend_language_scanner.l"
                {
 -      return T_CATCH;
 + return T_CALLABLE;
  }
 -#line 6495 "Zend/zend_language_scanner.c"
 -yy687:
 -              YYDEBUG(687, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych == 'N') goto yy704;
 -              if (yych == 'n') goto yy704;
 -              goto yy186;
 +#line 6500 "Zend/zend_language_scanner.c"
  yy688:
                YYDEBUG(688, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych == 'R') goto yy697;
 -              if (yych == 'r') goto yy697;
 -              goto yy186;
 -yy689:
 +              ++YYCURSOR;
 +              if (yybm[0+(yych = *YYCURSOR)] & 4) {
 +                      goto yy186;
 +              }
                YYDEBUG(689, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych == 'N') goto yy690;
 -              if (yych != 'n') goto yy186;
 +              yyleng = YYCURSOR - SCNG(yy_text);
- #line 1120 "Zend/zend_language_scanner.l"
++#line 1124 "Zend/zend_language_scanner.l"
 +              {
 +      return T_CASE;
 +}
 +#line 6513 "Zend/zend_language_scanner.c"
  yy690:
                YYDEBUG(690, *YYCURSOR);
                yych = *++YYCURSOR;
                        }
                } else {
                        if (yych <= 'd') {
 -                              if (yych != '`') goto yy185;
 +                              if (yych != '`') goto yy186;
                        } else {
 -                              if (yych <= 'e') goto yy699;
 -                              if (yych <= 'z') goto yy185;
 -                              if (yych >= 0x7F) goto yy185;
 +                              if (yych <= 'e') goto yy705;
 +                              if (yych <= 'z') goto yy186;
 +                              if (yych >= 0x7F) goto yy186;
                        }
                }
 -yy698:
 -              YYDEBUG(698, *YYCURSOR);
 +yy704:
 +              YYDEBUG(704, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1080 "Zend/zend_language_scanner.l"
++#line 1084 "Zend/zend_language_scanner.l"
                {
        return T_FOR;
  }
 -#line 6578 "Zend/zend_language_scanner.c"
 -yy699:
 -              YYDEBUG(699, *YYCURSOR);
 +#line 6614 "Zend/zend_language_scanner.c"
 +yy705:
 +              YYDEBUG(705, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'A') goto yy700;
 -              if (yych != 'a') goto yy186;
 -yy700:
 -              YYDEBUG(700, *YYCURSOR);
 +              if (yych == 'A') goto yy706;
 +              if (yych != 'a') goto yy187;
 +yy706:
 +              YYDEBUG(706, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'C') goto yy701;
 -              if (yych != 'c') goto yy186;
 -yy701:
 -              YYDEBUG(701, *YYCURSOR);
 +              if (yych == 'C') goto yy707;
 +              if (yych != 'c') goto yy187;
 +yy707:
 +              YYDEBUG(707, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'H') goto yy702;
 -              if (yych != 'h') goto yy186;
 -yy702:
 -              YYDEBUG(702, *YYCURSOR);
 +              if (yych == 'H') goto yy708;
 +              if (yych != 'h') goto yy187;
 +yy708:
 +              YYDEBUG(708, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
 -              YYDEBUG(703, *YYCURSOR);
 +              YYDEBUG(709, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1088 "Zend/zend_language_scanner.l"
++#line 1092 "Zend/zend_language_scanner.l"
                {
        return T_FOREACH;
  }
 -#line 6606 "Zend/zend_language_scanner.c"
 -yy704:
 -              YYDEBUG(704, *YYCURSOR);
 +#line 6642 "Zend/zend_language_scanner.c"
 +yy710:
 +              YYDEBUG(710, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'A') goto yy705;
 -              if (yych != 'a') goto yy186;
 -yy705:
 -              YYDEBUG(705, *YYCURSOR);
 +              if (yych == 'A') goto yy711;
 +              if (yych != 'a') goto yy187;
 +yy711:
 +              YYDEBUG(711, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'L') goto yy706;
 -              if (yych != 'l') goto yy186;
 -yy706:
 -              YYDEBUG(706, *YYCURSOR);
 +              if (yych == 'L') goto yy712;
 +              if (yych != 'l') goto yy187;
 +yy712:
 +              YYDEBUG(712, *YYCURSOR);
                ++YYCURSOR;
-               if (yybm[0+(yych = *YYCURSOR)] & 4) {
-                       goto yy186;
+               if ((yych = *YYCURSOR) <= '^') {
+                       if (yych <= '@') {
 -                              if (yych <= '/') goto yy707;
 -                              if (yych <= '9') goto yy185;
++                              if (yych <= '/') goto yy713;
++                              if (yych <= '9') goto yy186;
+                       } else {
 -                              if (yych == 'L') goto yy708;
 -                              if (yych <= 'Z') goto yy185;
++                              if (yych == 'L') goto yy714;
++                              if (yych <= 'Z') goto yy186;
+                       }
+               } else {
+                       if (yych <= 'k') {
 -                              if (yych != '`') goto yy185;
++                              if (yych != '`') goto yy186;
+                       } else {
 -                              if (yych <= 'l') goto yy708;
 -                              if (yych <= 'z') goto yy185;
 -                              if (yych >= 0x7F) goto yy185;
++                              if (yych <= 'l') goto yy714;
++                              if (yych <= 'z') goto yy186;
++                              if (yych >= 0x7F) goto yy186;
+                       }
                }
 -yy707:
 -              YYDEBUG(707, *YYCURSOR);
++yy713:
 +              YYDEBUG(713, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1302 "Zend/zend_language_scanner.l"
++#line 1306 "Zend/zend_language_scanner.l"
                {
        return T_FINAL;
  }
- #line 6665 "Zend/zend_language_scanner.c"
 -#line 6644 "Zend/zend_language_scanner.c"
 -yy708:
 -              YYDEBUG(708, *YYCURSOR);
++#line 6680 "Zend/zend_language_scanner.c"
 +yy714:
 +              YYDEBUG(714, *YYCURSOR);
                yych = *++YYCURSOR;
 -              if (yych == 'Y') goto yy709;
 -              if (yych != 'y') goto yy186;
 -yy709:
 -              YYDEBUG(709, *YYCURSOR);
++              if (yych == 'Y') goto yy715;
++              if (yych != 'y') goto yy187;
++yy715:
++              YYDEBUG(715, *YYCURSOR);
+               ++YYCURSOR;
+               if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
++                      goto yy186;
+               }
 -              YYDEBUG(710, *YYCURSOR);
++              YYDEBUG(716, *YYCURSOR);
+               yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1044 "Zend/zend_language_scanner.l"
++#line 1048 "Zend/zend_language_scanner.l"
+               {
+       return T_FINALLY;
+ }
 -#line 6662 "Zend/zend_language_scanner.c"
 -yy711:
 -              YYDEBUG(711, *YYCURSOR);
++#line 6698 "Zend/zend_language_scanner.c"
++yy717:
++              YYDEBUG(717, *YYCURSOR);
+               yych = *++YYCURSOR;
                if (yych <= 'F') {
-                       if (yych == 'C') goto yy720;
 -                      if (yych == 'C') goto yy717;
 -                      if (yych <= 'E') goto yy186;
 -                      goto yy718;
++                      if (yych == 'C') goto yy723;
 +                      if (yych <= 'E') goto yy187;
-                       goto yy721;
++                      goto yy724;
                } else {
                        if (yych <= 'c') {
 -                              if (yych <= 'b') goto yy186;
 -                              goto yy717;
 +                              if (yych <= 'b') goto yy187;
-                               goto yy720;
++                              goto yy723;
                        } else {
-                               if (yych == 'f') goto yy721;
 -                              if (yych == 'f') goto yy718;
 -                              goto yy186;
++                              if (yych == 'f') goto yy724;
 +                              goto yy187;
                        }
                }
- yy715:
-               YYDEBUG(715, *YYCURSOR);
 -yy712:
 -              YYDEBUG(712, *YYCURSOR);
++yy718:
++              YYDEBUG(718, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy718;
-               if (yych == 'e') goto yy718;
 -              if (yych == 'E') goto yy715;
 -              if (yych == 'e') goto yy715;
 -              goto yy186;
 -yy713:
 -              YYDEBUG(713, *YYCURSOR);
++              if (yych == 'E') goto yy721;
++              if (yych == 'e') goto yy721;
 +              goto yy187;
- yy716:
-               YYDEBUG(716, *YYCURSOR);
++yy719:
++              YYDEBUG(719, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
-               YYDEBUG(717, *YYCURSOR);
 -              YYDEBUG(714, *YYCURSOR);
++              YYDEBUG(720, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1076 "Zend/zend_language_scanner.l"
++#line 1080 "Zend/zend_language_scanner.l"
                {
        return T_DO;
  }
- #line 6700 "Zend/zend_language_scanner.c"
- yy718:
-               YYDEBUG(718, *YYCURSOR);
 -#line 6697 "Zend/zend_language_scanner.c"
 -yy715:
 -              YYDEBUG(715, *YYCURSOR);
++#line 6733 "Zend/zend_language_scanner.c"
++yy721:
++              YYDEBUG(721, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
-               YYDEBUG(719, *YYCURSOR);
 -              YYDEBUG(716, *YYCURSOR);
++              YYDEBUG(722, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
  #line 1020 "Zend/zend_language_scanner.l"
                {
        return T_EXIT;
  }
- #line 6713 "Zend/zend_language_scanner.c"
 -#line 6710 "Zend/zend_language_scanner.c"
 -yy717:
 -              YYDEBUG(717, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych == 'L') goto yy724;
 -              if (yych == 'l') goto yy724;
 -              goto yy186;
 -yy718:
 -              YYDEBUG(718, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych == 'A') goto yy719;
 -              if (yych != 'a') goto yy186;
 -yy719:
 -              YYDEBUG(719, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych == 'U') goto yy720;
 -              if (yych != 'u') goto yy186;
--yy720:
--              YYDEBUG(720, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych == 'L') goto yy721;
 -              if (yych != 'l') goto yy186;
 -yy721:
 -              YYDEBUG(721, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych == 'T') goto yy722;
 -              if (yych != 't') goto yy186;
 -yy722:
 -              YYDEBUG(722, *YYCURSOR);
 -              ++YYCURSOR;
 -              if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 -              }
++#line 6746 "Zend/zend_language_scanner.c"
++yy723:
+               YYDEBUG(723, *YYCURSOR);
 -              yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1124 "Zend/zend_language_scanner.l"
 -              {
 -      return T_DEFAULT;
 -}
 -#line 6749 "Zend/zend_language_scanner.c"
 +              yych = *++YYCURSOR;
-               if (yych == 'L') goto yy727;
-               if (yych == 'l') goto yy727;
++              if (yych == 'L') goto yy730;
++              if (yych == 'l') goto yy730;
 +              goto yy187;
- yy721:
-               YYDEBUG(721, *YYCURSOR);
+ yy724:
+               YYDEBUG(724, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy722;
+               if (yych == 'A') goto yy725;
 -              if (yych != 'a') goto yy186;
 +              if (yych != 'a') goto yy187;
- yy722:
-               YYDEBUG(722, *YYCURSOR);
+ yy725:
+               YYDEBUG(725, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'U') goto yy723;
 -              if (yych == 'R') goto yy726;
 -              if (yych != 'r') goto yy186;
++              if (yych == 'U') goto yy726;
 +              if (yych != 'u') goto yy187;
- yy723:
-               YYDEBUG(723, *YYCURSOR);
+ yy726:
+               YYDEBUG(726, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy724;
 -              if (yych == 'E') goto yy727;
 -              if (yych != 'e') goto yy186;
++              if (yych == 'L') goto yy727;
 +              if (yych != 'l') goto yy187;
- yy724:
-               YYDEBUG(724, *YYCURSOR);
+ yy727:
+               YYDEBUG(727, *YYCURSOR);
 +              yych = *++YYCURSOR;
-               if (yych == 'T') goto yy725;
++              if (yych == 'T') goto yy728;
 +              if (yych != 't') goto yy187;
- yy725:
-               YYDEBUG(725, *YYCURSOR);
++yy728:
++              YYDEBUG(728, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
-               YYDEBUG(726, *YYCURSOR);
 -              YYDEBUG(728, *YYCURSOR);
++              YYDEBUG(729, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1124 "Zend/zend_language_scanner.l"
 -#line 1096 "Zend/zend_language_scanner.l"
++#line 1128 "Zend/zend_language_scanner.l"
                {
 -      return T_DECLARE;
 +      return T_DEFAULT;
  }
- #line 6752 "Zend/zend_language_scanner.c"
- yy727:
-               YYDEBUG(727, *YYCURSOR);
 -#line 6777 "Zend/zend_language_scanner.c"
 -yy729:
 -              YYDEBUG(729, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych == 'H') goto yy791;
 -              if (yych == 'h') goto yy791;
 -              goto yy186;
++#line 6785 "Zend/zend_language_scanner.c"
+ yy730:
+               YYDEBUG(730, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy728;
 -              if (yych == 'S') goto yy785;
 -              if (yych == 's') goto yy785;
 -              goto yy186;
++              if (yych == 'A') goto yy731;
 +              if (yych != 'a') goto yy187;
- yy728:
-               YYDEBUG(728, *YYCURSOR);
+ yy731:
+               YYDEBUG(731, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy729;
 -              if (yych == 'P') goto yy781;
 -              if (yych == 'p') goto yy781;
 -              goto yy186;
++              if (yych == 'R') goto yy732;
 +              if (yych != 'r') goto yy187;
- yy729:
-               YYDEBUG(729, *YYCURSOR);
+ yy732:
+               YYDEBUG(732, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy730;
 -              if (yych == 'D') goto yy747;
 -              if (yych == 'd') goto yy747;
 -              goto yy186;
++              if (yych == 'E') goto yy733;
 +              if (yych != 'e') goto yy187;
- yy730:
-               YYDEBUG(730, *YYCURSOR);
+ yy733:
+               YYDEBUG(733, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych == 'A') goto yy744;
 -              if (yych == 'a') goto yy744;
 -              goto yy186;
 -yy734:
 -              YYDEBUG(734, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych <= 'T') {
 -                      if (yych == 'I') goto yy735;
 -                      if (yych <= 'S') goto yy186;
 -                      goto yy736;
 -              } else {
 -                      if (yych <= 'i') {
 -                              if (yych <= 'h') goto yy186;
 -                      } else {
 -                              if (yych == 't') goto yy736;
 -                              goto yy186;
 -                      }
 +              ++YYCURSOR;
 +              if (yybm[0+(yych = *YYCURSOR)] & 4) {
 +                      goto yy186;
                }
-               YYDEBUG(731, *YYCURSOR);
++              YYDEBUG(734, *YYCURSOR);
 +              yyleng = YYCURSOR - SCNG(yy_text);
- #line 1096 "Zend/zend_language_scanner.l"
++#line 1100 "Zend/zend_language_scanner.l"
 +              {
 +      return T_DECLARE;
 +}
- #line 6780 "Zend/zend_language_scanner.c"
- yy732:
-               YYDEBUG(732, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'H') goto yy794;
-               if (yych == 'h') goto yy794;
-               goto yy187;
- yy733:
-               YYDEBUG(733, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'S') goto yy788;
-               if (yych == 's') goto yy788;
-               goto yy187;
- yy734:
-               YYDEBUG(734, *YYCURSOR);
-               yych = *++YYCURSOR;
-               if (yych == 'P') goto yy784;
-               if (yych == 'p') goto yy784;
-               goto yy187;
++#line 6813 "Zend/zend_language_scanner.c"
  yy735:
                YYDEBUG(735, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'D') goto yy750;
-               if (yych == 'd') goto yy750;
 -              if (yych == 'T') goto yy742;
 -              if (yych == 't') goto yy742;
 -              goto yy186;
++              if (yych == 'H') goto yy797;
++              if (yych == 'h') goto yy797;
 +              goto yy187;
  yy736:
                YYDEBUG(736, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy747;
-               if (yych == 'a') goto yy747;
 -              if (yych == 'E') goto yy737;
 -              if (yych != 'e') goto yy186;
++              if (yych == 'S') goto yy791;
++              if (yych == 's') goto yy791;
 +              goto yy187;
  yy737:
                YYDEBUG(737, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych <= 'T') {
-                       if (yych == 'I') goto yy738;
-                       if (yych <= 'S') goto yy187;
-                       goto yy739;
-               } else {
-                       if (yych <= 'i') {
-                               if (yych <= 'h') goto yy187;
-                       } else {
-                               if (yych == 't') goto yy739;
-                               goto yy187;
-                       }
-               }
 -              if (yych == 'N') goto yy738;
 -              if (yych != 'n') goto yy186;
++              if (yych == 'P') goto yy787;
++              if (yych == 'p') goto yy787;
++              goto yy187;
  yy738:
                YYDEBUG(738, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'T') goto yy745;
-               if (yych == 't') goto yy745;
 -              if (yych == 'D') goto yy739;
 -              if (yych != 'd') goto yy186;
++              if (yych == 'D') goto yy753;
++              if (yych == 'd') goto yy753;
 +              goto yy187;
  yy739:
                YYDEBUG(739, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy740;
-               if (yych != 'e') goto yy187;
 -              if (yych == 'S') goto yy740;
 -              if (yych != 's') goto yy186;
++              if (yych == 'A') goto yy750;
++              if (yych == 'a') goto yy750;
++              goto yy187;
  yy740:
                YYDEBUG(740, *YYCURSOR);
-               if (yych == 'N') goto yy741;
-               if (yych != 'n') goto yy187;
 +              yych = *++YYCURSOR;
-               if (yych == 'D') goto yy742;
-               if (yych != 'd') goto yy187;
++              if (yych <= 'T') {
++                      if (yych == 'I') goto yy741;
++                      if (yych <= 'S') goto yy187;
++                      goto yy742;
++              } else {
++                      if (yych <= 'i') {
++                              if (yych <= 'h') goto yy187;
++                      } else {
++                              if (yych == 't') goto yy742;
++                              goto yy187;
++                      }
++              }
 +yy741:
 +              YYDEBUG(741, *YYCURSOR);
 +              yych = *++YYCURSOR;
-               if (yych == 'S') goto yy743;
-               if (yych != 's') goto yy187;
++              if (yych == 'T') goto yy748;
++              if (yych == 't') goto yy748;
++              goto yy187;
 +yy742:
 +              YYDEBUG(742, *YYCURSOR);
 +              yych = *++YYCURSOR;
++              if (yych == 'E') goto yy743;
++              if (yych != 'e') goto yy187;
 +yy743:
 +              YYDEBUG(743, *YYCURSOR);
++              yych = *++YYCURSOR;
++              if (yych == 'N') goto yy744;
++              if (yych != 'n') goto yy187;
++yy744:
++              YYDEBUG(744, *YYCURSOR);
++              yych = *++YYCURSOR;
++              if (yych == 'D') goto yy745;
++              if (yych != 'd') goto yy187;
++yy745:
++              YYDEBUG(745, *YYCURSOR);
++              yych = *++YYCURSOR;
++              if (yych == 'S') goto yy746;
++              if (yych != 's') goto yy187;
++yy746:
++              YYDEBUG(746, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
-               YYDEBUG(744, *YYCURSOR);
 -              YYDEBUG(741, *YYCURSOR);
++              YYDEBUG(747, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1160 "Zend/zend_language_scanner.l"
++#line 1164 "Zend/zend_language_scanner.l"
                {
        return T_EXTENDS;
  }
- #line 6864 "Zend/zend_language_scanner.c"
- yy745:
-               YYDEBUG(745, *YYCURSOR);
 -#line 6861 "Zend/zend_language_scanner.c"
 -yy742:
 -              YYDEBUG(742, *YYCURSOR);
++#line 6897 "Zend/zend_language_scanner.c"
++yy748:
++              YYDEBUG(748, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
-               YYDEBUG(746, *YYCURSOR);
 -              YYDEBUG(743, *YYCURSOR);
++              YYDEBUG(749, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
  #line 1016 "Zend/zend_language_scanner.l"
                {
        return T_EXIT;
  }
- #line 6877 "Zend/zend_language_scanner.c"
- yy747:
-               YYDEBUG(747, *YYCURSOR);
 -#line 6874 "Zend/zend_language_scanner.c"
 -yy744:
 -              YYDEBUG(744, *YYCURSOR);
++#line 6910 "Zend/zend_language_scanner.c"
++yy750:
++              YYDEBUG(750, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy748;
 -              if (yych == 'L') goto yy745;
 -              if (yych != 'l') goto yy186;
 -yy745:
 -              YYDEBUG(745, *YYCURSOR);
++              if (yych == 'L') goto yy751;
 +              if (yych != 'l') goto yy187;
- yy748:
-               YYDEBUG(748, *YYCURSOR);
++yy751:
++              YYDEBUG(751, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
-               YYDEBUG(749, *YYCURSOR);
 -              YYDEBUG(746, *YYCURSOR);
++              YYDEBUG(752, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1246 "Zend/zend_language_scanner.l"
++#line 1250 "Zend/zend_language_scanner.l"
                {
        return T_EVAL;
  }
- #line 6895 "Zend/zend_language_scanner.c"
- yy750:
-               YYDEBUG(750, *YYCURSOR);
 -#line 6892 "Zend/zend_language_scanner.c"
 -yy747:
 -              YYDEBUG(747, *YYCURSOR);
++#line 6928 "Zend/zend_language_scanner.c"
++yy753:
++              YYDEBUG(753, *YYCURSOR);
                yych = *++YYCURSOR;
                YYDEBUG(-1, yych);
                switch (yych) {
                case 'D':
-               case 'd':       goto yy751;
 -              case 'd':       goto yy748;
++              case 'd':       goto yy754;
                case 'F':
-               case 'f':       goto yy752;
 -              case 'f':       goto yy749;
++              case 'f':       goto yy755;
                case 'I':
-               case 'i':       goto yy753;
 -              case 'i':       goto yy750;
++              case 'i':       goto yy756;
                case 'S':
-               case 's':       goto yy754;
 -              case 's':       goto yy751;
++              case 's':       goto yy757;
                case 'W':
-               case 'w':       goto yy755;
 -              case 'w':       goto yy752;
 -              default:        goto yy186;
++              case 'w':       goto yy758;
 +              default:        goto yy187;
                }
 -yy748:
 -              YYDEBUG(748, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych == 'E') goto yy774;
 -              if (yych == 'e') goto yy774;
 -              goto yy186;
 -yy749:
 -              YYDEBUG(749, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych == 'O') goto yy766;
 -              if (yych == 'o') goto yy766;
 -              goto yy186;
 -yy750:
 -              YYDEBUG(750, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych == 'F') goto yy764;
 -              if (yych == 'f') goto yy764;
 -              goto yy186;
--yy751:
--              YYDEBUG(751, *YYCURSOR);
--              yych = *++YYCURSOR;
-               if (yych == 'E') goto yy777;
-               if (yych == 'e') goto yy777;
-               goto yy187;
 -              if (yych == 'W') goto yy758;
 -              if (yych == 'w') goto yy758;
 -              goto yy186;
--yy752:
--              YYDEBUG(752, *YYCURSOR);
--              yych = *++YYCURSOR;
-               if (yych == 'O') goto yy769;
-               if (yych == 'o') goto yy769;
-               goto yy187;
 -              if (yych == 'H') goto yy753;
 -              if (yych != 'h') goto yy186;
--yy753:
--              YYDEBUG(753, *YYCURSOR);
--              yych = *++YYCURSOR;
-               if (yych == 'F') goto yy767;
-               if (yych == 'f') goto yy767;
-               goto yy187;
 -              if (yych == 'I') goto yy754;
 -              if (yych != 'i') goto yy186;
  yy754:
                YYDEBUG(754, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'W') goto yy761;
-               if (yych == 'w') goto yy761;
 -              if (yych == 'L') goto yy755;
 -              if (yych != 'l') goto yy186;
++              if (yych == 'E') goto yy780;
++              if (yych == 'e') goto yy780;
 +              goto yy187;
  yy755:
                YYDEBUG(755, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'H') goto yy756;
-               if (yych != 'h') goto yy187;
 -              if (yych == 'E') goto yy756;
 -              if (yych != 'e') goto yy186;
++              if (yych == 'O') goto yy772;
++              if (yych == 'o') goto yy772;
++              goto yy187;
  yy756:
                YYDEBUG(756, *YYCURSOR);
 -              ++YYCURSOR;
 -              if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 -              }
 +              yych = *++YYCURSOR;
-               if (yych == 'I') goto yy757;
-               if (yych != 'i') goto yy187;
++              if (yych == 'F') goto yy770;
++              if (yych == 'f') goto yy770;
++              goto yy187;
 +yy757:
                YYDEBUG(757, *YYCURSOR);
 -              yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1072 "Zend/zend_language_scanner.l"
 -              {
 -      return T_ENDWHILE;
 -}
 -#line 6966 "Zend/zend_language_scanner.c"
 +              yych = *++YYCURSOR;
-               if (yych == 'L') goto yy758;
-               if (yych != 'l') goto yy187;
++              if (yych == 'W') goto yy764;
++              if (yych == 'w') goto yy764;
++              goto yy187;
  yy758:
                YYDEBUG(758, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy759;
-               if (yych != 'e') goto yy187;
 -              if (yych == 'I') goto yy759;
 -              if (yych != 'i') goto yy186;
++              if (yych == 'H') goto yy759;
++              if (yych != 'h') goto yy187;
  yy759:
                YYDEBUG(759, *YYCURSOR);
 -              if (yych == 'T') goto yy760;
 -              if (yych != 't') goto yy186;
+               yych = *++YYCURSOR;
 -              if (yych == 'C') goto yy761;
 -              if (yych != 'c') goto yy186;
++              if (yych == 'I') goto yy760;
++              if (yych != 'i') goto yy187;
+ yy760:
+               YYDEBUG(760, *YYCURSOR);
+               yych = *++YYCURSOR;
 -              if (yych == 'H') goto yy762;
 -              if (yych != 'h') goto yy186;
++              if (yych == 'L') goto yy761;
++              if (yych != 'l') goto yy187;
+ yy761:
+               YYDEBUG(761, *YYCURSOR);
+               yych = *++YYCURSOR;
++              if (yych == 'E') goto yy762;
++              if (yych != 'e') goto yy187;
+ yy762:
+               YYDEBUG(762, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
-               YYDEBUG(760, *YYCURSOR);
+               YYDEBUG(763, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1072 "Zend/zend_language_scanner.l"
 -#line 1116 "Zend/zend_language_scanner.l"
++#line 1076 "Zend/zend_language_scanner.l"
                {
 -      return T_ENDSWITCH;
 +      return T_ENDWHILE;
  }
- #line 6969 "Zend/zend_language_scanner.c"
- yy761:
-               YYDEBUG(761, *YYCURSOR);
 -#line 6999 "Zend/zend_language_scanner.c"
++#line 7002 "Zend/zend_language_scanner.c"
+ yy764:
+               YYDEBUG(764, *YYCURSOR);
 +              yych = *++YYCURSOR;
-               if (yych == 'I') goto yy762;
++              if (yych == 'I') goto yy765;
 +              if (yych != 'i') goto yy187;
- yy762:
-               YYDEBUG(762, *YYCURSOR);
++yy765:
++              YYDEBUG(765, *YYCURSOR);
 +              yych = *++YYCURSOR;
-               if (yych == 'T') goto yy763;
++              if (yych == 'T') goto yy766;
 +              if (yych != 't') goto yy187;
- yy763:
-               YYDEBUG(763, *YYCURSOR);
++yy766:
++              YYDEBUG(766, *YYCURSOR);
 +              yych = *++YYCURSOR;
-               if (yych == 'C') goto yy764;
++              if (yych == 'C') goto yy767;
 +              if (yych != 'c') goto yy187;
- yy764:
-               YYDEBUG(764, *YYCURSOR);
++yy767:
++              YYDEBUG(767, *YYCURSOR);
 +              yych = *++YYCURSOR;
-               if (yych == 'H') goto yy765;
++              if (yych == 'H') goto yy768;
 +              if (yych != 'h') goto yy187;
- yy765:
-               YYDEBUG(765, *YYCURSOR);
++yy768:
++              YYDEBUG(768, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
-               YYDEBUG(766, *YYCURSOR);
 -              YYDEBUG(765, *YYCURSOR);
++              YYDEBUG(769, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1116 "Zend/zend_language_scanner.l"
 -#line 1060 "Zend/zend_language_scanner.l"
++#line 1120 "Zend/zend_language_scanner.l"
 +              {
 +      return T_ENDSWITCH;
 +}
- #line 7002 "Zend/zend_language_scanner.c"
- yy767:
-               YYDEBUG(767, *YYCURSOR);
++#line 7035 "Zend/zend_language_scanner.c"
++yy770:
++              YYDEBUG(770, *YYCURSOR);
 +              ++YYCURSOR;
 +              if (yybm[0+(yych = *YYCURSOR)] & 4) {
 +                      goto yy186;
 +              }
-               YYDEBUG(768, *YYCURSOR);
++              YYDEBUG(771, *YYCURSOR);
 +              yyleng = YYCURSOR - SCNG(yy_text);
- #line 1060 "Zend/zend_language_scanner.l"
++#line 1064 "Zend/zend_language_scanner.l"
                {
        return T_ENDIF;
  }
- #line 7015 "Zend/zend_language_scanner.c"
- yy769:
-               YYDEBUG(769, *YYCURSOR);
 -#line 7012 "Zend/zend_language_scanner.c"
 -yy766:
 -              YYDEBUG(766, *YYCURSOR);
++#line 7048 "Zend/zend_language_scanner.c"
++yy772:
++              YYDEBUG(772, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'R') goto yy770;
 -              if (yych == 'R') goto yy767;
 -              if (yych != 'r') goto yy186;
 -yy767:
 -              YYDEBUG(767, *YYCURSOR);
++              if (yych == 'R') goto yy773;
 +              if (yych != 'r') goto yy187;
- yy770:
-               YYDEBUG(770, *YYCURSOR);
++yy773:
++              YYDEBUG(773, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '^') {
                        if (yych <= '@') {
-                               if (yych <= '/') goto yy771;
 -                              if (yych <= '/') goto yy768;
 -                              if (yych <= '9') goto yy185;
++                              if (yych <= '/') goto yy774;
 +                              if (yych <= '9') goto yy186;
                        } else {
-                               if (yych == 'E') goto yy772;
 -                              if (yych == 'E') goto yy769;
 -                              if (yych <= 'Z') goto yy185;
++                              if (yych == 'E') goto yy775;
 +                              if (yych <= 'Z') goto yy186;
                        }
                } else {
                        if (yych <= 'd') {
 -                              if (yych != '`') goto yy185;
 +                              if (yych != '`') goto yy186;
                        } else {
-                               if (yych <= 'e') goto yy772;
 -                              if (yych <= 'e') goto yy769;
 -                              if (yych <= 'z') goto yy185;
 -                              if (yych >= 0x7F) goto yy185;
++                              if (yych <= 'e') goto yy775;
 +                              if (yych <= 'z') goto yy186;
 +                              if (yych >= 0x7F) goto yy186;
                        }
                }
- yy771:
-               YYDEBUG(771, *YYCURSOR);
 -yy768:
 -              YYDEBUG(768, *YYCURSOR);
++yy774:
++              YYDEBUG(774, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1084 "Zend/zend_language_scanner.l"
++#line 1088 "Zend/zend_language_scanner.l"
                {
        return T_ENDFOR;
  }
- #line 7048 "Zend/zend_language_scanner.c"
 -#line 7045 "Zend/zend_language_scanner.c"
 -yy769:
 -              YYDEBUG(769, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych == 'A') goto yy770;
 -              if (yych != 'a') goto yy186;
 -yy770:
 -              YYDEBUG(770, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych == 'C') goto yy771;
 -              if (yych != 'c') goto yy186;
 -yy771:
 -              YYDEBUG(771, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych == 'H') goto yy772;
 -              if (yych != 'h') goto yy186;
--yy772:
--              YYDEBUG(772, *YYCURSOR);
 -              ++YYCURSOR;
 -              if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 -              }
 -              YYDEBUG(773, *YYCURSOR);
 -              yyleng = YYCURSOR - SCNG(yy_text);
 -#line 1092 "Zend/zend_language_scanner.l"
 -              {
 -      return T_ENDFOREACH;
 -}
 -#line 7073 "Zend/zend_language_scanner.c"
 -yy774:
 -              YYDEBUG(774, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych == 'C') goto yy775;
 -              if (yych != 'c') goto yy186;
++#line 7081 "Zend/zend_language_scanner.c"
+ yy775:
+               YYDEBUG(775, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy773;
 -              if (yych == 'L') goto yy776;
 -              if (yych != 'l') goto yy186;
++              if (yych == 'A') goto yy776;
 +              if (yych != 'a') goto yy187;
- yy773:
-               YYDEBUG(773, *YYCURSOR);
+ yy776:
+               YYDEBUG(776, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'C') goto yy774;
 -              if (yych == 'A') goto yy777;
 -              if (yych != 'a') goto yy186;
++              if (yych == 'C') goto yy777;
 +              if (yych != 'c') goto yy187;
- yy774:
-               YYDEBUG(774, *YYCURSOR);
+ yy777:
+               YYDEBUG(777, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'H') goto yy775;
 -              if (yych == 'R') goto yy778;
 -              if (yych != 'r') goto yy186;
++              if (yych == 'H') goto yy778;
 +              if (yych != 'h') goto yy187;
- yy775:
-               YYDEBUG(775, *YYCURSOR);
+ yy778:
+               YYDEBUG(778, *YYCURSOR);
 -              yych = *++YYCURSOR;
 -              if (yych == 'E') goto yy779;
 -              if (yych != 'e') goto yy186;
 -yy779:
 -              YYDEBUG(779, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
-               YYDEBUG(776, *YYCURSOR);
 -              YYDEBUG(780, *YYCURSOR);
++              YYDEBUG(779, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1092 "Zend/zend_language_scanner.l"
 -#line 1100 "Zend/zend_language_scanner.l"
++#line 1096 "Zend/zend_language_scanner.l"
                {
 -      return T_ENDDECLARE;
 +      return T_ENDFOREACH;
  }
- #line 7076 "Zend/zend_language_scanner.c"
- yy777:
-               YYDEBUG(777, *YYCURSOR);
 -#line 7111 "Zend/zend_language_scanner.c"
++#line 7109 "Zend/zend_language_scanner.c"
++yy780:
++              YYDEBUG(780, *YYCURSOR);
 +              yych = *++YYCURSOR;
-               if (yych == 'C') goto yy778;
++              if (yych == 'C') goto yy781;
 +              if (yych != 'c') goto yy187;
- yy778:
-               YYDEBUG(778, *YYCURSOR);
+ yy781:
+               YYDEBUG(781, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'L') goto yy779;
 -              if (yych == 'T') goto yy782;
 -              if (yych != 't') goto yy186;
++              if (yych == 'L') goto yy782;
 +              if (yych != 'l') goto yy187;
- yy779:
-               YYDEBUG(779, *YYCURSOR);
+ yy782:
+               YYDEBUG(782, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'A') goto yy780;
 -              if (yych == 'Y') goto yy783;
 -              if (yych != 'y') goto yy186;
++              if (yych == 'A') goto yy783;
 +              if (yych != 'a') goto yy187;
- yy780:
-               YYDEBUG(780, *YYCURSOR);
+ yy783:
+               YYDEBUG(783, *YYCURSOR);
 +              yych = *++YYCURSOR;
-               if (yych == 'R') goto yy781;
++              if (yych == 'R') goto yy784;
 +              if (yych != 'r') goto yy187;
- yy781:
-               YYDEBUG(781, *YYCURSOR);
++yy784:
++              YYDEBUG(784, *YYCURSOR);
 +              yych = *++YYCURSOR;
-               if (yych == 'E') goto yy782;
++              if (yych == 'E') goto yy785;
 +              if (yych != 'e') goto yy187;
- yy782:
-               YYDEBUG(782, *YYCURSOR);
++yy785:
++              YYDEBUG(785, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
-               YYDEBUG(783, *YYCURSOR);
 -              YYDEBUG(784, *YYCURSOR);
++              YYDEBUG(786, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
- #line 1100 "Zend/zend_language_scanner.l"
 -#line 1286 "Zend/zend_language_scanner.l"
++#line 1104 "Zend/zend_language_scanner.l"
 +              {
 +      return T_ENDDECLARE;
 +}
- #line 7114 "Zend/zend_language_scanner.c"
- yy784:
-               YYDEBUG(784, *YYCURSOR);
++#line 7147 "Zend/zend_language_scanner.c"
++yy787:
++              YYDEBUG(787, *YYCURSOR);
 +              yych = *++YYCURSOR;
-               if (yych == 'T') goto yy785;
++              if (yych == 'T') goto yy788;
 +              if (yych != 't') goto yy187;
- yy785:
-               YYDEBUG(785, *YYCURSOR);
++yy788:
++              YYDEBUG(788, *YYCURSOR);
 +              yych = *++YYCURSOR;
-               if (yych == 'Y') goto yy786;
++              if (yych == 'Y') goto yy789;
 +              if (yych != 'y') goto yy187;
- yy786:
-               YYDEBUG(786, *YYCURSOR);
++yy789:
++              YYDEBUG(789, *YYCURSOR);
 +              ++YYCURSOR;
 +              if (yybm[0+(yych = *YYCURSOR)] & 4) {
 +                      goto yy186;
 +              }
-               YYDEBUG(787, *YYCURSOR);
++              YYDEBUG(790, *YYCURSOR);
 +              yyleng = YYCURSOR - SCNG(yy_text);
- #line 1286 "Zend/zend_language_scanner.l"
++#line 1290 "Zend/zend_language_scanner.l"
                {
        return T_EMPTY;
  }
- #line 7137 "Zend/zend_language_scanner.c"
- yy788:
-               YYDEBUG(788, *YYCURSOR);
 -#line 7134 "Zend/zend_language_scanner.c"
 -yy785:
 -              YYDEBUG(785, *YYCURSOR);
++#line 7170 "Zend/zend_language_scanner.c"
++yy791:
++              YYDEBUG(791, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'E') goto yy789;
 -              if (yych == 'E') goto yy786;
 -              if (yych != 'e') goto yy186;
 -yy786:
 -              YYDEBUG(786, *YYCURSOR);
++              if (yych == 'E') goto yy792;
 +              if (yych != 'e') goto yy187;
- yy789:
-               YYDEBUG(789, *YYCURSOR);
++yy792:
++              YYDEBUG(792, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '^') {
                        if (yych <= '@') {
-                               if (yych <= '/') goto yy790;
 -                              if (yych <= '/') goto yy787;
 -                              if (yych <= '9') goto yy185;
++                              if (yych <= '/') goto yy793;
 +                              if (yych <= '9') goto yy186;
                        } else {
-                               if (yych == 'I') goto yy791;
 -                              if (yych == 'I') goto yy788;
 -                              if (yych <= 'Z') goto yy185;
++                              if (yych == 'I') goto yy794;
 +                              if (yych <= 'Z') goto yy186;
                        }
                } else {
                        if (yych <= 'h') {
 -                              if (yych != '`') goto yy185;
 +                              if (yych != '`') goto yy186;
                        } else {
-                               if (yych <= 'i') goto yy791;
 -                              if (yych <= 'i') goto yy788;
 -                              if (yych <= 'z') goto yy185;
 -                              if (yych >= 0x7F) goto yy185;
++                              if (yych <= 'i') goto yy794;
 +                              if (yych <= 'z') goto yy186;
 +                              if (yych >= 0x7F) goto yy186;
                        }
                }
- yy790:
-               YYDEBUG(790, *YYCURSOR);
 -yy787:
 -              YYDEBUG(787, *YYCURSOR);
++yy793:
++              YYDEBUG(793, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1064 "Zend/zend_language_scanner.l"
++#line 1068 "Zend/zend_language_scanner.l"
                {
        return T_ELSE;
  }
- #line 7170 "Zend/zend_language_scanner.c"
- yy791:
-               YYDEBUG(791, *YYCURSOR);
 -#line 7167 "Zend/zend_language_scanner.c"
 -yy788:
 -              YYDEBUG(788, *YYCURSOR);
++#line 7203 "Zend/zend_language_scanner.c"
++yy794:
++              YYDEBUG(794, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'F') goto yy792;
 -              if (yych == 'F') goto yy789;
 -              if (yych != 'f') goto yy186;
 -yy789:
 -              YYDEBUG(789, *YYCURSOR);
++              if (yych == 'F') goto yy795;
 +              if (yych != 'f') goto yy187;
- yy792:
-               YYDEBUG(792, *YYCURSOR);
++yy795:
++              YYDEBUG(795, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
-               YYDEBUG(793, *YYCURSOR);
 -              YYDEBUG(790, *YYCURSOR);
++              YYDEBUG(796, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1056 "Zend/zend_language_scanner.l"
++#line 1060 "Zend/zend_language_scanner.l"
                {
        return T_ELSEIF;
  }
- #line 7188 "Zend/zend_language_scanner.c"
- yy794:
-               YYDEBUG(794, *YYCURSOR);
 -#line 7185 "Zend/zend_language_scanner.c"
 -yy791:
 -              YYDEBUG(791, *YYCURSOR);
++#line 7221 "Zend/zend_language_scanner.c"
++yy797:
++              YYDEBUG(797, *YYCURSOR);
                yych = *++YYCURSOR;
-               if (yych == 'O') goto yy795;
 -              if (yych == 'O') goto yy792;
 -              if (yych != 'o') goto yy186;
 -yy792:
 -              YYDEBUG(792, *YYCURSOR);
++              if (yych == 'O') goto yy798;
 +              if (yych != 'o') goto yy187;
- yy795:
-               YYDEBUG(795, *YYCURSOR);
++yy798:
++              YYDEBUG(798, *YYCURSOR);
                ++YYCURSOR;
                if (yybm[0+(yych = *YYCURSOR)] & 4) {
 -                      goto yy185;
 +                      goto yy186;
                }
-               YYDEBUG(796, *YYCURSOR);
 -              YYDEBUG(793, *YYCURSOR);
++              YYDEBUG(799, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1140 "Zend/zend_language_scanner.l"
++#line 1144 "Zend/zend_language_scanner.l"
                {
        return T_ECHO;
  }
- #line 7206 "Zend/zend_language_scanner.c"
 -#line 7203 "Zend/zend_language_scanner.c"
++#line 7239 "Zend/zend_language_scanner.c"
        }
  /* *********************************** */
  yyc_ST_LOOKING_FOR_PROPERTY:
                         64,  64,  64,  64,  64,  64,  64,  64, 
                         64,  64,  64,  64,  64,  64,  64,  64, 
                };
-               YYDEBUG(797, *YYCURSOR);
 -              YYDEBUG(794, *YYCURSOR);
++              YYDEBUG(800, *YYCURSOR);
                YYFILL(2);
                yych = *YYCURSOR;
                if (yych <= '-') {
                        if (yych <= '\r') {
-                               if (yych <= 0x08) goto yy805;
-                               if (yych <= '\n') goto yy799;
-                               if (yych <= '\f') goto yy805;
 -                              if (yych <= 0x08) goto yy802;
 -                              if (yych <= '\n') goto yy796;
 -                              if (yych <= '\f') goto yy802;
++                              if (yych <= 0x08) goto yy808;
++                              if (yych <= '\n') goto yy802;
++                              if (yych <= '\f') goto yy808;
                        } else {
-                               if (yych == ' ') goto yy799;
-                               if (yych <= ',') goto yy805;
-                               goto yy801;
 -                              if (yych == ' ') goto yy796;
 -                              if (yych <= ',') goto yy802;
 -                              goto yy798;
++                              if (yych == ' ') goto yy802;
++                              if (yych <= ',') goto yy808;
++                              goto yy804;
                        }
                } else {
                        if (yych <= '_') {
-                               if (yych <= '@') goto yy805;
-                               if (yych <= 'Z') goto yy803;
-                               if (yych <= '^') goto yy805;
-                               goto yy803;
 -                              if (yych <= '@') goto yy802;
 -                              if (yych <= 'Z') goto yy800;
 -                              if (yych <= '^') goto yy802;
 -                              goto yy800;
++                              if (yych <= '@') goto yy808;
++                              if (yych <= 'Z') goto yy806;
++                              if (yych <= '^') goto yy808;
++                              goto yy806;
                        } else {
-                               if (yych <= '`') goto yy805;
-                               if (yych <= 'z') goto yy803;
-                               if (yych <= '~') goto yy805;
-                               goto yy803;
 -                              if (yych <= '`') goto yy802;
 -                              if (yych <= 'z') goto yy800;
 -                              if (yych <= '~') goto yy802;
 -                              goto yy800;
++                              if (yych <= '`') goto yy808;
++                              if (yych <= 'z') goto yy806;
++                              if (yych <= '~') goto yy808;
++                              goto yy806;
                        }
                }
- yy799:
-               YYDEBUG(799, *YYCURSOR);
 -yy796:
 -              YYDEBUG(796, *YYCURSOR);
++yy802:
++              YYDEBUG(802, *YYCURSOR);
                ++YYCURSOR;
                yych = *YYCURSOR;
-               goto yy811;
- yy800:
-               YYDEBUG(800, *YYCURSOR);
 -              goto yy808;
 -yy797:
 -              YYDEBUG(797, *YYCURSOR);
++              goto yy814;
++yy803:
++              YYDEBUG(803, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1173 "Zend/zend_language_scanner.l"
++#line 1177 "Zend/zend_language_scanner.l"
                {
        zendlval->value.str.val = yytext; /* no copying - intentional */
        zendlval->value.str.len = yyleng;
        HANDLE_NEWLINES(yytext, yyleng);
        return T_WHITESPACE;
  }
- #line 7287 "Zend/zend_language_scanner.c"
- yy801:
-               YYDEBUG(801, *YYCURSOR);
 -#line 7284 "Zend/zend_language_scanner.c"
 -yy798:
 -              YYDEBUG(798, *YYCURSOR);
++#line 7320 "Zend/zend_language_scanner.c"
++yy804:
++              YYDEBUG(804, *YYCURSOR);
                ++YYCURSOR;
-               if ((yych = *YYCURSOR) == '>') goto yy808;
- yy802:
-               YYDEBUG(802, *YYCURSOR);
 -              if ((yych = *YYCURSOR) == '>') goto yy805;
 -yy799:
 -              YYDEBUG(799, *YYCURSOR);
++              if ((yych = *YYCURSOR) == '>') goto yy811;
++yy805:
++              YYDEBUG(805, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1192 "Zend/zend_language_scanner.l"
++#line 1196 "Zend/zend_language_scanner.l"
                {
        yyless(0);
        yy_pop_state(TSRMLS_C);
        goto restart;
  }
- #line 7301 "Zend/zend_language_scanner.c"
- yy803:
-               YYDEBUG(803, *YYCURSOR);
 -#line 7298 "Zend/zend_language_scanner.c"
 -yy800:
 -              YYDEBUG(800, *YYCURSOR);
++#line 7334 "Zend/zend_language_scanner.c"
++yy806:
++              YYDEBUG(806, *YYCURSOR);
                ++YYCURSOR;
                yych = *YYCURSOR;
-               goto yy807;
- yy804:
-               YYDEBUG(804, *YYCURSOR);
 -              goto yy804;
 -yy801:
 -              YYDEBUG(801, *YYCURSOR);
++              goto yy810;
++yy807:
++              YYDEBUG(807, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1185 "Zend/zend_language_scanner.l"
++#line 1189 "Zend/zend_language_scanner.l"
                {
        yy_pop_state(TSRMLS_C);
        zend_copy_value(zendlval, yytext, yyleng);
        zendlval->type = IS_STRING;
        return T_STRING;
  }
- #line 7317 "Zend/zend_language_scanner.c"
- yy805:
-               YYDEBUG(805, *YYCURSOR);
 -#line 7314 "Zend/zend_language_scanner.c"
 -yy802:
 -              YYDEBUG(802, *YYCURSOR);
++#line 7350 "Zend/zend_language_scanner.c"
++yy808:
++              YYDEBUG(808, *YYCURSOR);
                yych = *++YYCURSOR;
-               goto yy802;
- yy806:
-               YYDEBUG(806, *YYCURSOR);
 -              goto yy799;
 -yy803:
 -              YYDEBUG(803, *YYCURSOR);
++              goto yy805;
++yy809:
++              YYDEBUG(809, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
- yy807:
-               YYDEBUG(807, *YYCURSOR);
 -yy804:
 -              YYDEBUG(804, *YYCURSOR);
++yy810:
++              YYDEBUG(810, *YYCURSOR);
                if (yybm[0+yych] & 64) {
-                       goto yy806;
 -                      goto yy803;
++                      goto yy809;
                }
-               goto yy804;
- yy808:
-               YYDEBUG(808, *YYCURSOR);
 -              goto yy801;
 -yy805:
 -              YYDEBUG(805, *YYCURSOR);
++              goto yy807;
++yy811:
++              YYDEBUG(811, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(809, *YYCURSOR);
 -              YYDEBUG(806, *YYCURSOR);
++              YYDEBUG(812, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1181 "Zend/zend_language_scanner.l"
++#line 1185 "Zend/zend_language_scanner.l"
                {
        return T_OBJECT_OPERATOR;
  }
- #line 7342 "Zend/zend_language_scanner.c"
- yy810:
-               YYDEBUG(810, *YYCURSOR);
 -#line 7339 "Zend/zend_language_scanner.c"
 -yy807:
 -              YYDEBUG(807, *YYCURSOR);
++#line 7375 "Zend/zend_language_scanner.c"
++yy813:
++              YYDEBUG(813, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
- yy811:
-               YYDEBUG(811, *YYCURSOR);
 -yy808:
 -              YYDEBUG(808, *YYCURSOR);
++yy814:
++              YYDEBUG(814, *YYCURSOR);
                if (yybm[0+yych] & 128) {
-                       goto yy810;
 -                      goto yy807;
++                      goto yy813;
                }
-               goto yy800;
 -              goto yy797;
++              goto yy803;
        }
  /* *********************************** */
  yyc_ST_LOOKING_FOR_VARNAME:
                        128, 128, 128, 128, 128, 128, 128, 128, 
                        128, 128, 128, 128, 128, 128, 128, 128, 
                };
-               YYDEBUG(812, *YYCURSOR);
 -              YYDEBUG(809, *YYCURSOR);
++              YYDEBUG(815, *YYCURSOR);
                YYFILL(2);
                yych = *YYCURSOR;
                if (yych <= '_') {
-                       if (yych <= '@') goto yy816;
-                       if (yych <= 'Z') goto yy814;
-                       if (yych <= '^') goto yy816;
 -                      if (yych <= '@') goto yy813;
 -                      if (yych <= 'Z') goto yy811;
 -                      if (yych <= '^') goto yy813;
++                      if (yych <= '@') goto yy819;
++                      if (yych <= 'Z') goto yy817;
++                      if (yych <= '^') goto yy819;
                } else {
-                       if (yych <= '`') goto yy816;
-                       if (yych <= 'z') goto yy814;
-                       if (yych <= '~') goto yy816;
 -                      if (yych <= '`') goto yy813;
 -                      if (yych <= 'z') goto yy811;
 -                      if (yych <= '~') goto yy813;
++                      if (yych <= '`') goto yy819;
++                      if (yych <= 'z') goto yy817;
++                      if (yych <= '~') goto yy819;
                }
- yy814:
-               YYDEBUG(814, *YYCURSOR);
 -yy811:
 -              YYDEBUG(811, *YYCURSOR);
++yy817:
++              YYDEBUG(817, *YYCURSOR);
                yyaccept = 0;
                yych = *(YYMARKER = ++YYCURSOR);
                if (yych <= '_') {
                        if (yych <= '@') {
-                               if (yych <= '/') goto yy815;
-                               if (yych <= '9') goto yy818;
 -                              if (yych <= '/') goto yy812;
 -                              if (yych <= '9') goto yy815;
++                              if (yych <= '/') goto yy818;
++                              if (yych <= '9') goto yy821;
                        } else {
-                               if (yych <= '[') goto yy818;
-                               if (yych >= '_') goto yy818;
 -                              if (yych <= '[') goto yy815;
 -                              if (yych >= '_') goto yy815;
++                              if (yych <= '[') goto yy821;
++                              if (yych >= '_') goto yy821;
                        }
                } else {
                        if (yych <= '|') {
-                               if (yych <= '`') goto yy815;
-                               if (yych <= 'z') goto yy818;
 -                              if (yych <= '`') goto yy812;
 -                              if (yych <= 'z') goto yy815;
++                              if (yych <= '`') goto yy818;
++                              if (yych <= 'z') goto yy821;
                        } else {
-                               if (yych != '~') goto yy818;
 -                              if (yych != '~') goto yy815;
++                              if (yych != '~') goto yy821;
                        }
                }
- yy815:
-               YYDEBUG(815, *YYCURSOR);
 -yy812:
 -              YYDEBUG(812, *YYCURSOR);
++yy818:
++              YYDEBUG(818, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1478 "Zend/zend_language_scanner.l"
++#line 1482 "Zend/zend_language_scanner.l"
                {
        yyless(0);
        yy_pop_state(TSRMLS_C);
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        goto restart;
  }
- #line 7434 "Zend/zend_language_scanner.c"
- yy816:
-               YYDEBUG(816, *YYCURSOR);
 -#line 7431 "Zend/zend_language_scanner.c"
 -yy813:
 -              YYDEBUG(813, *YYCURSOR);
++#line 7467 "Zend/zend_language_scanner.c"
++yy819:
++              YYDEBUG(819, *YYCURSOR);
                yych = *++YYCURSOR;
-               goto yy815;
- yy817:
-               YYDEBUG(817, *YYCURSOR);
 -              goto yy812;
 -yy814:
 -              YYDEBUG(814, *YYCURSOR);
++              goto yy818;
++yy820:
++              YYDEBUG(820, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
- yy818:
-               YYDEBUG(818, *YYCURSOR);
 -yy815:
 -              YYDEBUG(815, *YYCURSOR);
++yy821:
++              YYDEBUG(821, *YYCURSOR);
                if (yybm[0+yych] & 128) {
-                       goto yy817;
 -                      goto yy814;
++                      goto yy820;
                }
-               if (yych == '[') goto yy820;
-               if (yych == '}') goto yy820;
-               YYDEBUG(819, *YYCURSOR);
 -              if (yych == '[') goto yy817;
 -              if (yych == '}') goto yy817;
 -              YYDEBUG(816, *YYCURSOR);
++              if (yych == '[') goto yy823;
++              if (yych == '}') goto yy823;
++              YYDEBUG(822, *YYCURSOR);
                YYCURSOR = YYMARKER;
-               goto yy815;
- yy820:
-               YYDEBUG(820, *YYCURSOR);
 -              goto yy812;
 -yy817:
 -              YYDEBUG(817, *YYCURSOR);
++              goto yy818;
++yy823:
++              YYDEBUG(823, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(821, *YYCURSOR);
 -              YYDEBUG(818, *YYCURSOR);
++              YYDEBUG(824, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1468 "Zend/zend_language_scanner.l"
++#line 1472 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        zend_copy_value(zendlval, yytext, yyleng);
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        return T_STRING_VARNAME;
  }
- #line 7468 "Zend/zend_language_scanner.c"
 -#line 7465 "Zend/zend_language_scanner.c"
++#line 7501 "Zend/zend_language_scanner.c"
        }
  /* *********************************** */
  yyc_ST_NOWDOC:
-       YYDEBUG(822, *YYCURSOR);
 -      YYDEBUG(819, *YYCURSOR);
++      YYDEBUG(825, *YYCURSOR);
        YYFILL(1);
        yych = *YYCURSOR;
-       YYDEBUG(824, *YYCURSOR);
 -      YYDEBUG(821, *YYCURSOR);
++      YYDEBUG(827, *YYCURSOR);
        ++YYCURSOR;
-       YYDEBUG(825, *YYCURSOR);
 -      YYDEBUG(822, *YYCURSOR);
++      YYDEBUG(828, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
--#line 2360 "Zend/zend_language_scanner.l"
++#line 2364 "Zend/zend_language_scanner.l"
        {
        int newline = 0;
  
@@@ -7530,7 -7527,7 +7563,7 @@@ nowdoc_scan_done
        HANDLE_NEWLINES(yytext, yyleng - newline);
        return T_ENCAPSED_AND_WHITESPACE;
  }
- #line 7534 "Zend/zend_language_scanner.c"
 -#line 7531 "Zend/zend_language_scanner.c"
++#line 7567 "Zend/zend_language_scanner.c"
  /* *********************************** */
  yyc_ST_VAR_OFFSET:
        {
                         16,  16,  16,  16,  16,  16,  16,  16, 
                         16,  16,  16,  16,  16,  16,  16,  16, 
                };
-               YYDEBUG(826, *YYCURSOR);
 -              YYDEBUG(823, *YYCURSOR);
++              YYDEBUG(829, *YYCURSOR);
                YYFILL(3);
                yych = *YYCURSOR;
                if (yych <= '/') {
                        if (yych <= ' ') {
                                if (yych <= '\f') {
-                                       if (yych <= 0x08) goto yy840;
-                                       if (yych <= '\n') goto yy836;
-                                       goto yy840;
 -                                      if (yych <= 0x08) goto yy837;
 -                                      if (yych <= '\n') goto yy833;
 -                                      goto yy837;
++                                      if (yych <= 0x08) goto yy843;
++                                      if (yych <= '\n') goto yy839;
++                                      goto yy843;
                                } else {
-                                       if (yych <= '\r') goto yy836;
-                                       if (yych <= 0x1F) goto yy840;
-                                       goto yy836;
 -                                      if (yych <= '\r') goto yy833;
 -                                      if (yych <= 0x1F) goto yy837;
 -                                      goto yy833;
++                                      if (yych <= '\r') goto yy839;
++                                      if (yych <= 0x1F) goto yy843;
++                                      goto yy839;
                                }
                        } else {
                                if (yych <= '$') {
-                                       if (yych <= '"') goto yy835;
-                                       if (yych <= '#') goto yy836;
-                                       goto yy831;
 -                                      if (yych <= '"') goto yy832;
 -                                      if (yych <= '#') goto yy833;
 -                                      goto yy828;
++                                      if (yych <= '"') goto yy838;
++                                      if (yych <= '#') goto yy839;
++                                      goto yy834;
                                } else {
-                                       if (yych == '\'') goto yy836;
-                                       goto yy835;
 -                                      if (yych == '\'') goto yy833;
 -                                      goto yy832;
++                                      if (yych == '\'') goto yy839;
++                                      goto yy838;
                                }
                        }
                } else {
                        if (yych <= '\\') {
                                if (yych <= '@') {
-                                       if (yych <= '0') goto yy828;
-                                       if (yych <= '9') goto yy830;
-                                       goto yy835;
 -                                      if (yych <= '0') goto yy825;
 -                                      if (yych <= '9') goto yy827;
 -                                      goto yy832;
++                                      if (yych <= '0') goto yy831;
++                                      if (yych <= '9') goto yy833;
++                                      goto yy838;
                                } else {
-                                       if (yych <= 'Z') goto yy838;
-                                       if (yych <= '[') goto yy835;
-                                       goto yy836;
 -                                      if (yych <= 'Z') goto yy835;
 -                                      if (yych <= '[') goto yy832;
 -                                      goto yy833;
++                                      if (yych <= 'Z') goto yy841;
++                                      if (yych <= '[') goto yy838;
++                                      goto yy839;
                                }
                        } else {
                                if (yych <= '_') {
-                                       if (yych <= ']') goto yy833;
-                                       if (yych <= '^') goto yy835;
-                                       goto yy838;
 -                                      if (yych <= ']') goto yy830;
 -                                      if (yych <= '^') goto yy832;
 -                                      goto yy835;
++                                      if (yych <= ']') goto yy836;
++                                      if (yych <= '^') goto yy838;
++                                      goto yy841;
                                } else {
-                                       if (yych <= '`') goto yy835;
-                                       if (yych <= 'z') goto yy838;
-                                       if (yych <= '~') goto yy835;
-                                       goto yy838;
 -                                      if (yych <= '`') goto yy832;
 -                                      if (yych <= 'z') goto yy835;
 -                                      if (yych <= '~') goto yy832;
 -                                      goto yy835;
++                                      if (yych <= '`') goto yy838;
++                                      if (yych <= 'z') goto yy841;
++                                      if (yych <= '~') goto yy838;
++                                      goto yy841;
                                }
                        }
                }
- yy828:
-               YYDEBUG(828, *YYCURSOR);
 -yy825:
 -              YYDEBUG(825, *YYCURSOR);
++yy831:
++              YYDEBUG(831, *YYCURSOR);
                yyaccept = 0;
                yych = *(YYMARKER = ++YYCURSOR);
                if (yych <= 'W') {
                        if (yych <= '9') {
-                               if (yych >= '0') goto yy852;
 -                              if (yych >= '0') goto yy849;
++                              if (yych >= '0') goto yy855;
                        } else {
-                               if (yych == 'B') goto yy849;
 -                              if (yych == 'B') goto yy846;
++                              if (yych == 'B') goto yy852;
                        }
                } else {
                        if (yych <= 'b') {
-                               if (yych <= 'X') goto yy851;
-                               if (yych >= 'b') goto yy849;
 -                              if (yych <= 'X') goto yy848;
 -                              if (yych >= 'b') goto yy846;
++                              if (yych <= 'X') goto yy854;
++                              if (yych >= 'b') goto yy852;
                        } else {
-                               if (yych == 'x') goto yy851;
 -                              if (yych == 'x') goto yy848;
++                              if (yych == 'x') goto yy854;
                        }
                }
- yy829:
-               YYDEBUG(829, *YYCURSOR);
 -yy826:
 -              YYDEBUG(826, *YYCURSOR);
++yy832:
++              YYDEBUG(832, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1556 "Zend/zend_language_scanner.l"
++#line 1560 "Zend/zend_language_scanner.l"
                { /* Offset could be treated as a long */
        if (yyleng < MAX_LENGTH_OF_LONG - 1 || (yyleng == MAX_LENGTH_OF_LONG - 1 && strcmp(yytext, long_min_digits) < 0)) {
                zendlval->value.lval = strtol(yytext, NULL, 10);
        }
        return T_NUM_STRING;
  }
- #line 7653 "Zend/zend_language_scanner.c"
- yy830:
-               YYDEBUG(830, *YYCURSOR);
 -#line 7650 "Zend/zend_language_scanner.c"
 -yy827:
 -              YYDEBUG(827, *YYCURSOR);
++#line 7686 "Zend/zend_language_scanner.c"
++yy833:
++              YYDEBUG(833, *YYCURSOR);
                yych = *++YYCURSOR;
-               goto yy848;
- yy831:
-               YYDEBUG(831, *YYCURSOR);
 -              goto yy845;
 -yy828:
 -              YYDEBUG(828, *YYCURSOR);
++              goto yy851;
++yy834:
++              YYDEBUG(834, *YYCURSOR);
                ++YYCURSOR;
                if ((yych = *YYCURSOR) <= '_') {
-                       if (yych <= '@') goto yy832;
-                       if (yych <= 'Z') goto yy844;
-                       if (yych >= '_') goto yy844;
 -                      if (yych <= '@') goto yy829;
 -                      if (yych <= 'Z') goto yy841;
 -                      if (yych >= '_') goto yy841;
++                      if (yych <= '@') goto yy835;
++                      if (yych <= 'Z') goto yy847;
++                      if (yych >= '_') goto yy847;
                } else {
-                       if (yych <= '`') goto yy832;
-                       if (yych <= 'z') goto yy844;
-                       if (yych >= 0x7F) goto yy844;
 -                      if (yych <= '`') goto yy829;
 -                      if (yych <= 'z') goto yy841;
 -                      if (yych >= 0x7F) goto yy841;
++                      if (yych <= '`') goto yy835;
++                      if (yych <= 'z') goto yy847;
++                      if (yych >= 0x7F) goto yy847;
                }
- yy832:
-               YYDEBUG(832, *YYCURSOR);
 -yy829:
 -              YYDEBUG(829, *YYCURSOR);
++yy835:
++              YYDEBUG(835, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1888 "Zend/zend_language_scanner.l"
++#line 1892 "Zend/zend_language_scanner.l"
                {
        /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */
        return yytext[0];
  }
- #line 7678 "Zend/zend_language_scanner.c"
- yy833:
-               YYDEBUG(833, *YYCURSOR);
 -#line 7675 "Zend/zend_language_scanner.c"
 -yy830:
 -              YYDEBUG(830, *YYCURSOR);
++#line 7711 "Zend/zend_language_scanner.c"
++yy836:
++              YYDEBUG(836, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(834, *YYCURSOR);
 -              YYDEBUG(831, *YYCURSOR);
++              YYDEBUG(837, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1883 "Zend/zend_language_scanner.l"
++#line 1887 "Zend/zend_language_scanner.l"
                {
        yy_pop_state(TSRMLS_C);
        return ']';
  }
- #line 7689 "Zend/zend_language_scanner.c"
- yy835:
-               YYDEBUG(835, *YYCURSOR);
 -#line 7686 "Zend/zend_language_scanner.c"
 -yy832:
 -              YYDEBUG(832, *YYCURSOR);
++#line 7722 "Zend/zend_language_scanner.c"
++yy838:
++              YYDEBUG(838, *YYCURSOR);
                yych = *++YYCURSOR;
-               goto yy832;
- yy836:
-               YYDEBUG(836, *YYCURSOR);
 -              goto yy829;
 -yy833:
 -              YYDEBUG(833, *YYCURSOR);
++              goto yy835;
++yy839:
++              YYDEBUG(839, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(837, *YYCURSOR);
 -              YYDEBUG(834, *YYCURSOR);
++              YYDEBUG(840, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1893 "Zend/zend_language_scanner.l"
++#line 1897 "Zend/zend_language_scanner.l"
                {
        /* Invalid rule to return a more explicit parse error with proper line number */
        yyless(0);
        yy_pop_state(TSRMLS_C);
        return T_ENCAPSED_AND_WHITESPACE;
  }
- #line 7706 "Zend/zend_language_scanner.c"
- yy838:
-               YYDEBUG(838, *YYCURSOR);
 -#line 7703 "Zend/zend_language_scanner.c"
 -yy835:
 -              YYDEBUG(835, *YYCURSOR);
++#line 7739 "Zend/zend_language_scanner.c"
++yy841:
++              YYDEBUG(841, *YYCURSOR);
                ++YYCURSOR;
                yych = *YYCURSOR;
-               goto yy843;
- yy839:
-               YYDEBUG(839, *YYCURSOR);
 -              goto yy840;
 -yy836:
 -              YYDEBUG(836, *YYCURSOR);
++              goto yy846;
++yy842:
++              YYDEBUG(842, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1900 "Zend/zend_language_scanner.l"
++#line 1904 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        zendlval->type = IS_STRING;
        return T_STRING;
  }
- #line 7721 "Zend/zend_language_scanner.c"
- yy840:
-               YYDEBUG(840, *YYCURSOR);
 -#line 7718 "Zend/zend_language_scanner.c"
 -yy837:
 -              YYDEBUG(837, *YYCURSOR);
++#line 7754 "Zend/zend_language_scanner.c"
++yy843:
++              YYDEBUG(843, *YYCURSOR);
                ++YYCURSOR;
-               YYDEBUG(841, *YYCURSOR);
 -              YYDEBUG(838, *YYCURSOR);
++              YYDEBUG(844, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 2416 "Zend/zend_language_scanner.l"
++#line 2420 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
        zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
        goto restart;
  }
- #line 7736 "Zend/zend_language_scanner.c"
- yy842:
-               YYDEBUG(842, *YYCURSOR);
 -#line 7733 "Zend/zend_language_scanner.c"
 -yy839:
 -              YYDEBUG(839, *YYCURSOR);
++#line 7769 "Zend/zend_language_scanner.c"
++yy845:
++              YYDEBUG(845, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
- yy843:
-               YYDEBUG(843, *YYCURSOR);
 -yy840:
 -              YYDEBUG(840, *YYCURSOR);
++yy846:
++              YYDEBUG(846, *YYCURSOR);
                if (yybm[0+yych] & 16) {
-                       goto yy842;
 -                      goto yy839;
++                      goto yy845;
                }
-               goto yy839;
- yy844:
-               YYDEBUG(844, *YYCURSOR);
 -              goto yy836;
 -yy841:
 -              YYDEBUG(841, *YYCURSOR);
++              goto yy842;
++yy847:
++              YYDEBUG(847, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(845, *YYCURSOR);
 -              YYDEBUG(842, *YYCURSOR);
++              YYDEBUG(848, *YYCURSOR);
                if (yych <= '^') {
                        if (yych <= '9') {
-                               if (yych >= '0') goto yy844;
 -                              if (yych >= '0') goto yy841;
++                              if (yych >= '0') goto yy847;
                        } else {
-                               if (yych <= '@') goto yy846;
-                               if (yych <= 'Z') goto yy844;
 -                              if (yych <= '@') goto yy843;
 -                              if (yych <= 'Z') goto yy841;
++                              if (yych <= '@') goto yy849;
++                              if (yych <= 'Z') goto yy847;
                        }
                } else {
                        if (yych <= '`') {
-                               if (yych <= '_') goto yy844;
 -                              if (yych <= '_') goto yy841;
++                              if (yych <= '_') goto yy847;
                        } else {
-                               if (yych <= 'z') goto yy844;
-                               if (yych >= 0x7F) goto yy844;
 -                              if (yych <= 'z') goto yy841;
 -                              if (yych >= 0x7F) goto yy841;
++                              if (yych <= 'z') goto yy847;
++                              if (yych >= 0x7F) goto yy847;
                        }
                }
- yy846:
-               YYDEBUG(846, *YYCURSOR);
 -yy843:
 -              YYDEBUG(843, *YYCURSOR);
++yy849:
++              YYDEBUG(849, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1877 "Zend/zend_language_scanner.l"
++#line 1881 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        zendlval->type = IS_STRING;
        return T_VARIABLE;
  }
- #line 7778 "Zend/zend_language_scanner.c"
- yy847:
-               YYDEBUG(847, *YYCURSOR);
 -#line 7775 "Zend/zend_language_scanner.c"
 -yy844:
 -              YYDEBUG(844, *YYCURSOR);
++#line 7811 "Zend/zend_language_scanner.c"
++yy850:
++              YYDEBUG(850, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
- yy848:
-               YYDEBUG(848, *YYCURSOR);
 -yy845:
 -              YYDEBUG(845, *YYCURSOR);
++yy851:
++              YYDEBUG(851, *YYCURSOR);
                if (yybm[0+yych] & 32) {
-                       goto yy847;
 -                      goto yy844;
++                      goto yy850;
                }
-               goto yy829;
- yy849:
-               YYDEBUG(849, *YYCURSOR);
 -              goto yy826;
 -yy846:
 -              YYDEBUG(846, *YYCURSOR);
++              goto yy832;
++yy852:
++              YYDEBUG(852, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yybm[0+yych] & 128) {
-                       goto yy857;
 -                      goto yy854;
++                      goto yy860;
                }
- yy850:
-               YYDEBUG(850, *YYCURSOR);
 -yy847:
 -              YYDEBUG(847, *YYCURSOR);
++yy853:
++              YYDEBUG(853, *YYCURSOR);
                YYCURSOR = YYMARKER;
-               goto yy829;
- yy851:
-               YYDEBUG(851, *YYCURSOR);
 -              goto yy826;
 -yy848:
 -              YYDEBUG(848, *YYCURSOR);
++              goto yy832;
++yy854:
++              YYDEBUG(854, *YYCURSOR);
                yych = *++YYCURSOR;
                if (yybm[0+yych] & 64) {
-                       goto yy855;
 -                      goto yy852;
++                      goto yy858;
                }
-               goto yy850;
- yy852:
-               YYDEBUG(852, *YYCURSOR);
 -              goto yy847;
 -yy849:
 -              YYDEBUG(849, *YYCURSOR);
++              goto yy853;
++yy855:
++              YYDEBUG(855, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(853, *YYCURSOR);
-               if (yych <= '/') goto yy854;
-               if (yych <= '9') goto yy852;
- yy854:
-               YYDEBUG(854, *YYCURSOR);
 -              YYDEBUG(850, *YYCURSOR);
 -              if (yych <= '/') goto yy851;
 -              if (yych <= '9') goto yy849;
 -yy851:
 -              YYDEBUG(851, *YYCURSOR);
++              YYDEBUG(856, *YYCURSOR);
++              if (yych <= '/') goto yy857;
++              if (yych <= '9') goto yy855;
++yy857:
++              YYDEBUG(857, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
--#line 1568 "Zend/zend_language_scanner.l"
++#line 1572 "Zend/zend_language_scanner.l"
                { /* Offset must be treated as a string */
        zendlval->value.str.val = (char *)estrndup(yytext, yyleng);
        zendlval->value.str.len = yyleng;
        zendlval->type = IS_STRING;
        return T_NUM_STRING;
  }
- #line 7825 "Zend/zend_language_scanner.c"
- yy855:
-               YYDEBUG(855, *YYCURSOR);
 -#line 7822 "Zend/zend_language_scanner.c"
 -yy852:
 -              YYDEBUG(852, *YYCURSOR);
++#line 7858 "Zend/zend_language_scanner.c"
++yy858:
++              YYDEBUG(858, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(856, *YYCURSOR);
 -              YYDEBUG(853, *YYCURSOR);
++              YYDEBUG(859, *YYCURSOR);
                if (yybm[0+yych] & 64) {
-                       goto yy855;
 -                      goto yy852;
++                      goto yy858;
                }
-               goto yy854;
- yy857:
-               YYDEBUG(857, *YYCURSOR);
 -              goto yy851;
 -yy854:
 -              YYDEBUG(854, *YYCURSOR);
++              goto yy857;
++yy860:
++              YYDEBUG(860, *YYCURSOR);
                ++YYCURSOR;
                YYFILL(1);
                yych = *YYCURSOR;
-               YYDEBUG(858, *YYCURSOR);
 -              YYDEBUG(855, *YYCURSOR);
++              YYDEBUG(861, *YYCURSOR);
                if (yybm[0+yych] & 128) {
-                       goto yy857;
 -                      goto yy854;
++                      goto yy860;
                }
-               goto yy854;
 -              goto yy851;
++              goto yy857;
        }
  }
--#line 2425 "Zend/zend_language_scanner.l"
++#line 2429 "Zend/zend_language_scanner.l"
  
  }
Simple merge
index 869d54349d9969ae526b9c922e327486f4c8a1be,519d415e74ac0c87bbc36bfc8b21ffe775e6c908..2281cc728921ee8a792a425ea2bfc11eb52d0f9e
@@@ -1,4 -1,4 +1,4 @@@
- /* Generated by re2c 0.13.5 on Sat Jun 16 12:57:03 2012 */
 -/* Generated by re2c 0.13.5 on Tue Jul 24 17:16:42 2012 */
++/* Generated by re2c 0.13.5 on Mon Aug 13 16:40:42 2012 */
  #line 3 "Zend/zend_language_scanner_defs.h"
  
  enum YYCONDTYPE {
Simple merge
index 03768e8bd74fe0aff168542266252dedcf47d2ac,ad9301d975b3f19a145c1916479a244a69b1f96b..83ae5c5ba43f90424574bc92a47fd7f6d8e49eb7
@@@ -4994,28 -5096,13 +5094,28 @@@ ZEND_VM_HANDLER(149, ZEND_HANDLE_EXCEPT
  {
        zend_uint op_num = EG(opline_before_exception)-EG(active_op_array)->opcodes;
        int i;
-       zend_uint catch_op_num = 0;
-       int catched = 0;
+       zend_uint catch_op_num = 0, finally_op_num = 0;
+       int catched = 0, finally = 0;
 -      zval restored_error_reporting;
 +      void **stack_frame;
 +
 +      /* Figure out where the next stack frame (which maybe contains pushed
 +       * arguments that have to be dtor'ed) starts */
 +      if (EX(op_array)->fn_flags & ZEND_ACC_GENERATOR) {
 +              /* The generator object is stored in return_value_ptr_ptr */
 +              zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr);
  
 -      void **stack_frame = (void**)(((char*)EX_Ts()) +
 -              (ZEND_MM_ALIGNED_SIZE(sizeof(temp_variable)) * EX(op_array)->T));
 +              /* For generators the next stack frame is conveniently stored in the
 +               * generator object. */
 +              stack_frame = generator->original_stack_top;
 +      } else {
 +              /* In all other cases the next stack frame starts after the temporary
 +               * variables section of the current execution context */
 +              stack_frame = (void **) ((char *) EX_Ts() +
 +                      ZEND_MM_ALIGNED_SIZE(sizeof(temp_variable)) * EX(op_array)->T);
 +      }
  
 +      /* If the exception was thrown during a function call there might be
 +       * arguments pushed to the stack that have to be dtor'ed. */
        while (zend_vm_stack_top(TSRMLS_C) != stack_frame) {
                zval *stack_zval_p = zend_vm_stack_pop(TSRMLS_C);
                zval_ptr_dtor(&stack_zval_p);
        }
        EX(old_error_reporting) = NULL;
  
-       if (!catched) {
+       if (catched && finally) {
+         if (finally_op_num > catch_op_num) {
+             EX(leaving) = 0;
+             ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[catch_op_num]);
+             ZEND_VM_CONTINUE();
+         } else {
+             zend_exception_save(TSRMLS_C);
+             EX(leaving) = finally;
+             ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[finally_op_num]);
+             ZEND_VM_CONTINUE();
+         }
+     } else if (catched) { 
+         EX(leaving) = 0;
+         ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[catch_op_num]);
+         ZEND_VM_CONTINUE();
+     } else if (finally) {
+         zend_exception_save(TSRMLS_C);
+         EX(leaving) = finally;
+         ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[finally_op_num]);
+         ZEND_VM_CONTINUE();
+     } else {
 +              /* For generators skip the leave handler and return directly */
 +              if (EX(op_array)->fn_flags & ZEND_ACC_GENERATOR) {
 +                      /* The generator object is stored in return_value_ptr_ptr */
 +                      zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr);
 +
 +                      /* Close the generator to free up resources */
 +                      zend_generator_close(generator, 1 TSRMLS_CC);
 +
 +                      /* Pass execution back to handling code */
 +                      ZEND_VM_RETURN();
 +              }
 +
-               ZEND_VM_DISPATCH_TO_HELPER(zend_leave_helper);
-       } else {
-               ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[catch_op_num]);
-               ZEND_VM_CONTINUE();
-       }
+         ZEND_VM_DISPATCH_TO_HELPER(zend_leave_helper);
+     }
  }
  
  ZEND_VM_HANDLER(146, ZEND_VERIFY_ABSTRACT_CLASS, ANY, ANY)
@@@ -5222,162 -5317,50 +5344,208 @@@ ZEND_VM_HANDLER(156, ZEND_SEPARATE, VAR
        ZEND_VM_NEXT_OPCODE();
  }
  
- ZEND_VM_HANDLER(159, ZEND_YIELD, CONST|TMP|VAR|CV|UNUSED, CONST|TMP|VAR|CV|UNUSED)
+ ZEND_VM_HANDLER(159, ZEND_LEAVE, ANY, ANY) {
+ {
+     USE_OPLINE;
+       SAVE_OPLINE();
+     zend_uint i, op_num = opline - EG(active_op_array)->opcodes;
+     zend_exception_restore(TSRMLS_C);
+     if (EX(leaving)) {
+         zend_uint catch_op_num = 0, finally_op_num = 0;
+         for (i = 0; i < EX(leaving); i++) {
+             if (EG(active_op_array)->try_catch_array[i].try_op > op_num) {
+                 break;
+             } 
+             if (op_num < EG(active_op_array)->try_catch_array[i].finally_op) {
+                 finally_op_num = EG(active_op_array)->try_catch_array[i].finally_op;
+             }
+             if (EG(exception)) {
+                 if (op_num < EG(active_op_array)->try_catch_array[i].catch_op) {
+                     catch_op_num = EG(active_op_array)->try_catch_array[i].catch_op;
+                 }
+             }
+         }
+         if (catch_op_num && finally_op_num) {
+             if (catch_op_num > finally_op_num) {
+                 ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[finally_op_num]);
+                 ZEND_VM_CONTINUE();
+             } else {
+                 EX(leaving) = 0;
+                 ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[catch_op_num]);
+                 ZEND_VM_CONTINUE();
+             }
+         } else if (catch_op_num) {
+             ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[catch_op_num]);
+             ZEND_VM_CONTINUE();
+         } else if (finally_op_num) {
+             ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[finally_op_num]);
+             ZEND_VM_CONTINUE();
+         } else {
+             ZEND_VM_DISPATCH_TO_HELPER(zend_leave_helper);
+         }
+     } else {
+         ZEND_VM_NEXT_OPCODE();
+     }
+ }
++ZEND_VM_HANDLER(160, ZEND_YIELD, CONST|TMP|VAR|CV|UNUSED, CONST|TMP|VAR|CV|UNUSED)
 +{
 +      USE_OPLINE
 +
 +      /* The generator object is stored in return_value_ptr_ptr */
 +      zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr);
 +
 +      /* Destroy the previously yielded value */
 +      if (generator->value) {
 +              zval_ptr_dtor(&generator->value);
 +      }
 +
 +      /* Destroy the previously yielded key */
 +      if (generator->key) {
 +              zval_ptr_dtor(&generator->key);
 +      }
 +
 +      /* Set the new yielded value */
 +      if (OP1_TYPE != IS_UNUSED) {
 +              zend_free_op free_op1;
 +
 +              if (EX(op_array)->fn_flags & ZEND_ACC_RETURN_REFERENCE) {
 +                      /* Constants and temporary variables aren't yieldable by reference,
 +                       * but we still allow them with a notice. */
 +                      if (OP1_TYPE == IS_CONST || OP1_TYPE == IS_TMP_VAR) {
 +                              zval *value, *copy;
 +
 +                              zend_error(E_NOTICE, "Only variable references should be yielded by reference");
 +
 +                              value = GET_OP1_ZVAL_PTR(BP_VAR_R);
 +                              ALLOC_ZVAL(copy);
 +                              INIT_PZVAL_COPY(copy, value);
 +
 +                              /* Temporary variables don't need ctor copying */
 +                              if (!IS_OP1_TMP_FREE()) {
 +                                      zval_copy_ctor(copy);
 +                              }
 +
 +                              generator->value = copy;
 +                      } else {
 +                              zval **value_ptr = GET_OP1_ZVAL_PTR_PTR(BP_VAR_W);
 +
 +                              if (OP1_TYPE == IS_VAR && UNEXPECTED(value_ptr == NULL)) {
 +                                      zend_error_noreturn(E_ERROR, "Cannot yield string offsets by reference");
 +                              }
 +
 +                              /* If a function call result is yielded and the function did
 +                               * not return by reference we throw a notice. */
 +                              if (OP1_TYPE == IS_VAR && !Z_ISREF_PP(value_ptr)
 +                                  && !(opline->extended_value == ZEND_RETURNS_FUNCTION
 +                                       && EX_T(opline->op1.var).var.fcall_returned_reference)
 +                                  && EX_T(opline->op1.var).var.ptr_ptr == &EX_T(opline->op1.var).var.ptr) {
 +                                      zend_error(E_NOTICE, "Only variable references should be yielded by reference");
 +
 +                                      Z_ADDREF_PP(value_ptr);
 +                                      generator->value = *value_ptr;
 +                              } else {
 +                                      SEPARATE_ZVAL_TO_MAKE_IS_REF(value_ptr);
 +                                      Z_ADDREF_PP(value_ptr);
 +                                      generator->value = *value_ptr;
 +                              }
 +
 +                              FREE_OP1_IF_VAR();
 +                      }
 +              } else {
 +                      zval *value = GET_OP1_ZVAL_PTR(BP_VAR_R);
 +
 +                      /* Consts, temporary variables and references need copying */
 +                      if (OP1_TYPE == IS_CONST || OP1_TYPE == IS_TMP_VAR
 +                              || (PZVAL_IS_REF(value) && Z_REFCOUNT_P(value) > 0)
 +                      ) {
 +                              zval *copy;
 +
 +                              ALLOC_ZVAL(copy);
 +                              INIT_PZVAL_COPY(copy, value);
 +
 +                              /* Temporary variables don't need ctor copying */
 +                              if (!IS_OP1_TMP_FREE()) {
 +                                      zval_copy_ctor(copy);
 +                              }
 +
 +                              generator->value = copy;
 +                      } else {
 +                              Z_ADDREF_P(value);
 +                              generator->value = value;
 +                      }
 +
 +                      FREE_OP1_IF_VAR();
 +              }
 +      } else {
 +              /* If no value was specified yield null */
 +              Z_ADDREF(EG(uninitialized_zval));
 +              generator->value = &EG(uninitialized_zval);
 +      }
 +
 +      /* Set the new yielded key */
 +      if (OP2_TYPE != IS_UNUSED) {
 +              zend_free_op free_op2;
 +              zval *key = GET_OP2_ZVAL_PTR(BP_VAR_R);
 +
 +              /* Consts, temporary variables and references need copying */
 +              if (OP2_TYPE == IS_CONST || OP2_TYPE == IS_TMP_VAR
 +                      || (PZVAL_IS_REF(key) && Z_REFCOUNT_P(key) > 0)
 +              ) {
 +                      zval *copy;
 +
 +                      ALLOC_ZVAL(copy);
 +                      INIT_PZVAL_COPY(copy, key);
 +
 +                      /* Temporary variables don't need ctor copying */
 +                      if (!IS_OP1_TMP_FREE()) {
 +                              zval_copy_ctor(copy);
 +                      }
 +
 +                      generator->key = copy;
 +              } else {
 +                      Z_ADDREF_P(key);
 +                      generator->key = key;
 +              }
 +
 +              if (Z_TYPE_P(generator->key) == IS_LONG
 +                  && Z_LVAL_P(generator->key) > generator->largest_used_integer_key
 +              ) {
 +                      generator->largest_used_integer_key = Z_LVAL_P(generator->key);
 +              }
 +
 +              FREE_OP2_IF_VAR();
 +      } else {
 +              /* If no key was specified we use auto-increment keys */
 +              generator->largest_used_integer_key++;
 +
 +              ALLOC_INIT_ZVAL(generator->key);
 +              ZVAL_LONG(generator->key, generator->largest_used_integer_key);
 +      }
 +
 +      /* If a value is sent it should go into the result var */
 +      generator->send_target = &EX_T(opline->result.var);
 +
 +      /* Initialize the sent value to NULL */
 +      Z_ADDREF(EG(uninitialized_zval));
 +      AI_SET_PTR(&EX_T(opline->result.var), &EG(uninitialized_zval));
 +
 +      /* We increment to the next op, so we are at the correct position when the
 +       * generator is resumed. */
 +      ZEND_VM_INC_OPCODE();
 +
 +      /* The GOTO VM uses a local opline variable. We need to set the opline
 +       * variable in execute_data so we don't resume at an old position. */
 +      SAVE_OPLINE();
 +
 +      ZEND_VM_RETURN();
 +}
 +
- ZEND_VM_HANDLER(160, ZEND_DELEGATE_YIELD, CONST|TMP|VAR|CV, ANY)
++ZEND_VM_HANDLER(161, ZEND_DELEGATE_YIELD, CONST|TMP|VAR|CV, ANY)
 +{
 +      ZEND_VM_NEXT_OPCODE();
 +}
 +
  ZEND_VM_EXPORT_HELPER(zend_do_fcall, zend_do_fcall_common_helper)
index 5ded3e39c7e21c93ce76a7c8bff6e233782256a6,df7c94f5ed479521b1ff90135f8468bf4928422d..495b520ecb22f33f88b8a8850da7bc2755062ee8
@@@ -385,6 -372,10 +385,7 @@@ zend_execute_data *zend_create_execute_
        EX(prev_execute_data) = EG(current_execute_data);
        EG(current_execute_data) = execute_data;
        EX(nested) = nested;
 -      nested = 1;
 -
 -      LOAD_REGS();
+     EX(leaving) = 0;
  
        if (!op_array->run_time_cache && op_array->last_cache_slot) {
                op_array->run_time_cache = ecalloc(op_array->last_cache_slot, sizeof(void*));
@@@ -1057,28 -1034,13 +1058,28 @@@ static int ZEND_FASTCALL  ZEND_HANDLE_E
  {
        zend_uint op_num = EG(opline_before_exception)-EG(active_op_array)->opcodes;
        int i;
-       zend_uint catch_op_num = 0;
-       int catched = 0;
+       zend_uint catch_op_num = 0, finally_op_num = 0;
+       int catched = 0, finally = 0;
 -      zval restored_error_reporting;
 +      void **stack_frame;
  
 -      void **stack_frame = (void**)(((char*)EX_Ts()) +
 -              (ZEND_MM_ALIGNED_SIZE(sizeof(temp_variable)) * EX(op_array)->T));
 +      /* Figure out where the next stack frame (which maybe contains pushed
 +       * arguments that have to be dtor'ed) starts */
 +      if (EX(op_array)->fn_flags & ZEND_ACC_GENERATOR) {
 +              /* The generator object is stored in return_value_ptr_ptr */
 +              zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr);
  
 +              /* For generators the next stack frame is conveniently stored in the
 +               * generator object. */
 +              stack_frame = generator->original_stack_top;
 +      } else {
 +              /* In all other cases the next stack frame starts after the temporary
 +               * variables section of the current execution context */
 +              stack_frame = (void **) ((char *) EX_Ts() +
 +                      ZEND_MM_ALIGNED_SIZE(sizeof(temp_variable)) * EX(op_array)->T);
 +      }
 +
 +      /* If the exception was thrown during a function call there might be
 +       * arguments pushed to the stack that have to be dtor'ed. */
        while (zend_vm_stack_top(TSRMLS_C) != stack_frame) {
                zval *stack_zval_p = zend_vm_stack_pop(TSRMLS_C);
                zval_ptr_dtor(&stack_zval_p);
        }
        EX(old_error_reporting) = NULL;
  
-       if (!catched) {
+       if (catched && finally) {
+         if (finally_op_num > catch_op_num) {
+             EX(leaving) = 0;
+             ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[catch_op_num]);
+             ZEND_VM_CONTINUE();
+         } else {
+             zend_exception_save(TSRMLS_C);
+             EX(leaving) = finally;
+             ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[finally_op_num]);
+             ZEND_VM_CONTINUE();
+         }
+     } else if (catched) {
+         EX(leaving) = 0;
+         ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[catch_op_num]);
+         ZEND_VM_CONTINUE();
+     } else if (finally) {
+         zend_exception_save(TSRMLS_C);
+         EX(leaving) = finally;
+         ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[finally_op_num]);
+         ZEND_VM_CONTINUE();
+     } else {
 +              /* For generators skip the leave handler and return directly */
 +              if (EX(op_array)->fn_flags & ZEND_ACC_GENERATOR) {
 +                      /* The generator object is stored in return_value_ptr_ptr */
 +                      zend_generator *generator = (zend_generator *) EG(return_value_ptr_ptr);
 +
 +                      /* Close the generator to free up resources */
 +                      zend_generator_close(generator, 1 TSRMLS_CC);
 +
 +                      /* Pass execution back to handling code */
 +                      ZEND_VM_RETURN();
 +              }
 +
-               return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
-       } else {
-               ZEND_VM_SET_OPCODE(&EX(op_array)->opcodes[catch_op_num]);
-               ZEND_VM_CONTINUE();
-       }
+         return zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+     }
  }
  
  static int ZEND_FASTCALL  ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
@@@ -44664,56 -41255,31 +45137,81 @@@ void zend_init_opcodes_handlers(void
        ZEND_JMP_SET_VAR_SPEC_CV_HANDLER,
        ZEND_JMP_SET_VAR_SPEC_CV_HANDLER,
        ZEND_JMP_SET_VAR_SPEC_CV_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
+       ZEND_LEAVE_SPEC_HANDLER,
 +      ZEND_YIELD_SPEC_CONST_CONST_HANDLER,
 +      ZEND_YIELD_SPEC_CONST_TMP_HANDLER,
 +      ZEND_YIELD_SPEC_CONST_VAR_HANDLER,
 +      ZEND_YIELD_SPEC_CONST_UNUSED_HANDLER,
 +      ZEND_YIELD_SPEC_CONST_CV_HANDLER,
 +      ZEND_YIELD_SPEC_TMP_CONST_HANDLER,
 +      ZEND_YIELD_SPEC_TMP_TMP_HANDLER,
 +      ZEND_YIELD_SPEC_TMP_VAR_HANDLER,
 +      ZEND_YIELD_SPEC_TMP_UNUSED_HANDLER,
 +      ZEND_YIELD_SPEC_TMP_CV_HANDLER,
 +      ZEND_YIELD_SPEC_VAR_CONST_HANDLER,
 +      ZEND_YIELD_SPEC_VAR_TMP_HANDLER,
 +      ZEND_YIELD_SPEC_VAR_VAR_HANDLER,
 +      ZEND_YIELD_SPEC_VAR_UNUSED_HANDLER,
 +      ZEND_YIELD_SPEC_VAR_CV_HANDLER,
 +      ZEND_YIELD_SPEC_UNUSED_CONST_HANDLER,
 +      ZEND_YIELD_SPEC_UNUSED_TMP_HANDLER,
 +      ZEND_YIELD_SPEC_UNUSED_VAR_HANDLER,
 +      ZEND_YIELD_SPEC_UNUSED_UNUSED_HANDLER,
 +      ZEND_YIELD_SPEC_UNUSED_CV_HANDLER,
 +      ZEND_YIELD_SPEC_CV_CONST_HANDLER,
 +      ZEND_YIELD_SPEC_CV_TMP_HANDLER,
 +      ZEND_YIELD_SPEC_CV_VAR_HANDLER,
 +      ZEND_YIELD_SPEC_CV_UNUSED_HANDLER,
 +      ZEND_YIELD_SPEC_CV_CV_HANDLER,
 +      ZEND_DELEGATE_YIELD_SPEC_CONST_HANDLER,
 +      ZEND_DELEGATE_YIELD_SPEC_CONST_HANDLER,
 +      ZEND_DELEGATE_YIELD_SPEC_CONST_HANDLER,
 +      ZEND_DELEGATE_YIELD_SPEC_CONST_HANDLER,
 +      ZEND_DELEGATE_YIELD_SPEC_CONST_HANDLER,
 +      ZEND_DELEGATE_YIELD_SPEC_TMP_HANDLER,
 +      ZEND_DELEGATE_YIELD_SPEC_TMP_HANDLER,
 +      ZEND_DELEGATE_YIELD_SPEC_TMP_HANDLER,
 +      ZEND_DELEGATE_YIELD_SPEC_TMP_HANDLER,
 +      ZEND_DELEGATE_YIELD_SPEC_TMP_HANDLER,
 +      ZEND_DELEGATE_YIELD_SPEC_VAR_HANDLER,
 +      ZEND_DELEGATE_YIELD_SPEC_VAR_HANDLER,
 +      ZEND_DELEGATE_YIELD_SPEC_VAR_HANDLER,
 +      ZEND_DELEGATE_YIELD_SPEC_VAR_HANDLER,
 +      ZEND_DELEGATE_YIELD_SPEC_VAR_HANDLER,
 +      ZEND_NULL_HANDLER,
 +      ZEND_NULL_HANDLER,
 +      ZEND_NULL_HANDLER,
 +      ZEND_NULL_HANDLER,
 +      ZEND_NULL_HANDLER,
 +      ZEND_DELEGATE_YIELD_SPEC_CV_HANDLER,
 +      ZEND_DELEGATE_YIELD_SPEC_CV_HANDLER,
 +      ZEND_DELEGATE_YIELD_SPEC_CV_HANDLER,
 +      ZEND_DELEGATE_YIELD_SPEC_CV_HANDLER,
 +      ZEND_DELEGATE_YIELD_SPEC_CV_HANDLER,
        ZEND_NULL_HANDLER
    };
    zend_opcode_handlers = (opcode_handler_t*)labels;
index 909ec8ad7a734534b9ab2ce22db181d85f2aaaeb,f5d0b7879a9faac1e00061fe455c4574883be75f..25b3d715347483b42c80e11bdb6f75b440601a8f
@@@ -46,6 -35,10 +46,7 @@@ zend_execute_data *zend_create_execute_
        EX(prev_execute_data) = EG(current_execute_data);
        EG(current_execute_data) = execute_data;
        EX(nested) = nested;
 -      nested = 1;
 -
 -      LOAD_REGS();
+     EX(leaving) = 0;
  
        if (!op_array->run_time_cache && op_array->last_cache_slot) {
                op_array->run_time_cache = ecalloc(op_array->last_cache_slot, sizeof(void*));
index 87fabfc2acc10f29da52b46c8a6fe87334dc3571,69603d1d138890a857be99038a590261ab14c34e..0a9cf008e3ef58cf816926098f3fb76b379d32f2
  #define ZEND_SEPARATE                        156
  #define ZEND_QM_ASSIGN_VAR                   157
  #define ZEND_JMP_SET_VAR                     158
- #define ZEND_YIELD                           159
- #define ZEND_DELEGATE_YIELD                  160
+ #define ZEND_LEAVE                           159
++#define ZEND_YIELD                           160
++#define ZEND_DELEGATE_YIELD                  161
diff --cc configure.in
Simple merge
Simple merge