(* SML/NJ 110.42 .cm file to build the SML/NJ elaborator with * Chris Wolff's Absyn->Absyn match compiler. * Built to run in the src/compilers subdirectory of the SML/NJ 110.42 * source distribution * * Call ElabMain.elabMain with NONE to type in a program on stdin, * or SOME(filename) to read a program from a file. * * val ElabMain.elabMain : string option -> Absyn.dec * StaticEnv.staticEnv * * Call PEMain.PEMain to run the elaborator and perform match * compilation (still a few bugs left). * * * Transcript of use: Standard ML of New Jersey v110.42 [FLINT v1.5], October 16, 2002 - CM.make "special.cm"; [autoloading] ... [New bindings added.] val it = true : bool - ElabMain.elabMain (NONE); - val (x, y, z) = (0, 1, 2); val it = (MARKdec (SEQdec [#],(2,27)), BIND (0wx34a,"z",(VALbind #,NONE),BIND (#,#,#,#))) : Absyn.dec * StaticEnv.staticEnv - PEUtil.ppAbsynDec (#1 it); local val = (case (0,1,2) of (x,y,z) => (x,y,z)) in val x = #1> val y = #2> val z = #3> endval it = () : unit - *) Group is (* from Basics *) Basics/main/basiccontrol.sml Basics/mlcomp/symbol.sig Basics/mlcomp/fastsymbol.sig Basics/mlcomp/symbol.sml Basics/mlcomp/fastsymbol.sml Basics/mlcomp/fixity.sml Basics/mlcomp/compileexn.sml Basics/mlcomp/persstamps.sig Basics/mlcomp/persstamps.sml Basics/mlcomp/persmap.sml Basics/mlcomp/pidenv.sig Basics/mlcomp/pidenv.sml Basics/source/source.sig Basics/source/source.sml Basics/source/sourcemap.sig Basics/source/sourcemap.sml Basics/source/pathnames.sig Basics/source/pathnames.sml Basics/errormsg/errormsg.sig Basics/errormsg/errormsg.sml Basics/stats/stats.sml Basics/print/printcontrol.sml Basics/print/printutil.sig Basics/print/printutil.sml Basics/print/pp-wrapper.sml Basics/miscutil/intstrmap.sig Basics/miscutil/intstrmap.sml (* from Parse *) Parse/ast/ast.sig Parse/ast/ast.sml Parse/ast/astutil.sig Parse/ast/astutil.sml Parse/lex/ml.lex Parse/lex/tokentable.sml Parse/parse/ml.grm Parse/main/parsercontrol.sml Parse/main/parser.sig Parse/main/parser.sml Parse/main/smlfile.sml (* from ElabData *) ElabData/main/edcontrol.sig ElabData/main/edcontrol.sml ElabData/main/compinfo.sml ElabData/basics/lambdavar.sig ElabData/basics/lambdavar.sml ElabData/basics/env.sig ElabData/basics/env.sml ElabData/basics/stamps.sig ElabData/basics/stamps.sml ElabData/basics/stampmap.sml ElabData/basics/ii.sml ElabData/basics/coresym.sml ElabData/basics/access.sig ElabData/basics/access.sml ElabData/basics/sympaths.sig ElabData/basics/sympaths.sml ElabData/basics/core-ptnum.sml ElabData/syntax/absyn.sig ElabData/syntax/absyn.sml ElabData/syntax/varcon.sig ElabData/syntax/varcon.sml ElabData/syntax/absynutil.sml ElabData/types/types.sig ElabData/types/types.sml ElabData/types/tuples.sml ElabData/types/core-basictypes.sml ElabData/types/typesutil.sig ElabData/types/typesutil.sml ElabData/modules/modules.sig ElabData/modules/modules.sml ElabData/modules/entpath.sml ElabData/modules/epcontext.sml ElabData/modules/moduleutil.sig ElabData/modules/moduleutil.sml ElabData/modules/moduleid.sml ElabData/modules/entityenv.sig ElabData/modules/entityenv.sml ElabData/statenv/bindings.sig ElabData/statenv/bindings.sml ElabData/statenv/statenv.sig ElabData/statenv/statenv.sml ElabData/statenv/lookup.sig ElabData/statenv/lookup.sml ElabData/statenv/genmap.sml ElabData/statenv/coreacc.sml ElabData/statenv/browse.sml (* from Elaborator *) Elaborator/basics/elabcontrol.sml Elaborator/basics/debindex.sig Elaborator/basics/debindex.sml Elaborator/basics/conrep.sml Elaborator/basics/ptnum.sml Elaborator/types/basictypes.sig Elaborator/types/basictypes.sml Elaborator/types/eqtypes.sml Elaborator/types/unify.sml Elaborator/types/overload.sml Elaborator/types/overloadlit.sml Elaborator/types/typecheck.sml Elaborator/modules/expandtycon.sml Elaborator/modules/sigmatch.sml Elaborator/modules/instantiate.sml Elaborator/modules/evalent.sml Elaborator/elaborate/tyvarset.sml Elaborator/elaborate/elabutil.sig Elaborator/elaborate/elabutil.sml Elaborator/elaborate/specialsyms.sml Elaborator/elaborate/elabtype.sig Elaborator/elaborate/elabtype.sml Elaborator/elaborate/precedence.sml Elaborator/elaborate/elabcore.sml Elaborator/elaborate/include.sml Elaborator/elaborate/elabsig.sml Elaborator/elaborate/elabdebug.sml Elaborator/elaborate/elabmod.sml Elaborator/elaborate/elabtop.sml Elaborator/print/pputil.sig Elaborator/print/pputil.sml Elaborator/print/pptype.sml Elaborator/print/ppval.sml Elaborator/print/ppabsyn.sml Elaborator/print/ppmod.sml (* from Execution *) Execution/main/importtree.sml Execution/dynenv/dynenv.sig Execution/dynenv/dynenv.sml (* from Semant *) Semant/basics/inlinfo.sig Semant/basics/inlinfo.sml Semant/types/tp-var-info.sml Semant/types/cproto.sml Semant/types/typecheck.sml Semant/modules/module-plists.sml Semant/modules/evalent.sml Semant/modules/instantiate.sml Semant/modules/instantiate-param.sml Semant/pickle/pickmod-new.sml Semant/pickle/unpickmod-new.sml Semant/pickle/pickle-sym-pid.sml Semant/pickle/unpickle-sym-pid.sml Semant/pickle/rehash.sml Semant/statenv/prim.sml (* FLINT *) FLINT/main/control.sml FLINT/kernel/primtyc.sig FLINT/kernel/primtyc.sml FLINT/kernel/ltykernel.sig FLINT/kernel/ltykernel.sml FLINT/kernel/ltydef.sig (*FLINT/kernel/ltydef.sml*) ltydef.sml FLINT/kernel/ltyextern.sig FLINT/kernel/ltyextern.sml FLINT/kernel/ltydict.sml FLINT/kernel/primop.sig FLINT/kernel/primop.sml FLINT/kernel/ltybasic.sig FLINT/kernel/ltybasic.sml FLINT/trans/matchcomp.sml FLINT/trans/translate.sml (*FLINT/trans/transtypes.sml*) transtypes.sml (*FLINT/trans/tempexpn.sml*) FLINT/trans/mccommon.sml FLINT/trans/pequal.sml FLINT/plambda/plambda.sig FLINT/plambda/plambda.sml FLINT/plambda/plambdatype.sml FLINT/plambda/pplexp.sml FLINT/plambda/flintnm.sml FLINT/plambda/pflatten.sig FLINT/plambda/pflatten.sml FLINT/flint/flint.sig FLINT/flint/flint.sml FLINT/flint/flintutil.sml FLINT/flint/ppflint.sig FLINT/flint/ppflint.sml (* from MiscUtil *) MiscUtil/util/literal-to-num.sml MiscUtil/library/pickle-util.sml MiscUtil/library/unpickle-util.sml MiscUtil/library/crc.sml (* from DebugProf *) DebugProf/profile/prof-env.sml DebugProf/profile/profile-fn.sml DebugProf/profile/profile.sig DebugProf/profile/profile.sml DebugProf/profile/sprof.sml DebugProf/profile/tell-env.sml DebugProf/profile/tprof.sml DebugProf/profile/btrace.sml DebugProf/profile/btimp.sml DebugProf/types/reconstruct.sml (* from TopLevel *) TopLevel/environ/symenv.sig TopLevel/environ/symenv.sml TopLevel/environ/environ.sig TopLevel/environ/environ.sml TopLevel/interact/envref.sml (* from Cwolff---this stuff has been modified from original tree *) Cwolff/control.sig Cwolff/control.sml Cwolff/sortedlist.sml Cwolff/pickunpick.sml (* Prof. Dimock's usable static environment *) SavedStaticEnv.sml Pup.sml (* "post-elaboration" *) Cwolff/postelab.sml Cwolff/pematch.sml (* Bug fix: need to do more on template expansion of flex records than * is done by FLINT/trans/tempexpn.sml *) Cwolff/tempexpn.sml (* Some of my own utilities... *) Cwolff/peutil.sml (* toplevel structures for driving various stages of compilation *) Cwolff/parse.sml Cwolff/elabmain.sml Cwolff/pemain.sml (* post-elaboration through absyn->absyn match compile *) Cwolff/transmain.sml (* test harness: try converting match-compiled * code to FLINT*) (* libraries *) $smlnj/MLRISC/MLRISC.cm $/ml-yacc-lib.cm $/basis.cm $/smlnj-lib.cm $/pp-lib.cm $/controls-lib.cm