Update demos and adds <|
This commit is contained in:
@@ -112,8 +112,8 @@ parseExpressionM = choice
|
||||
, try parseLambdaM
|
||||
, try parseLambdaExpressionM
|
||||
, try parseListLiteralM
|
||||
, try parseApplicationM
|
||||
, try parseTreeTermM
|
||||
, try parseArrowLeftM
|
||||
, parseLiteralM
|
||||
]
|
||||
|
||||
@@ -138,7 +138,7 @@ parseLambdaM = do
|
||||
|
||||
parseLambdaExpressionM :: ParserM TricuAST
|
||||
parseLambdaExpressionM = choice
|
||||
[ try parseLambdaApplicationM
|
||||
[ try parseLambdaArrowLeftM
|
||||
, parseAtomicLambdaM
|
||||
]
|
||||
|
||||
@@ -172,6 +172,34 @@ parseLambdaApplicationM = do
|
||||
pure arg
|
||||
pure $ foldl SApp func args
|
||||
|
||||
parseArrowLeftM :: ParserM TricuAST
|
||||
parseArrowLeftM = do
|
||||
left <- parseApplicationM
|
||||
mArrow <- optional (try $ do
|
||||
scnParserM
|
||||
satisfyM (== LArrowLeft))
|
||||
case mArrow of
|
||||
Nothing -> return left
|
||||
Just _ -> do
|
||||
skipMany (satisfyM (== LNewline))
|
||||
scnParserM
|
||||
right <- parseExpressionM
|
||||
return $ SApp left right
|
||||
|
||||
parseLambdaArrowLeftM :: ParserM TricuAST
|
||||
parseLambdaArrowLeftM = do
|
||||
left <- parseLambdaApplicationM
|
||||
mArrow <- optional (try $ do
|
||||
scnParserM
|
||||
satisfyM (== LArrowLeft))
|
||||
case mArrow of
|
||||
Nothing -> return left
|
||||
Just _ -> do
|
||||
skipMany (satisfyM (== LNewline))
|
||||
scnParserM
|
||||
right <- parseLambdaExpressionM
|
||||
return $ SApp left right
|
||||
|
||||
parseAtomicBaseM :: ParserM TricuAST
|
||||
parseAtomicBaseM = choice
|
||||
[ parseTreeLeafM
|
||||
|
||||
Reference in New Issue
Block a user