aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/stackir/InstructionSerializer.java11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/main/java/org/shedlang/compiler/stackir/InstructionSerializer.java b/src/main/java/org/shedlang/compiler/stackir/InstructionSerializer.java
index eb123e36..1acb949a 100644
--- a/src/main/java/org/shedlang/compiler/stackir/InstructionSerializer.java
+++ b/src/main/java/org/shedlang/compiler/stackir/InstructionSerializer.java
@@ -200,9 +200,16 @@ public class InstructionSerializer {
serializeTree(named.value, builder, indentation);
}
case TreeString string -> {
- // TODO: escaping
builder.append("\"");
- builder.append(string.value);
+ var escapedValue = string.value
+ .replace("\\", "\\\\")
+ .replace("\b", "\\b")
+ .replace("\t", "\\t")
+ .replace("\n", "\\n")
+ .replace("\f", "\\f")
+ .replace("\r", "\\r")
+ .replace("\"", "\\\"");
+ builder.append(escapedValue);
builder.append("\"");
}
}