diff options
author | Zeev Suraski <zeev@php.net> | 1999-04-09 11:19:03 +0000 |
---|---|---|
committer | Zeev Suraski <zeev@php.net> | 1999-04-09 11:19:03 +0000 |
commit | 43c0e94ac91e7968670478c5e47bf7edffa52343 (patch) | |
tree | 401582e9d2975ea42c0f59eec65eb90e52ca781e /Zend | |
parent | 0a6e9ddd7fc5020d55b8329760ade7b9b7892528 (diff) | |
download | php-git-43c0e94ac91e7968670478c5e47bf7edffa52343.tar.gz |
Honor a semicolon on the same line as an ending token of a heredoc
Diffstat (limited to 'Zend')
-rw-r--r-- | Zend/zend-scanner.l | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/Zend/zend-scanner.l b/Zend/zend-scanner.l index 03131240d9..3b359dd3b1 100644 --- a/Zend/zend-scanner.l +++ b/Zend/zend-scanner.l @@ -1010,16 +1010,27 @@ TLS_VARS; } -<HEREDOC>^{LABEL}("\r")?"\n" { +<HEREDOC>^{LABEL}(";")?("\r")?"\n" { int label_len; + unsigned char unput_semicolon; if (yytext[yyleng-2]=='\r') { label_len = yyleng-2; } else { label_len = yyleng-1; } + + if (yytext[label_len-1]==';') { + label_len--; + unput_semicolon=1; + } else{ + unput_semicolon=0; + } if (label_len==CG(heredoc_len) && !memcmp(yytext, CG(heredoc), label_len)) { + if (unput_semicolon) { + unput(';'); + } efree(CG(heredoc)); CG(heredoc)=NULL; CG(heredoc_len)=0; |