@@ -14,8 +14,15 @@ import Debug.Trace
15type TokenParser a = PTok.TokenParser a
15type TokenParser a = PTok.TokenParser a
17+idrisDef = haskellDef {
18+ reservedOpNames = [":", "..", "=", "\\", "|", "<-", "->", "=>"],
19+ reservedNames = ["let", "in", "data", "Set", "if", "then", "else",
20+ "do", "dsl", "import", "infix", "infixl", "infixr",
17lexer :: TokenParser ()
24lexer :: TokenParser ()
18−lexer = PTok.makeTokenParser haskellDef
25+lexer = PTok.makeTokenParser idrisDef
20whiteSpace= PTok.whiteSpace lexer
27whiteSpace= PTok.whiteSpace lexer
21lexeme = PTok.lexeme lexer
28lexeme = PTok.lexeme lexer
@@ -47,6 +54,7 @@ pSimpleExpr =
47 return $ PQuote t)
54 return $ PQuote t)
48 <|> try (do x <- iName; return (PRef x))
55 <|> try (do x <- iName; return (PRef x))
49 <|> try (do lchar '_'; return Placeholder)
56 <|> try (do lchar '_'; return Placeholder)
57+ <|> try (do lchar '('; o <- operator; lchar ')'; return (PRef (UN [o])))
50 <|> try (do lchar '('; e <- pExpr; lchar ')'; return e)
58 <|> try (do lchar '('; e <- pExpr; lchar ')'; return e)
52pApp = do f <- pSimpleExpr
60pApp = do f <- pSimpleExpr
@@ -70,7 +78,6 @@ pPi = do lchar '('; x <- iName; t <- pTSig; lchar ')'
70 sc <- pExpr
78 sc <- pExpr
71 return (PPi Imp x t sc)
79 return (PPi Imp x t sc)
74table = [[binary "=" (\x y -> PApp (PRef (UN ["="])) [] [x,y]) AssocLeft],
81table = [[binary "=" (\x y -> PApp (PRef (UN ["="])) [] [x,y]) AssocLeft],
75 [binary "->" (PPi Exp (MN 0 "X")) AssocRight]]
82 [binary "->" (PPi Exp (MN 0 "X")) AssocRight]]