Hi all,

This is regarding Derick's addition of the (binary) cast in 5.2, and its
discussion.  I agree with the others who think it's a good addition so
future code for PHP 6 won't fail with a parse error on a small thing that
could be handled transparently.

But the point of this message is to ask about the "b" binary-string "prefix
thing" from 6: Isn't that a closely-related syntax addition which should
also be included?  If so, the attached patch hopefully covers it. :-)


Matt
Index: zend_language_scanner.l
===================================================================
RCS file: /repository/ZendEngine2/zend_language_scanner.l,v
retrieving revision 1.131.2.11.2.1
diff -u -r1.131.2.11.2.1 zend_language_scanner.l
--- zend_language_scanner.l     10 Nov 2006 12:02:51 -0000      1.131.2.11.2.1
+++ zend_language_scanner.l     14 Nov 2006 11:30:00 -0000
@@ -1564,10 +1564,15 @@
 }
 
 
-<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;
@@ -1654,10 +1659,15 @@
 }
 
 
-<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;
@@ -1702,14 +1712,20 @@
 }
 
 
-<ST_IN_SCRIPTING>["] {
+<ST_IN_SCRIPTING>"b"?["] {
        BEGIN(ST_DOUBLE_QUOTES);
        return '\"';
 }
 
 
-<ST_IN_SCRIPTING>"<<<"{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;
@@ -1729,7 +1745,7 @@
 }
 
 
-<ST_IN_SCRIPTING>['] {
+<ST_IN_SCRIPTING>"b"?['] {
        BEGIN(ST_SINGLE_QUOTE);
        return '\'';
 }

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to