From cbbb6d65c7bd05a0543c4e023610a2a9bbfe2054 Mon Sep 17 00:00:00 2001 From: aarne Date: Fri, 30 Apr 2004 05:02:49 +0000 Subject: gr F ? ? --- src/GF/Shell.hs | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'src/GF/Shell.hs') diff --git a/src/GF/Shell.hs b/src/GF/Shell.hs index a14461928..9e922171f 100644 --- a/src/GF/Shell.hs +++ b/src/GF/Shell.hs @@ -15,6 +15,9 @@ import Compile ---- import GFTex import TeachYourself -- also a subshell +import Randomized --- +import Editing (goFirstMeta) --- + import ShellState import Option import Information @@ -24,6 +27,8 @@ import PrGrammar import Monad (foldM) import System (system) +import Random (newStdGen) ---- +import Zipper ---- import Operations import UseIO @@ -168,9 +173,19 @@ execC co@(comm, opts0) sa@((st,(h,_)),a) = case comm of CTranslate il ol -> do let a' = opST2CommandArg (optParseArgErr opts (sgr il)) a returnArg (opTS2CommandArg (optLinearizeTreeVal opts (sgr ol)) a') sa - CGenerateRandom n -> do - ts <- randomTreesIO opts gro (optIntOrN opts flagNumber n) - returnArg (ATrms ts) sa + CGenerateRandom n -> case a of + ASTrm _ -> do + case s2t a of + ATrms [trm] -> do + g <- newStdGen + case (goFirstMeta (tree2loc trm) >>= refineRandom g 41 cgr) of + Ok trm' -> returnArg (ATrms [loc2tree trm']) sa + Bad s -> returnArg (AError s) sa + _ -> returnArg a sa + _ -> do + ts <- randomTreesIO opts gro (optIntOrN opts flagNumber n) + returnArg (ATrms ts) sa + CPutTerm -> changeArg (opTT2CommandArg (optTermCommand opts gro) . s2t) sa ----- CWrapTerm f -> changeArg (opTT2CommandArg (return . wrapByFun opts gro f)) sa CMorphoAnalyse -> changeArg (AString . morphoAnalyse opts gro . prCommandArg) sa @@ -229,6 +244,7 @@ execC co@(comm, opts0) sa@((st,(h,_)),a) = case comm of gro = grammarOfOptState opts st opts = addOptions opts0 (globalOptions st) src = srcModules st + cgr = canModules st s2t a = case a of ASTrm s -> err AError (ATrms . return) $ string2treeErr gro s -- cgit v1.2.3