summaryrefslogtreecommitdiff
path: root/src/GF/Devel
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2007-11-06 14:44:17 +0000
committeraarne <aarne@cs.chalmers.se>2007-11-06 14:44:17 +0000
commit2b1d5a4d513970308f47c735212cbc253ec40961 (patch)
tree2395299df4ba44d7cfb060b9294ea38f1dce63f4 /src/GF/Devel
parent693621ffbe9146f24ba75e073b6ce2e716c56a5e (diff)
Devel/GF3: experimentally putting together all functionalities for the first time
Diffstat (limited to 'src/GF/Devel')
-rw-r--r--src/GF/Devel/GF3.hs44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/GF/Devel/GF3.hs b/src/GF/Devel/GF3.hs
new file mode 100644
index 000000000..742feb09a
--- /dev/null
+++ b/src/GF/Devel/GF3.hs
@@ -0,0 +1,44 @@
+module Main where
+
+import GF.Command.Interpreter
+import GF.Command.Importing
+import GF.Command.Commands
+import GF.GFCC.API
+
+import GF.Infra.Option ---- Haskell's option lib
+
+import System (getArgs)
+
+main :: IO ()
+main = do
+ putStrLn welcome
+ xx <- getArgs
+ env <- importInEnv emptyMultiGrammar xx
+ loop env
+ return ()
+
+loop :: CommandEnv -> IO CommandEnv
+loop env = do
+ s <- getLine
+ case words s of
+ "q":_ -> return env
+ "i":args -> do
+ env1 <- importInEnv (multigrammar env) args
+ loop env1
+ _ -> do
+ interpretCommandLine env s
+ loop env
+
+importInEnv mgr0 xx = do
+ let (opts,files) = getOptions "-" xx
+ mgr1 <- case files of
+ [] -> return mgr0
+ _ -> importGrammar mgr0 opts files
+ let env = CommandEnv mgr1 (allCommands mgr1)
+ putStrLn $ unwords $ "\nLanguages:" : languages mgr1
+ return env
+
+welcome = unlines [
+ "This is GF version 3.0 alpha.",
+ "Some things may work."
+ ]