import System(system) import Monad(when) import IO(stdout,hFlush) import PFE import HsParser(parse) import Unlit(readHaskellFile) import ParseMonad(parseFile) import ReAssocBase() import ScopeNamesBase() import NameMapsBase() import PrettyPrint import HsModule import HsName(ModuleName(..)) import HasIO import CmdLineParser import qualified AbstractIO as FU main = do putStr "PFE> " hFlush stdout -- just because GHC is stupid s <- getLine when (s/="quit") $ do pfe' cmds parse (words s) `catch` print main where cmds = pfeCmds++icmds icmds = [("prepp",Args "<module>" ppModule), ("!",Args "<shell command>" shell)] shell args = io $ print =<< system (unwords args) ppModule (arg:_) = do m <- preparseSourceFile =<< findFile (Module arg) FU.putStrLn (pp m)