@@ -14,8 +14,15 @@ import Debug.Trace
1414
1515type TokenParser a = PTok.TokenParser a
1616
17+idrisDef = haskellDef {
18+ reservedOpNames = [":", "..", "=", "\\", "|", "<-", "->", "=>"],
19+ reservedNames = ["let", "in", "data", "Set", "if", "then", "else",
20+ "do", "dsl", "import", "infix", "infixl", "infixr",
21+ "where", "forall"]
22+ }
23+
1724lexer :: TokenParser ()
18−lexer = PTok.makeTokenParser haskellDef
25+lexer = PTok.makeTokenParser idrisDef
1926
2027whiteSpace= PTok.whiteSpace lexer
2128lexeme = PTok.lexeme lexer
@@ -47,6 +54,7 @@ pSimpleExpr =
4754 return $ PQuote t)
4855 <|> try (do x <- iName; return (PRef x))
4956 <|> try (do lchar '_'; return Placeholder)
57+ <|> try (do lchar '('; o <- operator; lchar ')'; return (PRef (UN [o])))
5058 <|> try (do lchar '('; e <- pExpr; lchar ')'; return e)
5159
5260pApp = do f <- pSimpleExpr
@@ -70,7 +78,6 @@ pPi = do lchar '('; x <- iName; t <- pTSig; lchar ')'
7078 sc <- pExpr
7179 return (PPi Imp x t sc)
7280
73−
7481table = [[binary "=" (\x y -> PApp (PRef (UN ["="])) [] [x,y]) AssocLeft],
7582 [binary "->" (PPi Exp (MN 0 "X")) AssocRight]]
7683