mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-20 08:32:50 -06:00
Standard format for floats and strings in GFCC.
This commit is contained in:
@@ -21,9 +21,7 @@ pTerm n = skipSpaces >> (pParen <++ pApp <++ pNum <++ pStr <++ pMeta)
|
|||||||
where pParen = between (char '(') (char ')') (pTerm 0)
|
where pParen = between (char '(') (char ')') (pTerm 0)
|
||||||
pApp = liftM2 App pIdent (if n == 0 then pTerms else return [])
|
pApp = liftM2 App pIdent (if n == 0 then pTerms else return [])
|
||||||
pStr = char '"' >> liftM AStr (manyTill (pEsc <++ get) (char '"'))
|
pStr = char '"' >> liftM AStr (manyTill (pEsc <++ get) (char '"'))
|
||||||
-- FIXME: what escapes are used?
|
|
||||||
pEsc = char '\\' >> get
|
pEsc = char '\\' >> get
|
||||||
-- FIXME: what formats?
|
|
||||||
pNum = do x <- munch1 isDigit
|
pNum = do x <- munch1 isDigit
|
||||||
((char '.' >> munch1 isDigit >>= \y -> return (AFlt (read (x++"."++y))))
|
((char '.' >> munch1 isDigit >>= \y -> return (AFlt (read (x++"."++y))))
|
||||||
<++
|
<++
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ module GF.GFCC.Raw.PrintGFCCRaw (printTree) where
|
|||||||
import GF.GFCC.Raw.AbsGFCCRaw
|
import GF.GFCC.Raw.AbsGFCCRaw
|
||||||
|
|
||||||
import Data.List (intersperse)
|
import Data.List (intersperse)
|
||||||
|
import Numeric (showFFloat)
|
||||||
|
|
||||||
printTree :: Grammar -> String
|
printTree :: Grammar -> String
|
||||||
printTree g = prGrammar g ""
|
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 ')'
|
where p s = if n == 0 then s else showChar '(' . s . showChar ')'
|
||||||
prRExp _ (AInt x) = shows x
|
prRExp _ (AInt x) = shows x
|
||||||
prRExp _ (AStr x) = showChar '"' . concatS (map mkEsc x) . showChar '"'
|
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 '?'
|
prRExp _ AMet = showChar '?'
|
||||||
|
|
||||||
mkEsc :: Char -> ShowS
|
mkEsc :: Char -> ShowS
|
||||||
mkEsc s = case s of
|
mkEsc s = case s of
|
||||||
'"' -> showString "\\\""
|
'"' -> showString "\\\""
|
||||||
'\\' -> showString "\\\\"
|
'\\' -> showString "\\\\"
|
||||||
'\n' -> showString "\\n"
|
|
||||||
'\t' -> showString "\\t"
|
|
||||||
_ -> showChar s
|
_ -> showChar s
|
||||||
|
|
||||||
prRExpList :: [RExp] -> ShowS
|
prRExpList :: [RExp] -> ShowS
|
||||||
|
|||||||
Reference in New Issue
Block a user