From f8abb9a462170a043242e5c63bba98ad9946fcee Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Tue, 26 Aug 2014 22:47:11 +0200 Subject: [PATCH] Handle remaining magic constants in parser as well As far as I can see the !filename case cannot occur, so I dropped it. --- Zend/zend_compile.c | 25 +++ Zend/zend_language_parser.y | 14 +- Zend/zend_language_scanner.c | 321 ++++++++++++++++------------------- Zend/zend_language_scanner.l | 29 ---- 4 files changed, 177 insertions(+), 212 deletions(-) diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 15edc7c380..545b840672 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -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)); diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y index df444f1db6..00ebeca557 100644 --- a/Zend/zend_language_parser.y +++ b/Zend/zend_language_parser.y @@ -100,11 +100,6 @@ static YYSIZE_T zend_yytnamerr(char*, const char*); %token T_STRING_VARNAME "variable name (T_STRING_VARNAME)" %token T_NUM_STRING "number (T_NUM_STRING)" -/* TODO.AST */ -%token T_LINE "__LINE__ (T_LINE)" -%token T_FILE "__FILE__ (T_FILE)" -%token 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); } diff --git a/Zend/zend_language_scanner.c b/Zend/zend_language_scanner.c index 4c2b0b8164..a0073869eb 100644 --- a/Zend/zend_language_scanner.c +++ b/Zend/zend_language_scanner.c @@ -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" } diff --git a/Zend/zend_language_scanner.l b/Zend/zend_language_scanner.l index 6dc3a1236e..3b03c5cb78 100644 --- a/Zend/zend_language_scanner.l +++ b/Zend/zend_language_scanner.l @@ -1592,43 +1592,14 @@ NEWLINE ("\r"|"\n"|"\r\n") } "__LINE__" { - ZVAL_LONG(zendlval, CG(zend_lineno)); return T_LINE; } "__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; } "__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; } -- 2.40.0