ref: 17752d7094e74752d5fc1efb2fc81f7efb3e5a2e
parent: 4216f0a9b0bd08d66ecb50e453d22a5d8c23da6b
author: Rangi <[email protected]>
date: Fri Mar 26 09:03:17 EDT 2021
Backslash in normal lexer mode must be a line continuation Macro args were already handled by `peek`, and character escapes do not exist outside of string literals. This only affects the error message printed when a non-whitespace character comes after the backslash. Instead of "Illegal character escape '%s'", it will print "Begun line continuation, but encountered character '%s'".
--- a/src/asm/lexer.c
+++ b/src/asm/lexer.c
@@ -2059,29 +2059,15 @@
case EOF:
return T_EOF;
- /* Handle escapes */
+ /* Handle line continuations */
case '\\':
- c = peek(0);
-
- switch (c) {
- case ' ':
- case '\r':
- case '\n':
- readLineContinuation();
- break;
-
- case EOF:
- error("Illegal character escape at end of input\n");
- break;
-
- default:
- shiftChars(1);
- error("Illegal character escape '%s'\n", print(c));
- }
+ // Macro args were handled by `peek`, and character escapes do not exist
+ // outside of string literals, so this must be a line continuation.
+ readLineContinuation();
break;
- /* Handle identifiers and escapes... or error out */
+ /* Handle identifiers... or report garbage characters */
default:
if (startsIdentifier(c)) {