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 1344 - (view) (download)
Original Path: sml/trunk/src/compiler/MAP

1 : macqueen 1344 Front End
2 :     ---------
3 :    
4 :     1. Lexing and Parsing
5 :    
6 :     Parse/
7 :     lexing and parsing, producing ast (concrete syntax trees)
8 :    
9 :     ast/
10 :     "syntax trees" (really concrete, in contrast to absyn, which is
11 :     the true abstract syntax)
12 :     ast.sig/sml -- the syntax tree types
13 :     astutil.sig/sml -- some utility functions
14 :    
15 :     lex/
16 :     lexical analysis (via ML-Lex)
17 :     ml.lex -- the lexer spec
18 :     tokentable.sml --
19 :    
20 :     parse/
21 :     parsing (via ML-Yacc)
22 :     ml.grm -- grammar spec
23 :    
24 :     main/
25 :     control flags and parser driver functions.
26 :     lexer/parser combination translates input stream into ast trees
27 :     parser.sig/sml -- parser modules initialization, driver function
28 :     parsercontrol.sml -- flags controlling various syntax features
29 :     smlfile.sml -- top level parsing functions
30 :    
31 :    
32 :     2. Elaboration
33 :     * abstract syntax
34 :     * static environments
35 :     * translation from ast to abstract syntax and static environment (elaboration)
36 :     * core type checking and inference, overloading resolution
37 :     * modules and signatures, signature matching, functor application
38 :     * code found in directories Semant, ElabData, Elaborator
39 :    
40 :     Basics
41 :     mlcomp/
42 :     symbol.sig/sml -- symbols (should be in ElabData?)
43 :     fastsymbol.sig/sml -- fast symbols (should be in ElabData?)
44 :     fixity.sml -- fixity properties (should be in ElabData)
45 :     persstamps.sig/sml -- persistant stamps (16 byte vectors)
46 :     persmap.sml -- finite maps over pids (persistent stamps)
47 :     pidenv.sig/sml -- environments using pid (persistant stamps) as keys
48 :     compileexn.sml -- Compile exception (where used?)
49 :     miscutil/ (why not in MiscUtil?)
50 :     intstrmap.sig/sml -- int/string maps for use in environments;
51 :     appears redundant with IntStrMapV defined in
52 :     Env (ElabData/basics/env.sml)
53 :     used in Tuples, ElabCore, Parse/lex/tokentable.sml.
54 :     errormsg/
55 :     errormsg.sig/sml -- error messages
56 :     source/
57 :     pathnames.sig/sml -- file path names
58 :     source.sig/sml -- input source datastructure
59 :     sourcemap.sig/sml -- map character positions in source to line no/column
60 :     supporting #line "declaration"
61 :     print/
62 :     pp-wrapper.sml -- implements old PP interface using new SML/NJ Lib PP
63 :     printutil.sig/sml -- some print utilities (uses Symbol)
64 :     printcontrol.sml -- print control flags, out, say
65 :     stats/
66 :     stats.sml -- facilities for defining timed phases
67 :     main/
68 :     basiccontrol.sml -- printWarning control flag, topregistry
69 :     uses ControlRegistry, Controls
70 :    
71 :    
72 :     Semant
73 :    
74 :     basics/
75 :     inlinfo.sig/sml -- inlining info (?)
76 :    
77 :     elaborate/
78 :     elabmod.sml -- module level elaboration (why not in Elaborator)
79 :     elabtop.sml -- top-level elaboration
80 :    
81 :     modules/
82 :     evalent.sml
83 :     instantiate.sml
84 :     instantiate-param.sml
85 :     module-plists.sml
86 :     sigmatch.sml
87 :    
88 :     pickle/ -- pickling static environments
89 :     pickle-sym-pid.sml
90 :     unpickle-sym-pid.sml
91 :     pickmod-new.sml
92 :     unpickmod-new-sml
93 :     rehash.sml
94 :    
95 :     statenv/
96 :     prim.sml
97 :    
98 :     types/
99 :     cproto.sml
100 :     tp-var-info.sml
101 :     types-reformat.sml
102 :     typecheck.sml
103 :    
104 :    
105 :     ElabData
106 :    
107 :     basics/
108 :     lambdavar.sig/sml
109 :     lambda variables, the abstract representation of variables, used
110 :     as roots of dynamic access chains
111 :     access.sig/sml
112 :     dynamic access paths
113 :     env.sig/sml
114 :     generic environments, mapping symbols to unspecified binding type
115 :     stamps.sig/sml
116 :     static identifiers, used for nominal type equivalence
117 :     stampmap.sml
118 :     generic finite mappings over stamps
119 :     sympaths.sig/sml
120 :     SymPath and InvPath: direct and inverse symbolic paths (selecting
121 :     module components)
122 :     ii.sml [FLINT]
123 :     FLINT related information for inlining (why is this in elaborator?)
124 :     lambdavar.sig/sml
125 :     lambda variables, the abstract representation of variables
126 :     core-ptnum.sml
127 :     core prim-type numbers (??? -- essentially the same as basic-ptnum.sml)
128 :     coresym.sml
129 :     defines the special structure symbol "_Core" used to access certain
130 :     special bindings (e.g Match and Bind exceptions)
131 :    
132 :     syntax/ -- (typed) abstract syntax
133 :     absyn.sig/sml -- the abstract syntax types
134 :     varcon.sig/sml -- variable and data constructor representations
135 :     absynutil.sml -- utility functions for building tuple patterns and expressions
136 :    
137 :     types/ -- representing, constructing and manipulating types
138 :     types.sig/sml -- the representation of SML types
139 :     typesutil.sig/sml -- large collection of utility functions for working with types
140 :     tuples.sml -- fns for constructing tuple and record types
141 :     core-basictypes.sml -- building the primitive types and associated values
142 :    
143 :     statenv/
144 :     bindings.sig/sml -- the basic binding forms (values, types, signatures, etc.)
145 :     statenv.sig/sml -- instantiate generic environments with ML bindings
146 :     lookup.sig/sml -- accessing symbols in environments
147 :     genmap.sml -- rapid modmap generation based on modtrees
148 :     coreacc.sml -- access components of the _Core structure
149 :     browse.sml -- "browsing" the static environment (???)
150 :    
151 :     modules/ -- representation of modules
152 :     modules.sig/sml -- representation of modules and signatures
153 :     moduleutil.sig/sml -- lots of utility functions for modules
154 :     moduleid.sml -- module identities used in Modmaps ???
155 :     entpath.sml --
156 :     entityenv.sig/sml -- enity environments mapping entity variables
157 :     epcontext.sml --
158 :    
159 :     main/
160 :     compinfo.sml -- elaboration context parameter
161 :     edcontrol.sig/sml -- control flags for ElabData
162 :    
163 :    
164 :     Elaborator
165 :    
166 :     basics/
167 :     elabcontrol.sml -- Elaborator control flags
168 :     conrep.sml -- inferring conreps for data constructors
169 :     debindex.sig/sml -- [FLINT] FLINT book-keeping (move back to FLINT)
170 :     ptnum.sml -- prim type numbers, augmenting ElabData/basics/core-ptnum.sml
171 :    
172 :     print/
173 :     pputil.sig/sml -- prettyprint utilities (generic) [**MOVE**]
174 :     pptype.sml -- prettyprint types
175 :     ppval.sml -- prettyprint variables and dcons
176 :     ppmod.sml -- prettyprint modules and signatures
177 :     ppabsyn.sml -- prettyprint absyn (uses PPUtil(pputil.s??),
178 :     PPVal(ppval.sml), PPType(pptype.sml))
179 :     types/
180 :     basictypes.sig/sml -- define basic (built-in) types [MOVE to ElabData?]
181 :     eqtypes.sml -- equivalence of types
182 :     unify.sml -- type unification
183 :     overloadlit.sml -- overloaded numeric literals
184 :     overload.sml -- overloading resolution
185 :     typecheck.sml -- typechecking
186 :    
187 :     modules/
188 :     evalent.sml -- evaluate "entities" (module and type realizations)
189 :     expandtycon.sml -- interpret PATHtycs in entity environment
190 :     instantiate.sml -- free instantiation of signatures
191 :     sigmatch.sml -- signature matching
192 :    
193 :     elaborate/
194 :     tyvarset.sml -- type var sets for keeping track of type var scopes
195 :     specialsyms.sml -- definition of special symbols for internal use
196 :    
197 :    
198 :     3. Miscellaneous utilities
199 :    
200 :     MiscUtil/
201 :     Contains various kinds of utility programs
202 :    
203 :     bignums/
204 :     Bignum packages. I have no clue how stable this is.
205 :    
206 :     library/
207 :     Utility modules that are candidates for eventual
208 :     promotion to general libraries (crc and pickling)
209 :     crc.sml
210 :     pickle-lib.cm
211 :     pickle-util.sml
212 :     unpickle-util.sml
213 :    
214 :     print/
215 :     Pretty printing
216 :     ppdec.sml -- printing top-level declarations
217 :     (move to Elaborator/print/ ?)
218 :     ppobj.sml -- print top-level values
219 :     pptable.sml -- register for user-defined prettyprinters for
220 :     particular types
221 :    
222 :     util/
223 :     A couple of miscellaneous leftovers.
224 :     feedback.sml -- should be part of a graph library (move to ../library?)
225 :     literal-to-num.sml
226 :    
227 :    
228 :    
229 :     Middle End
230 :     ----------
231 :    
232 :     FLINT
233 :     intermediate representation (a form of typed lambda calculus)
234 :    
235 :    
236 :     Back End
237 :     --------
238 :    
239 :     MLRISC
240 :     MLRISC based code generators
241 :    
242 :    
243 :     Execution Model
244 :     ---------------
245 :    
246 :     Interactive Top Level
247 :     ---------------------
248 :    
249 :    
250 :     ======================================================================
251 :    
252 :     Catalog of basic structures
253 :     ---------------------------
254 :    
255 :     symbols
256 :     Symbol - "Basics/mlcomp/symbol.s??"
257 :    
258 :    
259 :     ast (syntax trees)
260 :     Ast - Parse/ast/ast.s??
261 :    
262 :     absyn (abstract syntax)
263 :     Absyn - ElabData/syntax/absyn.s??
264 :     VarCon - ElabData/syntax/varcon.s??
265 :     AbsynUtil - ElabData/syntax/absynutil.sml
266 :     PPAbsyn - Elaborator/print/ppabsyn.sml
267 :    
268 :     types
269 :     Types - ElabData/types/types.s??
270 :     TypesUtil - ElabData/types/typesutil.s??
271 :     Tuples - ElabData/types/tuples.sml
272 :     PPType - Elaborator/print/pptype.sml
273 :     CoreBasicTypes - ElabData/types/core-basictypes.sml
274 :     BasicTypes - Elaborator/types/basictypes.s??
275 :     EqTypes - Elaborator/types/eqtypes.sml
276 :    
277 :    
278 :     environment (generic environment: 'b env)
279 :    
280 :    
281 :     static environment
282 :    
283 :    
284 :     modules (signatures, structures, functors)
285 :    
286 :    
287 :     control

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