これらの中でcompilerディレクトリはさらに階層化されている.
ディレクトリ
compilePhases/ : コンパイルフェーズ
| bitmapcompilation/ | ビットマップ生成 |
| cconvcompile/ | コーリングコンベンションコンパイル |
| closureconversion/ | クロージャ変換 |
| datatypecompilation/ | データ型コンパイル |
| elaborate/ | 構文論的評価 |
| fficompilation/ | C言語連携コンパイル |
| llvmemit/ | LLVMコードエミッション |
| llvmgen/ | LLVMコード生成 |
| loadfile/ | |
| machinecodegen/ | 低レベルコード生成 |
| main/ | |
| matchcompilation/ | パターンマッチングコンパイル |
| nameevaluation/ | 名前評価とモジュールコンパイル |
| parser/ | 構文解析 |
| recordcalcoptimization/ | 型付きレコード計算最適化処理 |
| recordcompilation/ | 型主導レコードコンパイル |
| stackallocation/ | スタックフレーム割り当て |
| toplevel/ | |
| typedcalcoptimization/ | 型付き中間言語最適化 |
| typedelaboration/ | |
| typeinference/ | 型推論,カリー関数最適化 |
| valrecoptimization/ | 相互再帰的関数最適化処理 |
compilerIRs/ : コンパイラ中間表現
| absyn/ | 抽象構文木 |
| anormal/ | A-normal中間言語 |
| bitmapcalc/ | ビットマップを明示した中間言語 |
| closurecalc/ | クロージャ生成を明示した中間言語 |
| idcalc/ | スコープ規則を持たない中間言語 |
| llvmir/ | LLVM 中間表現 |
| machinecode/ | レジスタトランスファ言語 |
| patterncalc/ | 型無し中間表現 |
| recordcalc/ | 多相型レコード計算 |
| runtimecalc/ | 低レベル中間言語 |
| typedcalc/ | 型付き中間言語 |
| typedlambda/ | 型付きラムダ計算 |
data/ : 型や定数などのデータ
| builtin/ | コンパイラ組込みデータ |
| constantterm/ | 定数定義 |
| control/ | コンパイラの動作パラメタ |
| name/ | 実行コードラベル |
| runtimetypes/ | 実行時型 |
| symbols/ | 変数,ラベル等の表現 |
| types/ | 型表現 |
extensions/ : 種々のコンパイル機能
| concurrencysupport/ | 並列スレッドサポート |
|---|---|
| debug/ | デバッグ機能 |
| foreach/ | 超並列_foreach構文サポート |
| format-utils/ | smlforma用フォーマッタライブラリ |
| json/ | JSONサポート |
| reflection/ | コンパイル時のレフレクションサポート |
| usererror/ | コンパイラエラー処理 |
| userlevelprimitive/ | ユーザコードによるコンパイラ拡張機能 |
libs/ : コンパイラが使用するライブラリ
| digest/& SHAハッシュライブラリ | |
|---|---|
| env/ | 辞書ユーテリティ |
| heapdump/ | 実行時ヒープイメージダンプ関数 |
| ids/ | カウンタユーテリティ |
| interactivePrinter/ | 対話型プリンタ |
| list-utils/ | リストユーティリティ |
| toolchain/ | UNIX toolchain コマンド |
| util/ | 各種ユーティリティ関数 |
ファイル
| minismlsharp.smi | minismlsharpのインタフェイスファイル |
|---|---|
| minismlsharp.sml | smlsharpのコンパイル用コンパイラトップレベル |
| smlsharp.smi | smlsharpのインタフェイスファイル |
| smlsharp.sml | smlsharpトップレベル |
compilerのサブディレクトリを含む各ディレクトリは, mainサブディレクトリを含み,このディレクトリ以下にソースファイル が置かれている. 従って,例えば抽象構文木のソースファイルは compilerIRs/absyn/main/下に置かれている. ソースファイルには,拡張子.smlを持つプログラムファイルと 拡張子.smiを持つ同名のインターフェイスファイルが含まれる.
これに加えて,以下の拡張子を持つファイルは,ソースファイルを生成 ツールの入力ファイルである.
| .ppg | プリンターコード自動生成器smlformatの入力ファイル. |
|---|---|
| .grm | smlyaccの入力ファイル. |
| .lex | smllexの入力ファイル. |
これらファイル名に.smiが付加したインターフェイスファイル は,自動生成されたソースファイルのインタフェイス記述である.