Mercurial > urweb
diff src/prim.sml @ 1053:4eb1c4a1b057
Escaping UTF-8 in MonoOpt
author | Adam Chlipala <adamc@hcoop.net> |
---|---|
date | Thu, 03 Dec 2009 11:20:13 -0500 |
parents | 280f81731426 |
children | b06a2a65e670 |
line wrap: on
line diff
--- a/src/prim.sml Wed Nov 25 09:48:23 2009 -0500 +++ b/src/prim.sml Thu Dec 03 11:20:13 2009 -0500 @@ -68,12 +68,23 @@ | String s => s | Char ch => str ch +fun pad (n, ch, s) = + if size s >= n then + 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))) + fun p_t_GCC t = case t of Int n => string (int2s n) | Float n => string (float2s n) - | String s => box [string "\"", string (String.toString s), string "\""] - | Char ch => box [string "'", string (String.toString (str ch)), string "'"] + | String s => box [string "\"", string (gccify s), string "\""] + | Char ch => box [string "'", string (gccify (str ch)), string "'"] fun equal x = case x of