]> granicus.if.org Git - php/commitdiff
Handle remaining magic constants in parser as well
authorNikita Popov <nikic@php.net>
Tue, 26 Aug 2014 20:47:11 +0000 (22:47 +0200)
committerNikita Popov <nikic@php.net>
Tue, 26 Aug 2014 21:36:52 +0000 (23:36 +0200)
As far as I can see the !filename case cannot occur, so I dropped
it.

Zend/zend_compile.c
Zend/zend_language_parser.y
Zend/zend_language_scanner.c
Zend/zend_language_scanner.l

index 15edc7c3804fcf5e3cb2a8ebf96fa769904fcc17..545b8406724bd3bce5332c99e95289e7e4c78df6 100644 (file)
@@ -6360,6 +6360,31 @@ static zend_bool zend_try_ct_eval_magic_const(zval *zv, zend_ast *ast TSRMLS_DC)
        zend_class_entry *ce = CG(active_class_entry);
 
        switch (ast->attr) {
+               case T_LINE:
+                       ZVAL_LONG(zv, CG(zend_lineno));
+                       break;
+               case T_FILE:
+                       ZVAL_STR(zv, zend_string_copy(CG(compiled_filename)));
+                       break;
+               case T_DIR:
+               {
+                       zend_string *filename = CG(compiled_filename);
+                       zend_string *dirname = zend_string_init(filename->val, filename->len, 0);
+                       zend_dirname(dirname->val, dirname->len);
+
+                       if (strcmp(dirname->val, ".") == 0) {
+                               dirname = zend_string_realloc(dirname, MAXPATHLEN, 0);
+#if HAVE_GETCWD
+                               VCWD_GETCWD(dirname->val, MAXPATHLEN);
+#elif HAVE_GETWD
+                               VCWD_GETWD(dirname->val);
+#endif
+                       }
+
+                       dirname->len = strlen(dirname->val);
+                       ZVAL_STR(zv, dirname);
+                       break;
+               }
                case T_FUNC_C:
                        if (op_array && op_array->function_name) {
                                ZVAL_STR(zv, zend_string_copy(op_array->function_name));
index df444f1db6977d730601bf4e22b1c9975918cc6a..00ebeca557cda66e562517c8c59d9663610a778d 100644 (file)
@@ -100,11 +100,6 @@ static YYSIZE_T zend_yytnamerr(char*, const char*);
 %token <ast> T_STRING_VARNAME "variable name (T_STRING_VARNAME)"
 %token <ast> T_NUM_STRING "number (T_NUM_STRING)"
 
-/* TODO.AST */
-%token <ast> T_LINE            "__LINE__ (T_LINE)"
-%token <ast> T_FILE            "__FILE__ (T_FILE)"
-%token <ast> T_DIR             "__DIR__ (T_DIR)"
-
 %token END 0 "end of file"
 %token T_INCLUDE      "include (T_INCLUDE)"
 %token T_INCLUDE_ONCE "include_once (T_INCLUDE_ONCE)"
@@ -205,6 +200,9 @@ static YYSIZE_T zend_yytnamerr(char*, const char*);
 %token T_LIST            "list (T_LIST)"
 %token T_ARRAY           "array (T_ARRAY)"
 %token T_CALLABLE        "callable (T_CALLABLE)"
+%token T_LINE            "__LINE__ (T_LINE)"
+%token T_FILE            "__FILE__ (T_FILE)"
+%token T_DIR             "__DIR__ (T_DIR)"
 %token T_CLASS_C         "__CLASS__ (T_CLASS_C)"
 %token T_TRAIT_C         "__TRAIT__ (T_TRAIT_C)"
 %token T_METHOD_C        "__METHOD__ (T_METHOD_C)"
@@ -963,9 +961,9 @@ dereferencable_scalar:
 scalar:
                T_LNUMBER       { $$ = $1; }
        |       T_DNUMBER       { $$ = $1; }
-       |       T_LINE          { $$ = $1; }
-       |       T_FILE          { $$ = $1; }
-       |       T_DIR           { $$ = $1; }
+       |       T_LINE          { $$ = zend_ast_create_ex(ZEND_AST_MAGIC_CONST, T_LINE); }
+       |       T_FILE          { $$ = zend_ast_create_ex(ZEND_AST_MAGIC_CONST, T_FILE); }
+       |       T_DIR           { $$ = zend_ast_create_ex(ZEND_AST_MAGIC_CONST, T_DIR); }
        |       T_TRAIT_C       { $$ = zend_ast_create_ex(ZEND_AST_MAGIC_CONST, T_TRAIT_C); }
        |       T_METHOD_C      { $$ = zend_ast_create_ex(ZEND_AST_MAGIC_CONST, T_METHOD_C); }
        |       T_FUNC_C        { $$ = zend_ast_create_ex(ZEND_AST_MAGIC_CONST, T_FUNC_C); }
index 4c2b0b81648d5f479ce0ebcb49645a1a383f2488..a0073869eb6022f57cc9331934956f616cbc5764 100644 (file)
@@ -1097,7 +1097,7 @@ yyc_INITIAL:
 yy3:
                YYDEBUG(3, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1696 "Zend/zend_language_scanner.l"
+#line 1667 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -1176,7 +1176,7 @@ yy5:
 yy6:
                YYDEBUG(6, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1687 "Zend/zend_language_scanner.l"
+#line 1658 "Zend/zend_language_scanner.l"
                {
        if (CG(short_tags)) {
                BEGIN(ST_IN_SCRIPTING);
@@ -1192,7 +1192,7 @@ yy7:
                if ((yych = *YYCURSOR) == '=') goto yy43;
                YYDEBUG(8, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1670 "Zend/zend_language_scanner.l"
+#line 1641 "Zend/zend_language_scanner.l"
                {
        if (CG(asp_tags)) {
                BEGIN(ST_IN_SCRIPTING);
@@ -1387,7 +1387,7 @@ yy35:
                ++YYCURSOR;
                YYDEBUG(38, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1639 "Zend/zend_language_scanner.l"
+#line 1610 "Zend/zend_language_scanner.l"
                {
        YYCTYPE *bracket = (YYCTYPE*)zend_memrchr(yytext, '<', yyleng - (sizeof("script language=php>") - 1));
 
@@ -1428,7 +1428,7 @@ yy43:
                ++YYCURSOR;
                YYDEBUG(44, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1654 "Zend/zend_language_scanner.l"
+#line 1625 "Zend/zend_language_scanner.l"
                {
        if (CG(asp_tags)) {
                BEGIN(ST_IN_SCRIPTING);
@@ -1443,7 +1443,7 @@ yy45:
                ++YYCURSOR;
                YYDEBUG(46, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1664 "Zend/zend_language_scanner.l"
+#line 1635 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        return T_OPEN_TAG_WITH_ECHO;
@@ -1475,7 +1475,7 @@ yy50:
 yy51:
                YYDEBUG(51, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1680 "Zend/zend_language_scanner.l"
+#line 1651 "Zend/zend_language_scanner.l"
                {
        HANDLE_NEWLINE(yytext[yyleng-1]);
        BEGIN(ST_IN_SCRIPTING);
@@ -1552,7 +1552,7 @@ yyc_ST_BACKQUOTE:
 yy56:
                YYDEBUG(56, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2137 "Zend/zend_language_scanner.l"
+#line 2108 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -1604,7 +1604,7 @@ yy58:
                ++YYCURSOR;
                YYDEBUG(59, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2081 "Zend/zend_language_scanner.l"
+#line 2052 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        return '`';
@@ -1619,7 +1619,7 @@ yy61:
                ++YYCURSOR;
                YYDEBUG(62, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2068 "Zend/zend_language_scanner.l"
+#line 2039 "Zend/zend_language_scanner.l"
                {
        Z_LVAL_P(zendlval) = (zend_long) '{';
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@ -1642,7 +1642,7 @@ yy63:
 yy65:
                YYDEBUG(65, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1777 "Zend/zend_language_scanner.l"
+#line 1748 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
@@ -1672,7 +1672,7 @@ yy70:
                ++YYCURSOR;
                YYDEBUG(71, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1770 "Zend/zend_language_scanner.l"
+#line 1741 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
@@ -1697,7 +1697,7 @@ yy73:
                ++YYCURSOR;
                YYDEBUG(74, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1761 "Zend/zend_language_scanner.l"
+#line 1732 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
@@ -1772,7 +1772,7 @@ yy77:
 yy78:
                YYDEBUG(78, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2087 "Zend/zend_language_scanner.l"
+#line 2058 "Zend/zend_language_scanner.l"
                {
        if (GET_DOUBLE_QUOTES_SCANNED_LENGTH()) {
                YYCURSOR += GET_DOUBLE_QUOTES_SCANNED_LENGTH() - 1;
@@ -1832,7 +1832,7 @@ yy80:
                ++YYCURSOR;
                YYDEBUG(81, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2076 "Zend/zend_language_scanner.l"
+#line 2047 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_IN_SCRIPTING);
        return '"';
@@ -1847,7 +1847,7 @@ yy83:
                ++YYCURSOR;
                YYDEBUG(84, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2068 "Zend/zend_language_scanner.l"
+#line 2039 "Zend/zend_language_scanner.l"
                {
        Z_LVAL_P(zendlval) = (zend_long) '{';
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@ -1870,7 +1870,7 @@ yy85:
 yy87:
                YYDEBUG(87, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1777 "Zend/zend_language_scanner.l"
+#line 1748 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
@@ -1900,7 +1900,7 @@ yy92:
                ++YYCURSOR;
                YYDEBUG(93, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1770 "Zend/zend_language_scanner.l"
+#line 1741 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
@@ -1925,7 +1925,7 @@ yy95:
                ++YYCURSOR;
                YYDEBUG(96, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1761 "Zend/zend_language_scanner.l"
+#line 1732 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
@@ -1943,7 +1943,7 @@ yyc_ST_END_HEREDOC:
        ++YYCURSOR;
        YYDEBUG(100, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 2054 "Zend/zend_language_scanner.l"
+#line 2025 "Zend/zend_language_scanner.l"
        {
        zend_heredoc_label *heredoc_label = zend_ptr_stack_pop(&SCNG(heredoc_label_stack));
 
@@ -2018,7 +2018,7 @@ yy103:
 yy104:
                YYDEBUG(104, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2179 "Zend/zend_language_scanner.l"
+#line 2150 "Zend/zend_language_scanner.l"
                {
        int newline = 0;
 
@@ -2106,7 +2106,7 @@ yy107:
                ++YYCURSOR;
                YYDEBUG(108, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2068 "Zend/zend_language_scanner.l"
+#line 2039 "Zend/zend_language_scanner.l"
                {
        Z_LVAL_P(zendlval) = (zend_long) '{';
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@ -2129,7 +2129,7 @@ yy109:
 yy111:
                YYDEBUG(111, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1777 "Zend/zend_language_scanner.l"
+#line 1748 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
@@ -2159,7 +2159,7 @@ yy116:
                ++YYCURSOR;
                YYDEBUG(117, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1770 "Zend/zend_language_scanner.l"
+#line 1741 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 1);
        yy_push_state(ST_VAR_OFFSET TSRMLS_CC);
@@ -2184,7 +2184,7 @@ yy119:
                ++YYCURSOR;
                YYDEBUG(120, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1761 "Zend/zend_language_scanner.l"
+#line 1732 "Zend/zend_language_scanner.l"
                {
        yyless(yyleng - 3);
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
@@ -2374,7 +2374,7 @@ yy123:
 yy124:
                YYDEBUG(124, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1799 "Zend/zend_language_scanner.l"
+#line 1770 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        return T_STRING;
@@ -2971,7 +2971,7 @@ yy176:
 yy177:
                YYDEBUG(177, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1805 "Zend/zend_language_scanner.l"
+#line 1776 "Zend/zend_language_scanner.l"
                {
        while (YYCURSOR < YYLIMIT) {
                switch (*YYCURSOR++) {
@@ -3012,7 +3012,7 @@ yy178:
 yy179:
                YYDEBUG(179, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1889 "Zend/zend_language_scanner.l"
+#line 1860 "Zend/zend_language_scanner.l"
                {
        register char *s, *t;
        char *end;
@@ -3087,7 +3087,7 @@ yy180:
 yy181:
                YYDEBUG(181, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1958 "Zend/zend_language_scanner.l"
+#line 1929 "Zend/zend_language_scanner.l"
                {
        int bprefix = (yytext[0] != '"') ? 1 : 0;
 
@@ -3134,7 +3134,7 @@ yy182:
                ++YYCURSOR;
                YYDEBUG(183, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2048 "Zend/zend_language_scanner.l"
+#line 2019 "Zend/zend_language_scanner.l"
                {
        BEGIN(ST_BACKQUOTE);
        return '`';
@@ -3145,7 +3145,7 @@ yy184:
                ++YYCURSOR;
                YYDEBUG(185, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2310 "Zend/zend_language_scanner.l"
+#line 2281 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -3345,7 +3345,7 @@ yy206:
 yy207:
                YYDEBUG(207, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1872 "Zend/zend_language_scanner.l"
+#line 1843 "Zend/zend_language_scanner.l"
                {
        BEGIN(INITIAL);
        return T_CLOSE_TAG;  /* implicit ';' at php-end tag */
@@ -3384,7 +3384,7 @@ yy210:
 yy212:
                YYDEBUG(212, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1777 "Zend/zend_language_scanner.l"
+#line 1748 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
@@ -3479,7 +3479,7 @@ yy228:
 yy229:
                YYDEBUG(229, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1878 "Zend/zend_language_scanner.l"
+#line 1849 "Zend/zend_language_scanner.l"
                {
        if (CG(asp_tags)) {
                BEGIN(INITIAL);
@@ -3517,7 +3517,7 @@ yy234:
 yy235:
                YYDEBUG(235, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1839 "Zend/zend_language_scanner.l"
+#line 1810 "Zend/zend_language_scanner.l"
                {
        int doc_com;
 
@@ -3845,7 +3845,7 @@ yy279:
 yy280:
                YYDEBUG(280, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2000 "Zend/zend_language_scanner.l"
+#line 1971 "Zend/zend_language_scanner.l"
                {
        char *s;
        int bprefix = (yytext[0] != '<') ? 1 : 0;
@@ -4140,7 +4140,7 @@ yy317:
                }
                YYDEBUG(320, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1635 "Zend/zend_language_scanner.l"
+#line 1606 "Zend/zend_language_scanner.l"
                {
        return T_NS_C;
 }
@@ -4164,32 +4164,11 @@ yy322:
                }
                YYDEBUG(325, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1610 "Zend/zend_language_scanner.l"
+#line 1602 "Zend/zend_language_scanner.l"
                {
-       zend_string *filename = zend_get_compiled_filename(TSRMLS_C);
-       zend_string *dirname;
-
-       if (!filename) {
-               filename = STR_EMPTY_ALLOC();
-       }
-
-       dirname = zend_string_init(filename->val, filename->len, 0);
-       zend_dirname(dirname->val, dirname->len);
-
-       if (strcmp(dirname->val, ".") == 0) {
-               dirname = zend_string_realloc(dirname, MAXPATHLEN, 0);
-#if HAVE_GETCWD
-               VCWD_GETCWD(dirname->val, MAXPATHLEN);
-#elif HAVE_GETWD
-               VCWD_GETWD(dirname->val);
-#endif
-       }
-
-       dirname->len = strlen(dirname->val);
-       ZVAL_STR(zendlval, dirname);
        return T_DIR;
 }
-#line 4193 "Zend/zend_language_scanner.c"
+#line 4172 "Zend/zend_language_scanner.c"
 yy326:
                YYDEBUG(326, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4216,10 +4195,9 @@ yy328:
                yyleng = YYCURSOR - SCNG(yy_text);
 #line 1594 "Zend/zend_language_scanner.l"
                {
-       ZVAL_LONG(zendlval, CG(zend_lineno));
        return T_LINE;
 }
-#line 4223 "Zend/zend_language_scanner.c"
+#line 4201 "Zend/zend_language_scanner.c"
 yy332:
                YYDEBUG(332, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4258,7 +4236,7 @@ yy336:
                {
        return T_METHOD_C;
 }
-#line 4262 "Zend/zend_language_scanner.c"
+#line 4240 "Zend/zend_language_scanner.c"
 yy340:
                YYDEBUG(340, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4313,7 +4291,7 @@ yy347:
                {
        return T_FUNC_C;
 }
-#line 4317 "Zend/zend_language_scanner.c"
+#line 4295 "Zend/zend_language_scanner.c"
 yy351:
                YYDEBUG(351, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4333,18 +4311,11 @@ yy352:
                }
                YYDEBUG(355, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1599 "Zend/zend_language_scanner.l"
+#line 1598 "Zend/zend_language_scanner.l"
                {
-       zend_string *filename = zend_get_compiled_filename(TSRMLS_C);
-
-       if (!filename) {
-               ZVAL_EMPTY_STRING(zendlval);
-       } else {
-               ZVAL_STR(zendlval, zend_string_copy(filename));
-       }
        return T_FILE;
 }
-#line 4348 "Zend/zend_language_scanner.c"
+#line 4319 "Zend/zend_language_scanner.c"
 yy356:
                YYDEBUG(356, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4378,7 +4349,7 @@ yy359:
                {
        return T_TRAIT_C;
 }
-#line 4382 "Zend/zend_language_scanner.c"
+#line 4353 "Zend/zend_language_scanner.c"
 yy363:
                YYDEBUG(363, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4412,7 +4383,7 @@ yy366:
                {
        return T_CLASS_C;
 }
-#line 4416 "Zend/zend_language_scanner.c"
+#line 4387 "Zend/zend_language_scanner.c"
 yy370:
                YYDEBUG(370, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4478,7 +4449,7 @@ yy381:
                {
        return T_HALT_COMPILER;
 }
-#line 4482 "Zend/zend_language_scanner.c"
+#line 4453 "Zend/zend_language_scanner.c"
 yy383:
                YYDEBUG(383, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4502,7 +4473,7 @@ yy385:
                {
        return T_USE;
 }
-#line 4506 "Zend/zend_language_scanner.c"
+#line 4477 "Zend/zend_language_scanner.c"
 yy387:
                YYDEBUG(387, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4525,7 +4496,7 @@ yy389:
                {
        return T_UNSET;
 }
-#line 4529 "Zend/zend_language_scanner.c"
+#line 4500 "Zend/zend_language_scanner.c"
 yy391:
                YYDEBUG(391, *YYCURSOR);
                ++YYCURSOR;
@@ -4701,7 +4672,7 @@ yy406:
                {
        return T_INT_CAST;
 }
-#line 4705 "Zend/zend_language_scanner.c"
+#line 4676 "Zend/zend_language_scanner.c"
 yy409:
                YYDEBUG(409, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4749,7 +4720,7 @@ yy414:
                {
        return T_DOUBLE_CAST;
 }
-#line 4753 "Zend/zend_language_scanner.c"
+#line 4724 "Zend/zend_language_scanner.c"
 yy418:
                YYDEBUG(418, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4823,7 +4794,7 @@ yy428:
                {
        return T_STRING_CAST;
 }
-#line 4827 "Zend/zend_language_scanner.c"
+#line 4798 "Zend/zend_language_scanner.c"
 yy432:
                YYDEBUG(432, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4860,7 +4831,7 @@ yy435:
                {
        return T_ARRAY_CAST;
 }
-#line 4864 "Zend/zend_language_scanner.c"
+#line 4835 "Zend/zend_language_scanner.c"
 yy439:
                YYDEBUG(439, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4902,7 +4873,7 @@ yy443:
                {
        return T_OBJECT_CAST;
 }
-#line 4906 "Zend/zend_language_scanner.c"
+#line 4877 "Zend/zend_language_scanner.c"
 yy447:
                YYDEBUG(447, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -4947,7 +4918,7 @@ yy452:
                {
        return T_BOOL_CAST;
 }
-#line 4951 "Zend/zend_language_scanner.c"
+#line 4922 "Zend/zend_language_scanner.c"
 yy455:
                YYDEBUG(455, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5011,7 +4982,7 @@ yy463:
                {
        return T_UNSET_CAST;
 }
-#line 5015 "Zend/zend_language_scanner.c"
+#line 4986 "Zend/zend_language_scanner.c"
 yy467:
                YYDEBUG(467, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5029,7 +5000,7 @@ yy468:
                {
        return T_VAR;
 }
-#line 5033 "Zend/zend_language_scanner.c"
+#line 5004 "Zend/zend_language_scanner.c"
 yy470:
                YYDEBUG(470, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5053,7 +5024,7 @@ yy472:
                {
        return T_NEW;
 }
-#line 5057 "Zend/zend_language_scanner.c"
+#line 5028 "Zend/zend_language_scanner.c"
 yy474:
                YYDEBUG(474, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5096,7 +5067,7 @@ yy480:
                {
        return T_NAMESPACE;
 }
-#line 5100 "Zend/zend_language_scanner.c"
+#line 5071 "Zend/zend_language_scanner.c"
 yy482:
                YYDEBUG(482, *YYCURSOR);
                yyaccept = 3;
@@ -5122,7 +5093,7 @@ yy484:
                {
        return T_CONCAT_EQUAL;
 }
-#line 5126 "Zend/zend_language_scanner.c"
+#line 5097 "Zend/zend_language_scanner.c"
 yy486:
                YYDEBUG(486, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5135,7 +5106,7 @@ yy486:
                {
        return T_ELLIPSIS;
 }
-#line 5139 "Zend/zend_language_scanner.c"
+#line 5110 "Zend/zend_language_scanner.c"
 yy489:
                YYDEBUG(489, *YYCURSOR);
                ++YYCURSOR;
@@ -5145,7 +5116,7 @@ yy489:
                {
        return T_PAAMAYIM_NEKUDOTAYIM;
 }
-#line 5149 "Zend/zend_language_scanner.c"
+#line 5120 "Zend/zend_language_scanner.c"
 yy491:
                YYDEBUG(491, *YYCURSOR);
                ++YYCURSOR;
@@ -5171,7 +5142,7 @@ yy493:
                {
        return T_MINUS_EQUAL;
 }
-#line 5175 "Zend/zend_language_scanner.c"
+#line 5146 "Zend/zend_language_scanner.c"
 yy495:
                YYDEBUG(495, *YYCURSOR);
                ++YYCURSOR;
@@ -5181,7 +5152,7 @@ yy495:
                {
        return T_DEC;
 }
-#line 5185 "Zend/zend_language_scanner.c"
+#line 5156 "Zend/zend_language_scanner.c"
 yy497:
                YYDEBUG(497, *YYCURSOR);
                ++YYCURSOR;
@@ -5192,7 +5163,7 @@ yy497:
        yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
        return T_OBJECT_OPERATOR;
 }
-#line 5196 "Zend/zend_language_scanner.c"
+#line 5167 "Zend/zend_language_scanner.c"
 yy499:
                YYDEBUG(499, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5241,7 +5212,7 @@ yy504:
                {
        return T_PUBLIC;
 }
-#line 5245 "Zend/zend_language_scanner.c"
+#line 5216 "Zend/zend_language_scanner.c"
 yy506:
                YYDEBUG(506, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5300,7 +5271,7 @@ yy513:
                {
        return T_PROTECTED;
 }
-#line 5304 "Zend/zend_language_scanner.c"
+#line 5275 "Zend/zend_language_scanner.c"
 yy515:
                YYDEBUG(515, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5334,7 +5305,7 @@ yy519:
                {
        return T_PRIVATE;
 }
-#line 5338 "Zend/zend_language_scanner.c"
+#line 5309 "Zend/zend_language_scanner.c"
 yy521:
                YYDEBUG(521, *YYCURSOR);
                ++YYCURSOR;
@@ -5347,7 +5318,7 @@ yy521:
                {
        return T_PRINT;
 }
-#line 5351 "Zend/zend_language_scanner.c"
+#line 5322 "Zend/zend_language_scanner.c"
 yy523:
                YYDEBUG(523, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5376,7 +5347,7 @@ yy526:
                {
        return T_GOTO;
 }
-#line 5380 "Zend/zend_language_scanner.c"
+#line 5351 "Zend/zend_language_scanner.c"
 yy528:
                YYDEBUG(528, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5404,7 +5375,7 @@ yy531:
                {
        return T_GLOBAL;
 }
-#line 5408 "Zend/zend_language_scanner.c"
+#line 5379 "Zend/zend_language_scanner.c"
 yy533:
                YYDEBUG(533, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5445,7 +5416,7 @@ yy539:
                {
        return T_BREAK;
 }
-#line 5449 "Zend/zend_language_scanner.c"
+#line 5420 "Zend/zend_language_scanner.c"
 yy541:
                YYDEBUG(541, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5489,7 +5460,7 @@ yy547:
                {
        return T_SWITCH;
 }
-#line 5493 "Zend/zend_language_scanner.c"
+#line 5464 "Zend/zend_language_scanner.c"
 yy549:
                YYDEBUG(549, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5517,7 +5488,7 @@ yy552:
                {
        return T_STATIC;
 }
-#line 5521 "Zend/zend_language_scanner.c"
+#line 5492 "Zend/zend_language_scanner.c"
 yy554:
                YYDEBUG(554, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5548,7 +5519,7 @@ yy557:
                {
        return T_AS;
 }
-#line 5552 "Zend/zend_language_scanner.c"
+#line 5523 "Zend/zend_language_scanner.c"
 yy559:
                YYDEBUG(559, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5571,7 +5542,7 @@ yy561:
                {
        return T_ARRAY;
 }
-#line 5575 "Zend/zend_language_scanner.c"
+#line 5546 "Zend/zend_language_scanner.c"
 yy563:
                YYDEBUG(563, *YYCURSOR);
                ++YYCURSOR;
@@ -5584,7 +5555,7 @@ yy563:
                {
        return T_LOGICAL_AND;
 }
-#line 5588 "Zend/zend_language_scanner.c"
+#line 5559 "Zend/zend_language_scanner.c"
 yy565:
                YYDEBUG(565, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5622,7 +5593,7 @@ yy570:
                {
        return T_ABSTRACT;
 }
-#line 5626 "Zend/zend_language_scanner.c"
+#line 5597 "Zend/zend_language_scanner.c"
 yy572:
                YYDEBUG(572, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5650,7 +5621,7 @@ yy575:
                {
        return T_WHILE;
 }
-#line 5654 "Zend/zend_language_scanner.c"
+#line 5625 "Zend/zend_language_scanner.c"
 yy577:
                YYDEBUG(577, *YYCURSOR);
                ++YYCURSOR;
@@ -5663,7 +5634,7 @@ yy577:
                {
        return T_IF;
 }
-#line 5667 "Zend/zend_language_scanner.c"
+#line 5638 "Zend/zend_language_scanner.c"
 yy579:
                YYDEBUG(579, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5719,7 +5690,7 @@ yy584:
                {
        return T_ISSET;
 }
-#line 5723 "Zend/zend_language_scanner.c"
+#line 5694 "Zend/zend_language_scanner.c"
 yy586:
                YYDEBUG(586, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5777,7 +5748,7 @@ yy593:
                {
        return T_INCLUDE;
 }
-#line 5781 "Zend/zend_language_scanner.c"
+#line 5752 "Zend/zend_language_scanner.c"
 yy594:
                YYDEBUG(594, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5810,7 +5781,7 @@ yy598:
                {
        return T_INCLUDE_ONCE;
 }
-#line 5814 "Zend/zend_language_scanner.c"
+#line 5785 "Zend/zend_language_scanner.c"
 yy600:
                YYDEBUG(600, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5848,7 +5819,7 @@ yy605:
                {
        return T_INTERFACE;
 }
-#line 5852 "Zend/zend_language_scanner.c"
+#line 5823 "Zend/zend_language_scanner.c"
 yy607:
                YYDEBUG(607, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5902,7 +5873,7 @@ yy613:
                {
         return T_INSTEADOF;
 }
-#line 5906 "Zend/zend_language_scanner.c"
+#line 5877 "Zend/zend_language_scanner.c"
 yy615:
                YYDEBUG(615, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5935,7 +5906,7 @@ yy619:
                {
        return T_INSTANCEOF;
 }
-#line 5939 "Zend/zend_language_scanner.c"
+#line 5910 "Zend/zend_language_scanner.c"
 yy621:
                YYDEBUG(621, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -5983,7 +5954,7 @@ yy628:
                {
        return T_IMPLEMENTS;
 }
-#line 5987 "Zend/zend_language_scanner.c"
+#line 5958 "Zend/zend_language_scanner.c"
 yy630:
                YYDEBUG(630, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6015,7 +5986,7 @@ yy631:
                {
        return T_TRY;
 }
-#line 6019 "Zend/zend_language_scanner.c"
+#line 5990 "Zend/zend_language_scanner.c"
 yy634:
                YYDEBUG(634, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6038,7 +6009,7 @@ yy636:
                {
        return T_TRAIT;
 }
-#line 6042 "Zend/zend_language_scanner.c"
+#line 6013 "Zend/zend_language_scanner.c"
 yy638:
                YYDEBUG(638, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6061,7 +6032,7 @@ yy640:
                {
        return T_THROW;
 }
-#line 6065 "Zend/zend_language_scanner.c"
+#line 6036 "Zend/zend_language_scanner.c"
 yy642:
                YYDEBUG(642, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6089,7 +6060,7 @@ yy645:
                {
        return T_YIELD;
 }
-#line 6093 "Zend/zend_language_scanner.c"
+#line 6064 "Zend/zend_language_scanner.c"
 yy647:
                YYDEBUG(647, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6154,7 +6125,7 @@ yy654:
                {
        return T_REQUIRE;
 }
-#line 6158 "Zend/zend_language_scanner.c"
+#line 6129 "Zend/zend_language_scanner.c"
 yy655:
                YYDEBUG(655, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6187,7 +6158,7 @@ yy659:
                {
        return T_REQUIRE_ONCE;
 }
-#line 6191 "Zend/zend_language_scanner.c"
+#line 6162 "Zend/zend_language_scanner.c"
 yy661:
                YYDEBUG(661, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6210,7 +6181,7 @@ yy663:
                {
        return T_RETURN;
 }
-#line 6214 "Zend/zend_language_scanner.c"
+#line 6185 "Zend/zend_language_scanner.c"
 yy665:
                YYDEBUG(665, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6304,7 +6275,7 @@ yy674:
                {
        return T_CONTINUE;
 }
-#line 6308 "Zend/zend_language_scanner.c"
+#line 6279 "Zend/zend_language_scanner.c"
 yy676:
                YYDEBUG(676, *YYCURSOR);
                ++YYCURSOR;
@@ -6317,7 +6288,7 @@ yy676:
                {
        return T_CONST;
 }
-#line 6321 "Zend/zend_language_scanner.c"
+#line 6292 "Zend/zend_language_scanner.c"
 yy678:
                YYDEBUG(678, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6346,7 +6317,7 @@ yy681:
                {
        return T_CLONE;
 }
-#line 6350 "Zend/zend_language_scanner.c"
+#line 6321 "Zend/zend_language_scanner.c"
 yy683:
                YYDEBUG(683, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6364,7 +6335,7 @@ yy684:
                {
        return T_CLASS;
 }
-#line 6368 "Zend/zend_language_scanner.c"
+#line 6339 "Zend/zend_language_scanner.c"
 yy686:
                YYDEBUG(686, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6414,7 +6385,7 @@ yy693:
                {
  return T_CALLABLE;
 }
-#line 6418 "Zend/zend_language_scanner.c"
+#line 6389 "Zend/zend_language_scanner.c"
 yy695:
                YYDEBUG(695, *YYCURSOR);
                ++YYCURSOR;
@@ -6427,7 +6398,7 @@ yy695:
                {
        return T_CASE;
 }
-#line 6431 "Zend/zend_language_scanner.c"
+#line 6402 "Zend/zend_language_scanner.c"
 yy697:
                YYDEBUG(697, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6445,7 +6416,7 @@ yy698:
                {
        return T_CATCH;
 }
-#line 6449 "Zend/zend_language_scanner.c"
+#line 6420 "Zend/zend_language_scanner.c"
 yy700:
                YYDEBUG(700, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6500,7 +6471,7 @@ yy708:
                {
        return T_FUNCTION;
 }
-#line 6504 "Zend/zend_language_scanner.c"
+#line 6475 "Zend/zend_language_scanner.c"
 yy710:
                YYDEBUG(710, *YYCURSOR);
                ++YYCURSOR;
@@ -6528,7 +6499,7 @@ yy711:
                {
        return T_FOR;
 }
-#line 6532 "Zend/zend_language_scanner.c"
+#line 6503 "Zend/zend_language_scanner.c"
 yy712:
                YYDEBUG(712, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6556,7 +6527,7 @@ yy715:
                {
        return T_FOREACH;
 }
-#line 6560 "Zend/zend_language_scanner.c"
+#line 6531 "Zend/zend_language_scanner.c"
 yy717:
                YYDEBUG(717, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6594,7 +6565,7 @@ yy720:
                {
        return T_FINAL;
 }
-#line 6598 "Zend/zend_language_scanner.c"
+#line 6569 "Zend/zend_language_scanner.c"
 yy721:
                YYDEBUG(721, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6612,7 +6583,7 @@ yy722:
                {
        return T_FINALLY;
 }
-#line 6616 "Zend/zend_language_scanner.c"
+#line 6587 "Zend/zend_language_scanner.c"
 yy724:
                YYDEBUG(724, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6647,7 +6618,7 @@ yy726:
                {
        return T_DO;
 }
-#line 6651 "Zend/zend_language_scanner.c"
+#line 6622 "Zend/zend_language_scanner.c"
 yy728:
                YYDEBUG(728, *YYCURSOR);
                ++YYCURSOR;
@@ -6660,7 +6631,7 @@ yy728:
                {
        return T_EXIT;
 }
-#line 6664 "Zend/zend_language_scanner.c"
+#line 6635 "Zend/zend_language_scanner.c"
 yy730:
                YYDEBUG(730, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6699,7 +6670,7 @@ yy735:
                {
        return T_DEFAULT;
 }
-#line 6703 "Zend/zend_language_scanner.c"
+#line 6674 "Zend/zend_language_scanner.c"
 yy737:
                YYDEBUG(737, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6727,7 +6698,7 @@ yy740:
                {
        return T_DECLARE;
 }
-#line 6731 "Zend/zend_language_scanner.c"
+#line 6702 "Zend/zend_language_scanner.c"
 yy742:
                YYDEBUG(742, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6811,7 +6782,7 @@ yy753:
                {
        return T_EXTENDS;
 }
-#line 6815 "Zend/zend_language_scanner.c"
+#line 6786 "Zend/zend_language_scanner.c"
 yy755:
                YYDEBUG(755, *YYCURSOR);
                ++YYCURSOR;
@@ -6824,7 +6795,7 @@ yy755:
                {
        return T_EXIT;
 }
-#line 6828 "Zend/zend_language_scanner.c"
+#line 6799 "Zend/zend_language_scanner.c"
 yy757:
                YYDEBUG(757, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6842,7 +6813,7 @@ yy758:
                {
        return T_EVAL;
 }
-#line 6846 "Zend/zend_language_scanner.c"
+#line 6817 "Zend/zend_language_scanner.c"
 yy760:
                YYDEBUG(760, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6916,7 +6887,7 @@ yy769:
                {
        return T_ENDWHILE;
 }
-#line 6920 "Zend/zend_language_scanner.c"
+#line 6891 "Zend/zend_language_scanner.c"
 yy771:
                YYDEBUG(771, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6949,7 +6920,7 @@ yy775:
                {
        return T_ENDSWITCH;
 }
-#line 6953 "Zend/zend_language_scanner.c"
+#line 6924 "Zend/zend_language_scanner.c"
 yy777:
                YYDEBUG(777, *YYCURSOR);
                ++YYCURSOR;
@@ -6962,7 +6933,7 @@ yy777:
                {
        return T_ENDIF;
 }
-#line 6966 "Zend/zend_language_scanner.c"
+#line 6937 "Zend/zend_language_scanner.c"
 yy779:
                YYDEBUG(779, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -6995,7 +6966,7 @@ yy781:
                {
        return T_ENDFOR;
 }
-#line 6999 "Zend/zend_language_scanner.c"
+#line 6970 "Zend/zend_language_scanner.c"
 yy782:
                YYDEBUG(782, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7023,7 +6994,7 @@ yy785:
                {
        return T_ENDFOREACH;
 }
-#line 7027 "Zend/zend_language_scanner.c"
+#line 6998 "Zend/zend_language_scanner.c"
 yy787:
                YYDEBUG(787, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7061,7 +7032,7 @@ yy792:
                {
        return T_ENDDECLARE;
 }
-#line 7065 "Zend/zend_language_scanner.c"
+#line 7036 "Zend/zend_language_scanner.c"
 yy794:
                YYDEBUG(794, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7084,7 +7055,7 @@ yy796:
                {
        return T_EMPTY;
 }
-#line 7088 "Zend/zend_language_scanner.c"
+#line 7059 "Zend/zend_language_scanner.c"
 yy798:
                YYDEBUG(798, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7117,7 +7088,7 @@ yy800:
                {
        return T_ELSE;
 }
-#line 7121 "Zend/zend_language_scanner.c"
+#line 7092 "Zend/zend_language_scanner.c"
 yy801:
                YYDEBUG(801, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7135,7 +7106,7 @@ yy802:
                {
        return T_ELSEIF;
 }
-#line 7139 "Zend/zend_language_scanner.c"
+#line 7110 "Zend/zend_language_scanner.c"
 yy804:
                YYDEBUG(804, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7153,7 +7124,7 @@ yy805:
                {
        return T_ECHO;
 }
-#line 7157 "Zend/zend_language_scanner.c"
+#line 7128 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_LOOKING_FOR_PROPERTY:
@@ -7231,7 +7202,7 @@ yy810:
        HANDLE_NEWLINES(yytext, yyleng);
        return T_WHITESPACE;
 }
-#line 7235 "Zend/zend_language_scanner.c"
+#line 7206 "Zend/zend_language_scanner.c"
 yy811:
                YYDEBUG(811, *YYCURSOR);
                ++YYCURSOR;
@@ -7245,7 +7216,7 @@ yy812:
        yy_pop_state(TSRMLS_C);
        goto restart;
 }
-#line 7249 "Zend/zend_language_scanner.c"
+#line 7220 "Zend/zend_language_scanner.c"
 yy813:
                YYDEBUG(813, *YYCURSOR);
                ++YYCURSOR;
@@ -7260,7 +7231,7 @@ yy814:
        zend_copy_value(zendlval, yytext, yyleng);
        return T_STRING;
 }
-#line 7264 "Zend/zend_language_scanner.c"
+#line 7235 "Zend/zend_language_scanner.c"
 yy815:
                YYDEBUG(815, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7285,7 +7256,7 @@ yy818:
                {
        return T_OBJECT_OPERATOR;
 }
-#line 7289 "Zend/zend_language_scanner.c"
+#line 7260 "Zend/zend_language_scanner.c"
 yy820:
                YYDEBUG(820, *YYCURSOR);
                ++YYCURSOR;
@@ -7377,7 +7348,7 @@ yy825:
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        goto restart;
 }
-#line 7381 "Zend/zend_language_scanner.c"
+#line 7352 "Zend/zend_language_scanner.c"
 yy826:
                YYDEBUG(826, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7410,7 +7381,7 @@ yy830:
        yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
        return T_STRING_VARNAME;
 }
-#line 7414 "Zend/zend_language_scanner.c"
+#line 7385 "Zend/zend_language_scanner.c"
        }
 /* *********************************** */
 yyc_ST_NOWDOC:
@@ -7421,7 +7392,7 @@ yyc_ST_NOWDOC:
        ++YYCURSOR;
        YYDEBUG(835, *YYCURSOR);
        yyleng = YYCURSOR - SCNG(yy_text);
-#line 2253 "Zend/zend_language_scanner.l"
+#line 2224 "Zend/zend_language_scanner.l"
        {
        int newline = 0;
 
@@ -7477,7 +7448,7 @@ nowdoc_scan_done:
        HANDLE_NEWLINES(yytext, yyleng - newline);
        return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 7481 "Zend/zend_language_scanner.c"
+#line 7452 "Zend/zend_language_scanner.c"
 /* *********************************** */
 yyc_ST_VAR_OFFSET:
        {
@@ -7593,7 +7564,7 @@ yy839:
        }
        return T_NUM_STRING;
 }
-#line 7597 "Zend/zend_language_scanner.c"
+#line 7568 "Zend/zend_language_scanner.c"
 yy840:
                YYDEBUG(840, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7613,23 +7584,23 @@ yy841:
 yy842:
                YYDEBUG(842, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1787 "Zend/zend_language_scanner.l"
+#line 1758 "Zend/zend_language_scanner.l"
                {
        /* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */
        return yytext[0];
 }
-#line 7622 "Zend/zend_language_scanner.c"
+#line 7593 "Zend/zend_language_scanner.c"
 yy843:
                YYDEBUG(843, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(844, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1782 "Zend/zend_language_scanner.l"
+#line 1753 "Zend/zend_language_scanner.l"
                {
        yy_pop_state(TSRMLS_C);
        return ']';
 }
-#line 7633 "Zend/zend_language_scanner.c"
+#line 7604 "Zend/zend_language_scanner.c"
 yy845:
                YYDEBUG(845, *YYCURSOR);
                yych = *++YYCURSOR;
@@ -7639,14 +7610,14 @@ yy846:
                ++YYCURSOR;
                YYDEBUG(847, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1792 "Zend/zend_language_scanner.l"
+#line 1763 "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 7650 "Zend/zend_language_scanner.c"
+#line 7621 "Zend/zend_language_scanner.c"
 yy848:
                YYDEBUG(848, *YYCURSOR);
                ++YYCURSOR;
@@ -7655,18 +7626,18 @@ yy848:
 yy849:
                YYDEBUG(849, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1799 "Zend/zend_language_scanner.l"
+#line 1770 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, yytext, yyleng);
        return T_STRING;
 }
-#line 7664 "Zend/zend_language_scanner.c"
+#line 7635 "Zend/zend_language_scanner.c"
 yy850:
                YYDEBUG(850, *YYCURSOR);
                ++YYCURSOR;
                YYDEBUG(851, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 2310 "Zend/zend_language_scanner.l"
+#line 2281 "Zend/zend_language_scanner.l"
                {
        if (YYCURSOR > YYLIMIT) {
                return 0;
@@ -7675,7 +7646,7 @@ yy850:
        zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
        goto restart;
 }
-#line 7679 "Zend/zend_language_scanner.c"
+#line 7650 "Zend/zend_language_scanner.c"
 yy852:
                YYDEBUG(852, *YYCURSOR);
                ++YYCURSOR;
@@ -7711,12 +7682,12 @@ yy854:
 yy856:
                YYDEBUG(856, *YYCURSOR);
                yyleng = YYCURSOR - SCNG(yy_text);
-#line 1777 "Zend/zend_language_scanner.l"
+#line 1748 "Zend/zend_language_scanner.l"
                {
        zend_copy_value(zendlval, (yytext+1), (yyleng-1));
        return T_VARIABLE;
 }
-#line 7720 "Zend/zend_language_scanner.c"
+#line 7691 "Zend/zend_language_scanner.c"
 yy857:
                YYDEBUG(857, *YYCURSOR);
                ++YYCURSOR;
@@ -7761,7 +7732,7 @@ yy864:
        ZVAL_STRINGL(zendlval, yytext, yyleng);
        return T_NUM_STRING;
 }
-#line 7765 "Zend/zend_language_scanner.c"
+#line 7736 "Zend/zend_language_scanner.c"
 yy865:
                YYDEBUG(865, *YYCURSOR);
                ++YYCURSOR;
@@ -7784,6 +7755,6 @@ yy867:
                goto yy864;
        }
 }
-#line 2319 "Zend/zend_language_scanner.l"
+#line 2290 "Zend/zend_language_scanner.l"
 
 }
index 6dc3a1236ede44564c38c489b710e096eb1689ba..3b03c5cb7831f6915d8698f3b209cbdc497866aa 100644 (file)
@@ -1592,43 +1592,14 @@ NEWLINE ("\r"|"\n"|"\r\n")
 }
 
 <ST_IN_SCRIPTING>"__LINE__" {
-       ZVAL_LONG(zendlval, CG(zend_lineno));
        return T_LINE;
 }
 
 <ST_IN_SCRIPTING>"__FILE__" {
-       zend_string *filename = zend_get_compiled_filename(TSRMLS_C);
-
-       if (!filename) {
-               ZVAL_EMPTY_STRING(zendlval);
-       } else {
-               ZVAL_STR(zendlval, zend_string_copy(filename));
-       }
        return T_FILE;
 }
 
 <ST_IN_SCRIPTING>"__DIR__" {
-       zend_string *filename = zend_get_compiled_filename(TSRMLS_C);
-       zend_string *dirname;
-
-       if (!filename) {
-               filename = STR_EMPTY_ALLOC();
-       }
-
-       dirname = zend_string_init(filename->val, filename->len, 0);
-       zend_dirname(dirname->val, dirname->len);
-
-       if (strcmp(dirname->val, ".") == 0) {
-               dirname = zend_string_realloc(dirname, MAXPATHLEN, 0);
-#if HAVE_GETCWD
-               VCWD_GETCWD(dirname->val, MAXPATHLEN);
-#elif HAVE_GETWD
-               VCWD_GETWD(dirname->val);
-#endif
-       }
-
-       dirname->len = strlen(dirname->val);
-       ZVAL_STR(zendlval, dirname);
        return T_DIR;
 }