Merge pull request #804 from Rangi42/normal-backslash

Backslash in normal lexer mode must be a line continuation
This commit is contained in:
Rangi
2021-03-26 13:33:11 -04:00
committed by GitHub

View File

@@ -2059,29 +2059,15 @@ static int yylex_NORMAL(void)
case EOF: case EOF:
return T_EOF; return T_EOF;
/* Handle escapes */ /* Handle line continuations */
case '\\': case '\\':
c = peek(0); // Macro args were handled by `peek`, and character escapes do not exist
// outside of string literals, so this must be a line continuation.
switch (c) {
case ' ':
case '\r':
case '\n':
readLineContinuation(); readLineContinuation();
break; break;
case EOF: /* Handle identifiers... or report garbage characters */
error("Illegal character escape at end of input\n");
break;
default:
shiftChars(1);
error("Illegal character escape '%s'\n", print(c));
}
break;
/* Handle identifiers and escapes... or error out */
default: default:
if (startsIdentifier(c)) { if (startsIdentifier(c)) {