1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-07-05 16:44:21 +03:00
inform7/docs/compiler.html
2020-08-09 09:15:46 +01:00

138 lines
14 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>The Inform 7 compiler</title>
<link href="docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
<meta name="viewport" content="width=device-width initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body class="commentary-font">
<nav role="navigation">
<h1><a href="index.html">
<img src="docs-assets/Inform.png" height=72">
</a></h1>
<ul><li><span class="unlink">compiler tools</span></li>
<li><a href="other.html">other tools</a></li>
<li><a href="extensions.html">extensions and kits</a></li>
<li><a href="units.html">unit test tools</a></li>
</ul><h2>Compiler Webs</h2><ul>
<li><a href="inbuild/index.html">inbuild</a></li>
<li><a href="inform7/index.html">inform7</a></li>
<li><a href="inter/index.html">inter</a></li>
</ul><h2>Inbuild Modules</h2><ul>
<li><a href="supervisor-module/index.html">supervisor</a></li>
</ul><h2>Inform7 Modules</h2><ul>
<li><a href="core-module/index.html">core</a></li>
<li><a href="kinds-module/index.html">kinds</a></li>
<li><a href="if-module/index.html">if</a></li>
<li><a href="multimedia-module/index.html">multimedia</a></li>
<li><a href="index-module/index.html">index</a></li>
</ul><h2>Inter Modules</h2><ul>
<li><a href="bytecode-module/index.html">bytecode</a></li>
<li><a href="building-module/index.html">building</a></li>
<li><a href="codegen-module/index.html">codegen</a></li>
</ul><h2>Services</h2><ul>
<li><a href="arch-module/index.html">arch</a></li>
<li><a href="syntax-module/index.html">syntax</a></li>
<li><a href="words-module/index.html">words</a></li>
<li><a href="html-module/index.html">html</a></li>
<li><a href="inflections-module/index.html">inflections</a></li>
<li><a href="linguistics-module/index.html">linguistics</a></li>
<li><a href="problems-module/index.html">problems</a></li>
<li><a href="../../inweb/docs/foundation-module/index.html">foundation</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'The Inform 7 compiler' generated by Inweb-->
<div class="breadcrumbs">
<ul class="crumbs"><li><a href="index.html">Home</a></li><li><b>The Inform 7 compiler</b></li></ul></div>
<p class="commentary firstcommentary"><a id="SP1"></a><b>&#167;1. </b>The task of the Inform 7 compiler is to take natural-language source text
and "transpile" it down to lower-level, more orthodox code which another
compiler can take the rest of the way. Usually, but not necessarily, that
other compiler is the typeless but otherwise C-like Inform 6 (1996-2003).
</p>
<p class="commentary">Inform offers three compiler tools: <a href="inbuild/index.html" class="internal">inbuild</a>, <a href="inform7/index.html" class="internal">inform7</a>
and <a href="inter/index.html" class="internal">inter</a>. These represent the front end (build control, resource
management), the middle part (actual compilation), and the back end (code
generation, assimilation of kits), but really they are three points of access
to the same code base. See <a href="inbuild/M-ui.html" class="internal">Manual (in inbuild)</a>, <a href="inform7/M-cu.html" class="internal">Manual (in inform7)</a>, <a href="inter/M-ui.html" class="internal">Manual (in inter)</a>
and <a href="inbuild/M-rc.html" class="internal">Reference Card (in inbuild)</a>, <a href="inform7/M-rc.html" class="internal">Reference Card (in inform7)</a>, <a href="inter/M-rc.html" class="internal">Reference Card (in inter)</a>.
</p>
<p class="commentary">Each tool has its own CLI (or "command-line interface") but is otherwise
divided up into "modules", many shared between two or even all three tools.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="function-syntax">INBUILD</span><span class="plain-syntax"> </span><span class="function-syntax">INFORM7</span><span class="plain-syntax"> </span><span class="function-syntax">INTER</span>
<span class="plain-syntax"> +-------------+ +-------------+ +-------------+</span>
<span class="plain-syntax"> | </span><a href="inbuild/index.html" class="internal">inbuild</a><span class="plain-syntax"> | | </span><a href="inform7/index.html" class="internal">inform7</a><span class="plain-syntax"> | | </span><a href="inter/index.html" class="internal">inter</a><span class="plain-syntax"> |</span>
<span class="plain-syntax"> | (</span><span class="element-syntax">cli</span><span class="plain-syntax">) | | (</span><span class="element-syntax">cli</span><span class="plain-syntax">) | | (</span><span class="element-syntax">cli</span><span class="plain-syntax">) |</span>
<span class="plain-syntax"> +-------------+ +-------------+ +-------------+</span>
<span class="plain-syntax">+----------------------------------------------+ . .</span>
<span class="plain-syntax">| </span><a href="supervisor-module/index.html" class="internal">supervisor</a><span class="plain-syntax">-</span><span class="element-syntax">module</span><span class="plain-syntax"> | . .</span>
<span class="plain-syntax">+----------------------------------------------+ . .</span>
<span class="plain-syntax"> . . +---------------------+ . .</span>
<span class="plain-syntax"> . . | </span><a href="core-module/index.html" class="internal">core</a><span class="plain-syntax">-</span><span class="element-syntax">module</span><span class="plain-syntax"> | . .</span>
<span class="plain-syntax"> . . | </span><a href="if-module/index.html" class="internal">if</a><span class="plain-syntax">-</span><span class="element-syntax">module</span><span class="plain-syntax"> | . .</span>
<span class="plain-syntax"> . . | </span><a href="multimedia-module/index.html" class="internal">multimedia</a><span class="plain-syntax">-</span><span class="element-syntax">module</span><span class="plain-syntax"> | . .</span>
<span class="plain-syntax"> . . | </span><a href="index-module/index.html" class="internal">index</a><span class="plain-syntax">-</span><span class="element-syntax">module</span><span class="plain-syntax"> | . .</span>
<span class="plain-syntax"> . . +---------------------+ . .</span>
<span class="plain-syntax"> . . +----------------------------------------------+</span>
<span class="plain-syntax"> . . | </span><a href="bytecode-module/index.html" class="internal">bytecode</a><span class="plain-syntax">-</span><span class="element-syntax">module</span><span class="plain-syntax"> |</span>
<span class="plain-syntax"> . . | </span><a href="building-module/index.html" class="internal">building</a><span class="plain-syntax">-</span><span class="element-syntax">module</span><span class="plain-syntax"> |</span>
<span class="plain-syntax"> . . | </span><a href="codegen-module/index.html" class="internal">codegen</a><span class="plain-syntax">-</span><span class="element-syntax">module</span><span class="plain-syntax"> |</span>
<span class="plain-syntax"> . . +----------------------------------------------+</span>
<span class="plain-syntax">+-----------------------------------------------------------------------+</span>
<span class="plain-syntax">| </span><span class="function-syntax">SERVICES</span><span class="plain-syntax"> </span><span class="element-syntax">shared</span><span class="plain-syntax"> </span><a href="linguistics-module/index.html" class="internal">linguistics</a><span class="plain-syntax">-</span><span class="element-syntax">module</span><span class="plain-syntax"> |</span>
<span class="plain-syntax">| </span><span class="element-syntax">shared</span><span class="plain-syntax"> </span><a href="kinds-module/index.html" class="internal">kinds</a><span class="plain-syntax">-</span><span class="element-syntax">module</span><span class="plain-syntax"> |</span>
<span class="plain-syntax">| </span><span class="element-syntax">shared</span><span class="plain-syntax"> </span><a href="lexicon-module/index.html" class="internal">lexicon</a><span class="plain-syntax">-</span><span class="element-syntax">module</span><span class="plain-syntax"> |</span>
<span class="plain-syntax">| </span><span class="element-syntax">shared</span><span class="plain-syntax"> </span><a href="inflections-module/index.html" class="internal">inflections</a><span class="plain-syntax">-</span><span class="element-syntax">module</span><span class="plain-syntax"> |</span>
<span class="plain-syntax">| </span><span class="element-syntax">shared</span><span class="plain-syntax"> </span><a href="problems-module/index.html" class="internal">problems</a><span class="plain-syntax">-</span><span class="element-syntax">module</span><span class="plain-syntax"> |</span>
<span class="plain-syntax">| </span><span class="element-syntax">shared</span><span class="plain-syntax"> </span><a href="syntax-module/index.html" class="internal">syntax</a><span class="plain-syntax">-</span><span class="element-syntax">module</span><span class="plain-syntax"> |</span>
<span class="plain-syntax">| </span><span class="element-syntax">shared</span><span class="plain-syntax"> </span><a href="words-module/index.html" class="internal">words</a><span class="plain-syntax">-</span><span class="element-syntax">module</span><span class="plain-syntax"> |</span>
<span class="plain-syntax">| </span><span class="element-syntax">shared</span><span class="plain-syntax"> </span><a href="arch-module/index.html" class="internal">arch</a><span class="plain-syntax">-</span><span class="element-syntax">module</span><span class="plain-syntax"> |</span>
<span class="plain-syntax">| </span><span class="element-syntax">shared</span><span class="plain-syntax"> </span><a href="html-module/index.html" class="internal">html</a><span class="plain-syntax">-</span><span class="element-syntax">module</span><span class="plain-syntax"> |</span>
<span class="plain-syntax">+-----------------------------------------------------------------------+</span>
<span class="plain-syntax">+-----------------------------------------------------------------------+</span>
<span class="plain-syntax">| </span><span class="function-syntax">FOUNDATION</span><span class="plain-syntax"> </span><a href="../../inweb/docs/foundation-module/index.html" class="internal">foundation</a><span class="plain-syntax">-</span><span class="element-syntax">module</span><span class="plain-syntax"> (</span><span class="element-syntax">in</span><span class="plain-syntax"> </span><span class="element-syntax">inweb</span><span class="plain-syntax"> </span><span class="element-syntax">repository</span><span class="plain-syntax">) |</span>
<span class="plain-syntax">| (</span><span class="element-syntax">Posix</span><span class="plain-syntax"> </span><span class="element-syntax">or</span><span class="plain-syntax"> </span><span class="element-syntax">Windows</span><span class="plain-syntax">-</span><span class="element-syntax">related</span><span class="plain-syntax"> </span><span class="element-syntax">functions</span><span class="plain-syntax">) |</span>
<span class="plain-syntax">| (</span><span class="element-syntax">standard</span><span class="plain-syntax"> </span><span class="element-syntax">C</span><span class="plain-syntax"> </span><span class="element-syntax">library</span><span class="plain-syntax">) |</span>
<span class="plain-syntax">+-----------------------------------------------------------------------+</span>
</pre>
<p class="commentary">The three tools each use a "services" library, made up of a variety of modules
providing services useful for natural language-based programs (though only
<a href="inform7/index.html" class="internal">inform7</a> needs them all). At one time this was going to be called "Second
Foundation" or possibly "Foundation and Empire", because there is also
<a href="../../inweb/docs/foundation-module/index.html" class="internal">foundation</a> underneath, a library of utility functions provided by <a href="../../inweb/docs/index.html" class="internal">inweb</a>.
</p>
<p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. </b>That's a lot: for code-spelunkers, this is a veritable limestone hillside
of points of entry. Where to begin? Here are some suggested entrances:
</p>
<ul class="items"><li>(a) See <a href="supervisor-module/P-wtmd.html" class="internal">What This Module Does (in supervisor)</a> for an overview of the
build-management process.
</li><li>(b) Or take that on trust, and see <a href="core-module/P-wtmd.html" class="internal">What This Module Does (in core)</a> for
an overview of how Inform 7 basically works.
</li><li>(c) If you're more interested in the low-level representation of Inter code,
and how to generate from it, see <a href="bytecode-module/P-wtmd.html" class="internal">What This Module Does (in bytecode)</a>.
</li></ul>
<!--End of weave-->
</main>
</body>
</html>