<ST_IN_SCRIPTING>("b"?["]([^$"\\]|("\\".))*["]) {
register char *s, *t;
char *end;
+ int bprefix = (*yytext == 'b') ? 1 : 0;
- if (*yytext == 'b') {
- yytext++;
- yyleng--;
- }
-
- zendlval->value.str.val = estrndup(yytext+1, yyleng-2);
- zendlval->value.str.len = yyleng-2;
+ zendlval->value.str.val = estrndup(yytext+bprefix+1, yyleng-bprefix-2);
+ zendlval->value.str.len = yyleng-bprefix-2;
zendlval->type = IS_STRING;
HANDLE_NEWLINES(yytext, yyleng);
<ST_IN_SCRIPTING>("b"?[']([^'\\]|("\\".))*[']) {
register char *s, *t;
char *end;
+ int bprefix = (*yytext == 'b') ? 1 : 0;
- if (*yytext == 'b') {
- yytext++;
- yyleng--;
- }
-
- zendlval->value.str.val = estrndup(yytext+1, yyleng-2);
- zendlval->value.str.len = yyleng-2;
+ zendlval->value.str.val = estrndup(yytext+bprefix+1, yyleng-bprefix-2);
+ zendlval->value.str.len = yyleng-bprefix-2;
zendlval->type = IS_STRING;
HANDLE_NEWLINES(yytext, yyleng);
<ST_IN_SCRIPTING>"b"?"<<<"{TABS_AND_SPACES}{LABEL}{NEWLINE} {
char *s;
-
- if (*yytext == 'b') {
- yytext++;
- yyleng--;
- }
+ int bprefix = (*yytext == 'b') ? 1 : 0;
CG(zend_lineno)++;
- CG(heredoc_len) = yyleng-3-1-(yytext[yyleng-2]=='\r'?1:0);
- s = yytext+3;
+ CG(heredoc_len) = yyleng-bprefix-3-1-(yytext[yyleng-2]=='\r'?1:0);
+ s = yytext+bprefix+3;
while ((*s == ' ') || (*s == '\t')) {
s++;
CG(heredoc_len)--;