diff options
author | Adam Chlipala <adam@chlipala.net> | 2012-01-02 17:08:39 -0500 |
---|---|---|
committer | Adam Chlipala <adam@chlipala.net> | 2012-01-02 17:08:39 -0500 |
commit | 415f477a62e6bf0776eec2ba13fc2ae05cf77735 (patch) | |
tree | fd1b94c909fc8c4b2c176406f157cbe8812f5984 /src/prim.sml | |
parent | 7599d4cacde93b7dac3d1dea2b147f6e49425072 (diff) |
Fix handling of quotes in generating C literals
Diffstat (limited to 'src/prim.sml')
-rw-r--r-- | src/prim.sml | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/prim.sml b/src/prim.sml index 96880487..94801e7f 100644 --- a/src/prim.sml +++ b/src/prim.sml @@ -70,12 +70,24 @@ fun pad (n, ch, s) = else str ch ^ pad (n-1, ch, s) +fun quoteDouble ch = + case ch of + #"'" => str ch + | _ => Char.toCString ch + +fun toCChar ch = + case ch of + #"\"" => str ch + | _ => Char.toCString ch + +val toCString = String.translate quoteDouble + fun p_t_GCC t = case t of Int n => string (int2s n) | Float n => string (float2s n) - | String s => box [string "\"", string (String.toCString s), string "\""] - | Char ch => box [string "'", string (Char.toCString ch), string "'"] + | String s => box [string "\"", string (toCString s), string "\""] + | Char ch => box [string "'", string (toCChar ch), string "'"] fun equal x = case x of |