its fine
This commit is contained in:
@@ -128,18 +128,26 @@ standaloneOf = (<* eof)
|
|||||||
|
|
||||||
partialExpr :: (OnFold) => Parser PartialExpr'
|
partialExpr :: (OnFold) => Parser PartialExpr'
|
||||||
partialExpr = choice
|
partialExpr = choice
|
||||||
[ try $ Fix <$> infixExpr
|
[ ifExpr
|
||||||
|
, try $ infixExpr
|
||||||
, application
|
, application
|
||||||
]
|
]
|
||||||
<?> "expression"
|
<?> "expression"
|
||||||
where
|
where
|
||||||
application = foldl1' mkApp <$> some (flexeme partialExpr1)
|
application = foldl1' mkApp <$> some (flexeme partialExpr1)
|
||||||
infixExpr = mkB <$> partialExpr1' <*> infixOp' <*> partialExpr'
|
infixExpr = fmap Fix $
|
||||||
|
mkB <$> partialExpr1' <*> infixOp' <*> partialExpr'
|
||||||
|
|
||||||
|
ifExpr :: Parser PartialExpr'
|
||||||
|
ifExpr = fmap (Fix . E) $
|
||||||
|
IfEF <$> (flexeme "if" *> partialExpr)
|
||||||
|
<*> (flexeme "then" *> partialExpr)
|
||||||
|
<*> (flexeme "else" *> partialExpr)
|
||||||
|
|
||||||
mkB a f b = B f a b
|
mkB a f b = B f a b
|
||||||
partialExpr1' = unFix <$> partialExpr1
|
partialExpr1' = unFix <$> partialExpr1
|
||||||
partialExpr' = unFix <$> partialExpr
|
partialExpr' = unFix <$> partialExpr
|
||||||
infixOp' = lexeme infixOp
|
infixOp' = flexeme infixOp
|
||||||
|
|
||||||
mkApp :: PartialExpr' -> PartialExpr' -> PartialExpr'
|
mkApp :: PartialExpr' -> PartialExpr' -> PartialExpr'
|
||||||
mkApp f x = Fix . E $ f `AppEF` x
|
mkApp f x = Fix . E $ f `AppEF` x
|
||||||
|
|||||||
Reference in New Issue
Block a user