diff options
| author | aarne <aarne@cs.chalmers.se> | 2007-10-10 16:13:57 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2007-10-10 16:13:57 +0000 |
| commit | f479ecac03de40d1cfa6f571b349c481f4c90df1 (patch) | |
| tree | 01757b95c34021ba0cddec50a5f7cb773ae41762 /src/GF/Devel/GrammarToGFCC.hs | |
| parent | f93c17c7b1884fc495092f592e34c706751eb49e (diff) | |
optimizations on evaluated gf in gfc
Diffstat (limited to 'src/GF/Devel/GrammarToGFCC.hs')
| -rw-r--r-- | src/GF/Devel/GrammarToGFCC.hs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/GF/Devel/GrammarToGFCC.hs b/src/GF/Devel/GrammarToGFCC.hs index 4fe2e6e0d..686e9f4bb 100644 --- a/src/GF/Devel/GrammarToGFCC.hs +++ b/src/GF/Devel/GrammarToGFCC.hs @@ -1,5 +1,7 @@ module GF.Devel.GrammarToGFCC (prGrammar2gfcc,mkCanon2gfcc) where +import GF.Devel.OptimizeGF (unshareModule) + import GF.Grammar.Grammar import qualified GF.Grammar.Lookup as Look @@ -220,12 +222,15 @@ canon2canon abs = recollect . map cl2cl . repartition abs . purgeGrammar abs purgeGrammar :: Ident -> SourceGrammar -> SourceGrammar -purgeGrammar abstr gr = (M.MGrammar . filter complete . purge . M.modules) gr where +purgeGrammar abstr gr = + (M.MGrammar . map unopt . filter complete . purge . M.modules) gr + where purge = nubBy (\x y -> fst x == fst y) . filter (flip elem needed . fst) needed = nub $ concatMap (requiredCanModules isSingle gr) acncs acncs = abstr : M.allConcretes gr abstr isSingle = True complete (i,M.ModMod m) = M.isCompleteModule m --- not . isIncompleteCanon + unopt = unshareModule gr type ParamEnv = (Map.Map (Ident,[Label]) (Type,Integer), -- numbered labels |
