summaryrefslogtreecommitdiff
path: root/src/GF/CFGM
diff options
context:
space:
mode:
authorbringert <unknown>2004-09-16 11:09:37 +0000
committerbringert <unknown>2004-09-16 11:09:37 +0000
commit7769d0fb00a34fb4499017a4aec01a59246b69a1 (patch)
treeaee46f85119e96476c6d87d99412cda8c0adb937 /src/GF/CFGM
parenta38f028f04e6f2f635a5f371fb01a8d8a1930c99 (diff)
When printing CFGM, only include the top-level modules
Diffstat (limited to 'src/GF/CFGM')
-rw-r--r--src/GF/CFGM/PrintCFGrammar.hs9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/GF/CFGM/PrintCFGrammar.hs b/src/GF/CFGM/PrintCFGrammar.hs
index f073893b1..f27eddb1a 100644
--- a/src/GF/CFGM/PrintCFGrammar.hs
+++ b/src/GF/CFGM/PrintCFGrammar.hs
@@ -7,16 +7,21 @@ import GFC
import Modules
import qualified ConvertGrammar as Cnv
import qualified PrintParser as Prt
+import ErrM
import List (intersperse)
-import Maybe (listToMaybe, fromMaybe)
+import Maybe (listToMaybe, maybe)
-- FIXME: fix warning about bad -printer= value
prCanonAsCFGM :: CanonGrammar -> String
prCanonAsCFGM gr = unlines $ map (uncurry (prLangAsCFGM gr)) xs
where
- xs = [(i,getFlag fs "startcat") | (i,ModMod (Module{mtype=MTConcrete _,flags=fs})) <- modules gr]
+ cncs = maybe [] (allConcretes gr) (greatestAbstract gr)
+ cncms = map (\i -> (i,fromOk (lookupModule gr i))) cncs
+ fromOk (Ok x) = x
+ fromOk (Bad y) = error y
+ xs = [(i,getFlag fs "startcat") | (i,ModMod (Module{flags=fs})) <- cncms]
-- FIXME: need to look in abstract module too
getFlag :: [Flag] -> String -> Maybe String