From: Luke Lau Date: Sun, 10 Mar 2019 01:18:24 +0000 (+0000) Subject: Begin parsing addition X-Git-Url: https://git.lukelau.me/?p=kaleidoscope-hs-old.git;a=commitdiff_plain;h=a0b31174f4b7f6ac037dc4002c38cd61b09dabaa Begin parsing addition --- a0b31174f4b7f6ac037dc4002c38cd61b09dabaa diff --git a/AST.hs b/AST.hs new file mode 100644 index 0000000..6528215 --- /dev/null +++ b/AST.hs @@ -0,0 +1,20 @@ +module AST where + +import Text.Read +import Text.ParserCombinators.ReadP hiding ((+++)) + +data Expr = Num Float + | Add Expr Expr + deriving Show + +instance Read Expr where + readPrec = parseNum +++ parseAdd + where parseNum = Num <$> readPrec + parseAdd = step $ do + a <- prec 11 readPrec + lift $ do + skipSpaces + char '+' + skipSpaces + b <- readPrec + return (Add a b)