cvs: ZendEngine2(PHP_5_3) / zend_language_parser.y zend_language_scanner.l
[email protected] ("Dmitry Stogov") Thu, 26 Mar 2009 12:37:18 -0000
| Newsgroups | php.zend-engine.cvs |
|---|---|
| Message-ID | <cvsdmitry1238071038@cvsserver> |
dmitry Thu Mar 26 12:37:18 2009 UTC
Modified files: (Branch: PHP_5_3)
/ZendEngine2 zend_language_parser.y zend_language_scanner.l
Log:
Fixed bug #47516 (nowdoc can not be embed in heredoc but can be embed in double quote)
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_language_parser.y?r1=1.160.2.4.2.8.2.34&r2=1.160.2.4.2.8.2.35&diff_format=u
Index: ZendEngine2/zend_language_parser.y
diff -u ZendEngine2/zend_language_parser.y:1.160.2.4.2.8.2.34 ZendEngine2/zend_language_parser.y:1.160.2.4.2.8.2.35
--- ZendEngine2/zend_language_parser.y:1.160.2.4.2.8.2.34 Mon Jan 26 22:54:20 2009
+++ ZendEngine2/zend_language_parser.y Thu Mar 26 12:37:17 2009
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_language_parser.y,v 1.160.2.4.2.8.2.34 2009/01/26 22:54:20 cseiler Exp $ */
+/* $Id: zend_language_parser.y,v 1.160.2.4.2.8.2.35 2009/03/26 12:37:17 dmitry Exp $ */
/*
* LALR shift/reduce conflicts and how they are resolved:
@@ -763,8 +763,8 @@
| T_METHOD_C { $$ = $1; }
| T_FUNC_C { $$ = $1; }
| T_NS_C { $$ = $1; }
- | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC { $$ = $2; }
- | T_START_HEREDOC T_END_HEREDOC { ZVAL_EMPTY_STRING(&$$.u.constant); INIT_PZVAL(&$$.u.constant); $$.op_type = IS_CONST; }
+ | T_START_HEREDOC T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC { $$ = $2; CG(heredoc) = Z_STRVAL($1.u.constant); CG(heredoc_len) = Z_STRLEN($1.u.constant); }
+ | T_START_HEREDOC T_END_HEREDOC { ZVAL_EMPTY_STRING(&$$.u.constant); INIT_PZVAL(&$$.u.constant); $$.op_type = IS_CONST; CG(heredoc) = Z_STRVAL($1.u.constant); CG(heredoc_len) = Z_STRLEN($1.u.constant); }
;
@@ -791,7 +791,7 @@
| T_NS_SEPARATOR namespace_name { char *tmp = estrndup(Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); memcpy(&(tmp[1]), Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); tmp[0] = '\\'; efree(Z_STRVAL($2.u.constant)); Z_STRVAL($2.u.constant) = tmp; ++Z_STRLEN($2.u.constant); zend_do_fetch_constant(&$$, NULL, &$2, ZEND_RT, 0 TSRMLS_CC); }
| common_scalar { $$ = $1; }
| '"' encaps_list '"' { $$ = $2; }
- | T_START_HEREDOC encaps_list T_END_HEREDOC { $$ = $2; }
+ | T_START_HEREDOC encaps_list T_END_HEREDOC { $$ = $2; CG(heredoc) = Z_STRVAL($1.u.constant); CG(heredoc_len) = Z_STRLEN($1.u.constant); }
;
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_language_scanner.l?r1=1.131.2.11.2.13.2.38&r2=1.131.2.11.2.13.2.39&diff_format=u
Index: ZendEngine2/zend_language_scanner.l
diff -u ZendEngine2/zend_language_scanner.l:1.131.2.11.2.13.2.38 ZendEngine2/zend_language_scanner.l:1.131.2.11.2.13.2.39
--- ZendEngine2/zend_language_scanner.l:1.131.2.11.2.13.2.38 Wed Mar 25 15:23:17 2009
+++ ZendEngine2/zend_language_scanner.l Thu Mar 26 12:37:17 2009
@@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_language_scanner.l,v 1.131.2.11.2.13.2.38 2009/03/25 15:23:17 dmitry Exp $ */
+/* $Id: zend_language_scanner.l,v 1.131.2.11.2.13.2.39 2009/03/26 12:37:17 dmitry Exp $ */
#if 0
# define YYDEBUG(s, c) printf("state: %d char: %c\n", s, c)
@@ -1881,6 +1881,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;