rc #13

Merged
crumbtoo merged 196 commits from dev into main 2024-02-13 13:22:23 -07:00
Showing only changes of commit eaa04c4a59 - Show all commits

View File

@@ -128,18 +128,26 @@ standaloneOf = (<* eof)
partialExpr :: (OnFold) => Parser PartialExpr'
partialExpr = choice
[ try $ Fix <$> infixExpr
[ ifExpr
, try $ infixExpr
, application
]
<?> "expression"
where
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
partialExpr1' = unFix <$> partialExpr1
partialExpr' = unFix <$> partialExpr
infixOp' = lexeme infixOp
infixOp' = flexeme infixOp
mkApp :: PartialExpr' -> PartialExpr' -> PartialExpr'
mkApp f x = Fix . E $ f `AppEF` x