14 |
|
|
15 |
signature BUILD_INIT_DG = sig |
signature BUILD_INIT_DG = sig |
16 |
val build : GeneralParams.info -> SrcPath.t -> |
val build : GeneralParams.info -> SrcPath.t -> |
17 |
{ rts: DependencyGraph.snode, |
{ rts: DependencyGraph.sbnode, |
18 |
core: DependencyGraph.snode, |
core: DependencyGraph.sbnode, |
19 |
pervasive: DependencyGraph.snode, |
pervasive: DependencyGraph.sbnode, |
20 |
primitives: (string * DependencyGraph.snode) list, |
primitives: (string * DependencyGraph.sbnode) list, |
21 |
binpaths: string list } option |
binpaths: string list } option |
22 |
end |
end |
23 |
|
|
86 |
| NONE => (error ("undefined: " ^ n); |
| NONE => (error ("undefined: " ^ n); |
87 |
DG.SB_SNODE (bogus n))) |
DG.SB_SNODE (bogus n))) |
88 |
|
|
|
fun look_snode n = |
|
|
case look n of |
|
|
DG.SB_SNODE n => n |
|
|
| _ => (error ("illegal: " ^ n); bogus n) |
|
|
|
|
89 |
fun node (name, file, args) = let |
fun node (name, file, args) = let |
90 |
fun one (arg, (li, gi)) = |
fun one (arg, (li, gi)) = |
91 |
case look arg of |
case look arg of |
114 |
| ("bind" :: name :: file :: args) => |
| ("bind" :: name :: file :: args) => |
115 |
node (name, file, args) |
node (name, file, args) |
116 |
| ("return" :: core :: rts :: pervasive :: prims) => |
| ("return" :: core :: rts :: pervasive :: prims) => |
117 |
SOME { rts = look_snode rts, |
SOME { rts = look rts, |
118 |
core = look_snode core, |
core = look core, |
119 |
pervasive = look_snode pervasive, |
pervasive = look pervasive, |
120 |
primitives = |
primitives = |
121 |
map (fn n => (n, look_snode n)) prims, |
map (fn n => (n, look n)) prims, |
122 |
binpaths = rev (getOpt (bnl, [])) } |
binpaths = rev (getOpt (bnl, [])) } |
123 |
| _ => (error "malformed line"; NONE) |
| _ => (error "malformed line"; NONE) |
124 |
end |
end |