diff options
Diffstat (limited to 'src/main/java/no/eliashaugsbakk/kompilator/tokenization/Lexer.java')
| -rw-r--r-- | src/main/java/no/eliashaugsbakk/kompilator/tokenization/Lexer.java | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/main/java/no/eliashaugsbakk/kompilator/tokenization/Lexer.java b/src/main/java/no/eliashaugsbakk/kompilator/tokenization/Lexer.java index 9e9ebfd..fb3e09e 100644 --- a/src/main/java/no/eliashaugsbakk/kompilator/tokenization/Lexer.java +++ b/src/main/java/no/eliashaugsbakk/kompilator/tokenization/Lexer.java @@ -125,6 +125,18 @@ public class Lexer { state = NORMAL; position++; // skip closing " current = input.charAt(position); + } else if (current == '\\' && position + 1 < input.length()) { + // The source file contains \n as two characters: '\' and 'n'. + // We intercept the backslash and emit the character it represents. + position++; + current = input.charAt(position); + switch (current) { + case 'n' -> wordBuffer.append('\n'); + case 't' -> wordBuffer.append('\t'); + case 'r' -> wordBuffer.append('\r'); + case '\\' -> wordBuffer.append('\\'); + default -> wordBuffer.append(current); + } } else { wordBuffer.append(current); } |
