summaryrefslogtreecommitdiff
path: root/paper/While/SimpleParse.icl
diff options
context:
space:
mode:
Diffstat (limited to 'paper/While/SimpleParse.icl')
-rw-r--r--paper/While/SimpleParse.icl13
1 files changed, 10 insertions, 3 deletions
diff --git a/paper/While/SimpleParse.icl b/paper/While/SimpleParse.icl
index eca001a..316fcc3 100644
--- a/paper/While/SimpleParse.icl
+++ b/paper/While/SimpleParse.icl
@@ -18,9 +18,16 @@ where
parser` :: Parser Token Stm
parser` = item ParenOpen *> parser <* item ParenClose
<|> item SkipToken *> pure Skip
- <|> item IfToken *> liftM3 If pbexpr (item ThenToken *> parser) (item ElseToken *> parser`)
- <|> item WhileToken *> liftM2 While pbexpr (item DoToken *> parser`)
- <|> liftM2 Ass (toVar <$> satisfy isVarToken) (item AssToken *> paexpr)
+ <|> item IfToken *> liftM3 If
+ pbexpr
+ (item ThenToken *> parser)
+ (item ElseToken *> parser`)
+ <|> item WhileToken *> liftM2 While
+ pbexpr
+ (item DoToken *> parser`)
+ <|> liftM2 Ass
+ (toVar <$> satisfy isVarToken)
+ (item AssToken *> paexpr)
toVar (VarToken v) = v
isVarToken (VarToken _) = True; isVarToken _ = False