fix bool parser

This commit is contained in:
Yann Esposito (Yogsototh) 2017-02-27 08:36:14 +01:00
parent ae2559c5b4
commit a1307b7403
Signed by untrusted user who does not match committer: yogsototh
GPG key ID: 7B19A4C650D59646

View file

@ -17,7 +17,6 @@ parseCmd = parse parseExpr "S-Expr"
parseExpr :: Parser SExp
parseExpr = parseLambda
<|> parseList
<|> parseBool
<|> parseNumber
<|> parseAtom
<|> parseString
@ -25,14 +24,14 @@ parseExpr = parseLambda
parseNumber :: Parser SExp
parseNumber = (Num . fromMaybe 0 . readMaybe) <$> many1 digit
parseBool :: Parser SExp
parseBool = Bool <$> ((string "true" >> return True)
<|> (string "false" >> return False))
parseAtom :: Parser SExp
parseAtom = Atom <$> do frst <- (noneOf " \t()[]\"")
rest <- many (noneOf " \t()[]")
return $ toS (frst:rest)
parseAtom = do
frst <- (noneOf " \t()[]\"")
rest <- many (noneOf " \t()[]")
case frst:rest of
"true" -> return (Bool True)
"false" -> return (Bool False)
x -> return (Atom (toS x))
parseString :: Parser SExp
parseString = (Str . toS) <$> between (char '"')