diff options
| author | aarne <aarne@cs.chalmers.se> | 2007-11-07 13:07:02 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2007-11-07 13:07:02 +0000 |
| commit | 8c47cb46b2dd6592281b31452dba360caebc4dd6 (patch) | |
| tree | 7a6d4e09bc3bcace8949605c9a5fe2f9874fbc45 /src/GF/Devel/GFI.hs | |
| parent | 2c4d34af28b31fefe26379bf6301ce9b48fb38dc (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.hs | 71 |
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 +-} + |
