Changeset 2409 for src/Main.hs
- Timestamp:
- 04/27/05 21:13:27 (4 years ago)
- svk:copy_cache_prev:
- 3914
- Files:
-
- 1 modified
-
src/Main.hs (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Main.hs
r2396 r2409 163 163 doRunSingle :: IORef Env -> RunOptions -> String -> IO () 164 164 doRunSingle menv opts prog = (`catch` handler) $ do 165 exp <- parse >>= makeProper 166 env <- theEnv 167 result <- runImperatively env (evaluate exp) 165 exp <- makeProper =<< parse 166 env <- theEnv 167 rv <- runImperatively env (evaluate exp) 168 result <- case rv of 169 VControl (ControlEnv env') -> do 170 glob <- readIORef $ envGlobal env' 171 ref <- findSymRef "$*_" glob 172 val <- runEval env' $ readRef ref 173 writeIORef menv env' 174 return val 175 _ -> return rv 168 176 printer env result 169 177 where 170 178 parse = do 171 parseEnv <- emptyEnv []172 runRule parseEnv (return . envBody) ruleProgram "<interactive>" (decodeUTF8 prog)179 env <- readIORef menv 180 runRule env (return . envBody) ruleProgram "<interactive>" (decodeUTF8 prog) 173 181 theEnv = do 174 182 ref <- if runOptSeparately opts … … 188 196 Val err@(VError _ _) -> fail $ pretty err 189 197 Stmts stmts@((_,pos):_) | not (runOptSeparately opts) -> do 190 let withDump = stmts ++ [(Syn " dump" [], pos)]198 let withDump = stmts ++ [(Syn "env" [], pos)] 191 199 return $ Stmts withDump 192 200 _ | not (runOptSeparately opts) -> do 193 201 let pos = SourcePos "<interactive>" 0 0 194 return $ Stmts [(exp, pos), (Syn " dump" [], pos)]202 return $ Stmts [(exp, pos), (Syn "env" [], pos)] 195 203 _ -> return exp 196 204 handler err = if not (isUserError err) then ioError err else do
