aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/prim.sml
diff options
context:
space:
mode:
authorGravatar Adam Chlipala <adamc@hcoop.net>2009-12-03 11:50:51 -0500
committerGravatar Adam Chlipala <adamc@hcoop.net>2009-12-03 11:50:51 -0500
commit2304eece8f5f2b9067cd66d860a332f8721c5321 (patch)
treea8e6fae2fe503e60c209eeab70b9ff462ab808c8 /src/prim.sml
parente7b50987708729b9c3d0c8c0acb58e801142e6b9 (diff)
UTF-8 in dynamic escaping
Diffstat (limited to 'src/prim.sml')
-rw-r--r--src/prim.sml18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/prim.sml b/src/prim.sml
index c4b7e839..e094e0b1 100644
--- a/src/prim.sml
+++ b/src/prim.sml
@@ -74,10 +74,20 @@ fun pad (n, ch, s) =
else
str ch ^ pad (n-1, ch, s)
-val gccify = String.translate (fn ch => if Char.isPrint ch then
- str ch
- else
- "\\" ^ pad (3, #"0", Int.fmt StringCvt.OCT (ord ch)))
+val gccify = String.translate (fn ch =>
+ case ch of
+ #"\"" => "\\\""
+ | #"\\" => "\\\\"
+ | #"'" => "\\'"
+ | #"\n" => "\\n"
+ | #"\r" => "\\r"
+ | #"\t" => "\\t"
+ | #" " => " "
+ | _ =>
+ if Char.isPrint ch then
+ str ch
+ else
+ "\\" ^ pad (3, #"0", Int.fmt StringCvt.OCT (ord ch)))
fun p_t_GCC t =
case t of