SCM Repository
Annotation of /sml/trunk/src/cm/depend/graph.sml
Parent Directory
|
Revision Log
Revision 279 - (view) (download)
1 : | blume | 270 | (* |
2 : | * Internal data structure representing a CM dependency graph. | ||
3 : | * | ||
4 : | * (C) 1999 Lucent Technologies, Bell Laboratories | ||
5 : | * | ||
6 : | * Author: Matthias Blume (blume@kurims.kyoto-u.ac.jp) | ||
7 : | *) | ||
8 : | blume | 269 | structure DependencyGraph = struct |
9 : | |||
10 : | blume | 278 | type symbol = Symbol.symbol |
11 : | blume | 270 | type groupinfo = Dummy.t |
12 : | blume | 272 | type primitive = Primitive.primitive |
13 : | blume | 269 | |
14 : | type filter = SymbolSet.set option | ||
15 : | |||
16 : | datatype node = | ||
17 : | blume | 279 | NODE of { smlinfo: SmlInfo.info, |
18 : | blume | 269 | localimports: node list, |
19 : | globalimports: farnode list } | ||
20 : | |||
21 : | blume | 279 | and farnode = |
22 : | FARNODE of filter * node | ||
23 : | | PNODE of primitive | ||
24 : | blume | 269 | |
25 : | (* the filter is duplicated in each member of the map to | ||
26 : | * make it easier to build the global graph *) | ||
27 : | datatype gnode = | ||
28 : | GNODE of { groupinfo: groupinfo, | ||
29 : | imports: gnode list, | ||
30 : | filter: filter, | ||
31 : | exports: farnode SymbolMap.map, | ||
32 : | dangling: node list } | ||
33 : | |||
34 : | blume | 278 | (* environments used for dependency analysis *) |
35 : | datatype env = | ||
36 : | EMPTY | ||
37 : | | FCTENV of { looker: symbol -> value option, | ||
38 : | domain: unit -> SymbolSet.set } | ||
39 : | | BINDING of symbol * value | ||
40 : | | LAYER of env * env | ||
41 : | blume | 270 | |
42 : | blume | 278 | withtype value = env |
43 : | |||
44 : | blume | 279 | fun describeNode (NODE { smlinfo, ... }) = SmlInfo.describe smlinfo |
45 : | |||
46 : | fun describeFarNode (farn: farnode) = (ignore Dummy.v; "blah") | ||
47 : | blume | 269 | end |
root@smlnj-gforge.cs.uchicago.edu | ViewVC Help |
Powered by ViewVC 1.0.0 |