diff --git a/src-3.0/GF.hs b/src-3.0/GF.hs
index 34585ef8f..70fddcd67 100644
--- a/src-3.0/GF.hs
+++ b/src-3.0/GF.hs
@@ -1,152 +1,14 @@
-{-# OPTIONS -cpp #-}
-----------------------------------------------------------------------
--- |
--- Module : Main
--- Maintainer : Aarne Ranta
--- Stability : (stability)
--- Portability : (portability)
---
--- > CVS $Date: 2005/06/30 11:36:49 $
--- > CVS $Author: aarne $
--- > CVS $Revision: 1.29 $
---
--- The Main module of GF program.
------------------------------------------------------------------------------
+module Main where
-module Main (main) where
+import GF.Devel.GFC
+import GF.Devel.GFI
-import GF.GFModes (gfInteract, gfBatch, batchCompile)
-import GF.Data.Operations
-import GF.Infra.UseIO
-import GF.Infra.Option
-import GF.API.IOGrammar
-import GF.Compile.ShellState
-import GF.Compile.Compile
-import GF.Compile.MkConcrete
-import GF.Compile.Wordlist
-import GF.Shell
-import GF.Shell.SubShell
-import GF.Shell.ShellCommands
-import GF.Shell.PShell
-import GF.Shell.JGF
-import GF.System.Signal
-import GF.Text.UTF8
-
-import GF.Today (today,version,libdir)
-import System (getArgs,system,getEnv)
-import System.FilePath
-import Control.Monad (foldM,liftM)
-import Data.List (nub)
-
-#ifdef mingw32_HOST_OS
-import System.Win32.Console
-import System.Win32.NLS
-#endif
-
--- AR 19/4/2000 -- 21/3/2006
+import System (getArgs)
main :: IO ()
main = do
-#ifdef mingw32_HOST_OS
- codepage <- getACP
- setConsoleCP codepage
- setConsoleOutputCP codepage
-#endif
-
- xs <- getArgs
- let
- (os,fs) = getOptions "-" xs
- opt j = oElem j os
- st0 = optInitShellState os
- ifNotSil c = if oElem beSilent os then return () else c
+ xx <- getArgs
+ case xx of
+ "--batch":args -> mainGFC args
+ _ -> mainGFI xx
- doGF os fs = case 0 of
-
- _ | opt getHelp || any opt (map iOpt ["h", "-help", "-h"])-> do
- putStrLnFlush $ encodeUTF8 helpMsg
-
- _ | opt forJava -> do
- welcome <- welcomeMsgLib
- putStrLnFlush $ encodeUTF8 welcome
- st <- useIOE st0 $
- foldM (shellStateFromFiles os) st0 fs
- sessionLineJ True st
- return ()
-
- _ | opt doMake -> do
- mapM_ (batchCompile os) fs
- return ()
-
- _ | opt makeConcrete -> do
- mkConcretes os fs
-
- _ | opt openEditor -> do
- system $ "jgf" +++ unwords xs
- return ()
-
- _ | opt doBatch -> do
- if opt beSilent then return () else putStrLnFlush ""
- st <- useIOE st0 $
- foldM (shellStateFromFiles os) st0 fs
- gfBatch (initHState st)
- if opt beSilent then return () else putStrLnFlush ""
- return ()
- _ -> do
- welcome <- welcomeMsgLib
- ifNotSil $ putStrLnFlush $ welcome
- st <- useIOE st0 $
- foldM (shellStateFromFiles os) st0 fs
- if null fs then return () else (ifNotSil putCPU)
- blockInterrupt (gfInteract (initHState st))
- return ()
- -- preprocessing gfe
- if opt fromExamples
- then do
- es <- liftM (nub . concat) $ mapM (getGFEFiles os) fs
- mkConcretes os es
- doGF (removeOption fromExamples os) fs
- -- preprocessing gfwl
- else if (length fs == 1 && takeExtensions (head fs) == ".gfwl")
- then do
- fs' <- mkWordlist (head fs)
- doGF os fs'
- else doGF os fs
-
-helpMsg = unlines [
- "Usage: gf