@@ -190,9 +190,7 @@ extension syn (Rule ssym ptm _)
190{- | Parses a (normal) built-in expression
190{- | Parses a (normal) built-in expression
192InternalExpr ::=
192InternalExpr ::=
195− | UnifyLog
193+ UnifyLog
196 | RecordType
194 | RecordType
197 | SimpleExpr
195 | SimpleExpr
@@ -202,14 +200,14 @@ InternalExpr ::=
203 | CaseExpr
201 | CaseExpr
204 | DoBlock
202 | DoBlock
208internalExpr :: SyntaxInfo -> IdrisParser PTerm
208internalExpr :: SyntaxInfo -> IdrisParser PTerm
209internalExpr syn =
209internalExpr syn =
211− <|> try (matchApp syn)
212− <|> unifyLog syn
210+ unifyLog syn
213 <|> try (disamb syn)
211 <|> try (disamb syn)
214 <|> noImplicits syn
212 <|> noImplicits syn
215 <|> recordType syn
213 <|> recordType syn
@@ -220,7 +218,7 @@ internalExpr syn =
220 <|> try (pi syn)
218 <|> try (pi syn)
221 <|> doBlock syn
219 <|> doBlock syn
222 <|> caseExpr syn
220 <|> caseExpr syn
223− <|> simpleExpr syn
221+ <|> app syn
224 <?> "expression"
222 <?> "expression"
226{- | Parses a case expression
224{- | Parses a case expression
@@ -483,24 +481,6 @@ hsimpleExpr syn =
483 <|> simpleExpr syn
481 <|> simpleExpr syn
484 <?> "expression"
482 <?> "expression"
486−{- | Parses a matching application expression
489− SimpleExpr '<==' FnName
493−matchApp :: SyntaxInfo -> IdrisParser PTerm
494−matchApp syn = do ty <- simpleExpr syn
498− return (PLet (sMN 0 "match")
501− (PRef fc (sMN 0 "match")))
502− <?> "matching application expression"
504{- | Parses a unification log expression
484{- | Parses a unification log expression
505UnifyLog ::=
485UnifyLog ::=
506 '%' 'unifyLog' SimpleExpr
486 '%' 'unifyLog' SimpleExpr
@@ -542,7 +522,11 @@ noImplicits syn = do try (lchar '%' *> reserved "noImplicits")
544 'mkForeign' Arg Arg*
524 'mkForeign' Arg Arg*
545− | SimpleExpr Arg+
526+ | SimpleExpr Arg*
529+ SimpleExpr '<==' FnName
@@ -552,8 +536,6 @@ app syn = do f <- reserved "mkForeign"
552 fn <- arg syn
536 fn <- arg syn
553 args <- many (do notEndApp; arg syn)
537 args <- many (do notEndApp; arg syn)
555− -- mkForeign f args ==>
556− -- liftPrimIO (\w => mkForeignPrim f args w)
557 let ap = PApp fc (PRef fc (sUN "liftPrimIO"))
539 let ap = PApp fc (PRef fc (sUN "liftPrimIO"))
558 [pexp (PLam (sMN 0 "w")
540 [pexp (PLam (sMN 0 "w")
559 Placeholder
541 Placeholder
@@ -563,13 +545,20 @@ app syn = do f <- reserved "mkForeign"
563 return (dslify i ap)
545 return (dslify i ap)
565 <|> do f <- simpleExpr syn
547 <|> do f <- simpleExpr syn
548+ (do try $ symbol "<=="
551+ return (PLet (sMN 0 "match")
554+ (PRef fc (sMN 0 "match")))
555+ <?> "matching application expression") <|> (do
566 fc <- getFC
556 fc <- getFC
567− args <- some (do notEndApp; arg syn)
558+ args <- many (do notEndApp; arg syn)
569−-- case f of
559+ case args of
570−-- PAppBind fc ref [] ->
560+ [] -> return f
571−-- return (dslify i (PAppBind fc ref args))
572− return (dslify i (PApp fc f args))
561+ _ -> return (dslify i (PApp fc f args)))
573 <?> "function application"
562 <?> "function application"
575 dslify :: IState -> PTerm -> PTerm
564 dslify :: IState -> PTerm -> PTerm