diff options
| author | aarne <aarne@cs.chalmers.se> | 2008-05-24 09:16:59 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2008-05-24 09:16:59 +0000 |
| commit | 0db611a9abfb31c76933a455da946cf2194ded7b (patch) | |
| tree | f7548438d460ec72bfe1d74fd8673dfa3183c7d6 /src-3.0/GFI.hs | |
| parent | 5a386209ddf005f5a090f3668cfe246c3df22057 (diff) | |
support for source gr and i -retain in GFI env
Diffstat (limited to 'src-3.0/GFI.hs')
| -rw-r--r-- | src-3.0/GFI.hs | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src-3.0/GFI.hs b/src-3.0/GFI.hs index 0761ace5f..ceb7fa6f9 100644 --- a/src-3.0/GFI.hs +++ b/src-3.0/GFI.hs @@ -5,6 +5,8 @@ import GF.Command.Importing import GF.Command.Commands import GF.GFCC.API +import GF.Grammar.Grammar (SourceGrammar,emptySourceGrammar) -- for cc command + import GF.Infra.UseIO import GF.Infra.Option ---- Haskell's option lib import GF.System.Readline (fetchCommand) @@ -19,7 +21,7 @@ mainGFI :: [String] -> IO () mainGFI xx = do putStrLn welcome env <- importInEnv emptyMultiGrammar xx - loop (GFEnv env [] 0) + loop (GFEnv emptySourceGrammar env [] 0) return () loop :: GFEnv -> IO GFEnv @@ -29,10 +31,18 @@ loop gfenv0 = do let gfenv = gfenv0 {history = s : history gfenv0} case words s of - -- special commands, working on GFEnv + -- special commands, requiring source grammar in env "i":args -> do - env1 <- importInEnv (multigrammar env) args - loopNewCPU $ gfenv {commandenv = env1} + let (opts,files) = getOptions "-" args + case opts of + _ | oElem (iOpt "retain") opts -> do + src <- importSource (sourcegrammar gfenv) opts files + loopNewCPU $ gfenv {sourcegrammar = src} + + -- other special commands, working on GFEnv + _ -> do + env1 <- importInEnv (multigrammar env) args + loopNewCPU $ gfenv {commandenv = env1} "e":_ -> loopNewCPU $ gfenv {commandenv=env{multigrammar=emptyMultiGrammar}} "ph":_ -> mapM_ putStrLn (reverse (history gfenv0)) >> loopNewCPU gfenv "q":_ -> putStrLn "See you." >> return gfenv @@ -79,6 +89,7 @@ prompt env = absname ++ "> " where n -> n data GFEnv = GFEnv { + sourcegrammar :: SourceGrammar, -- gfo grammar -retain commandenv :: CommandEnv, history :: [String], cputime :: Integer |
