shithub: rgbds

Download patch

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)) {