32.3 compiler directory
The compiler directory is divided into sub-directory, as shown.
-
•
Directories
-
–
compilePhases/ : compilation phases
bitmapcompilation/ explicit layout-bitmap generation cconvcompile/ type-directed calling-convention generation closureconversion/ closure conversion datatypecompilation/ datalayout computation elaborate/ syntactic elaboration fficompilation/ C interface generation for higher-order functions llvmemit/ llvm code emission llvmgen/ loadfile/ machinecodegen/ law-level code generation main/ matchcompilation/ pattern matching compilation nameevaluation/ name evaluation and module compilation parser/ parser recordcalcoptimization/ typed record calculus optimization recordcompilation/ type-directed record compilation stackallocation/ stack frame allocation toplevel/ typedcalcoptimization/ typed intermediate language optimization typedelaboration/ typeinference/ type definition,uncurry optimization valrecoptimization/ mutual recursive function optimization -
–
compilerIRs/ : compiler intermediate representations
absyn/ Abstract syntax tree anormal/ A-normal forms bitmapcalc/ the language with explicit layout bitmap closurecalc/ the language with explicit closure allocation idcalc/ the language without static scoping llvmir/ LLVM IR machinecode/ the register transfer language patterncalc/ the untyped intermediate language recordcalc/ the polymorphic record calculus runtimecalc/ the language with runtime types typedcalc/ the typed intermediate language typedlambda/ the typed lambda calculus -
–
data/ : types, constants and other data
builtin/ compiler built-in data constantterm/ constants control/ parameters controlling compiler function name/ runtime code labels runtimetypes/ runtime types symbols/ representation of variables, labels etc types/ type representations -
–
extensions/ : various compile functions
concurrencysupport/ concurrent thread support debug/ debugging support foreach/ massively parallel _foreach statement support format-utils/ formater library for smlformat json/ JSON manipulation support reflection/ compile-time reflection support usererror/ compiler error handling userlevelprimitive/ compiler extension via user code -
–
libs/ : libraries used by the compiler
digest/& SHA hashing library env/ dictionary utilities heapdump/ heap image dump function ids/ counter utilities interactivePrinter/ interactive printers list-utils/ list utilities toolchain/ UNIX toolchain commands util/ miscellaneous utility functions
-
–
-
•
Files
minismlsharp.smi the interface file of minismlshap minismlsharp.sml the top-level of the compiler to compile smlsharp smlsharp.smi the interface file of smlsharp smlsharp.sml smlsharp top-level
Each of directories, including compiler sub-directories, contains the main sub-directory, where the source files are located. For example, the source files for abstract syntax trees are placed in compilerIRs/absyn/main/. Source files include program files with .sml suffix and the corresponding interface files of the same names with .smi suffix.
Files with following suffix are input files of source file generation tools.
.ppg | an input file to smlformat pretty-printer generator. |
---|---|
.grm | an smlyacc input file |
.lex | an smlyacc input file |
An interface file having of one of those names with .smi suffix describes the interface of the generated source program.