37 |
* modules and signatures, signature matching, functor application |
* modules and signatures, signature matching, functor application |
38 |
* code found in directories Semant, ElabData, Elaborator |
* code found in directories Semant, ElabData, Elaborator |
39 |
|
|
40 |
|
[*** |
41 |
|
What is the distinction between Basics and Semant? Should these be |
42 |
|
merged? How about ElabData? Some of these files (Semant/types) might |
43 |
|
also fit there. |
44 |
|
|
45 |
|
We have Basics/*, Semant/basics, ElabData/basics, and Elaborator/basics. |
46 |
|
What is the rationale telling us what goes in each of these places? |
47 |
|
|
48 |
|
This complex organization seems to be partially motivated by the goal |
49 |
|
of separating out any features that are SML/NJ-specific from the generic |
50 |
|
SML stuff. |
51 |
|
***] |
52 |
|
|
53 |
Basics |
Basics |
54 |
|
|
55 |
mlcomp/ |
mlcomp/ |
56 |
|
basic front-end data structures (e.g. symbols, stamps, ...) |
57 |
symbol.sig/sml -- symbols (should be in ElabData?) |
symbol.sig/sml -- symbols (should be in ElabData?) |
58 |
fastsymbol.sig/sml -- fast symbols (should be in ElabData?) |
fastsymbol.sig/sml -- fast symbols (should be in ElabData?) |
59 |
fixity.sml -- fixity properties (should be in ElabData) |
fixity.sml -- fixity properties (should be in ElabData) |
61 |
persmap.sml -- finite maps over pids (persistent stamps) |
persmap.sml -- finite maps over pids (persistent stamps) |
62 |
pidenv.sig/sml -- environments using pid (persistant stamps) as keys |
pidenv.sig/sml -- environments using pid (persistant stamps) as keys |
63 |
compileexn.sml -- Compile exception (where used?) |
compileexn.sml -- Compile exception (where used?) |
64 |
miscutil/ (why not in MiscUtil?) |
|
65 |
|
miscutil/ |
66 |
|
some left-over stuff (why not in MiscUtil? may be redundant) |
67 |
intstrmap.sig/sml -- int/string maps for use in environments; |
intstrmap.sig/sml -- int/string maps for use in environments; |
68 |
appears redundant with IntStrMapV defined in |
appears redundant with IntStrMapV defined in |
69 |
Env (ElabData/basics/env.sml) |
Env (ElabData/basics/env.sml) |
70 |
used in Tuples, ElabCore, Parse/lex/tokentable.sml. |
used in Tuples, ElabCore, Parse/lex/tokentable.sml. |
71 |
errormsg/ |
errormsg/ |
72 |
errormsg.sig/sml -- error messages |
error messages |
73 |
|
errormsg.sig/sml -- error message interface |
74 |
|
|
75 |
source/ |
source/ |
76 |
|
-- the source abstraction + file pathnames |
77 |
pathnames.sig/sml -- file path names |
pathnames.sig/sml -- file path names |
78 |
source.sig/sml -- input source datastructure |
source.sig/sml -- input source datastructure |
79 |
sourcemap.sig/sml -- map character positions in source to line no/column |
sourcemap.sig/sml -- map character positions in source to line no/column |
80 |
supporting #line "declaration" |
supporting #line "declaration" |
81 |
|
|
82 |
print/ |
print/ |
83 |
|
-- some printing support (more elsewhere?) |
84 |
pp-wrapper.sml -- implements old PP interface using new SML/NJ Lib PP |
pp-wrapper.sml -- implements old PP interface using new SML/NJ Lib PP |
85 |
printutil.sig/sml -- some print utilities (uses Symbol) |
printutil.sig/sml -- some print utilities (uses Symbol) |
86 |
printcontrol.sml -- print control flags, out, say |
printcontrol.sml -- print control flags; out, say functions |
87 |
|
|
88 |
stats/ |
stats/ |
89 |
stats.sml -- facilities for defining timed phases |
stats.sml -- facilities for defining timed phases |
90 |
|
|
91 |
main/ |
main/ |
92 |
basiccontrol.sml -- printWarning control flag, topregistry |
basiccontrol.sml -- printWarning control flag, topregistry |
93 |
uses ControlRegistry, Controls |
uses ControlRegistry, Controls |
96 |
Semant |
Semant |
97 |
|
|
98 |
basics/ |
basics/ |
99 |
|
-- some "basic" stuff -- why not in Basics? |
100 |
inlinfo.sig/sml -- inlining info (?) |
inlinfo.sig/sml -- inlining info (?) |
101 |
|
|
102 |
elaborate/ |
elaborate/ |
103 |
elabmod.sml -- module level elaboration (why not in Elaborator) |
-- module level, top level elaboration (why not under Elaborator?) |
104 |
|
elabmod.sml -- module level elaboration |
105 |
elabtop.sml -- top-level elaboration |
elabtop.sml -- top-level elaboration |
106 |
|
|
107 |
modules/ |
modules/ |
108 |
evalent.sml |
-- mechanisms for module elaboration. "Entity" is the static-phase |
109 |
instantiate.sml |
computation element associated with a module (a kind of expression). |
110 |
instantiate-param.sml |
entity expressions are basically a typed lambda calculus |
111 |
module-plists.sml |
evalent.sml -- evaluation of entity expressions |
112 |
sigmatch.sml |
instantiate.sml -- create a free "realization" from a signature |
113 |
|
instantiate-param.sml -- like instantiate.sml, but different (how?) |
114 |
|
module-plists.sml -- ??? |
115 |
|
sigmatch.sml -- signature matching (the type-checking of modules) |
116 |
|
|
117 |
pickle/ -- pickling static environments |
pickle/ |
118 |
|
-- pickling static environments (the non-"new" variants should go away?) |
119 |
pickle-sym-pid.sml |
pickle-sym-pid.sml |
120 |
unpickle-sym-pid.sml |
unpickle-sym-pid.sml |
121 |
pickmod-new.sml |
pickmod-new.sml |
123 |
rehash.sml |
rehash.sml |
124 |
|
|
125 |
statenv/ |
statenv/ |
126 |
|
-- hand made primitive types, constructors, etc. |
127 |
prim.sml |
prim.sml |
128 |
|
|
129 |
types/ |
types/ |
130 |
|
-- some types stuff [why not in ElabData/types?] |
131 |
cproto.sml |
cproto.sml |
132 |
tp-var-info.sml |
tp-var-info.sml |
133 |
types-reformat.sml |
types-reformat.sml |
135 |
|
|
136 |
|
|
137 |
ElabData |
ElabData |
138 |
|
-- data structures and utilities used in elaboration |
139 |
|
|
140 |
basics/ |
basics/ |
141 |
|
-- some basic data structures used in elaboration |
142 |
lambdavar.sig/sml |
lambdavar.sig/sml |
143 |
lambda variables, the abstract representation of variables, used |
lambda variables, the abstract representation of variables, used |
144 |
as roots of dynamic access chains |
as roots of dynamic access chains |
154 |
SymPath and InvPath: direct and inverse symbolic paths (selecting |
SymPath and InvPath: direct and inverse symbolic paths (selecting |
155 |
module components) |
module components) |
156 |
ii.sml [FLINT] |
ii.sml [FLINT] |
157 |
FLINT related information for inlining (why is this in elaborator?) |
FLINT related information for inlining (why is this in the elaborator?) |
158 |
lambdavar.sig/sml |
lambdavar.sig/sml |
159 |
lambda variables, the abstract representation of variables |
lambda variables, the abstract representation of variables |
160 |
core-ptnum.sml |
core-ptnum.sml |
163 |
defines the special structure symbol "_Core" used to access certain |
defines the special structure symbol "_Core" used to access certain |
164 |
special bindings (e.g Match and Bind exceptions) |
special bindings (e.g Match and Bind exceptions) |
165 |
|
|
166 |
syntax/ -- (typed) abstract syntax |
syntax/ |
167 |
|
-- (typed) abstract syntax |
168 |
absyn.sig/sml -- the abstract syntax types |
absyn.sig/sml -- the abstract syntax types |
169 |
varcon.sig/sml -- variable and data constructor representations |
varcon.sig/sml -- variable and data constructor representations |
170 |
absynutil.sml -- utility functions for building tuple patterns and expressions |
absynutil.sml -- utility functions for building tuple patterns and expressions |
171 |
|
|
172 |
types/ -- representing, constructing and manipulating types |
types/ |
173 |
|
-- representing, constructing and manipulating types |
174 |
types.sig/sml -- the representation of SML types |
types.sig/sml -- the representation of SML types |
175 |
typesutil.sig/sml -- large collection of utility functions for working with types |
typesutil.sig/sml -- large collection of utility functions for working with types |
176 |
tuples.sml -- fns for constructing tuple and record types |
tuples.sml -- fns for constructing tuple and record types |
177 |
core-basictypes.sml -- building the primitive types and associated values |
core-basictypes.sml -- building the primitive types and associated values |
178 |
|
|
179 |
statenv/ |
statenv/ |
180 |
|
-- representation and mechanism for static environments |
181 |
bindings.sig/sml -- the basic binding forms (values, types, signatures, etc.) |
bindings.sig/sml -- the basic binding forms (values, types, signatures, etc.) |
182 |
statenv.sig/sml -- instantiate generic environments with ML bindings |
statenv.sig/sml -- instantiate generic environments with ML bindings |
183 |
lookup.sig/sml -- accessing symbols in environments |
lookup.sig/sml -- accessing symbols in environments |
185 |
coreacc.sml -- access components of the _Core structure |
coreacc.sml -- access components of the _Core structure |
186 |
browse.sml -- "browsing" the static environment (???) |
browse.sml -- "browsing" the static environment (???) |
187 |
|
|
188 |
modules/ -- representation of modules |
modules/ |
189 |
|
-- representation of modules |
190 |
modules.sig/sml -- representation of modules and signatures |
modules.sig/sml -- representation of modules and signatures |
191 |
moduleutil.sig/sml -- lots of utility functions for modules |
moduleutil.sig/sml -- lots of utility functions for modules |
192 |
moduleid.sml -- module identities used in Modmaps ??? |
moduleid.sml -- module identities used in Modmaps ??? |
195 |
epcontext.sml -- |
epcontext.sml -- |
196 |
|
|
197 |
main/ |
main/ |
198 |
|
-- control flags and contex parameters |
199 |
compinfo.sml -- elaboration context parameter |
compinfo.sml -- elaboration context parameter |
200 |
edcontrol.sig/sml -- control flags for ElabData |
edcontrol.sig/sml -- control flags for ElabData |
201 |
|
|
202 |
|
|
203 |
Elaborator |
Elaborator |
204 |
|
-- the actual elaboration |
205 |
|
|
206 |
basics/ |
basics/ |
207 |
elabcontrol.sml -- Elaborator control flags |
elabcontrol.sml -- Elaborator control flags |