the dependency graph now shows all dependencies

This commit is contained in:
krasimir
2009-01-31 21:15:42 +00:00
parent 0e1215a8f1
commit 5e3a1f7392

View File

@@ -3,7 +3,6 @@ module GF.Infra.Dependencies (
) where ) where
import GF.Grammar.Grammar import GF.Grammar.Grammar
import GF.Grammar.PrGrammar
import GF.Infra.Modules import GF.Infra.Modules
import GF.Infra.Ident import GF.Infra.Ident
@@ -19,31 +18,34 @@ prDepGraph deps = unlines $ [
"}" "}"
] ]
where where
mkNode (i,dep) = unwords [prt i, "[",nodeAttr (modtype dep),"]"] mkNode (i,dep) = unwords [prIdent i, "[",nodeAttr (modtype dep),"]"]
nodeAttr ty = case ty of nodeAttr ty = case ty of
MTAbstract -> "style = \"solid\", shape = \"box\"" MTAbstract -> "style = \"solid\", shape = \"box\""
MTConcrete _ -> "style = \"solid\", shape = \"ellipse\"" MTConcrete _ -> "style = \"solid\", shape = \"ellipse\""
_ -> "style = \"dashed\", shape = \"ellipse\"" _ -> "style = \"dashed\", shape = \"ellipse\""
mkArrows (i,dep) = mkArrows (i,dep) =
[unwords [prt i,"->",prt j,"[",arrowAttr "of","]"] | j <- ofs dep] ++ [unwords [prIdent i,"->",prIdent j,"[",arrowAttr "of","]"] | j <- ofs dep] ++
[unwords [prt i,"->",prt j,"[",arrowAttr "ex","]"] | j <- extendeds dep] ++ [unwords [prIdent i,"->",prIdent j,"[",arrowAttr "ex","]"] | j <- extendeds dep] ++
[unwords [prt i,"->",prt j,"[",arrowAttr "op","]"] | j <- openeds dep] [unwords [prIdent i,"->",prIdent j,"[",arrowAttr "op","]"] | j <- openeds dep] ++
[unwords [prIdent i,"->",prIdent j,"[",arrowAttr "ed","]"] | j <- extrads dep]
arrowAttr s = case s of arrowAttr s = case s of
"of" -> "style = \"solid\", arrowhead = \"empty\"" "of" -> "style = \"solid\", arrowhead = \"empty\""
"ex" -> "style = \"solid\"" "ex" -> "style = \"solid\""
"op" -> "style = \"dashed\"" "op" -> "style = \"dashed\""
"ed" -> "style = \"dotted\""
data ModDeps = ModDeps { data ModDeps = ModDeps {
modtype :: ModuleType Ident, modtype :: ModuleType Ident,
ofs :: [Ident], ofs :: [Ident],
extendeds :: [Ident], extendeds :: [Ident],
openeds :: [Ident], openeds :: [Ident],
extrads :: [Ident],
functors :: [Ident], functors :: [Ident],
interfaces :: [Ident], interfaces :: [Ident],
instances :: [Ident] instances :: [Ident]
} }
noModDeps = ModDeps MTAbstract [] [] [] [] [] [] noModDeps = ModDeps MTAbstract [] [] [] [] [] [] []
grammar2moddeps :: SourceGrammar -> [(Ident,ModDeps)] grammar2moddeps :: SourceGrammar -> [(Ident,ModDeps)]
grammar2moddeps gr = [(i,depMod m) | (i,m) <- modules gr] where grammar2moddeps gr = [(i,depMod m) | (i,m) <- modules gr] where
@@ -54,5 +56,6 @@ grammar2moddeps gr = [(i,depMod m) | (i,m) <- modules gr] where
MTInstance i -> [i] MTInstance i -> [i]
_ -> [], _ -> [],
extendeds = map fst (extend m), extendeds = map fst (extend m),
openeds = map openedModule (opens m) openeds = map openedModule (opens m),
extrads = mexdeps m
} }