on 083fc70 help sign in
Idris-dev/src/Idris/REPLParser.hs
26 lines 771 B history raw
1module Idris.REPLParser(parseCmd) where
3import Idris.Parser
4import Idris.AbsSyntax
5import Core.TT
7import Text.ParserCombinators.Parsec
8import Text.ParserCombinators.Parsec.Expr
9import Text.ParserCombinators.Parsec.Language
10import qualified Text.ParserCombinators.Parsec.Token as PTok
12import Debug.Trace
14parseCmd i = runParser pCmd i "(input)"
16cmd :: [String] -> IParser ()
17cmd xs = do lchar ':'; docmd xs
18 where docmd [] = fail "No such command"
19 docmd (x:xs) = try (discard (symbol x)) <|> docmd xs
21pCmd :: IParser Command
22pCmd = try (do cmd ["q", "quit"]; return Quit)
23 <|> try (do cmd ["h", "?", "help"]; return Help)
24 <|> try (do cmd ["ttshell"]; return TTShell)
25 <|> do t <- pFullExpr defaultSyntax; return (Eval t)
26 <|> do eof; return NOP