cvs: ZendEngine2 / zend_language_scanner.c zend_language_scanner_defs.h /tests bug47516.phpt

[email protected] ("Dmitry Stogov") Thu, 26 Mar 2009 12:38:38 -0000
Newsgroups php.zend-engine.cvs
Message-ID <cvsdmitry1238071118@cvsserver>
dmitry		Thu Mar 26 12:38:38 2009 UTC

  Modified files:              
    /ZendEngine2	zend_language_scanner.c zend_language_scanner_defs.h 
    /ZendEngine2/tests	bug47516.phpt 
  Log:
  Fixed bug #47516 (nowdoc can not be embed in heredoc but can be embed in double quote)
dmitry-20090326123838.txt (text/plain, 30.5 KB)
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_language_scanner.c?r1=1.24&r2=1.25&diff_format=u
Index: ZendEngine2/zend_language_scanner.c
diff -u ZendEngine2/zend_language_scanner.c:1.24 ZendEngine2/zend_language_scanner.c:1.25
--- ZendEngine2/zend_language_scanner.c:1.24	Wed Mar 25 15:24:51 2009
+++ ZendEngine2/zend_language_scanner.c	Thu Mar 26 12:38:38 2009
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Wed Mar 25 18:24:36 2009 */
+/* Generated by re2c 0.13.5 on Thu Mar 26 15:38:15 2009 */
 #line 1 "Zend/zend_language_scanner.l"
 /*
    +----------------------------------------------------------------------+
@@ -23,7 +23,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_language_scanner.c,v 1.24 2009/03/25 15:24:51 dmitry Exp $ */
+/* $Id: zend_language_scanner.c,v 1.25 2009/03/26 12:38:38 dmitry Exp $ */
 
 #if 0
 # define YYDEBUG(s, c) printf("state: %d char: %c\n", s, c)
