return 0;
}
+ /* ignore first line when it's started with a # */
+ if (YYCURSOR == SCNG(yy_start) && *YYCURSOR == '#') {
+ while (++YYCURSOR < YYLIMIT) {
+ if (*YYCURSOR == '\n') {
+ ++YYCURSOR;
+ goto restart;
+ }
+
+ if (*YYCURSOR == '\r') {
+ if (++YYCURSOR < YYLIMIT && *YYCURSOR == '\n') { /* match \r\n as single newline */
+ ++YYCURSOR;
+ }
+ goto restart;
+ }
+ }
+
+ return 0; /* EOF */
+ }
+
/*!re2c
re2c:yyfill:check = 0;
LNUM [0-9]+
BEGIN(ST_IN_SCRIPTING);
return T_OPEN_TAG_WITH_ECHO;
} else {
- zendlval->value.str.val = (char *) estrndup(yytext, yyleng);
- zendlval->value.str.len = yyleng;
- zendlval->type = IS_STRING;
- return T_INLINE_HTML;
+ goto inline_char_handler;
}
}
BEGIN(ST_IN_SCRIPTING);
return T_OPEN_TAG_WITH_ECHO;
} else {
- zendlval->value.str.val = (char *) estrndup(yytext, yyleng);
- zendlval->value.str.len = yyleng;
- zendlval->type = IS_STRING;
- return T_INLINE_HTML;
+ goto inline_char_handler;
}
}
BEGIN(ST_IN_SCRIPTING);
return T_OPEN_TAG;
} else {
- zendlval->value.str.val = (char *) estrndup(yytext, yyleng);
- zendlval->value.str.len = yyleng;
- zendlval->type = IS_STRING;
- return T_INLINE_HTML;
+ goto inline_char_handler;
}
}
<INITIAL>"<?" {
- HANDLE_NEWLINES(yytext, yyleng);
if (CG(short_tags)) {
zendlval->value.str.val = yytext; /* no copying - intentional */
zendlval->value.str.len = yyleng;
BEGIN(ST_IN_SCRIPTING);
return T_OPEN_TAG;
} else {
- zendlval->value.str.val = (char *) estrndup(yytext, yyleng);
- zendlval->value.str.len = yyleng;
- zendlval->type = IS_STRING;
- return T_INLINE_HTML;
- }
-}
-
-<INITIAL>"#".+ {NEWLINE} {
- if ((YYCTYPE*)yytext == SCNG(yy_start)) {
- /* ignore first line when it's started with a # */
- goto restart;
- } else {
- YYCURSOR = yytext+1;
goto inline_char_handler;
}
}
} else {
YYCURSOR = ptr + 1;
- /* if it can be an opening tag, stop */
- if (YYCURSOR < YYLIMIT && (*YYCURSOR == '?' || *YYCURSOR == '%')) {
+ /* stop if it may be an opening tag (<?, <%, <script>). this condition is not optimal though */
+ if (YYCURSOR < YYLIMIT && (*YYCURSOR == '?' || *YYCURSOR == '%' || *YYCURSOR == 's')) {
--YYCURSOR;
yyleng = YYCURSOR - SCNG(yy_text);
break;