From a0b31174f4b7f6ac037dc4002c38cd61b09dabaa Mon Sep 17 00:00:00 2001 From: Luke Lau Date: Sun, 10 Mar 2019 01:18:24 +0000 Subject: [PATCH] Begin parsing addition --- AST.hs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 AST.hs 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) -- 2.30.2