diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-11 10:25:37 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-11 10:25:37 +0100 |
| commit | ea29df54d21ccfd8fcf93bac37f3b57bad327b13 (patch) | |
| tree | 989c01134b0798105d3be69d5b8e78c626011e8f /src/main/java/org | |
| parent | deaaca5a698136ca65ca49ac668c6c85037eabfd (diff) | |
Escape strings in serialized instructions
Diffstat (limited to 'src/main/java/org')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/stackir/InstructionSerializer.java | 11 |
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("\""); } } |
