diff options
author | Adam Chlipala <adamc@hcoop.net> | 2009-12-03 11:50:51 -0500 |
---|---|---|
committer | Adam Chlipala <adamc@hcoop.net> | 2009-12-03 11:50:51 -0500 |
commit | 2304eece8f5f2b9067cd66d860a332f8721c5321 (patch) | |
tree | a8e6fae2fe503e60c209eeab70b9ff462ab808c8 /src/prim.sml | |
parent | e7b50987708729b9c3d0c8c0acb58e801142e6b9 (diff) |
UTF-8 in dynamic escaping
Diffstat (limited to 'src/prim.sml')
-rw-r--r-- | src/prim.sml | 18 |
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 |