From 0be52821d99b8d2b2b1e22af1294205e8564c4a3 Mon Sep 17 00:00:00 2001 From: Karol Stasiak Date: Mon, 2 Sep 2019 23:22:32 +0200 Subject: [PATCH] Add the {nullchar} escape sequence --- docs/lang/text.md | 2 ++ src/main/scala/millfork/parser/TextCodec.scala | 3 +++ 2 files changed, 5 insertions(+) diff --git a/docs/lang/text.md b/docs/lang/text.md index 73b163d1..a3259eea 100644 --- a/docs/lang/text.md +++ b/docs/lang/text.md @@ -69,6 +69,8 @@ Some escape sequences may expand to multiple characters. For example, in several * `{program_name_upper}` – the same, but uppercased +* `{nullchar}` – the null terminator for strings (`"{nullchar}"` is equivalent to `""z`) + ##### Available only in some encodings * `{n}` – new line diff --git a/src/main/scala/millfork/parser/TextCodec.scala b/src/main/scala/millfork/parser/TextCodec.scala index 8a93a275..5f1010aa 100644 --- a/src/main/scala/millfork/parser/TextCodec.scala +++ b/src/main/scala/millfork/parser/TextCodec.scala @@ -116,6 +116,9 @@ class TextCodec(val name: String, if (escSeq == "copyright_year") { return encode(log, position, LocalDate.now.getYear.toString.toList, options, lenient) } + if (escSeq == "null" || escSeq == "nullchar") { + return List(stringTerminator) + } escapeSequences.getOrElse(escSeq, { if (lenient) { log.warn(s"Cannot encode escape sequence {$escSeq} in encoding `$name`, skipped it", position)