@@ -29,6 +29,8 @@ import Data.List (intercalate, isPrefixOf, nub, sortBy)
2929import Data.Maybe (mapMaybe)
3030import Data.Traversable (traverse)
3131
32+import Parser
33+
3234import System.Console.Haskeline
3335import System.Directory (doesFileExist, findExecutable, getHomeDirectory)
3436import System.Exit
@@ -36,13 +38,12 @@ import System.Environment.XDG.BaseDir
3638import System.FilePath ((</>), isPathSeparator)
3739import System.Process
3840
39−import qualified Parser
41+import Text.Parsec (choice)
4042
4143import qualified Data.Map as M
4244import qualified Language.PureScript as P
4345import qualified Paths_purescript as Paths
4446import qualified System.IO.UTF8 as U (readFile)
45−import qualified Text.Parsec as Parsec (try)
4647
4748-- |
4849-- The PSCI state.
@@ -117,7 +118,7 @@ getPreludeFilename = Paths.getDataFileName "prelude/prelude.purs"
117118-- Loads a file for use with imports.
118119--
119120loadModule :: FilePath -> IO (Either String [P.Module])
120−loadModule = fmap (either (Left . show) Right . Parser.parseModules) . U.readFile
121+loadModule = fmap (either (Left . show) Right . parseModules) . U.readFile
121122
122123-- |
123124-- Expands tilde in path.
@@ -243,9 +244,9 @@ handleTypeOf value (PSCI imports loadedModules lets) = do
243244handleCommand :: Command -> StateT PSCI (InputT IO) ()
244245handleCommand Empty = return ()
245246handleCommand (Expression ls) =
246− case Parser.psciParser (Left <$> Parsec.try Parser.parseLet <|> Right <$> Parser.parseExpression) (unlines ls) of
247− Left err -> inputTToState $ outputStrLn (show err)
248− Right (Left l) -> modify (updateLets l)
247+ case psciParser (choice [Left <$> psciLet, Right <$> psciExpression]) (unlines ls) of
248+ Left err -> inputTToState $ outputStrLn (show err)
249+ Right (Left l) -> modify (updateLets l)
249250 Right (Right decl) -> get >>= inputTToState . handleDeclaration decl
250251handleCommand Help = inputTToState $ outputStrLn helpMessage
251252handleCommand (Import moduleName) = modify (updateImports moduleName)
@@ -260,8 +261,8 @@ handleCommand Reload = do
260261 (Right prelude) <- ioToState $ loadModule =<< getPreludeFilename
261262 put (PSCI defaultImports prelude [])
262263handleCommand (TypeOf expr) =
263− case Parser.psciParser Parser.parseExpression expr of
264− Left err -> inputTToState $ outputStrLn (show err)
264+ case parseExpression expr of
265+ Left err -> inputTToState $ outputStrLn (show err)
265266 Right expr' -> get >>= inputTToState . handleTypeOf expr'
266267handleCommand _ = outputTStrLn "Unknown command"
267268