mirror of
https://github.com/ganelson/inform.git
synced 2024-07-05 08:34:22 +03:00
212 lines
10 KiB
HTML
212 lines
10 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<title>Booklet Title</title>
|
|
<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="../inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
</head>
|
|
<body>
|
|
<nav role="navigation">
|
|
<h1><a href="../webs.html">Sources</a></h1>
|
|
<ul>
|
|
<li><a href="../compiler.html"><b>compiler tools</b></a></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="../inbuild-module/index.html">inbuild</a></li>
|
|
<li><a href="../arch-module/index.html">arch</a></li>
|
|
<li><a href="../words-module/index.html">words</a></li>
|
|
<li><a href="../syntax-module/index.html">syntax</a></li>
|
|
<li><a href="../html-module/index.html">html</a></li>
|
|
</ul>
|
|
<h2>Inform7 Modules</h2>
|
|
<ul>
|
|
<li><a href="../core-module/index.html">core</a></li>
|
|
<li><a href="../problems-module/index.html">problems</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="../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="../inter-module/index.html">inter</a></li>
|
|
<li><a href="../building-module/index.html">building</a></li>
|
|
<li><a href="../codegen-module/index.html">codegen</a></li>
|
|
</ul>
|
|
<h2>Foundation</h2>
|
|
<ul>
|
|
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
|
|
</ul>
|
|
|
|
|
|
</nav>
|
|
<main role="main">
|
|
|
|
<!--Weave of 'M/ui' generated by 7-->
|
|
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="../compiler.html">Compiler Tools</a></li><li><a href="index.html">inter</a></li><li><a href="index.html#M">Manual</a></li><li><b>Using Inter</b></li></ul><p class="purpose">Using Inter at the command line.</p>
|
|
|
|
<ul class="toc"><li><a href="#SP1">§1. What Inter does</a></li><li><a href="#SP2">§2. Command-line usage</a></li><li><a href="#SP5">§5. Assimilation</a></li></ul><hr class="tocbar">
|
|
|
|
<p class="inwebparagraph"><a id="SP1"></a><b>§1. What Inter does. </b>The command-line executable Inter packages up the back end of the Inform 7
|
|
compiler into a stand-alone tool, and enables that back end to be used more
|
|
flexibly. For example, it can read or write either textual or binary inter
|
|
code, and can convert between them. It can also perform any of the numerous
|
|
code-generation stages on the code it reads, in any sequence. In short, it
|
|
aims to be a Swiss Army knife for inter code.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">Because of that, it's possible to test code-generation stages individually:
|
|
we can read in some inter code from a text file, perform a single stage on
|
|
it, and write it out as text again. This gives us a very helpful window into
|
|
what Inform is doing; it also provides a test-bed for future optimisation,
|
|
or for future applications of inter code.
|
|
</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP2"></a><b>§2. Command-line usage. </b>If you have compiled the standard distribution of the command-line tools
|
|
for Inform then the Inter executable will be at <code class="display"><span class="extract">inter/Tangled/inter</span></code>.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">Inter has three basic modes. In the first, the command line specifies only
|
|
a single file:
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="element">$</span><span class="plain"> </span><span class="functiontext">inter/Tangled/inter</span><span class="plain"> INTERFILE</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph">Inter simply verifies this file for correctness: that is, to see if the inter
|
|
code supplied conforms to the inter specification. It returns the exit code 0
|
|
if all is well, and issues error messages and returns 1 if not.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">Such files can be in either textual or binary form, and Inter automatically
|
|
detects which by looking at their contents. (Conventionally, such files
|
|
have the filename extension <code class="display"><span class="extract">.intert</span></code> or <code class="display"><span class="extract">.interb</span></code> respectively, but that's
|
|
not how Inter decides.)
|
|
</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b>In the second mode, Inter converts from textual to binary form or vice
|
|
versa. The option <code class="display"><span class="extract">-binary X</span></code> writes a binary form of the inter to file <code class="display"><span class="extract">X</span></code>,
|
|
and <code class="display"><span class="extract">-textual X</span></code> writes a text form. So, for example,
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="element">$</span><span class="plain"> </span><span class="functiontext">inter/Tangled/inter</span><span class="plain"> my.intert</span><span class="identifier"> -binary</span><span class="plain"> my.interb</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph">converts <code class="display"><span class="extract">my.intert</span></code> (a textual inter file) to its binary equivalent
|
|
<code class="display"><span class="extract">my.interb</span></code>, and conversely:
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="element">$</span><span class="plain"> </span><span class="functiontext">inter/Tangled/inter</span><span class="plain"> my.interb</span><span class="identifier"> -textual</span><span class="plain"> my.intert</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b>In the third and most flexible mode, Inter runs the supplied code through
|
|
a pipeline of processing stages. The pipeline, which must contain at least
|
|
one stage, can be quite elaborate (see later), but for example:
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="plain">read </span><span class="reserved"><-</span><span class="plain"> myfile.inter, resolve-conditional-compilation, generate inform6 </span><span class="reserved">-></span><span class="plain"> myfile.i6</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph">is a valid three-stage pipeline. The command to do this is then:
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="element">$</span><span class="plain"> </span><span class="functiontext">inter/Tangled/inter</span><span class="identifier"> -pipeline-text</span><span class="plain"> 'PIPELINE'</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph">where <code class="display"><span class="extract">PIPELINE</span></code> is a textual description like the one above. In practice,
|
|
it may not be convenient to spell the pipeline out on the command line, so
|
|
one can also put it into a text file:
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="element">$</span><span class="plain"> </span><span class="functiontext">inter/Tangled/inter</span><span class="identifier"> -pipeline-file</span><span class="plain"> mypl.interpipeline</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph">Pipelines can contain variables, and their values can be set at the command
|
|
line with e.g.:
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="plain">-variable '*out=myfile.i6'</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph">It is also possible to set the default directory for reading and writing files:
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="plain">-domain D</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP5"></a><b>§5. Assimilation. </b>Inform makes use of what are called "kits" of pre-compiled Inter code:
|
|
for example, <code class="display"><span class="extract">CommandParserKit</span></code> contains code for the traditional interactive
|
|
fiction command parser. For speed, Inter loads these as binary Inter, but
|
|
that means they have to be compiled from time to time. This is called
|
|
"assimilation".
|
|
</p>
|
|
|
|
<p class="inwebparagraph">The source code for these could in priniple be textual Inter, but that's too
|
|
verbose to write comfortably. In practice we use Inform 6 code as a notation,
|
|
and therefore assimilation is really a cross-compilation from I6 to Inter.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">Kits are like so-called "fat binaries", in that they contain binary Inter
|
|
for each different architecture with which they are compatible. Inter can
|
|
assimilate for only one architecture at a time, so a command must specify
|
|
which is wanted. For example:
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="element">$</span><span class="plain"> </span><span class="functiontext">inter/Tangled/inter</span><span class="identifier"> -architecture</span><span class="plain"> 16</span><span class="identifier"> -assimilate</span><span class="plain"> K</span>
|
|
<span class="element">$</span><span class="plain"> </span><span class="functiontext">inter/Tangled/inter</span><span class="identifier"> -architecture</span><span class="plain"> 32d</span><span class="identifier"> -assimilate</span><span class="plain"> K</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph">Incrementally assimilating kits as needed could be done with something like
|
|
the Unix tool <code class="display"><span class="extract">make</span></code>, but in fact Inbuild has this ability: the command
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="element">$</span><span class="plain"> </span><span class="functiontext">inbuild/Tangled/inbuild</span><span class="identifier"> -build</span><span class="plain"> K</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph">looks at the kit, works out which architectures need re-assimilation, and
|
|
then issues commands like the above to instruct <code class="display"><span class="extract">inter</span></code> to do so. Indeed,
|
|
multiple kits can be managed with a single command:
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="element">$</span><span class="plain"> </span><span class="functiontext">inbuild/Tangled/inbuild</span><span class="identifier"> -build -contents-of</span><span class="plain"> inform7/Internal/Inter</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<hr class="tocbar">
|
|
<ul class="toc"><li><i>(This section begins Manual.)</i></li><li><a href="M-ti.html">Continue with 'Textual Inter'</a></li></ul><hr class="tocbar">
|
|
<!--End of weave-->
|
|
</main>
|
|
</body>
|
|
</html>
|
|
|