summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>1999-04-09 11:19:03 +0000
committerZeev Suraski <zeev@php.net>1999-04-09 11:19:03 +0000
commit43c0e94ac91e7968670478c5e47bf7edffa52343 (patch)
tree401582e9d2975ea42c0f59eec65eb90e52ca781e /Zend
parent0a6e9ddd7fc5020d55b8329760ade7b9b7892528 (diff)
downloadphp-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.l13
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;