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