@@ -40,6 +40,7 @@ parseProg :: String -> Idris [PDecl]
40parseProg fname = do file <- lift $ readFile fname
40parseProg fname = do file <- lift $ readFile fname
42 case (runParser (do ps <- many1 pDecl
42 case (runParser (do ps <- many1 pDecl
43 i' <- getState
44 i' <- getState
44 return (ps, i')) i fname file) of
45 return (ps, i')) i fname file) of
45 Left err -> fail (show err)
46 Left err -> fail (show err)
@@ -59,6 +60,7 @@ pDecl' = try pFixity
59 <|> try (do n <- pfName; ty <- pTSig
60 <|> try (do n <- pfName; ty <- pTSig
60 return (PTy n ty))
61 return (PTy n ty))
61 <|> try pData
62 <|> try pData
63-------- Fixity --------
65-------- Fixity --------
@@ -98,6 +100,11 @@ pSimpleExpr =
98 <|> try (do lchar '('; e <- pExpr; lchar ')'; return e)
100 <|> try (do lchar '('; e <- pExpr; lchar ')'; return e)
99 <|> try (do reserved "Set"; return PSet)
101 <|> try (do reserved "Set"; return PSet)
103+pHSimpleExpr = try pSimpleExpr
101pApp = do f <- pSimpleExpr
108pApp = do f <- pSimpleExpr
102 args <- many1 pSimpleExpr
109 args <- many1 pSimpleExpr
103 return (PApp f [] args)
110 return (PApp f [] args)
@@ -168,3 +175,16 @@ pSimpleCon = do cn <- pfName
169--------- Pattern match clauses ---------
176--------- Pattern match clauses ---------
178+pPattern :: IParser PDecl
179+pPattern = try (do n <- pfName
180+ args <- many pHSimpleExpr
183+ return $ PClause (PApp (PRef n) [] args) rhs)
184+ <|> do l <- pSimpleExpr
189+ return $ PClause (PApp (PRef (UN [op])) [] [l,r]) rhs