Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/trunk/compiler/MAP
ViewVC logotype

Annotation of /sml/trunk/compiler/MAP

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4825 - (view) (download)

1 : macqueen 1481 Front End Map
2 :     -------------
3 : macqueen 1344
4 : macqueen 1481 A color-coded map of the directory structure is available as
5 :     a pdf file, or Omnigraffle source file.
6 :    
7 : macqueen 1344 1. Lexing and Parsing
8 : macqueen 1473 ----------------------
9 : macqueen 1344
10 : macqueen 1473 * syntax trees (AST) produced by parser
11 :     * lexical analysis (via ML-Lex spec)
12 :     * parsing (via ML-Yacc spec)
13 :    
14 : macqueen 1344 Parse/
15 :     lexing and parsing, producing ast (concrete syntax trees)
16 :    
17 : macqueen 1473 Parse/ast/
18 :     "syntax trees" (really concrete, in contrast to absyn, which is
19 :     the true abstract syntax)
20 :     ast.sig/sml
21 :     the syntax tree types
22 : jhr 4537 defs: AST, Ast: AST
23 : macqueen 1473 astutil.sig/sml
24 :     some utility functions
25 :     defs: ASTUTIL, AstUtil: ASTUTIL
26 : macqueen 1344
27 : macqueen 1473 Parse/lex/
28 :     lexical analysis (via ML-Lex)
29 :     ml.lex
30 :     the lexer spec (ML-Lex source)
31 :     tokentable.sml
32 :     hash table for token recognition
33 :     defs: TokenTable
34 : macqueen 1344
35 : macqueen 1473 Parse/parse/
36 :     parsing (via ML-Yacc)
37 :     ml.grm
38 :     grammar spec (ML-Yacc source)
39 : macqueen 1344
40 : macqueen 1473 Parse/main/
41 :     control flags and parser driver functions.
42 :     lexer/parser combination translates input stream into ast trees
43 :     parser.sig/sml
44 :     parser modules initialization, driver function
45 :     defs: MLPARSER, MLParser: MLPARSER
46 :     parsercontrol.sml
47 :     flags controlling various syntax features
48 :     defs: PARSER_CONTROL, ParserControl
49 :     smlfile.sml
50 :     top level parsing functions
51 :     defs: SMLFILE, SmlFile
52 : macqueen 1344
53 :    
54 :     2. Elaboration
55 : macqueen 1473 --------------
56 : macqueen 1344
57 : macqueen 1473 * abstract syntax (absyn)
58 :     * static environments
59 :     * translation from ast to abstract syntax and static environment (elaboration)
60 :     * core type checking and inference, overloading resolution
61 :     * modules and signatures, signature matching, functor application
62 :     * code found in directories Semant, ElabData, Elaborator
63 : macqueen 1466
64 : macqueen 1473 Basics/
65 : macqueen 1466
66 : macqueen 1473 Basics/mlcomp/
67 :     some basic types involved in absyn and statenv and elaboration process
68 :     symbol.sig/sml
69 :     symbols (should be in ElabData)
70 :     defs: SYMBOL, Symbol
71 :     fastsymbol.sig/sml
72 :     fast symbols (should be in ElabData)
73 :     defs: FASTSYMBOL, FastSymbol
74 :     fixity.sml
75 :     fixity properties (should be in ElabData)
76 :     defs: FIXITY, Fixity
77 :     persstamps.sig/sml
78 :     persistant stamps, or globally unique identifiers (16 byte vectors),
79 :     aka "pids"
80 :     defs: PERSSTAMPS, PersStamps : PERSSTAMPS
81 :     persmap.sml
82 :     finite maps over pids (persistent stamps)
83 :     defs: PersMap
84 :     pidenv.sig/sml
85 :     environments using pids (persistant stamps) as keys
86 :     defs: PIDENV, PidEnvFn
87 :     compileexn.sml
88 :     Compile exception (where used?)
89 :     defs: CompileExn
90 : macqueen 1466
91 : macqueen 1473 Basics/miscutil/ (why not in MiscUtil?)
92 :     intstrmap.sig/sml
93 :     int/string maps for use in environments;
94 :     appears redundant with IntStrMapV defined in
95 :     Env (ElabData/basics/env.sml)
96 :     used in Tuples, ElabCore, Parse/lex/tokentable.sml.
97 :     see: ElabData/basics/env.sml
98 :     defs: INTSTRMAP, IntStrMap
99 : macqueen 1466
100 : macqueen 1473 Basics/errormsg/
101 :     errormsg.sig/sml
102 :     error messages
103 :     defs: ERRORMSG, ErrorMsg
104 : macqueen 1466
105 : macqueen 1473 Basics/source/
106 :     managing ML source files or streams
107 :     pathnames.sig/sml
108 :     file path names
109 :     defs: PATHNAMES, Pathnames
110 :     source.sig/sml
111 :     input source datastructure
112 :     defs: SOURCE, Source
113 :     sourcemap.sig/sml
114 :     map character positions in source to line no/column supporting #line "declaration"
115 :     defs: SOURCE_MAP, SourcMap
116 : macqueen 1466
117 : macqueen 1473 Basics/print/
118 :     utilities for prettyprinting
119 :     [pp-wrapper.sml -- obsolete for mcz, where new pp is used directly]
120 :     implements old PP interface using new SML/NJ Lib PP
121 :     pp-init.sml
122 :     extend standard prettyprinter interface to match old one
123 :     defs: PRETTYPRINT, PrettyPrint
124 :     printutil.sig/sml
125 :     some print utilities (uses Symbol)
126 :     defs: PRINTUTIL, PrintUtil
127 :     printcontrol.sml
128 :     print control flags, out, say
129 :     defs: PRINTCONTROL, Control_Print
130 : macqueen 1466
131 : macqueen 1473 Basics/stats/
132 :     stats.sml
133 :     facilities for defining timed phases
134 :     defs: STATS, Stats
135 : macqueen 1466
136 : macqueen 1473 Basics/main/
137 :     basiccontrol.sml
138 :     printWarning control flag, topregistry
139 :     uses: ControlRegistry, Controls
140 :     defs: BASIC_CONTROL, BasicControl
141 : macqueen 1466
142 : macqueen 1473 Semant/
143 :     Modules related to elaboration and pickling (external representation
144 :     of static environments)
145 : macqueen 1344
146 : dbm 2603 [#Deleted: replaced by ElabData/basics/primopid.sig,sml
147 : macqueen 1473 Semant/basics/
148 :     inlinfo.sig/sml
149 :     inlining info [FLINT]
150 :     defs: INL_INFO, InlInfo: INL_INFO
151 : dbm 2603 ]
152 : macqueen 1344
153 : macqueen 1473 Semant/elaborate/
154 :     apply functors defined in corresponding Elaborate/elaborate modules
155 :     [these could be in Elaborator]
156 :     elabmod.sml
157 : macqueen 1481 module level elaboration: defines ElabMod by calling ElabModFn defined
158 :     in Elaborate/elaborate/elabmod.sml (should go to Elaborator)
159 : macqueen 1473 see: Elaborator/elaborate/elabmod.sml
160 :     defs: ElabMod
161 :     elabtop.sml
162 : macqueen 1481 top-level elaboration: defined ElabTop by calling ElabTopFn defined
163 :     in Elaborator/elaborate/elabtop.sml (should go to Elaborator)
164 :     see: Elaborator/elaborate/elabtop.sml
165 : macqueen 1473 defs: ElabTop
166 : macqueen 1344
167 : macqueen 1473 Semant/modules/
168 :     support for module elaboration
169 :     evalent.sml
170 :     entity expression evaluation;
171 :     applies functor EvalEntityFn from Elaborator/modules/evalent.sml
172 :     see: Elaborator/modules/evalent.sml
173 :     defs: EvalEntity
174 :     instantiate.sml
175 :     apply InstantitateFn defined in Elaborator/modules/instantiate.sml
176 :     see: Elaborator/modules/instantiate.sml
177 :     defs: Instantiate
178 :     instantiate-param.sml
179 :     defines parameter passed to InstantiateFn in ./instantiate.sml
180 :     see: Semant/modules/instantiate.sml (previous file)
181 :     defs: InstantiateParam
182 :     module-plists.sml [FLINT]
183 :     defines PropList properties for attaching FLINT Lambda types to
184 :     various semantic entities
185 :     see: smlnj-lib/Util/plist{-sig}.sml
186 :     defs: ModulePropLists
187 :     sigmatch.sml
188 :     apply SigmatchFn defined in Elaborator/modules/sigmatch.sml
189 :     see: Elaborator/modules/sigmatch.sml
190 :     defs: SigMatch
191 : macqueen 1344
192 : macqueen 1473 Semant/pickle/
193 :     pickling static environments
194 :     pickle-sym-pid.sml
195 : dbm 2603 pickling symbols and pids (persistant stamps)
196 :     uses: PickleUtil
197 :     defs: PickleSymPid (inline sig)
198 : macqueen 1473 unpickle-sym-pid.sml
199 : dbm 2603 unpickling symbols and pids (persistant stamps)
200 :     defs: UnpickleSymPid (inline sig)
201 :     pickmod.sml
202 :     pickling functions for each type involved in staticEnv
203 :     defs: PICKMOD, PickMod :> PICKMOD
204 :     unpickmod.sml
205 :     unpickling functions for each type involved in staticEnv
206 :     defs: UNPICKMOD, UnpickMod : UNPICKMOD
207 : macqueen 1473 rehash.sml
208 : dbm 2603 recompute hash of an environment resulting from filtering
209 :     a larger invironment
210 :     defs: Rehash (inline sig)
211 : macqueen 1344
212 : macqueen 1473 Semant/types/
213 :     some types-related stuff
214 :     cproto.sml
215 :     relating ML types and C types (CTypes.c_proto from MLRISC) for C call mechanism
216 :     defs: CProto
217 :     tp-var-info.sml [FLINT]
218 :     packaging some FLINT info as an exception
219 :     defs: TVI
220 :     types-reformat.sml [FLINT]
221 :     FLINT-related "reformatting" of types, used to be in typesutil.sml
222 :     defs: TypesReformat
223 : dbm 2603 [#Deleted: type checker is no longer functorized
224 : macqueen 1473 typecheck.sml [FLINT]
225 :     apply TypecheckFn defined in Elaborator/types/typecheck.sml (should eliminate)
226 :     see: Elaborator/types/typecheck.sml
227 :     defs: TypeCheck
228 : dbm 2603 ]
229 : macqueen 1344
230 :    
231 : macqueen 1473 ElabData/
232 :     Basic datastructures used in elaboration (including type checking)
233 : macqueen 1344
234 : macqueen 1473 ElabData/basics/
235 :     basic representation types used in elaboration, plus coresym
236 : jhr 4537 lambdavar.sig/sml
237 : macqueen 1473 lambda variables, the abstract representation of variables, used
238 :     as roots of dynamic access chains
239 :     defs: LAMBDA_VAR, LambdaVar
240 :     access.sig/sml
241 :     dynamic access paths
242 :     defs: ACCESS, Access : ACCESS
243 : dbm 4627 debindex.sig/sml [FLINT, moved from Elaborator/basics]
244 :     FLINT book-keeping (move back to FLINT)
245 :     defs: DEB_INDEX, DebIndex : DEB_INDEX
246 : macqueen 1473 env.sig/sml
247 :     generic environments, mapping symbols to unspecified binding type
248 :     defs: ENV, Env: ENV, INTSTRMAPV
249 :     stamps.sig/sml
250 :     static identifiers, used for nominal type equivalence
251 :     defs: STAMPS, Stamps:> STAMPS
252 :     stampmap.sml
253 :     generic finite mappings over stamps
254 :     defs: StampMap
255 :     sympaths.sig/sml
256 :     SymPath and InvPath: direct and inverse symbolic paths (selecting
257 :     module components)
258 :     defs: SYMPATH, INVPATH, CONVERTPATHS, SymPath, InvPath, ConvertPaths
259 :     coresym.sml
260 :     defines the special structure symbol "_Core" used to access certain
261 :     special bindings (e.g Match and Bind exceptions)
262 :     defs: CoreSym
263 : dbm 2603 primopid.sig/sml
264 :     defines front-end representation of primops, where a primop is identified
265 :     with a string name
266 :     defs: PRIMOPID, PrimopId
267 : macqueen 1344
268 : macqueen 1473 ElabData/syntax/
269 :     (typed) abstract syntax
270 :     absyn.sig/sml
271 :     the abstract syntax types
272 :     defs: ABSYN, Absyn: ABSYN
273 :     varcon.sig/sml
274 :     variable and data constructor representations
275 :     defs: VARCON, VarCon: VARCON
276 :     absynutil.sml
277 :     utility functions for building tuple patterns and expressions
278 :     defs: AbsynUtil
279 : macqueen 1344
280 : macqueen 1473 ElabData/types/
281 :     representing, constructing and manipulating types
282 :     types.sig/sml
283 :     the representation of SML types
284 :     defs: TYPES, Types: TYPES
285 :     typesutil.sig/sml
286 :     large collection of utility functions for working with types
287 :     defs: TYPESUTIL, TypesUtil: TYPESUTIL
288 :     tuples.sml
289 :     fns for constructing tuple and record types
290 :     defs: TUPLES, Tuples: TUPLES
291 : dbm 4791 basictypes.sig/sml
292 :     building the primitive types and associated values
293 :     defs: BASICTYPES, BasicTypes
294 : macqueen 1344
295 : macqueen 1473 ElabData/statenv/
296 :     static environments
297 :     bindings.sig/sml
298 :     the basic binding forms (values, types, signatures, etc.)
299 :     defs: BINDINGS, Bindings: BINDINGS
300 :     statenv.sig/sml
301 :     instantiate generic environments with ML bindings
302 :     defs: STATICENV, StaticEnv: STATICENV
303 :     lookup.sig/sml
304 :     accessing symbols in environments
305 :     defs: LOOKUP, Lookup : LOOKUP
306 :     genmap.sml
307 :     rapid modmap generation based on modtrees
308 :     defs: GenModIdMap
309 :     coreacc.sml
310 :     access components of the _Core structure
311 :     defs: CoreAccess
312 :     browse.sml
313 :     "browsing" the static environment (not used???)
314 :     defs: BrowseStatEnv
315 : macqueen 1344
316 : macqueen 1473 ElabData/modules/
317 :     representation of modules
318 :     modules.sig/sml
319 :     representation of modules and signatures
320 :     defs: MODULES, Modules: MODULES
321 :     moduleutil.sig/sml
322 :     lots of utility functions for modules
323 :     defs: MODULEUTIL, ModuleUtil: MODULEUTIL
324 :     moduleid.sml
325 :     module identities used in Modmaps ???
326 :     defs: MODULE_ID, ModuleId: MODULE_ID
327 :     entpath.sml
328 :     access paths for navigating entities
329 :     defs: ENT_PATH, EntPath:> ENT_PATH
330 :     entityenv.sig/sml
331 :     enity environments mapping entity variables
332 :     defs: ENTITY_ENV, EntityEnv : ENTITY_ENV
333 :     epcontext.sml
334 :     hairy context info used during module elaboration,
335 :     related to nesting of modules (ep stands for
336 :     "entity path"?)
337 :     defs: ENT_PATH_CONTEXT, EntPathContext :> ENT_PATH_CONTEXT
338 : macqueen 1344
339 : dbm 4791 ElabData/prim/
340 :     cproto.sml
341 :     An ad-hoc encoding of PrimCTypes.c_proto in ML types.
342 :     defs: CProto
343 :     prim-c-types.sml
344 :     A representation of C Types for specifying the arguments and results
345 :     of C function calls.
346 :     defs: PrimCtypes
347 :     primop-bind.sml
348 :     Representation of primop bindings that define the Inline structure.
349 :     defs: PrimopBind
350 :     primop-id.sig/sml
351 :     Front-end representation of information identifying primops in variables
352 :     and structures
353 :     defs: PRIMOP_ID, PrimopId
354 :     primop.sig/sml
355 :     datatype Primop, defining various primitive operations
356 :     defs: PRIMOP, Primop
357 :    
358 : macqueen 1473 ElabData/main/
359 :     compinfo.sml
360 :     elaboration context parameter
361 :     defs: CompInfo
362 :     edcontrol.sig/sml
363 :     control flags for ElabData
364 :     defs: ELABDATA_CONTROL, ElabDataControl : ELABDATA_CONTROL
365 : macqueen 1344
366 :    
367 : macqueen 1473 Elaborator/
368 :     The main elaborator code, plus some representation stuff in basics/,
369 :     plus printing modules in print/.
370 : macqueen 1344
371 : macqueen 1473 Elaborator/basics/
372 :     some control flags, some representation types, some FLINT stuff
373 : dbm 4791 elabcontrol.sig/sml
374 : macqueen 1473 Elaborator control flags
375 : dbm 4791 defs: ELAB_CONTROL, ElabControl
376 : macqueen 1473 conrep.sml
377 :     inferring conreps for data constructors
378 :     defs: CONREP, ConRep: CONREP
379 : macqueen 1344
380 : macqueen 1473 Elaborator/print/ [should be in ElabData?]
381 :     print utilities and print modules for elaboration data structures
382 :     pputil.sig/sml
383 :     prettyprint utilities (generic) [**MOVE**]
384 :     pptype.sml
385 :     prettyprint types
386 :     ppval.sml
387 :     prettyprint variables and dcons
388 :     ppmod.sml
389 :     prettyprint modules and signatures
390 :     ppabsyn.sml
391 :     prettyprint absyn (uses PPUtil(pputil.s??),
392 :     PPVal(ppval.sml), PPType(pptype.sml))
393 : macqueen 1344
394 : macqueen 1473 Elaborator/types/
395 :     building basic types + typechecking modules
396 : jhr 4537 eqtypes.sml
397 : macqueen 1473 equivalence of types
398 :     defs: EQTYPES, EqTypes: EQTYPES
399 : jhr 4537 unify.sml
400 : macqueen 1473 type unification
401 :     defs: UNIFY, Unify: UNIFY
402 :     overloadlit.sml
403 :     overloaded numeric literals
404 :     defs: OVERLOADLIT, OverloadLit: OVERLOADLIT
405 :     overload.sml
406 :     overloading resolution
407 :     defs: OVERLOAD, Overload
408 : dbm 4791 typecheck.sml [FLINT dirt]
409 : macqueen 1473 defines typechecking _functor_ TypecheckFn, taking some FLINT-related
410 :     inlining info as parameters [should make into a structure]
411 :     defs: TYPECHECK, TypecheckFn: _ => TYPECHECK
412 : macqueen 1344
413 : macqueen 1473 Elaborator/modules/
414 :     support modules for elaborating modules
415 :     evalent.sml
416 :     evaluate "entities" (module and type realizations). Defines EvalEntityFn
417 :     which is called to define EvalEntity structure in Semant/modules/evalent.sml
418 :     see: Semant/modules/evalent.sml
419 :     defs: EVALENTITY, EvalEntityFn : INSTANTIATE => EVALENTITY
420 :     expandtycon.sml
421 :     interpret PATHtycs in entity environments
422 :     defs: EXPAND_TYCON, ExpandTycon : EXPAND_TYCON
423 :     instantiate.sml
424 :     free instantiation of signatures. defines InstantiateFn which is applied
425 :     to define structure Instantiate in Semant/modules/instantiate.sml
426 :     see: Semant/modules/instantiate.sml
427 :     defs: INSTANTIATE_PARAM, INSTANTIATE,
428 :     InstantiateFn: INSTANTIATE_PARAM => INSTANTIATE
429 :     sigmatch.sml
430 :     signature matching. defines SigMatchFn, which is applied to define
431 :     SigMatch structure in Semant/modules/sigmatch.sml
432 :     see: Semant/modules/sigmatch.sml
433 :     defs: SIGMATCH, SigMatchFn: EVALENTITY => SIGMATCH
434 : macqueen 1344
435 : macqueen 1473 Elaborator/elaborate/
436 :     main elaboration modules, plus some supporting modules
437 :     tyvarset.sml
438 :     type var sets for keeping track of implicit scopes of user type vars
439 :     defs: TYVARSET, TyvarSet :> TYVARSET
440 :     specialsyms.sml
441 :     definition of special symbols for internal use
442 :     defs: SpecialSymbols
443 :     elabutil.sig/sml
444 :     general utilities for elaboration
445 :     defs: ELABUTIL, ElabUtil : ELABUTIL
446 :     elabdebug.sml
447 :     debugging facilities for elaboration
448 :     defs: ELABDEBUG, ElabDebug : ELABDEBUG
449 :     precedence.sml
450 :     precedence parser for core expressions, dealing with infix operators
451 :     defs: PRECEDENCE, Precedence : PRECEDENCE
452 :     elabtype.sig/sml
453 :     elaboration of type expressions and declarations
454 :     defs: ELABTYPE, ElabType : ELABTYPE
455 :     elabcore.sml
456 :     elaborating core ML (expressions, declarations)
457 :     defs: ELABCORE, ElabCore: ELABCORE
458 :     elabmod.sml
459 :     main module elaboration. defines ElabModFn, which is called to
460 :     define ElabMod structure in Semant/elaborate/elabmod.sml
461 :     see: Semant/elaborate/elabmod.sml
462 :     defs: ELABMOD, ElabModFn: SIGMATCH # TYPECHECK => ELABMOD
463 :     include.sml
464 :     elaborate include specs in signatures (supports elabsig)
465 :     defs: INCLUDE, Include: INCLUDE
466 :     elabsig.sml
467 :     elaborate signatures
468 :     defs: ELABSIG, ElabSig : ELABSIG
469 :     elabtop.sml
470 :     top-level elaboration driver. defines ElabTopFn, which is called
471 :     to define ElabTop structure in Semant/elaborate/elabtop.sml
472 :     see: Semant/elaborate/elabtop.sml
473 :     defs: ELABTOP, ElabTopFn : ELABMOD => ELABTOP
474 : macqueen 1344
475 :    
476 :     3. Miscellaneous utilities
477 :    
478 :     MiscUtil/
479 :     Contains various kinds of utility programs
480 :    
481 :     bignums/
482 : macqueen 1473 supporting real constants (using bignums?)
483 :     ieeereal.sml
484 :     Support for IEEE floating-point constants. calls RealConst functor
485 :     see: MiscUtil/bignums/realconst.sml
486 :     defs: IEEERealConst
487 :     realconst.sml
488 :     generate ML real (i.e. ieee floating point?) constants
489 :     defs: PRIMREAL, REALCONST, RealConst: PRIMREAL => REALCONST
490 : macqueen 1344
491 :     library/
492 : macqueen 1473 Utility modules that are candidates for eventual
493 :     promotion to general libraries (crc and pickling)
494 :     crc.sml
495 :     crc codes
496 :     defs: CRC, CRC :> CRC
497 :     pickle-lib.cm
498 :     CM description for basic pickling/unpickling library
499 :     pickle-util.sml
500 :     supporting pickling
501 :     defs: PICKLE_UTIL, PickleUtil :> PICKLE_UTIL
502 :     unpickle-util.sml
503 :     supporting unpickling
504 :     defs: UNPICKLE_UTIL, UnpickleUtil :> UNPICKLE_UTIL
505 : macqueen 1344
506 :     print/
507 : macqueen 1473 Pretty printing for absyn declarations, values
508 :     ppdec.sml
509 :     printing results of top-level declarations, including values and types
510 :     defs: PPDEC, PPDec : PPDEC
511 :     ppobj.sml
512 :     print top-level values
513 :     defs: PPOBJ, PPObj : PPOBJ
514 :     pptable.sml
515 :     register for user-defined prettyprinters for datatypes
516 :     defs: PPTABLE, PPTable : PPTABLE
517 : macqueen 1344
518 :     util/
519 : macqueen 1473 A couple of miscellaneous leftovers.
520 :     feedback.sml
521 :     Compute minimum feedback vertex set of a given directed graph.
522 :     should be part of a graph library (move to ../library?)
523 :     defs: Feedback
524 : macqueen 1344
525 :    
526 : macqueen 1473 3. Middle End
527 :     -------------
528 : macqueen 1344
529 : macqueen 1473 FLINT/
530 :     intermediate representation (a form of typed lambda calculus)
531 : macqueen 1344
532 : macqueen 1473 [see FLINT/MAP]
533 : macqueen 1344
534 :    
535 : macqueen 1473 4. Back End
536 :     -----------
537 : macqueen 1344
538 : macqueen 1473 MLRISC/
539 :     MLRISC based code generators
540 : macqueen 1344
541 :    
542 : macqueen 1473 5. Execution Model
543 :     -----------------
544 : macqueen 1344
545 : macqueen 1473 Execution/
546 : macqueen 1344
547 : macqueen 1473 dynenv/
548 :     dynenv.sig,sml
549 :     dynamic environments, and instance of PidEnvFn
550 :     see: Basics/mlcomp/pidenv.sml
551 :     defs: DYNAMICENV, DynamicEnv : DYNAMICENV
552 :     codeobj/
553 :     code-obj.sig,sml
554 :     an interface for manipulating code objects
555 :     defs: CODE_OBJ, CodeObj :> CODE_OBJ
556 :     binfile/
557 :     binfile.sig,sml
558 :     file format for bin files (machine-independent)
559 :     defs: BINFILE, Binfile :> BINFILE
560 :     main/
561 :     importtree.sml
562 :     defs: ImportTree
563 :     isolate.sml
564 :     isolate the continuation context to the top-level (a prompt?)
565 :     defs: Isolate
566 :     execute.sml
567 :     execution of top-level executables in a dynamic environment
568 :     defs: Execute
569 : macqueen 1344
570 :    
571 : macqueen 1473 6. Interactive Top Level
572 :     ------------------------
573 : macqueen 1344
574 : macqueen 1473 TopLevel/
575 :    
576 :     environ/
577 :     combined static and dynamic environments
578 :     environ.sig,sml
579 :     defs: ENVIRONMENT, Environment: ENVIRONMENT
580 :     symenv.sig,sml
581 :     defines SYMENV as a specialization of PIDENV, and SymbolicEnv as
582 :     an instance of PidEnvFn.
583 :     see: Basics/mlcomp/pidenv.sig, Basics/mlcomp/pidenv.sml
584 :     defs: SYMENV, SymbolicEnv: SYMENV
585 :    
586 :     backend/
587 :     backend.sig
588 :     defs: BACKEND
589 :     backend-fn.sml
590 :     defs: BackendFn : CODEGENERATOR # {val cproto_conv : string} => BACKEND
591 :     alpha32.sml
592 :     defs: Alpha32Backend
593 :     hppa.sml
594 :     defs: HppaBackend
595 :     ppc.sml
596 :     defs: PPCBackend
597 :     sparc.sml
598 :     defs: SparcBackend
599 :     x86-ccall.sml
600 :     defs: X86CCallBackend
601 :     x86-stdcall.sml
602 :     defs: X86StdCallBackend
603 :    
604 :     interact/
605 :     envref.sml
606 :     supports top-level environment management
607 :     defs: ENVREF, EnvRef : ENVREF
608 :     evalloop.sig,sml
609 :     top-level read-eval-print loop
610 :     defs: EVALLOOP, EvalLoopF: TOP_COMPILE => EVALLOOP
611 :     interact.sig,sml
612 :     creating top-level loops
613 :     defs: INTERACT, Interact: EVALLOOP => INTERACT
614 :    
615 :     main/
616 :     control.sig
617 :     defs: MCCONTROL, FLINTCONTROL, CGCONTROL, CONTROL
618 :     control.sml
619 :     defs: Control_MC, Control_CG, Control
620 :     version.sml
621 : macqueen 1481 records the compiler version and version date
622 : macqueen 1473 defs: CompilerVersion
623 :     printhooks.sml
624 :     defs: PrintHooks
625 :     pptable.sml
626 :     defs: CompilerPPTable
627 :     code-generator.sig
628 :     defs: CODEGENERATOR
629 :     compile.sig
630 : macqueen 1481 defs: COMPILE0, COMPILE, TOP_COMPILE
631 : macqueen 1473 compile.sml
632 :     defs: CompileF: CODEGENERATOR # CCONFIG # {cproto_conv : string} => COMPILE0
633 :    
634 :    
635 :    
636 :     ============================================================================
637 :    
638 :     Catalog of basic structures (Front End)
639 :     ---------------------------------------
640 :    
641 : macqueen 1344 symbols
642 : macqueen 1473 Symbol (Basics/mlcomp/symbol.sig,sml)
643 :     FastSymbol (Basics/mlcomp/fastsymbol.sig,sml)
644 : macqueen 1344
645 : macqueen 1473 symbolic paths
646 :     SymPath (ElabData/basics/sympaths.sml)
647 :     InvPath (ElabData/basics/sympaths.sml)
648 :     ConvertPaths (ElabData/basics/sympaths.sml)
649 : macqueen 1344
650 :     ast (syntax trees)
651 : macqueen 1473 Ast (Parse/ast/ast.sig,sml)
652 :     AstUtil (Parse/ast/astutil.sig,sml)
653 : macqueen 1344
654 :     absyn (abstract syntax)
655 : macqueen 1473 Absyn (ElabData/syntax/absyn.sig,sml)
656 :     abstract syntax datatypes for expressions, declarations, etc.
657 :     VarCon (ElabData/syntax/varcon.sig,sml)
658 :     variables and constructors
659 :     AbsynUtil (ElabData/syntax/absynutil.sml)
660 :     utility module for working with absyn
661 :     PPAbsyn (Elaborator/print/ppabsyn.sml)
662 :     prettyprinting absyn
663 : macqueen 1344
664 : macqueen 1473 types (internal representation of types)
665 :     representations
666 :     Types (ElabData/types/types.sig,sml)
667 :     ConRep (Elaborator/basics/conrep.sml)
668 : macqueen 1344
669 : macqueen 1473 utilities, manipulating and comparing types
670 :     TypesUtil (ElabData/types/typesutil.sig,sml)
671 :     Tuples (ElabData/types/tuples.sml)
672 :     EqTypes (Elaborator/types/eqtypes.sml)
673 :     Unify (Elaborator/types/unify.sml)
674 : macqueen 1344
675 : macqueen 1473 primitive types
676 : dbm 4791 BasicTypes (ElabData/types/basictypes.sig,sml)
677 : macqueen 1473 PrimEnv (Semant/statenv/prim.sml)
678 :    
679 :     printing types
680 :     PPType (Elaborator/print/pptype.sml)
681 :    
682 :     dynamic access info
683 :     LambdaVar (ElabData/basics/lambdavar.sig,sml)
684 :     lambda variables (dynamic access roots for variables)
685 :     Access (ElabData/basics/access.sml)
686 :     dynamic access modes
687 :    
688 : macqueen 1344 environment (generic environment: 'b env)
689 : macqueen 1473 Env (ElabData/basics/env.sml)
690 : macqueen 1344
691 :     static environment
692 : macqueen 1473 Bindings (ElabData/statenv/bindings.sig,sml)
693 :     StaticEnv (ElabData/statenv/statenv.sml)
694 :     Lookup (ElabData/statenv/lookup.sml)
695 :     BrowseStatEnv (ElabData/statenv/browse.sml)
696 : macqueen 1344
697 :     modules (signatures, structures, functors)
698 : macqueen 1473 Modules (ElabData/modules/modules.sig,sml)
699 :     ModuleUtil (ElabData/modules/moduleutil.sig,sml)
700 :     ModuleId (ElabData/modules/moduleid.sml)
701 :     EntPath (ElabData/modules/entpath.sml)
702 :     EntityEnv (ElabData/modules/entityenv.sml)
703 :     ModulePropLists (Semant/modules/module-plists.sml) [FLINT]
704 : macqueen 1344
705 : macqueen 1473 primop
706 :     PrimOp (FLINT/kernel/primop.sml)
707 : jhr 4825 PrimOpBindings (Semant/prim/primop-bindings.sml)
708 : dbm 2603 PrimOpId (ElabData/basics/primopid.sml)
709 : macqueen 1473 PrimEnv (Semant/statenv/prim.sml)
710 : macqueen 1344
711 :     control
712 : macqueen 1473 BasicControl (Basics/main/basiccontrol.sml)
713 :     ParserControl (Parse/main/parsercontrol.sml)
714 :     ElabDataControl (ElabData/main/edcontrol.sml)
715 :     ElabControl (Elaborator/basics/elabcontrol.sml)
716 :     Control_Print (Basics/print/printcontrol.sml)
717 :    
718 :     Control (TopLevel/main/control.sml)
719 :     Control_CG (TopLevel/main/control.sml)
720 :     Control_MC (TopLevel/main/control.sml)
721 :    
722 :    
723 :     ==========================================================================
724 :    
725 :     Notes
726 :     =====
727 :    
728 :     1. CoreBasicTypes/BasicTypes and CorePrimTycNum/PrimTycNum splits are
729 :     part of an attempt to have a subset of the front end modules that
730 :     can be used as a generic, implementation dependent SML front-end. That
731 :     is, CoreBasicTypes defines only those types that must be provided in
732 :     any SML implementation. BasicTypes adds those types that are specific
733 :     to SML/NJ.
734 :    
735 :    
736 :     2. What is the distinction between Basics and Semant? Should these be
737 :     merged? How about ElabData? Some of these files (Semant/types) might
738 :     also fit there.
739 :    
740 :     We have Basics/*, Semant/basics, ElabData/basics, and Elaborator/basics.
741 :     What is the rationale telling us what goes in each of these places?
742 :    
743 :     This complex organization seems to be partially motivated by the goal
744 :     of separating out any features that are SML/NJ-specific from the generic
745 :     SML stuff.

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0