X-Git-Url: http://git.lukelau.me/?p=kaleidoscope-hs.git;a=blobdiff_plain;f=AST.hs;fp=AST.hs;h=ae18a52347ce91c37336a06f891bae690ba691ec;hp=1e505af4f47116e401e2523f10c90ac1c466c360;hb=0d4ed473c520786af90ab70dac51451ea2b8b941;hpb=3d32ea6f2146d033b27a28907ad32ca6c7a7279d diff --git a/AST.hs b/AST.hs index 1e505af..ae18a52 100644 --- a/AST.hs +++ b/AST.hs @@ -30,10 +30,7 @@ instance Read Expr where parseVar = Var <$> lift (munch1 isAlpha) parseBinOp s prc op = prec prc $ do a <- step readPrec - lift $ do - skipSpaces - string s - skipSpaces + spaced $ string s b <- readPrec return (BinOp op a b) parseCall = do @@ -43,13 +40,14 @@ instance Read Expr where (skipSpaces >> char ',' >> skipSpaces) return (Call func params) parseIf = do - lift $ skipSpaces >> string "if" >> skipSpaces + spaced $ string "if" cond <- readPrec - lift $ skipSpaces >> string "then" >> skipSpaces + spaced $ string "then" thenE <- readPrec - lift $ skipSpaces >> string "else" >> skipSpaces + spaced $ string "else" elseE <- readPrec return (If cond thenE elseE) + spaced f = lift $ skipSpaces >> f >> skipSpaces data Prototype = Prototype String [String] deriving Show