summaryrefslogtreecommitdiff
path: root/src/GF/Canon/GFCC/RunGFCC.hs
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2006-09-17 13:50:41 +0000
committeraarne <aarne@cs.chalmers.se>2006-09-17 13:50:41 +0000
commit35f81967eab677ed4a8f58fef27f4945f684ee8b (patch)
tree6a7f19a075436cbff27b3e0691a82bd16902745f /src/GF/Canon/GFCC/RunGFCC.hs
parent927ad7b1355a3b72d30970cac808792f848551a6 (diff)
random generation in GFCC
Diffstat (limited to 'src/GF/Canon/GFCC/RunGFCC.hs')
-rw-r--r--src/GF/Canon/GFCC/RunGFCC.hs19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/GF/Canon/GFCC/RunGFCC.hs b/src/GF/Canon/GFCC/RunGFCC.hs
index 943697dd4..704b6ced8 100644
--- a/src/GF/Canon/GFCC/RunGFCC.hs
+++ b/src/GF/Canon/GFCC/RunGFCC.hs
@@ -7,6 +7,7 @@ import GF.Canon.GFCC.ParGFCC
import GF.Canon.GFCC.PrintGFCC
import GF.Data.Operations
import Data.Map
+import System.Random (newStdGen)
import System
-- Simple translation application built on GFCC. AR 7/9/2006
@@ -15,6 +16,7 @@ main :: IO ()
main = do
file <- getLine ----getArgs
grammar <- file2gfcc file
+ putStrLn $ statGFCC grammar
loop grammar
loop :: GFCC -> IO ()
@@ -27,16 +29,19 @@ loop grammar = do
treat :: GFCC -> String -> IO ()
treat grammar s = case words s of
"gt":cat:n:_ -> do
- mapM_ prlin $ take (read n) $ generate grammar (CId cat)
- _ -> lin $ readExp s
+ mapM_ prlins $ take (read n) $ generate grammar (CId cat)
+ "gr":cat:n:_ -> do
+ gen <- newStdGen
+ mapM_ prlins $ take (read n) $ generateRandom gen grammar (CId cat)
+ _ -> lins $ readExp s
where
- lang = head $ cncnames grammar
- lin t = do
- putStrLn $ printTree $ linExp grammar lang t
+ lins t = mapM_ (lin t) $ cncnames grammar
+ lin t lang = do
+ -- putStrLn $ printTree $ linExp grammar lang t
putStrLn $ linearize grammar lang t
- prlin t = do
+ prlins t = do
putStrLn $ printTree t
- lin t
+ lins t
--- should be in an API