some more tense in FInnish

This commit is contained in:
aarne
2005-06-14 14:43:03 +00:00
parent e2cc1184d4
commit a40d1b5305

View File

@@ -5,9 +5,9 @@
-- Stability : (stable) -- Stability : (stable)
-- Portability : (portable) -- Portability : (portable)
-- --
-- > CVS $Date: 2005/05/30 18:39:44 $ -- > CVS $Date: 2005/06/14 15:43:03 $
-- > CVS $Author: aarne $ -- > CVS $Author: aarne $
-- > CVS $Revision: 1.15 $ -- > CVS $Revision: 1.16 $
-- --
-- Top-level partial evaluation for GF source modules. -- Top-level partial evaluation for GF source modules.
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
@@ -39,9 +39,7 @@ optimizeModule :: Options -> [(Ident,SourceModInfo)] -> (Ident,SourceModInfo) ->
Err (Ident,SourceModInfo) Err (Ident,SourceModInfo)
optimizeModule opts ms mo@(_,mi) = case mi of optimizeModule opts ms mo@(_,mi) = case mi of
ModMod m0@(Module mt st fs me ops js) | st == MSComplete && isModRes m0 -> do ModMod m0@(Module mt st fs me ops js) | st == MSComplete && isModRes m0 -> do
mo1 <- evalModule ms mo mo1 <- evalModule optres ms mo
let oopts = addOptions opts (iOpts (flagsModule mo1))
optim = maybe "none" id $ getOptVal oopts useOptimizer
return $ case optim of return $ case optim of
"parametrize" -> shareModule paramOpt mo1 -- parametrization and sharing "parametrize" -> shareModule paramOpt mo1 -- parametrization and sharing
"values" -> shareModule valOpt mo1 -- tables as courses-of-values "values" -> shareModule valOpt mo1 -- tables as courses-of-values
@@ -49,11 +47,17 @@ optimizeModule opts ms mo@(_,mi) = case mi of
"all" -> shareModule allOpt mo1 -- first parametrize then values "all" -> shareModule allOpt mo1 -- first parametrize then values
"none" -> mo1 -- no optimization "none" -> mo1 -- no optimization
_ -> mo1 -- none; default for src _ -> mo1 -- none; default for src
_ -> evalModule ms mo _ -> evalModule optres ms mo
where
oopts = addOptions opts (iOpts (flagsModule mo))
optim = maybe "none" id $ getOptVal oopts useOptimizer
optres = case optim of
"noexpand" -> False
_ -> True
evalModule :: [(Ident,SourceModInfo)] -> (Ident,SourceModInfo) -> evalModule :: Bool -> [(Ident,SourceModInfo)] -> (Ident,SourceModInfo) ->
Err (Ident,SourceModInfo) Err (Ident,SourceModInfo)
evalModule ms mo@(name,mod) = case mod of evalModule optres ms mo@(name,mod) = case mod of
ModMod m0@(Module mt st fs me ops js) | st == MSComplete -> case mt of ModMod m0@(Module mt st fs me ops js) | st == MSComplete -> case mt of
_ | isModRes m0 -> do _ | isModRes m0 -> do
@@ -73,17 +77,17 @@ evalModule ms mo@(name,mod) = case mod of
evalOp g@(MGrammar ((_, ModMod m) : _)) i = do evalOp g@(MGrammar ((_, ModMod m) : _)) i = do
info <- lookupTree prt i $ jments m info <- lookupTree prt i $ jments m
info' <- evalResInfo gr (i,info) info' <- evalResInfo optres gr (i,info)
return $ updateRes g name i info' return $ updateRes g name i info'
-- | only operations need be compiled in a resource, and this is local to each -- | only operations need be compiled in a resource, and this is local to each
-- definition since the module is traversed in topological order -- definition since the module is traversed in topological order
evalResInfo :: SourceGrammar -> (Ident,Info) -> Err Info evalResInfo :: Bool -> SourceGrammar -> (Ident,Info) -> Err Info
evalResInfo gr (c,info) = case info of evalResInfo optres gr (c,info) = case info of
ResOper pty pde -> eIn "operation" $ do ResOper pty pde -> eIn "operation" $ do
pde' <- case pde of pde' <- case pde of
Yes de -> liftM yes $ comp de Yes de | optres -> liftM yes $ comp de
_ -> return pde _ -> return pde
return $ ResOper pty pde' return $ ResOper pty pde'