<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="AsciiDoc 8.6.10">
<title>CompilerOverview</title>
<link rel="stylesheet" href="./asciidoc.css" type="text/css">
<link rel="stylesheet" href="./pygments.css" type="text/css">


<script type="text/javascript" src="./asciidoc.js"></script>
<script type="text/javascript">
/*<![CDATA[*/
asciidoc.install();
/*]]>*/
</script>
<link rel="stylesheet" href="./mlton.css" type="text/css">
</head>
<body class="article">
<div id="banner">
<div id="banner-home">
<a href="./Home">MLton 20201002</a>
</div>
</div>
<div id="header">
<h1>CompilerOverview</h1>
</div>
<div id="content">
<div id="preamble">
<div class="sectionbody">
<div class="paragraph"><p>The following table shows the overall structure of the compiler.
<a href="IntermediateLanguage">IntermediateLanguage</a>s are shown in the center column.  The names
of compiler passes are listed in the left and right columns.</p></div>
<table class="tableblock frame-all grid-all"
style="
margin-left:auto; margin-right:auto;
width:100%;
">
<col style="width:33%;">
<col style="width:33%;">
<col style="width:33%;">
<tbody>
<tr>
<td class="tableblock halign-center valign-top" colspan="3" ><p class="tableblock"><strong>Compiler Overview</strong></p></td>
</tr>
<tr>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><em>Translation Passes</em></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><em><a href="IntermediateLanguage">IntermediateLanguage</a></em></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><em>Optimization Passes</em></p></td>
</tr>
<tr>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock">Source</p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
</tr>
<tr>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="FrontEnd">FrontEnd</a></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
</tr>
<tr>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="AST">AST</a></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
</tr>
<tr>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="Elaborate">Elaborate</a></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
</tr>
<tr>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="CoreML">CoreML</a></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="CoreMLSimplify">CoreMLSimplify</a></p></td>
</tr>
<tr>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="Defunctorize">Defunctorize</a></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
</tr>
<tr>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="XML">XML</a></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="XMLSimplify">XMLSimplify</a></p></td>
</tr>
<tr>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="Monomorphise">Monomorphise</a></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
</tr>
<tr>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="SXML">SXML</a></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="SXMLSimplify">SXMLSimplify</a></p></td>
</tr>
<tr>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="ClosureConvert">ClosureConvert</a></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
</tr>
<tr>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="SSA">SSA</a></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="SSASimplify">SSASimplify</a></p></td>
</tr>
<tr>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="ToSSA2">ToSSA2</a></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
</tr>
<tr>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="SSA2">SSA2</a></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="SSA2Simplify">SSA2Simplify</a></p></td>
</tr>
<tr>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="ToRSSA">ToRSSA</a></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
</tr>
<tr>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="RSSA">RSSA</a></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="RSSASimplify">RSSASimplify</a></p></td>
</tr>
<tr>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="ToMachine">ToMachine</a></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
</tr>
<tr>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="Machine">Machine</a></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
</tr>
<tr>
<td class="tableblock halign-center valign-top" ><p class="tableblock"><a href="Codegen">Codegen</a></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
<td class="tableblock halign-center valign-top" ><p class="tableblock"></p></td>
</tr>
</tbody>
</table>
<div class="paragraph"><p>The <span class="monospaced">Compile</span> functor (<a href="https://github.com/MLton/mlton/blob/master/mlton/main/compile.sig"><span class="monospaced">compile.sig</span></a>,
<a href="https://github.com/MLton/mlton/blob/master/mlton/main/compile.fun"><span class="monospaced">compile.fun</span></a>), controls the
high-level view of the compiler passes, from <a href="FrontEnd">FrontEnd</a> to code
generation.</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr></div>
<div id="footer">
<div id="footer-text">
</div>
<div id="footer-badges">
</div>
</div>
</body>
</html>
