fix bool parser
This commit is contained in:
parent
ae2559c5b4
commit
a1307b7403
1 changed files with 7 additions and 8 deletions
|
@ -17,7 +17,6 @@ parseCmd = parse parseExpr "S-Expr"
|
||||||
parseExpr :: Parser SExp
|
parseExpr :: Parser SExp
|
||||||
parseExpr = parseLambda
|
parseExpr = parseLambda
|
||||||
<|> parseList
|
<|> parseList
|
||||||
<|> parseBool
|
|
||||||
<|> parseNumber
|
<|> parseNumber
|
||||||
<|> parseAtom
|
<|> parseAtom
|
||||||
<|> parseString
|
<|> parseString
|
||||||
|
@ -25,14 +24,14 @@ parseExpr = parseLambda
|
||||||
parseNumber :: Parser SExp
|
parseNumber :: Parser SExp
|
||||||
parseNumber = (Num . fromMaybe 0 . readMaybe) <$> many1 digit
|
parseNumber = (Num . fromMaybe 0 . readMaybe) <$> many1 digit
|
||||||
|
|
||||||
parseBool :: Parser SExp
|
|
||||||
parseBool = Bool <$> ((string "true" >> return True)
|
|
||||||
<|> (string "false" >> return False))
|
|
||||||
|
|
||||||
parseAtom :: Parser SExp
|
parseAtom :: Parser SExp
|
||||||
parseAtom = Atom <$> do frst <- (noneOf " \t()[]\"")
|
parseAtom = do
|
||||||
rest <- many (noneOf " \t()[]")
|
frst <- (noneOf " \t()[]\"")
|
||||||
return $ toS (frst:rest)
|
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 :: Parser SExp
|
||||||
parseString = (Str . toS) <$> between (char '"')
|
parseString = (Str . toS) <$> between (char '"')
|
||||||
|
|
Loading…
Reference in a new issue