When printing CFGM, only include the top-level modules

This commit is contained in:
bringert
2004-09-16 11:09:37 +00:00
parent a38f028f04
commit 7769d0fb00

View File

@@ -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