]> granicus.if.org Git - php/commitdiff
More correct patch for b-prefixes.
authorAndrei Zmievski <andrei@php.net>
Wed, 20 Dec 2006 18:22:07 +0000 (18:22 +0000)
committerAndrei Zmievski <andrei@php.net>
Wed, 20 Dec 2006 18:22:07 +0000 (18:22 +0000)
Zend/zend_language_scanner.l

index 8c78d9674ecd695dcfffff5436ac6d0b1505608f..cceffd1969aaf26741b69a168d95cdf2543e8a4a 100644 (file)
@@ -1569,10 +1569,15 @@ NEWLINE ("\r"|"\n"|"\r\n")
 }
 
 
-<ST_IN_SCRIPTING>(["]([^$"\\]|("\\".))*["]) {
+<ST_IN_SCRIPTING>("b"?["]([^$"\\]|("\\".))*["]) {
        register char *s, *t;
        char *end;
 
+       if (*yytext == 'b') {
+               yytext++;
+               yyleng--;
+       }
+
        zendlval->value.str.val = estrndup(yytext+1, yyleng-2);
        zendlval->value.str.len = yyleng-2;
        zendlval->type = IS_STRING;
@@ -1659,10 +1664,15 @@ NEWLINE ("\r"|"\n"|"\r\n")
 }
 
 
-<ST_IN_SCRIPTING>([']([^'\\]|("\\".))*[']) {
+<ST_IN_SCRIPTING>("b"?[']([^'\\]|("\\".))*[']) {
        register char *s, *t;
        char *end;
 
+       if (*yytext == 'b') {
+               yytext++;
+               yyleng--;
+       }
+
        zendlval->value.str.val = estrndup(yytext+1, yyleng-2);
        zendlval->value.str.len = yyleng-2;
        zendlval->type = IS_STRING;
@@ -1713,8 +1723,14 @@ NEWLINE ("\r"|"\n"|"\r\n")
 }
 
 
-<ST_IN_SCRIPTING>b?"<<<"{TABS_AND_SPACES}{LABEL}{NEWLINE} {
+<ST_IN_SCRIPTING>"b"?"<<<"{TABS_AND_SPACES}{LABEL}{NEWLINE} {
        char *s;
+
+       if (*yytext == 'b') {
+               yytext++;
+               yyleng--;
+       }
+
        CG(zend_lineno)++;
        CG(heredoc_len) = yyleng-3-1-(yytext[yyleng-2]=='\r'?1:0);
        s = yytext+3;