1
0
forked from GitHub/gf-core

now the abstract syntax in PGF allows the same syntax for integers, floats and strings as in Haskell. This includes negative integers and exponents in the floats

This commit is contained in:
krasimir
2010-01-15 21:13:46 +00:00
parent cd3e40a2d8
commit a04cbcfb63
2 changed files with 8 additions and 13 deletions

View File

@@ -39,9 +39,9 @@ pOption = do
RP.option (OOpt flg) (fmap (OFlag flg) (RP.char '=' >> pValue))
pValue = do
fmap (VInt . read) (RP.munch1 isDigit)
fmap VInt (RP.readS_to_P reads)
RP.<++
fmap VStr pStr
fmap VStr (RP.readS_to_P reads)
RP.<++
fmap VId pFilename

View File

@@ -15,7 +15,7 @@ module PGF.Expr(Tree, BindType(..), Expr(..), Literal(..), Patt(..), Equation(..
MetaId,
-- helpers
pMeta,pStr,pArg,pLit,freshName,ppMeta,ppLit,ppParens
pMeta,pArg,pLit,freshName,ppMeta,ppLit,ppParens
) where
import PGF.CId
@@ -194,16 +194,11 @@ pMeta = do RP.char '?'
return 0
pLit :: RP.ReadP Literal
pLit = pNum RP.<++ liftM LStr pStr
pNum = do x <- RP.munch1 isDigit
((RP.char '.' >> RP.munch1 isDigit >>= \y -> return (LFlt (read (x++"."++y))))
RP.<++
(return (LInt (read x))))
pStr = RP.char '"' >> (RP.manyTill (pEsc RP.<++ RP.get) (RP.char '"'))
where
pEsc = RP.char '\\' >> RP.get
pLit = liftM LStr (RP.readS_to_P reads)
RP.<++
liftM LInt (RP.readS_to_P reads)
RP.<++
liftM LFlt (RP.readS_to_P reads)
-----------------------------------------------------