summaryrefslogtreecommitdiff
path: root/src/GF/Devel/GFI.hs
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2007-11-07 13:07:02 +0000
committeraarne <aarne@cs.chalmers.se>2007-11-07 13:07:02 +0000
commit8c47cb46b2dd6592281b31452dba360caebc4dd6 (patch)
tree7a6d4e09bc3bcace8949605c9a5fe2f9874fbc45 /src/GF/Devel/GFI.hs
parent2c4d34af28b31fefe26379bf6301ce9b48fb38dc (diff)
moved gfcc program to gfi, wrote document gf3.txt
Diffstat (limited to 'src/GF/Devel/GFI.hs')
-rw-r--r--src/GF/Devel/GFI.hs71
1 files changed, 71 insertions, 0 deletions
diff --git a/src/GF/Devel/GFI.hs b/src/GF/Devel/GFI.hs
new file mode 100644
index 000000000..1d88a24a0
--- /dev/null
+++ b/src/GF/Devel/GFI.hs
@@ -0,0 +1,71 @@
+module Main where
+
+import GF.Command.Interpreter
+import GF.Command.Commands
+import GF.GFCC.API
+import System (getArgs)
+import Data.Char (isDigit)
+
+-- Simple translation application built on GFCC. AR 7/9/2006 -- 19/9/2007
+
+main :: IO ()
+main = do
+ file:_ <- getArgs
+ grammar <- file2grammar file
+ let env = CommandEnv grammar (allCommands grammar)
+ printHelp grammar
+ loop env
+
+loop :: CommandEnv -> IO ()
+loop env = do
+ s <- getLine
+ if s == "q" then return () else do
+ interpretCommandLine env s
+ loop env
+
+printHelp grammar = do
+ putStrLn $ "languages: " ++ unwords (languages grammar)
+ putStrLn $ "categories: " ++ unwords (categories grammar)
+--- putStrLn commands
+
+{- obsolete
+
+commands = unlines [
+ "Commands:",
+ " (gt | gtt | gr | grt) Cat Num - generate all or random",
+ " p Lang Cat String - parse (unquoted) string",
+ " l Tree - linearize in all languages",
+ " h - help",
+ " q - quit"
+ ]
+
+treat :: MultiGrammar -> String -> IO ()
+treat mgr s = case words s of
+ "gt" :cat:n:_ -> mapM_ prlinonly $ take (read1 n) $ generateAll mgr cat
+ "gtt":cat:n:_ -> mapM_ prlin $ take (read1 n) $ generateAll mgr cat
+ "gr" :cat:n:_ -> generateRandom mgr cat >>= mapM_ prlinonly . take (read1 n)
+ "grt":cat:n:_ -> generateRandom mgr cat >>= mapM_ prlin . take (read1 n)
+ "p":lang:cat:ws -> do
+ let ts = parse mgr lang cat $ unwords ws
+ mapM_ (putStrLn . showTree) ts
+ "h":_ -> printHelp mgr
+ "l" : ws -> lins $ readTree mgr $ unwords ws
+ where
+ grammar = gfcc mgr
+ langs = languages mgr
+ lins t = mapM_ (lint t) $ langs
+ lint t lang = do
+---- putStrLn $ showTree $ linExp grammar lang t
+ lin t lang
+ lin t lang = do
+ putStrLn $ linearize mgr lang t
+ prlins t = do
+ putStrLn $ showTree t
+ lins t
+ prlin t = do
+ putStrLn $ showTree t
+ prlinonly t
+ prlinonly t = mapM_ (lin t) $ langs
+ read1 s = if all isDigit s then read s else 1
+-}
+