From fe2d1fe8ab56f83796a80bcb370d7420e693ab2a Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Mon, 2 Jan 2012 17:08:39 -0500 Subject: Fix handling of quotes in generating C literals --- src/prim.sml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'src/prim.sml') 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 -- cgit v1.2.3