diff --git a/src/GF/GFCC/Raw/ParGFCCRaw.hs b/src/GF/GFCC/Raw/ParGFCCRaw.hs index 06ed83c04..051358211 100644 --- a/src/GF/GFCC/Raw/ParGFCCRaw.hs +++ b/src/GF/GFCC/Raw/ParGFCCRaw.hs @@ -21,9 +21,7 @@ pTerm n = skipSpaces >> (pParen <++ pApp <++ pNum <++ pStr <++ pMeta) where pParen = between (char '(') (char ')') (pTerm 0) pApp = liftM2 App pIdent (if n == 0 then pTerms else return []) pStr = char '"' >> liftM AStr (manyTill (pEsc <++ get) (char '"')) - -- FIXME: what escapes are used? pEsc = char '\\' >> get - -- FIXME: what formats? pNum = do x <- munch1 isDigit ((char '.' >> munch1 isDigit >>= \y -> return (AFlt (read (x++"."++y)))) <++ diff --git a/src/GF/GFCC/Raw/PrintGFCCRaw.hs b/src/GF/GFCC/Raw/PrintGFCCRaw.hs index 45ca6b9cb..d46d8096f 100644 --- a/src/GF/GFCC/Raw/PrintGFCCRaw.hs +++ b/src/GF/GFCC/Raw/PrintGFCCRaw.hs @@ -3,6 +3,7 @@ module GF.GFCC.Raw.PrintGFCCRaw (printTree) where import GF.GFCC.Raw.AbsGFCCRaw import Data.List (intersperse) +import Numeric (showFFloat) printTree :: Grammar -> String printTree g = prGrammar g "" @@ -16,15 +17,13 @@ prRExp n (App x xs) = p (prCId x . showChar ' ' . prRExpList xs) where p s = if n == 0 then s else showChar '(' . s . showChar ')' prRExp _ (AInt x) = shows x prRExp _ (AStr x) = showChar '"' . concatS (map mkEsc x) . showChar '"' -prRExp _ (AFlt x) = shows x -- FIXME: simpler format +prRExp _ (AFlt x) = showFFloat Nothing x prRExp _ AMet = showChar '?' mkEsc :: Char -> ShowS mkEsc s = case s of '"' -> showString "\\\"" '\\' -> showString "\\\\" - '\n' -> showString "\\n" - '\t' -> showString "\\t" _ -> showChar s prRExpList :: [RExp] -> ShowS