diff src/prim.sml @ 1054:b06a2a65e670

UTF-8 in dynamic escaping
author Adam Chlipala <adamc@hcoop.net>
date Thu, 03 Dec 2009 11:50:51 -0500
parents 4eb1c4a1b057
children d7d5b167f267
line wrap: on
line diff
--- a/src/prim.sml	Thu Dec 03 11:20:13 2009 -0500
+++ b/src/prim.sml	Thu Dec 03 11:50:51 2009 -0500
@@ -74,10 +74,20 @@
     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