projects
/
kaleidoscope-hs-old.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add parenthesis to parsing
[kaleidoscope-hs-old.git]
/
AST.hs
diff --git
a/AST.hs
b/AST.hs
index 720413652e4343740ad6268e0a866b0576e4c4aa..73523d6d4c8a37cef977d5614d355aaac13756af 100644
(file)
--- a/
AST.hs
+++ b/
AST.hs
@@
-39,7
+39,8
@@
instance Read AST where
return (Function name params body)
instance Read Expr where
return (Function name params body)
instance Read Expr where
- readPrec = choice [ parseNum
+ readPrec = choice [ parseParens
+ , parseNum
, parseVar
, parseCall
, parseIf
, parseVar
, parseCall
, parseIf
@@
-50,7
+51,9
@@
instance Read Expr where
, parseBinOp "<" (Cmp LT)
, parseBinOp "==" (Cmp EQ)
]
, parseBinOp "<" (Cmp LT)
, parseBinOp "==" (Cmp EQ)
]
- where parseNum = Num <$> readPrec
+ where parseParens = step $ lift $
+ between (char '(') (char ')') (readS_to_P reads)
+ parseNum = Num <$> readPrec
parseVar = Var <$> lift (munch1 isAlpha)
parseCall = do
func <- lift (munch1 isAlpha)
parseVar = Var <$> lift (munch1 isAlpha)
parseCall = do
func <- lift (munch1 isAlpha)