@@ -1425,7 +1425,7 @@
 		++YYCURSOR;
 		YYDEBUG(3, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 2650 "Zend/zend_language_scanner.l"
+#line 2654 "Zend/zend_language_scanner.l"
 		{ return 0; }
 #line 1431 "Zend/zend_language_scanner.c"
 yy4:
@@ -1884,7 +1884,7 @@
 yy58:
 		YYDEBUG(58, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 2548 "Zend/zend_language_scanner.l"
+#line 2552 "Zend/zend_language_scanner.l"
 		{
 	if (CG(literal_type) == IS_UNICODE) {
 		return zend_scan_unicode_escape_string(zendlval, yytext, yyleng, 0x60 /*'`'*/, T_ENCAPSED_AND_WHITESPACE TSRMLS_CC);
@@ -1931,7 +1931,7 @@
 yy61:
 		YYDEBUG(61, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 2514 "Zend/zend_language_scanner.l"
+#line 2518 "Zend/zend_language_scanner.l"
 		{
 	Z_LVAL_P(zendlval) = (long) '{';
 	yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@ -1980,7 +1980,7 @@
 		++YYCURSOR;
 		YYDEBUG(67, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 2645 "Zend/zend_language_scanner.l"
+#line 2649 "Zend/zend_language_scanner.l"
 		{
 	BEGIN(ST_IN_SCRIPTING);
 	return '`';
@@ -2058,7 +2058,7 @@
 yy73:
 		YYDEBUG(73, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 2557 "Zend/zend_language_scanner.l"
+#line 2561 "Zend/zend_language_scanner.l"
 		{
 	yyless(yyleng - 1);
 
@@ -2446,7 +2446,7 @@
 yy113:
 		YYDEBUG(113, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 2521 "Zend/zend_language_scanner.l"
+#line 2525 "Zend/zend_language_scanner.l"
 		{
 	if (CG(literal_type) == IS_UNICODE) {
 		return zend_scan_unicode_escape_string(zendlval, yytext, yyleng, 0x22 /*'"'*/, T_ENCAPSED_AND_WHITESPACE TSRMLS_CC);
@@ -2494,7 +2494,7 @@
 yy116:
 		YYDEBUG(116, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 2514 "Zend/zend_language_scanner.l"
+#line 2518 "Zend/zend_language_scanner.l"
 		{
 	Z_LVAL_P(zendlval) = (long) '{';
 	yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@ -2542,7 +2542,7 @@
 		++YYCURSOR;
 		YYDEBUG(122, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 2639 "Zend/zend_language_scanner.l"
+#line 2643 "Zend/zend_language_scanner.l"
 		{
 	BEGIN(ST_IN_SCRIPTING);
 	return '"';
@@ -2623,7 +2623,7 @@
 yy128:
 		YYDEBUG(128, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 2536 "Zend/zend_language_scanner.l"
+#line 2540 "Zend/zend_language_scanner.l"
 		{
 	yyless(yyleng - 1);
 
@@ -2756,7 +2756,7 @@
 	++YYCURSOR;
 	YYDEBUG(146, *YYCURSOR);
 	yyleng = YYCURSOR - SCNG(yy_text);
-#line 2650 "Zend/zend_language_scanner.l"
+#line 2654 "Zend/zend_language_scanner.l"
 	{ return 0; }
 #line 2762 "Zend/zend_language_scanner.c"
 yy147:
@@ -2764,7 +2764,7 @@
 	++YYCURSOR;
 	YYDEBUG(148, *YYCURSOR);
 	yyleng = YYCURSOR - SCNG(yy_text);
-#line 2500 "Zend/zend_language_scanner.l"
+#line 2504 "Zend/zend_language_scanner.l"
 	{
 	YYCURSOR += CG(heredoc_len) - 1;
 	yyleng = CG(heredoc_len);
@@ -2846,7 +2846,7 @@
 yy151:
 		YYDEBUG(151, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 2576 "Zend/zend_language_scanner.l"
+#line 2580 "Zend/zend_language_scanner.l"
 		{
 	if (CG(literal_type) == IS_UNICODE) {
 		return zend_scan_unicode_escape_string(zendlval, yytext, yyleng, 0, T_ENCAPSED_AND_WHITESPACE TSRMLS_CC);
@@ -2906,7 +2906,7 @@
 yy155:
 		YYDEBUG(155, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 2514 "Zend/zend_language_scanner.l"
+#line 2518 "Zend/zend_language_scanner.l"
 		{
 	Z_LVAL_P(zendlval) = (long) '{';
 	yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
@@ -3163,7 +3163,7 @@
 yy174:
 		YYDEBUG(174, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 2585 "Zend/zend_language_scanner.l"
+#line 2589 "Zend/zend_language_scanner.l"
 		{
 	yyless(yyleng - 1);
 
@@ -3273,7 +3273,7 @@
 		++YYCURSOR;
 		YYDEBUG(182, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 2458 "Zend/zend_language_scanner.l"
+#line 2462 "Zend/zend_language_scanner.l"
 		{
 	char *end = yytext + yyleng - 1;
 
@@ -3849,7 +3849,7 @@
 		++YYCURSOR;
 		YYDEBUG(216, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 2650 "Zend/zend_language_scanner.l"
+#line 2654 "Zend/zend_language_scanner.l"
 		{ return 0; }
 #line 3855 "Zend/zend_language_scanner.c"
 yy217:
@@ -4514,7 +4514,7 @@
 yy274:
 		YYDEBUG(274, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 2652 "Zend/zend_language_scanner.l"
+#line 2656 "Zend/zend_language_scanner.l"
 		{
 	zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
 	goto restart;
@@ -4525,7 +4525,7 @@
 		++YYCURSOR;
 		YYDEBUG(276, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 2446 "Zend/zend_language_scanner.l"
+#line 2450 "Zend/zend_language_scanner.l"
 		{
 	BEGIN(ST_BACKQUOTE);
 	return '`';
@@ -5309,6 +5309,10 @@
 	char *s;
 	int bprefix = (yytext[0] != '<') ? 1 : 0;
 
+	/* save old heredoc label */
+	Z_STRVAL_P(zendlval) = CG(heredoc);
+	Z_STRLEN_P(zendlval) = CG(heredoc_len);
+
 	CG(zend_lineno)++;
 	CG(heredoc_len) = yyleng-bprefix-3-1-(yytext[yyleng-2]=='\r'?1:0);
 	s = yytext+bprefix+3;
@@ -5348,7 +5352,7 @@
 
 	return bprefix ? T_BINARY_HEREDOC : T_START_HEREDOC;
 }
-#line 5352 "Zend/zend_language_scanner.c"
+#line 5356 "Zend/zend_language_scanner.c"
 yy385:
 		YYDEBUG(385, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -5392,7 +5396,7 @@
 		{
 	return T_IS_NOT_IDENTICAL;
 }
-#line 5396 "Zend/zend_language_scanner.c"
+#line 5400 "Zend/zend_language_scanner.c"
 yy391:
 		YYDEBUG(391, *YYCURSOR);
 		++YYCURSOR;
@@ -5402,7 +5406,7 @@
 		{
 	return T_PLUS_EQUAL;
 }
-#line 5406 "Zend/zend_language_scanner.c"
+#line 5410 "Zend/zend_language_scanner.c"
 yy393:
 		YYDEBUG(393, *YYCURSOR);
 		++YYCURSOR;
@@ -5412,7 +5416,7 @@
 		{
 	return T_INC;
 }
-#line 5416 "Zend/zend_language_scanner.c"
+#line 5420 "Zend/zend_language_scanner.c"
 yy395:
 		YYDEBUG(395, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -5435,7 +5439,7 @@
 		{
 	return T_LIST;
 }
-#line 5439 "Zend/zend_language_scanner.c"
+#line 5443 "Zend/zend_language_scanner.c"
 yy399:
 		YYDEBUG(399, *YYCURSOR);
 		++YYCURSOR;
@@ -5446,7 +5450,7 @@
 		{
 	return T_IS_EQUAL;
 }
-#line 5450 "Zend/zend_language_scanner.c"
+#line 5454 "Zend/zend_language_scanner.c"
 yy401:
 		YYDEBUG(401, *YYCURSOR);
 		++YYCURSOR;
@@ -5456,7 +5460,7 @@
 		{
 	return T_DOUBLE_ARROW;
 }
-#line 5460 "Zend/zend_language_scanner.c"
+#line 5464 "Zend/zend_language_scanner.c"
 yy403:
 		YYDEBUG(403, *YYCURSOR);
 		++YYCURSOR;
@@ -5466,7 +5470,7 @@
 		{
 	return T_IS_IDENTICAL;
 }
-#line 5470 "Zend/zend_language_scanner.c"
+#line 5474 "Zend/zend_language_scanner.c"
 yy405:
 		YYDEBUG(405, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -5598,7 +5602,7 @@
 	}
 	return T_NS_C;
 }
-#line 5602 "Zend/zend_language_scanner.c"
+#line 5606 "Zend/zend_language_scanner.c"
 yy424:
 		YYDEBUG(424, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -5645,7 +5649,7 @@
 	zendlval->type = IS_STRING;
 	return T_DIR;
 }
-#line 5649 "Zend/zend_language_scanner.c"
+#line 5653 "Zend/zend_language_scanner.c"
 yy429:
 		YYDEBUG(429, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -5676,7 +5680,7 @@
 	Z_TYPE_P(zendlval) = IS_LONG;
 	return T_LINE;
 }
-#line 5680 "Zend/zend_language_scanner.c"
+#line 5684 "Zend/zend_language_scanner.c"
 yy435:
 		YYDEBUG(435, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -5760,7 +5764,7 @@
 	}
 	return T_METHOD_C;
 }
-#line 5764 "Zend/zend_language_scanner.c"
+#line 5768 "Zend/zend_language_scanner.c"
 yy443:
 		YYDEBUG(443, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -5826,7 +5830,7 @@
 	}
 	return T_FUNC_C;
 }
-#line 5830 "Zend/zend_language_scanner.c"
+#line 5834 "Zend/zend_language_scanner.c"
 yy454:
 		YYDEBUG(454, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -5856,7 +5860,7 @@
 	ZVAL_RT_STRING(zendlval, filename, 1);
 	return T_FILE;
 }
-#line 5860 "Zend/zend_language_scanner.c"
+#line 5864 "Zend/zend_language_scanner.c"
 yy459:
 		YYDEBUG(459, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -5901,7 +5905,7 @@
 	}
 	return T_CLASS_C;
 }
-#line 5905 "Zend/zend_language_scanner.c"
+#line 5909 "Zend/zend_language_scanner.c"
 yy466:
 		YYDEBUG(466, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -5967,7 +5971,7 @@
 		{
 	return T_HALT_COMPILER;
 }
-#line 5971 "Zend/zend_language_scanner.c"
+#line 5975 "Zend/zend_language_scanner.c"
 yy479:
 		YYDEBUG(479, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -5991,7 +5995,7 @@
 		{
 	return T_USE;
 }
-#line 5995 "Zend/zend_language_scanner.c"
+#line 5999 "Zend/zend_language_scanner.c"
 yy483:
 		YYDEBUG(483, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -6014,7 +6018,7 @@
 		{
 	return T_UNSET;
 }
-#line 6018 "Zend/zend_language_scanner.c"
+#line 6022 "Zend/zend_language_scanner.c"
 yy487:
 		YYDEBUG(487, *YYCURSOR);
 		++YYCURSOR;
@@ -6190,7 +6194,7 @@
 		{
 	return T_INT_CAST;
 }
-#line 6194 "Zend/zend_language_scanner.c"
+#line 6198 "Zend/zend_language_scanner.c"
 yy505:
 		YYDEBUG(505, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -6238,7 +6242,7 @@
 		{
 	return T_DOUBLE_CAST;
 }
-#line 6242 "Zend/zend_language_scanner.c"
+#line 6246 "Zend/zend_language_scanner.c"
 yy514:
 		YYDEBUG(514, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -6312,7 +6316,7 @@
 		{
 	return T_STRING_CAST;
 }
-#line 6316 "Zend/zend_language_scanner.c"
+#line 6320 "Zend/zend_language_scanner.c"
 yy528:
 		YYDEBUG(528, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -6349,7 +6353,7 @@
 		{
 	return T_ARRAY_CAST;
 }
-#line 6353 "Zend/zend_language_scanner.c"
+#line 6357 "Zend/zend_language_scanner.c"
 yy535:
 		YYDEBUG(535, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -6391,7 +6395,7 @@
 		{
 	return T_OBJECT_CAST;
 }
-#line 6395 "Zend/zend_language_scanner.c"
+#line 6399 "Zend/zend_language_scanner.c"
 yy543:
 		YYDEBUG(543, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -6436,7 +6440,7 @@
 		{
 	return T_BOOL_CAST;
 }
-#line 6440 "Zend/zend_language_scanner.c"
+#line 6444 "Zend/zend_language_scanner.c"
 yy551:
 		YYDEBUG(551, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -6484,7 +6488,7 @@
 		{
 	return T_BINARY_CAST;
 }
-#line 6488 "Zend/zend_language_scanner.c"
+#line 6492 "Zend/zend_language_scanner.c"
 yy560:
 		YYDEBUG(560, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -6545,7 +6549,7 @@
 		{
 	return T_UNICODE_CAST;
 }
-#line 6549 "Zend/zend_language_scanner.c"
+#line 6553 "Zend/zend_language_scanner.c"
 yy570:
 		YYDEBUG(570, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -6572,7 +6576,7 @@
 		{
 	return T_UNSET_CAST;
 }
-#line 6576 "Zend/zend_language_scanner.c"
+#line 6580 "Zend/zend_language_scanner.c"
 yy575:
 		YYDEBUG(575, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -6590,7 +6594,7 @@
 		{
 	return T_VAR;
 }
-#line 6594 "Zend/zend_language_scanner.c"
+#line 6598 "Zend/zend_language_scanner.c"
 yy578:
 		YYDEBUG(578, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -6614,7 +6618,7 @@
 		{
 	return T_NEW;
 }
-#line 6618 "Zend/zend_language_scanner.c"
+#line 6622 "Zend/zend_language_scanner.c"
 yy582:
 		YYDEBUG(582, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -6657,7 +6661,7 @@
 		{
 	return T_NAMESPACE;
 }
-#line 6661 "Zend/zend_language_scanner.c"
+#line 6665 "Zend/zend_language_scanner.c"
 yy590:
 		YYDEBUG(590, *YYCURSOR);
 		++YYCURSOR;
@@ -6667,7 +6671,7 @@
 		{
 	return T_PAAMAYIM_NEKUDOTAYIM;
 }
-#line 6671 "Zend/zend_language_scanner.c"
+#line 6675 "Zend/zend_language_scanner.c"
 yy592:
 		YYDEBUG(592, *YYCURSOR);
 		++YYCURSOR;
@@ -6693,7 +6697,7 @@
 		{
 	return T_MINUS_EQUAL;
 }
-#line 6697 "Zend/zend_language_scanner.c"
+#line 6701 "Zend/zend_language_scanner.c"
 yy596:
 		YYDEBUG(596, *YYCURSOR);
 		++YYCURSOR;
@@ -6703,7 +6707,7 @@
 		{
 	return T_DEC;
 }
-#line 6707 "Zend/zend_language_scanner.c"
+#line 6711 "Zend/zend_language_scanner.c"
 yy598:
 		YYDEBUG(598, *YYCURSOR);
 		++YYCURSOR;
@@ -6714,7 +6718,7 @@
 	yy_push_state(ST_LOOKING_FOR_PROPERTY TSRMLS_CC);
 	return T_OBJECT_OPERATOR;
 }
-#line 6718 "Zend/zend_language_scanner.c"
+#line 6722 "Zend/zend_language_scanner.c"
 yy600:
 		YYDEBUG(600, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -6763,7 +6767,7 @@
 		{
 	return T_PUBLIC;
 }
-#line 6767 "Zend/zend_language_scanner.c"
+#line 6771 "Zend/zend_language_scanner.c"
 yy607:
 		YYDEBUG(607, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -6822,7 +6826,7 @@
 		{
 	return T_PROTECTED;
 }
-#line 6826 "Zend/zend_language_scanner.c"
+#line 6830 "Zend/zend_language_scanner.c"
 yy616:
 		YYDEBUG(616, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -6856,7 +6860,7 @@
 		{
 	return T_PRIVATE;
 }
-#line 6860 "Zend/zend_language_scanner.c"
+#line 6864 "Zend/zend_language_scanner.c"
 yy622:
 		YYDEBUG(622, *YYCURSOR);
 		++YYCURSOR;
@@ -6869,7 +6873,7 @@
 		{
 	return T_PRINT;
 }
-#line 6873 "Zend/zend_language_scanner.c"
+#line 6877 "Zend/zend_language_scanner.c"
 yy624:
 		YYDEBUG(624, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -6898,7 +6902,7 @@
 		{
 	return T_GOTO;
 }
-#line 6902 "Zend/zend_language_scanner.c"
+#line 6906 "Zend/zend_language_scanner.c"
 yy629:
 		YYDEBUG(629, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -6926,7 +6930,7 @@
 		{
 	return T_GLOBAL;
 }
-#line 6930 "Zend/zend_language_scanner.c"
+#line 6934 "Zend/zend_language_scanner.c"
 yy634:
 		YYDEBUG(634, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -6945,7 +6949,7 @@
 	BEGIN(ST_DOUBLE_QUOTES);
 	return T_BINARY_DOUBLE;
 }
-#line 6949 "Zend/zend_language_scanner.c"
+#line 6953 "Zend/zend_language_scanner.c"
 yy637:
 		YYDEBUG(637, *YYCURSOR);
 		++YYCURSOR;
@@ -6982,7 +6986,7 @@
 		{
 	return T_BREAK;
 }
-#line 6986 "Zend/zend_language_scanner.c"
+#line 6990 "Zend/zend_language_scanner.c"
 yy644:
 		YYDEBUG(644, *YYCURSOR);
 		++YYCURSOR;
@@ -7000,7 +7004,7 @@
 	zend_scan_binary_single_string(zendlval, yytext+2, yyleng-3 TSRMLS_CC);
 	return T_CONSTANT_ENCAPSED_STRING;
 }
-#line 7004 "Zend/zend_language_scanner.c"
+#line 7008 "Zend/zend_language_scanner.c"
 yy647:
 		YYDEBUG(647, *YYCURSOR);
 		++YYCURSOR;
@@ -7080,7 +7084,7 @@
 	zend_scan_binary_escape_string(zendlval, yytext+2, yyleng-3, '"' TSRMLS_CC);
 	return T_CONSTANT_ENCAPSED_STRING;
 }
-#line 7084 "Zend/zend_language_scanner.c"
+#line 7088 "Zend/zend_language_scanner.c"
 yy656:
 		YYDEBUG(656, *YYCURSOR);
 		++YYCURSOR;
@@ -7131,7 +7135,7 @@
 		{
 	return T_SWITCH;
 }
-#line 7135 "Zend/zend_language_scanner.c"
+#line 7139 "Zend/zend_language_scanner.c"
 yy665:
 		YYDEBUG(665, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -7159,7 +7163,7 @@
 		{
 	return T_STATIC;
 }
-#line 7163 "Zend/zend_language_scanner.c"
+#line 7167 "Zend/zend_language_scanner.c"
 yy670:
 		YYDEBUG(670, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -7190,7 +7194,7 @@
 		{
 	return T_AS;
 }
-#line 7194 "Zend/zend_language_scanner.c"
+#line 7198 "Zend/zend_language_scanner.c"
 yy675:
 		YYDEBUG(675, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -7213,7 +7217,7 @@
 		{
 	return T_ARRAY;
 }
-#line 7217 "Zend/zend_language_scanner.c"
+#line 7221 "Zend/zend_language_scanner.c"
 yy679:
 		YYDEBUG(679, *YYCURSOR);
 		++YYCURSOR;
@@ -7226,7 +7230,7 @@
 		{
 	return T_LOGICAL_AND;
 }
-#line 7230 "Zend/zend_language_scanner.c"
+#line 7234 "Zend/zend_language_scanner.c"
 yy681:
 		YYDEBUG(681, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -7264,7 +7268,7 @@
 		{
 	return T_ABSTRACT;
 }
-#line 7268 "Zend/zend_language_scanner.c"
+#line 7272 "Zend/zend_language_scanner.c"
 yy688:
 		YYDEBUG(688, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -7292,7 +7296,7 @@
 		{
 	return T_WHILE;
 }
-#line 7296 "Zend/zend_language_scanner.c"
+#line 7300 "Zend/zend_language_scanner.c"
 yy693:
 		YYDEBUG(693, *YYCURSOR);
 		++YYCURSOR;
@@ -7305,7 +7309,7 @@
 		{
 	return T_IF;
 }
-#line 7309 "Zend/zend_language_scanner.c"
+#line 7313 "Zend/zend_language_scanner.c"
 yy695:
 		YYDEBUG(695, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -7361,7 +7365,7 @@
 		{
 	return T_ISSET;
 }
-#line 7365 "Zend/zend_language_scanner.c"
+#line 7369 "Zend/zend_language_scanner.c"
 yy702:
 		YYDEBUG(702, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -7419,7 +7423,7 @@
 		{
 	return T_INCLUDE;
 }
-#line 7423 "Zend/zend_language_scanner.c"
+#line 7427 "Zend/zend_language_scanner.c"
 yy710:
 		YYDEBUG(710, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -7452,7 +7456,7 @@
 		{
 	return T_INCLUDE_ONCE;
 }
-#line 7456 "Zend/zend_language_scanner.c"
+#line 7460 "Zend/zend_language_scanner.c"
 yy716:
 		YYDEBUG(716, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -7490,7 +7494,7 @@
 		{
 	return T_INTERFACE;
 }
-#line 7494 "Zend/zend_language_scanner.c"
+#line 7498 "Zend/zend_language_scanner.c"
 yy723:
 		YYDEBUG(723, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -7533,7 +7537,7 @@
 		{
 	return T_INSTANCEOF;
 }
-#line 7537 "Zend/zend_language_scanner.c"
+#line 7541 "Zend/zend_language_scanner.c"
 yy731:
 		YYDEBUG(731, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -7581,7 +7585,7 @@
 		{
 	return T_IMPLEMENTS;
 }
-#line 7585 "Zend/zend_language_scanner.c"
+#line 7589 "Zend/zend_language_scanner.c"
 yy740:
 		YYDEBUG(740, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -7605,7 +7609,7 @@
 		{
 	return T_TRY;
 }
-#line 7609 "Zend/zend_language_scanner.c"
+#line 7613 "Zend/zend_language_scanner.c"
 yy744:
 		YYDEBUG(744, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -7628,7 +7632,7 @@
 		{
 	return T_THROW;
 }
-#line 7632 "Zend/zend_language_scanner.c"
+#line 7636 "Zend/zend_language_scanner.c"
 yy748:
 		YYDEBUG(748, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -7693,7 +7697,7 @@
 		{
 	return T_REQUIRE;
 }
-#line 7697 "Zend/zend_language_scanner.c"
+#line 7701 "Zend/zend_language_scanner.c"
 yy756:
 		YYDEBUG(756, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -7726,7 +7730,7 @@
 		{
 	return T_REQUIRE_ONCE;
 }
-#line 7730 "Zend/zend_language_scanner.c"
+#line 7734 "Zend/zend_language_scanner.c"
 yy762:
 		YYDEBUG(762, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -7749,7 +7753,7 @@
 		{
 	return T_RETURN;
 }
-#line 7753 "Zend/zend_language_scanner.c"
+#line 7757 "Zend/zend_language_scanner.c"
 yy766:
 		YYDEBUG(766, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -7834,7 +7838,7 @@
 		{
 	return T_CONTINUE;
 }
-#line 7838 "Zend/zend_language_scanner.c"
+#line 7842 "Zend/zend_language_scanner.c"
 yy777:
 		YYDEBUG(777, *YYCURSOR);
 		++YYCURSOR;
@@ -7847,7 +7851,7 @@
 		{
 	return T_CONST;
 }
-#line 7851 "Zend/zend_language_scanner.c"
+#line 7855 "Zend/zend_language_scanner.c"
 yy779:
 		YYDEBUG(779, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -7876,7 +7880,7 @@
 		{
 	return T_CLONE;
 }
-#line 7880 "Zend/zend_language_scanner.c"
+#line 7884 "Zend/zend_language_scanner.c"
 yy784:
 		YYDEBUG(784, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -7894,7 +7898,7 @@
 		{
 	return T_CLASS;
 }
-#line 7898 "Zend/zend_language_scanner.c"
+#line 7902 "Zend/zend_language_scanner.c"
 yy787:
 		YYDEBUG(787, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -7918,7 +7922,7 @@
 		{
 	return T_CASE;
 }
-#line 7922 "Zend/zend_language_scanner.c"
+#line 7926 "Zend/zend_language_scanner.c"
 yy791:
 		YYDEBUG(791, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -7936,7 +7940,7 @@
 		{
 	return T_CATCH;
 }
-#line 7940 "Zend/zend_language_scanner.c"
+#line 7944 "Zend/zend_language_scanner.c"
 yy794:
 		YYDEBUG(794, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -7991,7 +7995,7 @@
 		{
 	return T_FUNCTION;
 }
-#line 7995 "Zend/zend_language_scanner.c"
+#line 7999 "Zend/zend_language_scanner.c"
 yy804:
 		YYDEBUG(804, *YYCURSOR);
 		++YYCURSOR;
@@ -8019,7 +8023,7 @@
 		{
 	return T_FOR;
 }
-#line 8023 "Zend/zend_language_scanner.c"
+#line 8027 "Zend/zend_language_scanner.c"
 yy806:
 		YYDEBUG(806, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -8047,7 +8051,7 @@
 		{
 	return T_FOREACH;
 }
-#line 8051 "Zend/zend_language_scanner.c"
+#line 8055 "Zend/zend_language_scanner.c"
 yy811:
 		YYDEBUG(811, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -8070,7 +8074,7 @@
 		{
 	return T_FINAL;
 }
-#line 8074 "Zend/zend_language_scanner.c"
+#line 8078 "Zend/zend_language_scanner.c"
 yy815:
 		YYDEBUG(815, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -8105,7 +8109,7 @@
 		{
 	return T_DO;
 }
-#line 8109 "Zend/zend_language_scanner.c"
+#line 8113 "Zend/zend_language_scanner.c"
 yy819:
 		YYDEBUG(819, *YYCURSOR);
 		++YYCURSOR;
@@ -8118,7 +8122,7 @@
 		{
 	return T_EXIT;
 }
-#line 8122 "Zend/zend_language_scanner.c"
+#line 8126 "Zend/zend_language_scanner.c"
 yy821:
 		YYDEBUG(821, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -8157,7 +8161,7 @@
 		{
 	return T_DEFAULT;
 }
-#line 8161 "Zend/zend_language_scanner.c"
+#line 8165 "Zend/zend_language_scanner.c"
 yy828:
 		YYDEBUG(828, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -8185,7 +8189,7 @@
 		{
 	return T_DECLARE;
 }
-#line 8189 "Zend/zend_language_scanner.c"
+#line 8193 "Zend/zend_language_scanner.c"
 yy833:
 		YYDEBUG(833, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -8269,7 +8273,7 @@
 		{
 	return T_EXTENDS;
 }
-#line 8273 "Zend/zend_language_scanner.c"
+#line 8277 "Zend/zend_language_scanner.c"
 yy846:
 		YYDEBUG(846, *YYCURSOR);
 		++YYCURSOR;
@@ -8282,7 +8286,7 @@
 		{
 	return T_EXIT;
 }
-#line 8286 "Zend/zend_language_scanner.c"
+#line 8290 "Zend/zend_language_scanner.c"
 yy848:
 		YYDEBUG(848, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -8300,7 +8304,7 @@
 		{
 	return T_EVAL;
 }
-#line 8304 "Zend/zend_language_scanner.c"
+#line 8308 "Zend/zend_language_scanner.c"
 yy851:
 		YYDEBUG(851, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -8374,7 +8378,7 @@
 		{
 	return T_ENDWHILE;
 }
-#line 8378 "Zend/zend_language_scanner.c"
+#line 8382 "Zend/zend_language_scanner.c"
 yy862:
 		YYDEBUG(862, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -8407,7 +8411,7 @@
 		{
 	return T_ENDSWITCH;
 }
-#line 8411 "Zend/zend_language_scanner.c"
+#line 8415 "Zend/zend_language_scanner.c"
 yy868:
 		YYDEBUG(868, *YYCURSOR);
 		++YYCURSOR;
@@ -8420,7 +8424,7 @@
 		{
 	return T_ENDIF;
 }
-#line 8424 "Zend/zend_language_scanner.c"
+#line 8428 "Zend/zend_language_scanner.c"
 yy870:
 		YYDEBUG(870, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -8453,7 +8457,7 @@
 		{
 	return T_ENDFOR;
 }
-#line 8457 "Zend/zend_language_scanner.c"
+#line 8461 "Zend/zend_language_scanner.c"
 yy873:
 		YYDEBUG(873, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -8481,7 +8485,7 @@
 		{
 	return T_ENDFOREACH;
 }
-#line 8485 "Zend/zend_language_scanner.c"
+#line 8489 "Zend/zend_language_scanner.c"
 yy878:
 		YYDEBUG(878, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -8519,7 +8523,7 @@
 		{
 	return T_ENDDECLARE;
 }
-#line 8523 "Zend/zend_language_scanner.c"
+#line 8527 "Zend/zend_language_scanner.c"
 yy885:
 		YYDEBUG(885, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -8542,7 +8546,7 @@
 		{
 	return T_EMPTY;
 }
-#line 8546 "Zend/zend_language_scanner.c"
+#line 8550 "Zend/zend_language_scanner.c"
 yy889:
 		YYDEBUG(889, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -8575,7 +8579,7 @@
 		{
 	return T_ELSE;
 }
-#line 8579 "Zend/zend_language_scanner.c"
+#line 8583 "Zend/zend_language_scanner.c"
 yy892:
 		YYDEBUG(892, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -8593,7 +8597,7 @@
 		{
 	return T_ELSEIF;
 }
-#line 8597 "Zend/zend_language_scanner.c"
+#line 8601 "Zend/zend_language_scanner.c"
 yy895:
 		YYDEBUG(895, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -8611,7 +8615,7 @@
 		{
 	return T_ECHO;
 }
-#line 8615 "Zend/zend_language_scanner.c"
+#line 8619 "Zend/zend_language_scanner.c"
 	}
 /* *********************************** */
 yyc_ST_LOOKING_FOR_PROPERTY:
@@ -8686,9 +8690,9 @@
 		++YYCURSOR;
 		YYDEBUG(901, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 2650 "Zend/zend_language_scanner.l"
+#line 2654 "Zend/zend_language_scanner.l"
 		{ return 0; }
-#line 8692 "Zend/zend_language_scanner.c"
+#line 8696 "Zend/zend_language_scanner.c"
 yy902:
 		YYDEBUG(902, *YYCURSOR);
 		++YYCURSOR;
@@ -8705,7 +8709,7 @@
 	HANDLE_NEWLINES(yytext, yyleng);
 	return T_WHITESPACE;
 }
-#line 8709 "Zend/zend_language_scanner.c"
+#line 8713 "Zend/zend_language_scanner.c"
 yy904:
 		YYDEBUG(904, *YYCURSOR);
 		++YYCURSOR;
@@ -8719,7 +8723,7 @@
 	yy_pop_state(TSRMLS_C);
 	goto restart;
 }
-#line 8723 "Zend/zend_language_scanner.c"
+#line 8727 "Zend/zend_language_scanner.c"
 yy906:
 		YYDEBUG(906, *YYCURSOR);
 		++YYCURSOR;
@@ -8739,7 +8743,7 @@
 	}
 	return T_STRING;
 }
-#line 8743 "Zend/zend_language_scanner.c"
+#line 8747 "Zend/zend_language_scanner.c"
 yy908:
 		YYDEBUG(908, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -8764,7 +8768,7 @@
 		{
 	return T_OBJECT_OPERATOR;
 }
-#line 8768 "Zend/zend_language_scanner.c"
+#line 8772 "Zend/zend_language_scanner.c"
 yy913:
 		YYDEBUG(913, *YYCURSOR);
 		++YYCURSOR;
@@ -8837,9 +8841,9 @@
 		++YYCURSOR;
 		YYDEBUG(918, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 2650 "Zend/zend_language_scanner.l"
+#line 2654 "Zend/zend_language_scanner.l"
 		{ return 0; }
-#line 8843 "Zend/zend_language_scanner.c"
+#line 8847 "Zend/zend_language_scanner.c"
 yy919:
 		YYDEBUG(919, *YYCURSOR);
 		++YYCURSOR;
@@ -8860,7 +8864,7 @@
 	yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
 	return T_STRING_VARNAME;
 }
-#line 8864 "Zend/zend_language_scanner.c"
+#line 8868 "Zend/zend_language_scanner.c"
 yy921:
 		YYDEBUG(921, *YYCURSOR);
 		++YYCURSOR;
@@ -8873,7 +8877,7 @@
 	yy_push_state(ST_IN_SCRIPTING TSRMLS_CC);
 	goto restart;
 }
-#line 8877 "Zend/zend_language_scanner.c"
+#line 8881 "Zend/zend_language_scanner.c"
 yy923:
 		YYDEBUG(923, *YYCURSOR);
 		++YYCURSOR;
@@ -8939,9 +8943,9 @@
 		goto yy930;
 		YYDEBUG(928, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 2650 "Zend/zend_language_scanner.l"
+#line 2654 "Zend/zend_language_scanner.l"
 		{ return 0; }
-#line 8945 "Zend/zend_language_scanner.c"
+#line 8949 "Zend/zend_language_scanner.c"
 yy929:
 		YYDEBUG(929, *YYCURSOR);
 		++YYCURSOR;
@@ -9034,7 +9038,7 @@
 		++YYCURSOR;
 		YYDEBUG(939, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 2597 "Zend/zend_language_scanner.l"
+#line 2601 "Zend/zend_language_scanner.l"
 		{
 	char *end = yytext + yyleng - 1;
 
@@ -9075,7 +9079,7 @@
 		yymore();
 	}
 }
-#line 9079 "Zend/zend_language_scanner.c"
+#line 9083 "Zend/zend_language_scanner.c"
 yy940:
 		YYDEBUG(940, *YYCURSOR);
 		++YYCURSOR;
@@ -9186,9 +9190,9 @@
 		goto yy961;
 		YYDEBUG(947, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 2650 "Zend/zend_language_scanner.l"
+#line 2654 "Zend/zend_language_scanner.l"
 		{ return 0; }
-#line 9192 "Zend/zend_language_scanner.c"
+#line 9196 "Zend/zend_language_scanner.c"
 yy948:
 		YYDEBUG(948, *YYCURSOR);
 		++YYCURSOR;
@@ -9200,7 +9204,7 @@
 		{
 	yymore();
 }
-#line 9204 "Zend/zend_language_scanner.c"
+#line 9208 "Zend/zend_language_scanner.c"
 yy950:
 		YYDEBUG(950, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -9255,7 +9259,7 @@
 			return T_COMMENT;
 	}
 }
-#line 9259 "Zend/zend_language_scanner.c"
+#line 9263 "Zend/zend_language_scanner.c"
 yy955:
 		YYDEBUG(955, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -9277,7 +9281,7 @@
 	CG(zend_lineno)++;
 	return T_COMMENT;
 }
-#line 9281 "Zend/zend_language_scanner.c"
+#line 9285 "Zend/zend_language_scanner.c"
 yy959:
 		YYDEBUG(959, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -9324,7 +9328,7 @@
 		yymore();
 	}
 }
-#line 9328 "Zend/zend_language_scanner.c"
+#line 9332 "Zend/zend_language_scanner.c"
 	}
 /* *********************************** */
 yyc_ST_VAR_OFFSET:
@@ -9416,9 +9420,9 @@
 		++YYCURSOR;
 		YYDEBUG(967, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 2650 "Zend/zend_language_scanner.l"
+#line 2654 "Zend/zend_language_scanner.l"
 		{ return 0; }
-#line 9422 "Zend/zend_language_scanner.c"
+#line 9426 "Zend/zend_language_scanner.c"
 yy968:
 		YYDEBUG(968, *YYCURSOR);
 		yyaccept = 0;
@@ -9445,7 +9449,7 @@
 	}
 	return T_NUM_STRING;
 }
-#line 9449 "Zend/zend_language_scanner.c"
+#line 9453 "Zend/zend_language_scanner.c"
 yy970:
 		YYDEBUG(970, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -9470,7 +9474,7 @@
 	/* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */
 	return yytext[0];
 }
-#line 9474 "Zend/zend_language_scanner.c"
+#line 9478 "Zend/zend_language_scanner.c"
 yy973:
 		YYDEBUG(973, *YYCURSOR);
 		++YYCURSOR;
@@ -9481,7 +9485,7 @@
 	yy_pop_state(TSRMLS_C);
 	return ']';
 }
-#line 9485 "Zend/zend_language_scanner.c"
+#line 9489 "Zend/zend_language_scanner.c"
 yy975:
 		YYDEBUG(975, *YYCURSOR);
 		yych = *++YYCURSOR;
@@ -9499,7 +9503,7 @@
 	ZVAL_EMPTY_TEXT(zendlval); /* Empty since it won't be used */
 	return T_ENCAPSED_AND_WHITESPACE;
 }
-#line 9503 "Zend/zend_language_scanner.c"
+#line 9507 "Zend/zend_language_scanner.c"
 yy978:
 		YYDEBUG(978, *YYCURSOR);
 		++YYCURSOR;
@@ -9515,18 +9519,18 @@
 	}
 	return T_STRING;
 }
-#line 9519 "Zend/zend_language_scanner.c"
+#line 9523 "Zend/zend_language_scanner.c"
 yy980:
 		YYDEBUG(980, *YYCURSOR);
 		++YYCURSOR;
 		YYDEBUG(981, *YYCURSOR);
 		yyleng = YYCURSOR - SCNG(yy_text);
-#line 2652 "Zend/zend_language_scanner.l"
+#line 2656 "Zend/zend_language_scanner.l"
 		{
 	zend_error(E_COMPILE_WARNING,"Unexpected character in input:  '%c' (ASCII=%d) state=%d", yytext[0], yytext[0], YYSTATE);
 	goto restart;
 }
-#line 9530 "Zend/zend_language_scanner.c"
+#line 9534 "Zend/zend_language_scanner.c"
 yy982:
 		YYDEBUG(982, *YYCURSOR);
 		++YYCURSOR;
@@ -9572,7 +9576,7 @@
 	}
 	return T_VARIABLE;
 }
-#line 9576 "Zend/zend_language_scanner.c"
+#line 9580 "Zend/zend_language_scanner.c"
 yy987:
 		YYDEBUG(987, *YYCURSOR);
 		++YYCURSOR;
@@ -9611,7 +9615,7 @@
 	}
 	return T_NUM_STRING;
 }
-#line 9615 "Zend/zend_language_scanner.c"
+#line 9619 "Zend/zend_language_scanner.c"
 yy994:
 		YYDEBUG(994, *YYCURSOR);
 		++YYCURSOR;
@@ -9624,6 +9628,6 @@
 		goto yy993;
 	}
 }
-#line 2657 "Zend/zend_language_scanner.l"
+#line 2661 "Zend/zend_language_scanner.l"
 
 }
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_language_scanner_defs.h?r1=1.16&r2=1.17&diff_format=u
Index: ZendEngine2/zend_language_scanner_defs.h
diff -u ZendEngine2/zend_language_scanner_defs.h:1.16 ZendEngine2/zend_language_scanner_defs.h:1.17
--- ZendEngine2/zend_language_scanner_defs.h:1.16	Wed Mar 25 15:24:51 2009
+++ ZendEngine2/zend_language_scanner_defs.h	Thu Mar 26 12:38:38 2009
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Wed Mar 25 18:24:36 2009 */
+/* Generated by re2c 0.13.5 on Thu Mar 26 15:38:15 2009 */
 #line 3 "Zend/zend_language_scanner_defs.h"
 
 enum YYCONDTYPE {
http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/bug47516.phpt?r1=1.1&r2=1.2&diff_format=u
Index: ZendEngine2/tests/bug47516.phpt
diff -u /dev/null ZendEngine2/tests/bug47516.phpt:1.2
--- /dev/null	Thu Mar 26 12:38:38 2009
+++ ZendEngine2/tests/bug47516.phpt	Thu Mar 26 12:38:38 2009
@@ -0,0 +1,36 @@
+--TEST--
+Bug #47516 (nowdoc can not be embed in heredoc but can be embed in double quote)
+--FILE--
+<?php
+$s='substr';
+
+$htm=<<<DOC
+{$s(<<<'ppp'
+abcdefg
+ppp
+,0,3)}
+DOC;
+
+echo "$htm\n";
+
+$htm=<<<DOC
+{$s(<<<ppp
+abcdefg
+ppp
+,0,3)}
+DOC;
+
+echo "$htm\n";
+
+$htm="{$s(<<<'ppp'
+abcdefg
+ppp
+,0,3)}
+";
+
+echo "$htm\n";
+?>
+--EXPECT---
+abc
+abc
+abc