diff options
| author | aarne <aarne@cs.chalmers.se> | 2008-06-26 21:40:21 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2008-06-26 21:40:21 +0000 |
| commit | 757ea827e66ade735f6eb52fc069e4b3e17723b6 (patch) | |
| tree | e70d3c484c93d00583fe4b7a849e72697e06fa11 /src | |
| parent | a1da4b7c4808b3da1a0dba5a85b5e35134d9222c (diff) | |
debugging arabic
Diffstat (limited to 'src')
| -rw-r--r-- | src/GFI.hs | 105 |
1 files changed, 57 insertions, 48 deletions
diff --git a/src/GFI.hs b/src/GFI.hs index 014fa327e..6165a54aa 100644 --- a/src/GFI.hs +++ b/src/GFI.hs @@ -55,61 +55,70 @@ loop opts gfenv0 = do pwords = case words s of w:ws -> getCommandOp w :ws ws -> ws - r <- runInterruptibly $ case pwords of + -- special commands, requiring source grammar in env - "!":ws -> do - system $ unwords ws - loopNewCPU gfenv - "cc":ws -> do - let - (style,term) = case ws of - ('-':w):ws2 -> (pTermPrintStyle w, ws2) - _ -> (TermPrintDefault, ws) - case pTerm (unwords term) >>= checkTerm sgr >>= computeTerm sgr of ---- pipe! - Ok x -> putStrLn $ enc (showTerm style x) - Bad s -> putStrLn $ enc s - loopNewCPU gfenv - "i":args -> do - gfenv' <- case parseOptions args of - Ok (opts',files) -> importInEnv gfenv (addOptions opts opts') files - Bad err -> do putStrLn $ "Command parse error: " ++ err - return gfenv - loopNewCPU gfenv' + + case pwords of + + "q":_ -> putStrLn "See you." >> return gfenv + + _ -> do + r <- runInterruptibly $ case pwords of + + "!":ws -> do + system $ unwords ws + loopNewCPU gfenv + "cc":ws -> do + let + (style,term) = case ws of + ('-':w):ws2 -> (pTermPrintStyle w, ws2) + _ -> (TermPrintDefault, ws) + case pTerm (unwords term) >>= checkTerm sgr >>= computeTerm sgr of + Ok x -> putStrLn $ enc (showTerm style x) + Bad s -> putStrLn $ enc s + loopNewCPU gfenv + "i":args -> do + gfenv' <- case parseOptions args of + Ok (opts',files) -> + importInEnv gfenv (addOptions opts opts') files + Bad err -> do + putStrLn $ "Command parse error: " ++ err + return gfenv + loopNewCPU gfenv' -- other special commands, working on GFEnv - "e":_ -> loopNewCPU $ gfenv { - commandenv=emptyCommandEnv, sourcegrammar = emptyGrammar - } - - "dc":f:ws -> do - case readCommandLine (unwords ws) of - Just comm -> loopNewCPU $ gfenv { - commandenv = env { - commandmacros = Map.insert f comm (commandmacros env) - } - } - _ -> putStrLn "command definition not parsed" >> loopNewCPU gfenv - - "dt":f:ws -> do - case readTree (unwords ws) of - Just exp -> loopNewCPU $ gfenv { - commandenv = env { - expmacros = Map.insert f exp (expmacros env) + "e":_ -> loopNewCPU $ gfenv { + commandenv=emptyCommandEnv, sourcegrammar = emptyGrammar } - } - _ -> putStrLn "value definition not parsed" >> loopNewCPU gfenv - "ph":_ -> mapM_ (putStrLn . enc) (reverse (history gfenv0)) >> loopNewCPU gfenv - "se":c -> loopNewCPU $ gfenv {coding = s} - - "q":_ -> putStrLn "See you." >> return gfenv + "dc":f:ws -> do + case readCommandLine (unwords ws) of + Just comm -> loopNewCPU $ gfenv { + commandenv = env { + commandmacros = Map.insert f comm (commandmacros env) + } + } + _ -> putStrLn "command definition not parsed" >> loopNewCPU gfenv + + "dt":f:ws -> do + case readTree (unwords ws) of + Just exp -> loopNewCPU $ gfenv { + commandenv = env { + expmacros = Map.insert f exp (expmacros env) + } + } + _ -> putStrLn "value definition not parsed" >> loopNewCPU gfenv + + "ph":_ -> + mapM_ (putStrLn . enc) (reverse (history gfenv0)) >> loopNewCPU gfenv + "se":c -> loopNewCPU $ gfenv {coding = s} -- ordinary commands, working on CommandEnv - _ -> do - interpretCommandLine enc env s - loopNewCPU gfenv - gfenv' <- return $ either (const gfenv) id r - loopNewCPU gfenv' + _ -> do + interpretCommandLine enc env s + loopNewCPU gfenv + gfenv' <- return $ either (const gfenv) id r + loopNewCPU gfenv' importInEnv :: GFEnv -> Options -> [FilePath] -> IO GFEnv importInEnv gfenv opts files |
