1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-26 04:00:43 +03:00
inform7/docs/structure.html
2022-04-28 17:37:28 +01:00

202 lines
29 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Structure of 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">
<script src="http://code.jquery.com/jquery-1.12.4.min.js"
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
<script src="docs-assets/Bigfoot.js"></script>
<link href="docs-assets/Bigfoot.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><a href="index.html"><span class="selectedlink">home</span></a></li>
</ul><h2>Compiler</h2><ul>
<li><span class="unlink">structure</span></li>
<li><a href="inbuildn.html">inbuild</a></li>
<li><a href="inform7n.html">inform7</a></li>
<li><a href="intern.html">inter</a></li>
<li><a href="services.html">services</a></li>
<li><a href="secrets.html">secrets</a></li>
</ul><h2>Other Tools</h2><ul>
<li><a href="inblorbn.html">inblorb</a></li>
<li><a href="indocn.html">indoc</a></li>
<li><a href="inform6.html">inform6</a></li>
<li><a href="inpolicyn.html">inpolicy</a></li>
<li><a href="inrtpsn.html">inrtps</a></li>
</ul><h2>Resources</h2><ul>
<li><a href="extensions.html">extensions</a></li>
<li><a href="kits.html">kits</a></li>
</ul><h2>Repository</h2><ul>
<li><a href="https://github.com/ganelson/inform"><img src="docs-assets/github.png" height=18> github</a></li>
</ul><h2>Related Projects</h2><ul>
<li><a href="../../inweb/index.html">inweb</a></li>
<li><a href="../../intest/index.html">intest</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'Structure of the Inform 7 compiler' generated by Inweb-->
<div class="breadcrumbs">
<ul class="crumbs"><li><a href="index.html">Home</a></li><li><b>Structure of the Inform 7 compiler</b></li></ul></div>
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>The core Inform compiler combines natural-language source text, including
natural-language extensions, and precompiled "kits" in order to make the
instructions for making a playable story. Inform is internally divided into
Stages, numbered 1 to 7:<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup>
</p>
<ul class="items"><li>(1) Build management: gathering up what must be compiled and reading it in as
an annotated syntax tree, or "AST".<sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup>
</li><li>(2) Queueing and organising work which will be done by stages 3 to 5.
</li><li>(3) Turning assertion sentences &mdash; "Peter is a man", "The tally is a number
that varies" &mdash; into a world model of variables, kinds, instances and properties.
Values and typechecking are also managed here. Phrases and rules are identified,
but their bodies are ignored for the moment.
</li><li>(4) The world model, phrases and rules identified by stage (3) are now compiled
to an Intermediate Representation, or "IR", another sort of tree known as Inter.
This is done by calling down to the API provided by...
</li><li>(5) ... which is more a layer than a stage: it's a comprehensive system for
building Inter code, and could conceivably be used by other compilers too.
</li><li>(6) A "pipeline" of transformations on the Inter code improves it. A weak form
of linker<sup id="fnref:3"><a href="#fn:3" rel="footnote">3</a></sup> joins on precompiled Inter code from "kits" such as BasicInformKit
or WorldModelKit.
</li><li>(7) The finished Inter tree is then code-generated to form our output, which
can be in several different formats, and an Index mini-website about it is made.
For most users of the Inform app, the format will be Inform 6, and further
command-line tools <a href="inform6.html" class="internal">inform6</a> and <a href="inblorb/index.html" class="internal">inblorb</a> then turn that into a "story
file" and then a Javascript-running web page; but for some command-line users,
the format is C and a compiler like <span class="extract"><span class="extract-syntax">clang</span></span> is then used to make an executable.
</li></ul>
<ul class="footnotetexts"><li class="footnote" id="fn:1"><p class="inwebfootnote"><sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> These slightly overlap in chronological order, so maybe Level would be a
better name than Stage, but then again they do mostly happen in sequence.
<a href="#fnref:1" title="return to text"> &#x21A9;</a></p></li><li class="footnote" id="fn:2"><p class="inwebfootnote"><sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup> AST normally stands for "abstract syntax tree" but we prefer "annotated",
skirting the issue of exactly how abstract vs concrete it is.
<a href="#fnref:2" title="return to text"> &#x21A9;</a></p></li><li class="footnote" id="fn:3"><p class="inwebfootnote"><sup id="fnref:3"><a href="#fn:3" rel="footnote">3</a></sup> Weak in that the <a href="inter/index.html" class="internal">inter</a> tool can link any number of kits to a source text,
but not a source text to a source text.
<a href="#fnref:3" title="return to text"> &#x21A9;</a></p></li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>These seven stages form a single code base but are packaged up into three
command-line tools, not one:
</p>
<ul class="items"><li>&#9679; <span class="extract"><span class="extract-syntax">inbuild</span></span> is Stage 1 as a stand-alone tool: see <a href="inbuildn.html" class="internal">this description</a>.
</li><li>&#9679; <span class="extract"><span class="extract-syntax">inform7</span></span> is Stages 1 to 7 as an all-in-one: see <a href="inform7n.html" class="internal">this description</a>
of the part unique to it, Stages 2 to 4.
</li><li>&#9679; <span class="extract"><span class="extract-syntax">inter</span></span> is Stages 5 to 7 as a stand-alone tool: see <a href="intern.html" class="internal">this description</a>.
</li></ul>
<p class="commentary">All three tools also use a large library of <a href="services.html" class="internal">services</a>: everything from
inflecting words to simplifying logical propositions.
</p>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b>The flow of data looks like so, with time running downwards on the page:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="element-syntax">kit</span><span class="plain-syntax"> </span><span class="element-syntax">sources</span>
<span class="plain-syntax"> (</span><span class="element-syntax">in</span><span class="plain-syntax"> </span><span class="element-syntax">Inform</span><span class="plain-syntax"> </span><span class="constant-syntax">6</span><span class="plain-syntax"> </span><span class="element-syntax">code</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> |</span>
<span class="plain-syntax"> | </span><span class="function-syntax">INTER</span>
<span class="plain-syntax"> \|/</span>
<span class="plain-syntax"> </span><span class="element-syntax">precompiled</span>
<span class="plain-syntax"> </span><span class="element-syntax">Inter</span><span class="plain-syntax"> </span><span class="element-syntax">trees</span>
<span class="plain-syntax"> . </span><span class="element-syntax">main</span><span class="plain-syntax"> </span><span class="element-syntax">source</span><span class="plain-syntax"> </span><span class="element-syntax">text</span><span class="plain-syntax"> </span><span class="element-syntax">extension</span><span class="plain-syntax"> </span><span class="element-syntax">source</span><span class="plain-syntax"> </span><span class="element-syntax">texts</span>
<span class="plain-syntax"> . \ /</span>
<span class="plain-syntax"> . \ / </span><span class="function-syntax">INFORM7</span><span class="plain-syntax"> </span><span class="element-syntax">Stage</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax"> </span><span class="element-syntax">or</span><span class="plain-syntax"> </span><span class="function-syntax">INBUILD</span>
<span class="plain-syntax"> . \ /</span>
<span class="plain-syntax"> . \|/ \|/</span>
<span class="plain-syntax"> . </span><span class="element-syntax">syntax</span><span class="plain-syntax"> </span><span class="element-syntax">tree</span>
<span class="plain-syntax"> . |</span>
<span class="plain-syntax"> . | </span><span class="function-syntax">INFORM7</span><span class="plain-syntax"> </span><span class="element-syntax">Stages</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax"> </span><span class="element-syntax">to</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span><span class="plain-syntax">/5</span>
<span class="plain-syntax"> . |</span>
<span class="plain-syntax"> . . . . . . . </span><span class="element-syntax">precompiled</span><span class="plain-syntax"> \|/</span>
<span class="plain-syntax"> </span><span class="element-syntax">Inter</span><span class="plain-syntax"> </span><span class="element-syntax">trees</span><span class="plain-syntax"> </span><span class="element-syntax">Inter</span><span class="plain-syntax"> </span><span class="element-syntax">tree</span>
<span class="plain-syntax"> \ /</span>
<span class="plain-syntax"> \ / </span><span class="function-syntax">INFORM7</span><span class="plain-syntax"> </span><span class="element-syntax">Stage</span><span class="plain-syntax"> </span><span class="constant-syntax">6</span><span class="plain-syntax"> </span><span class="element-syntax">or</span><span class="plain-syntax"> </span><span class="function-syntax">INTER</span>
<span class="plain-syntax"> \|/ \|/</span>
<span class="plain-syntax"> </span><span class="element-syntax">single</span><span class="plain-syntax"> </span><span class="element-syntax">linked</span><span class="plain-syntax"> </span><span class="element-syntax">Inter</span><span class="plain-syntax"> </span><span class="element-syntax">tree</span>
<span class="plain-syntax"> / | \</span>
<span class="plain-syntax"> / | \ </span><span class="function-syntax">INFORM7</span><span class="plain-syntax"> </span><span class="element-syntax">Stage</span><span class="plain-syntax"> </span><span class="constant-syntax">7</span><span class="plain-syntax"> </span><span class="element-syntax">or</span><span class="plain-syntax"> </span><span class="function-syntax">INTER</span>
<span class="plain-syntax"> \|/ \|/ \|/</span>
<span class="plain-syntax"> </span><span class="element-syntax">Inform</span><span class="plain-syntax"> </span><span class="constant-syntax">6</span><span class="plain-syntax"> </span><span class="element-syntax">code</span><span class="plain-syntax"> </span><span class="element-syntax">C</span><span class="plain-syntax"> </span><span class="element-syntax">code</span><span class="plain-syntax"> </span><span class="element-syntax">index</span><span class="plain-syntax"> </span><span class="element-syntax">mini</span><span class="plain-syntax">-</span><span class="element-syntax">website</span>
<span class="plain-syntax"> : :</span>
<span class="plain-syntax"> </span><span class="function-syntax">INFORM6</span><span class="plain-syntax"> : : </span><span class="function-syntax">CLANG</span><span class="plain-syntax"> </span><span class="element-syntax">or</span><span class="plain-syntax"> </span><span class="function-syntax">GCC</span>
<span class="plain-syntax"> \:/ \:/</span>
<span class="plain-syntax"> </span><span class="element-syntax">story</span><span class="plain-syntax"> </span><span class="element-syntax">file</span><span class="plain-syntax"> </span><span class="element-syntax">executable</span>
<span class="plain-syntax"> :</span>
<span class="plain-syntax"> </span><span class="function-syntax">INBLORB</span><span class="plain-syntax"> :</span>
<span class="plain-syntax"> \:/</span>
<span class="plain-syntax"> </span><span class="element-syntax">playable</span><span class="plain-syntax"> </span><span class="element-syntax">website</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </b>The code base is subdivided into "modules". There are around 30, from five sources:
</p>
<ul class="items"><li>&#9679; A set of <a href="services.html" class="internal">services</a>, which are libraries of code providing features useful
to programs dealing with natural language.
</li><li>&#9679; Those <a href="inbuildn.html" class="internal">owned by Inbuild</a>.
</li><li>&#9679; Those <a href="inform7n.html" class="internal">owned by Inform7</a>.
</li><li>&#9679; Those <a href="intern.html" class="internal">owned by Inter</a>.
</li><li>&#9679; The <a href="../../inweb/foundation-module/index.html" class="internal">foundation</a> library for memory-management, string handling and so
on, which is a module held in the <a href="../../inweb/index.html" class="internal">inweb</a> repository rather than here.
</li></ul>
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>&#167;5. </b>The full breakdown of the three compiler tools into modules is as follows.
An <span class="extract"><span class="extract-syntax">o</span></span> means that the tool is the owner of the module in question; a <span class="extract"><span class="extract-syntax">x</span></span> means
that it imports the module from somewhere else.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="function-syntax">WEB</span><span class="plain-syntax"> </span><span class="function-syntax">ACTIVE</span><span class="plain-syntax"> </span><span class="function-syntax">STAGES</span><span class="plain-syntax"> </span><span class="function-syntax">INWEB</span><span class="plain-syntax"> </span><span class="function-syntax">SERVICES</span><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>
<a href="inbuild/index.html" class="internal">inbuild</a><span class="plain-syntax"> </span><span class="element-syntax">cli</span><span class="plain-syntax"> </span><span class="element-syntax">Before</span><span class="plain-syntax"> - - </span><span class="element-syntax">o</span><span class="plain-syntax"> - -</span>
<a href="inform7/index.html" class="internal">inform7</a><span class="plain-syntax"> </span><span class="element-syntax">cli</span><span class="plain-syntax"> </span><span class="element-syntax">Before</span><span class="plain-syntax"> - - - </span><span class="element-syntax">o</span><span class="plain-syntax"> -</span>
<a href="inter/index.html" class="internal">inter</a><span class="plain-syntax"> </span><span class="element-syntax">cli</span><span class="plain-syntax"> </span><span class="element-syntax">Before</span><span class="plain-syntax"> - - - - </span><span class="element-syntax">o</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="element-syntax">Stage</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax"> - - </span><span class="element-syntax">o</span><span class="plain-syntax"> </span><span class="element-syntax">x</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="element-syntax">Stage</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax"> - - - </span><span class="element-syntax">o</span><span class="plain-syntax"> -</span>
<a href="assertions-module/index.html" class="internal">assertions</a><span class="plain-syntax"> </span><span class="element-syntax">module</span><span class="plain-syntax"> </span><span class="element-syntax">Stage</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax"> - - - </span><span class="element-syntax">o</span><span class="plain-syntax"> -</span>
<a href="values-module/index.html" class="internal">values</a><span class="plain-syntax"> </span><span class="element-syntax">module</span><span class="plain-syntax"> </span><span class="element-syntax">Stage</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax"> - - - </span><span class="element-syntax">o</span><span class="plain-syntax"> -</span>
<a href="knowledge-module/index.html" class="internal">knowledge</a><span class="plain-syntax"> </span><span class="element-syntax">module</span><span class="plain-syntax"> </span><span class="element-syntax">Stage</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax"> - - - </span><span class="element-syntax">o</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="element-syntax">Stage</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax"> - - - </span><span class="element-syntax">o</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="element-syntax">Stage</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax"> - - - </span><span class="element-syntax">o</span><span class="plain-syntax"> -</span>
<a href="imperative-module/index.html" class="internal">imperative</a><span class="plain-syntax"> </span><span class="element-syntax">module</span><span class="plain-syntax"> </span><span class="element-syntax">Stage</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span><span class="plain-syntax"> - - - </span><span class="element-syntax">o</span><span class="plain-syntax"> -</span>
<a href="runtime-module/index.html" class="internal">runtime</a><span class="plain-syntax"> </span><span class="element-syntax">module</span><span class="plain-syntax"> </span><span class="element-syntax">Stage</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span><span class="plain-syntax"> - - - </span><span class="element-syntax">o</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="element-syntax">Stage</span><span class="plain-syntax"> </span><span class="constant-syntax">5</span><span class="plain-syntax"> - - - </span><span class="element-syntax">x</span><span class="plain-syntax"> </span><span class="element-syntax">o</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="element-syntax">Stage</span><span class="plain-syntax"> </span><span class="constant-syntax">5</span><span class="plain-syntax"> - - - </span><span class="element-syntax">x</span><span class="plain-syntax"> </span><span class="element-syntax">o</span>
<a href="pipeline-module/index.html" class="internal">pipeline</a><span class="plain-syntax"> </span><span class="element-syntax">module</span><span class="plain-syntax"> </span><span class="element-syntax">Stage</span><span class="plain-syntax"> </span><span class="constant-syntax">6</span><span class="plain-syntax"> - - - </span><span class="element-syntax">x</span><span class="plain-syntax"> </span><span class="element-syntax">o</span>
<a href="final-module/index.html" class="internal">final</a><span class="plain-syntax"> </span><span class="element-syntax">module</span><span class="plain-syntax"> </span><span class="element-syntax">Stage</span><span class="plain-syntax"> </span><span class="constant-syntax">7</span><span class="plain-syntax"> - - - </span><span class="element-syntax">x</span><span class="plain-syntax"> </span><span class="element-syntax">o</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="element-syntax">Stage</span><span class="plain-syntax"> </span><span class="constant-syntax">7</span><span class="plain-syntax"> - - - </span><span class="element-syntax">x</span><span class="plain-syntax"> </span><span class="element-syntax">o</span>
<a href="linguistics-module/index.html" class="internal">linguistics</a><span class="plain-syntax"> </span><span class="element-syntax">service</span><span class="plain-syntax"> </span><span class="element-syntax">Throughout</span><span class="plain-syntax"> - </span><span class="element-syntax">o</span><span class="plain-syntax"> - </span><span class="element-syntax">x</span><span class="plain-syntax"> -</span>
<a href="calculus-module/index.html" class="internal">calculus</a><span class="plain-syntax"> </span><span class="element-syntax">service</span><span class="plain-syntax"> </span><span class="element-syntax">Throughout</span><span class="plain-syntax"> - </span><span class="element-syntax">o</span><span class="plain-syntax"> - </span><span class="element-syntax">x</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">service</span><span class="plain-syntax"> </span><span class="element-syntax">Throughout</span><span class="plain-syntax"> - </span><span class="element-syntax">o</span><span class="plain-syntax"> - </span><span class="element-syntax">x</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">service</span><span class="plain-syntax"> </span><span class="element-syntax">Throughout</span><span class="plain-syntax"> - </span><span class="element-syntax">o</span><span class="plain-syntax"> - </span><span class="element-syntax">x</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">service</span><span class="plain-syntax"> </span><span class="element-syntax">Throughout</span><span class="plain-syntax"> - </span><span class="element-syntax">o</span><span class="plain-syntax"> - </span><span class="element-syntax">x</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">service</span><span class="plain-syntax"> </span><span class="element-syntax">Throughout</span><span class="plain-syntax"> - </span><span class="element-syntax">o</span><span class="plain-syntax"> - </span><span class="element-syntax">x</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">service</span><span class="plain-syntax"> </span><span class="element-syntax">Throughout</span><span class="plain-syntax"> - </span><span class="element-syntax">o</span><span class="plain-syntax"> </span><span class="element-syntax">x</span><span class="plain-syntax"> </span><span class="element-syntax">x</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">service</span><span class="plain-syntax"> </span><span class="element-syntax">Throughout</span><span class="plain-syntax"> - </span><span class="element-syntax">o</span><span class="plain-syntax"> </span><span class="element-syntax">x</span><span class="plain-syntax"> </span><span class="element-syntax">x</span><span class="plain-syntax"> </span><span class="element-syntax">x</span>
<a href="arch-module/index.html" class="internal">arch</a><span class="plain-syntax"> </span><span class="element-syntax">service</span><span class="plain-syntax"> </span><span class="element-syntax">Throughout</span><span class="plain-syntax"> - </span><span class="element-syntax">o</span><span class="plain-syntax"> </span><span class="element-syntax">x</span><span class="plain-syntax"> </span><span class="element-syntax">x</span><span class="plain-syntax"> </span><span class="element-syntax">x</span>
<a href="html-module/index.html" class="internal">html</a><span class="plain-syntax"> </span><span class="element-syntax">service</span><span class="plain-syntax"> </span><span class="element-syntax">Throughout</span><span class="plain-syntax"> - </span><span class="element-syntax">o</span><span class="plain-syntax"> </span><span class="element-syntax">x</span><span class="plain-syntax"> </span><span class="element-syntax">x</span><span class="plain-syntax"> </span><span class="element-syntax">x</span>
<a href="../../inweb/foundation-module/index.html" class="internal">foundation</a><span class="plain-syntax"> </span><span class="element-syntax">library</span><span class="plain-syntax"> </span><span class="element-syntax">Throughout</span><span class="plain-syntax"> </span><span class="element-syntax">o</span><span class="plain-syntax"> - </span><span class="element-syntax">x</span><span class="plain-syntax"> </span><span class="element-syntax">x</span><span class="plain-syntax"> </span><span class="element-syntax">x</span>
</pre>
<p class="commentary">The executables otherwise contain only a few POSIX or Windows-related functions
for file and directory handling, and functions from the standard C library.
There are, therefore, no external dependencies.
</p>
<!--End of weave-->
</main>
</body>
</html>