return ']';
}
-<ST_VAR_OFFSET>{TOKENS}|[{}] {
+<ST_VAR_OFFSET>{TOKENS}|[{}"`] {
/* Only '[' can be valid, but returning other tokens will allow a more explicit parse error */
return yytext[0];
}
-<ST_VAR_OFFSET>[ \n\r\t'"`\\#] {
+<ST_VAR_OFFSET>[ \n\r\t\\'#] {
+ /* Invalid rule to return a more explicit parse error with proper line number */
yyless(0);
yy_pop_state(TSRMLS_C);
+ ZVAL_EMPTY_TEXT(zendlval); /* Empty since it won't be used */
+ return T_ENCAPSED_AND_WHITESPACE;
}
<ST_IN_SCRIPTING>{LABEL} {
return T_ENCAPSED_AND_WHITESPACE;
}
} else {
- /* Go back to end of label, so there's something to match again in case
- * there's a variable at the beginning of the next line */
+ /* Go back to end of label, so the next match works correctly in case of
+ * a variable or another label at the beginning of the next line */
yyless(yyleng - 1);
yymore();
}