diff options
Diffstat (limited to 'paper/While/SimpleParse.icl')
-rw-r--r-- | paper/While/SimpleParse.icl | 13 |
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 |