1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-26 04:00:43 +03:00

Fix for bracketed negative numbers in I6 assembly inclusion bug

This commit is contained in:
Graham Nelson 2022-05-02 22:59:04 +01:00
parent 8ce998ab64
commit 31c156b2b5
76 changed files with 275 additions and 244 deletions

View file

@ -59,7 +59,7 @@ function togglePopup(material_id) {
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../services.html">Services</a></li><li><a href="index.html">arch</a></li><li><a href="index.html#2">Chapter 2: Architectures and VMs</a></li><li><b>Target Virtual Machines</b></li></ul></div>
<p class="purpose">To deal with multiple object code formats.</p>
<ul class="toc"><li><a href="2-tvm.html#SP1">&#167;1. Target VMs</a></li><li><a href="2-tvm.html#SP5">&#167;5. To and from text</a></li><li><a href="2-tvm.html#SP9">&#167;9. Architectural provisions</a></li><li><a href="2-tvm.html#SP10">&#167;10. File extension provisions</a></li><li><a href="2-tvm.html#SP13">&#167;13. Family compatibility</a></li><li><a href="2-tvm.html#SP14">&#167;14. Ootions</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="2-tvm.html#SP1">&#167;1. Target VMs</a></li><li><a href="2-tvm.html#SP5">&#167;5. To and from text</a></li><li><a href="2-tvm.html#SP9">&#167;9. Architectural provisions</a></li><li><a href="2-tvm.html#SP10">&#167;10. File extension provisions</a></li><li><a href="2-tvm.html#SP13">&#167;13. Family compatibility</a></li><li><a href="2-tvm.html#SP14">&#167;14. Options</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Target VMs. </b>For a fuller explanation of these, see <a href="P-wtmd.html" class="internal">What This Module Does</a>, but briefly:
a <a href="2-tvm.html#SP2" class="internal">target_vm</a> object represents a choice of both Inter architecture and
@ -527,7 +527,7 @@ will return the empty text.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>&#167;14. Ootions. </b>Final code-generators can call this to see what special requests were made.
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>&#167;14. Options. </b>Final code-generators can call this to see what special requests were made.
</p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -418,7 +418,7 @@ might then produce a name like <span class="extract"><span class="extract-syntax
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-hl.html#SP14" class="function-link"><span class="function-syntax">HierarchyLocations::iip</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">, -1, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>&#167;14. </b>All of the above use this comman back-end:
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>&#167;14. </b>All of the above use this command back-end:
</p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -88,9 +88,9 @@ and others still derive new names from existing ones (for example, turning
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">inter_name_generator</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ingen</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name_stem</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">no_generated</span><span class="plain-syntax">; </span><span class="comment-syntax"> relevamt only for </span><span class="extract"><span class="extract-syntax">MULTIPLE_INGEN</span></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">derived_prefix</span><span class="plain-syntax">; </span><span class="comment-syntax"> relevamt only for </span><span class="extract"><span class="extract-syntax">DERIVED_INGEN</span></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">derived_suffix</span><span class="plain-syntax">; </span><span class="comment-syntax"> relevamt only for </span><span class="extract"><span class="extract-syntax">DERIVED_INGEN</span></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">no_generated</span><span class="plain-syntax">; </span><span class="comment-syntax"> relevant only for </span><span class="extract"><span class="extract-syntax">MULTIPLE_INGEN</span></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">derived_prefix</span><span class="plain-syntax">; </span><span class="comment-syntax"> relevant only for </span><span class="extract"><span class="extract-syntax">DERIVED_INGEN</span></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">derived_suffix</span><span class="plain-syntax">; </span><span class="comment-syntax"> relevant only for </span><span class="extract"><span class="extract-syntax">DERIVED_INGEN</span></span>
<span class="plain-syntax">} </span><span class="reserved-syntax">inter_name_generator</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">inter_name_generator</span><span class="plain-syntax"> *</span><span class="function-syntax">InterNames::single_use_generator</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">InterNames::single_use_generator</span></span>:<br/><a href="1-in.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>

View file

@ -112,7 +112,7 @@ It's the caller's responsibility to check for those and act accordingly.
<span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">opaque_state</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">prim_cat</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">opaque_state</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-eis.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Reset tbe write position if we're in the middle of a switch statement</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-eis.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Reset the write position if we're in the middle of a switch statement</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-eis.html#SP1_2" class="named-paragraph-link"><span class="named-paragraph">Recursively deal with conditional compilation</span><span class="named-paragraph-number">1.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-eis.html#SP1_3" class="named-paragraph-link"><span class="named-paragraph">Traverse the tree, compiling each node</span><span class="named-paragraph-number">1.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -122,7 +122,7 @@ sense only within a switch statement, but where the schema does not itself
include the <span class="extract"><span class="extract-syntax">switch</span></span> head or tail.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Reset tbe write position if we're in the middle of a switch statement</span><span class="named-paragraph-number">1.1</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Reset the write position if we're in the middle of a switch statement</span><span class="named-paragraph-number">1.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -650,7 +650,7 @@ more natural <span class="extract"><span class="extract-syntax">{ ... }</span></
<ul class="endnotetexts"><li>This code is used in <a href="2-eis.html#SP3_1">&#167;3.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_1_5" class="paragraph-anchor"></a><b>&#167;3.1.5. </b>Note that conditional directives have already been taken care of, and that
other Inform 6 directives are not valid inside function bodies, which is the
omly part of I6 syntax covered by schemas. Therefore:
only part of I6 syntax covered by schemas. Therefore:
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Non-conditional directive</span><span class="named-paragraph-number">3.1.5</span></span><span class="comment-syntax"> =</span>

View file

@ -1249,6 +1249,8 @@ to be recognised for what they are.
<span class="plain-syntax"> </span><span class="identifier-syntax">cons</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">isn_type</span><span class="plain-syntax"> = </span><span class="constant-syntax">ASSEMBLY_ISNT</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_schema_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prev_node</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">inter_schema_token</span><span class="plain-syntax"> *</span><span class="identifier-syntax">l</span><span class="plain-syntax"> = </span><span class="identifier-syntax">f</span><span class="plain-syntax">, *</span><span class="identifier-syntax">n</span><span class="plain-syntax"> = </span><span class="identifier-syntax">l</span><span class="plain-syntax">?(</span><span class="identifier-syntax">l</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">):</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">l</span><span class="plain-syntax">; </span><span class="identifier-syntax">l</span><span class="plain-syntax">=</span><span class="identifier-syntax">n</span><span class="plain-syntax">, </span><span class="identifier-syntax">n</span><span class="plain-syntax">=</span><span class="identifier-syntax">n</span><span class="plain-syntax">?(</span><span class="identifier-syntax">n</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">):</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">n</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">l</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">material</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"("</span><span class="plain-syntax">))) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">n</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">l</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">material</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">")"</span><span class="plain-syntax">))) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">l</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ist_type</span><span class="plain-syntax"> != </span><span class="constant-syntax">WHITE_SPACE_ISTT</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_schema_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_isn</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="2-is.html#SP4" class="function-link"><span class="function-syntax">InterSchemas::new_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cons</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">parent_schema</span><span class="plain-syntax">, </span><span class="constant-syntax">EXPRESSION_ISNT</span><span class="plain-syntax">);</span>

View file

@ -78,8 +78,8 @@ greater ease and consistency.
</p>
<p class="commentary">This module needs plenty of working data, and stashes that data inside the
<span class="extract"><span class="extract-syntax">inter_tree</span></span> structure it is working on: in a compoment of that structure called
a <a href="1-bm.html#SP4" class="internal">building_site</a>. Whereas the main data ih an <span class="extract"><span class="extract-syntax">inter_tree</span></span> affects the meaning
<span class="extract"><span class="extract-syntax">inter_tree</span></span> structure it is working on: in a component of that structure called
a <a href="1-bm.html#SP4" class="internal">building_site</a>. Whereas the main data in an <span class="extract"><span class="extract-syntax">inter_tree</span></span> affects the meaning
of the tree, i.e., makes a difference as to what program the tree represents,
the contents of the <a href="1-bm.html#SP4" class="internal">building_site</a> component are only used to make it, and
are ignored by the <a href="../final-module/index.html" class="internal">final</a> code-generator.

View file

@ -82,7 +82,7 @@ which the hypothetical new position will have with respect to it:
<span class="plain-syntax">} </span><span class="reserved-syntax">inter_bookmark</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure inter_bookmark is accessed in 2/np and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>Bookmarks are used to mark positions in an Inter tree, though they are oftem
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>Bookmarks are used to mark positions in an Inter tree, though they are often
used in a way which causes them to move forwards through that tree, much as
a bookmark will migrate through a book as it is slowly read.
</p>

View file

@ -63,7 +63,7 @@ function togglePopup(material_id) {
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Nodes. </b>It's essential to be able to walk an Inter tree quickly, while movements
of nodes within the tree are relatively uncommon. So we provide every
imaginatble link. Suppose the structure is:
imaginable link. Suppose the structure is:
</p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -64,7 +64,7 @@ function togglePopup(material_id) {
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>An <a href="2-it.html#SP1" class="internal">inter_tree</a> expresses a single program: see <a href="P-wtmd.html" class="internal">What This Module Does</a>
for more. At first sight, it's a very small object, but <span class="extract"><span class="extract-syntax">root_node</span></span> leads
to a massive tree structure, and the <span class="extract"><span class="extract-syntax">inter_warehouse</span></span> and <span class="extract"><span class="extract-syntax">building_site</span></span>
compoments can also be huge. Note that the latter is managed entirely by
components can also be huge. Note that the latter is managed entirely by
the <a href="../building-module/index.html" class="internal">building</a> module, but that everything else here is ours.
</p>

View file

@ -84,7 +84,7 @@ example, suppose we have:
<p class="commentary">Here the Inter instructions C, D and E are the content of the package, which
is called "gadgets" and has the type <span class="extract"><span class="extract-syntax">_paraphernalia</span></span>. Instructions A, B, F,
G , along with the <span class="extract"><span class="extract-syntax">package</span></span> instruction itself, belong to the wider context. The
symbiol name <span class="extract"><span class="extract-syntax">^is_electrical</span></span> is visible to C, D and E, but not to A, B, F,
symbol name <span class="extract"><span class="extract-syntax">^is_electrical</span></span> is visible to C, D and E, but not to A, B, F,
and G: it belongs to the "scope" of the <span class="extract"><span class="extract-syntax">gadgets</span></span> package, and is recorded
in its private symbols table.
</p>

View file

@ -432,8 +432,8 @@ modified, which of course means looking into their defining instructions.
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InterSymbol::set_int</span><button class="popup" onclick="togglePopup('usagePopup26')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup26">Usage of <span class="code-font"><span class="function-syntax">InterSymbol::set_int</span></span>:<br/>The Constant Construct - <a href="4-tcc2.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="2-sym.html#SP15" class="function-link"><span class="function-syntax">InterSymbol::definition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="2-in.html#SP13" class="function-link"><span class="function-syntax">Inode::is</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="constant-syntax">CONSTANT_IST</span><span class="plain-syntax">)) &amp;&amp; (</span><a href="4-tcc2.html#SP11" class="function-link"><span class="function-syntax">ConstantInstruction::set_int</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">))) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Synbol $3 is undefined\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Synbol $3 cannot be set to %d\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Symbol $3 is undefined\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Symbol $3 cannot be set to %d\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"unable to set symbol"</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -465,7 +465,7 @@ there are three bad possibilities:
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-trn.html#SP4_2">&#167;4.2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP4_2_2_1" class="paragraph-anchor"></a><b>&#167;4.2.2.1. </b>For example, <span class="extract"><span class="extract-syntax">S</span></span> is wired to <span class="extract"><span class="extract-syntax">WORDSIZE</span></span> ih the origin tree, which is (let
<p class="commentary firstcommentary"><a id="SP4_2_2_1" class="paragraph-anchor"></a><b>&#167;4.2.2.1. </b>For example, <span class="extract"><span class="extract-syntax">S</span></span> is wired to <span class="extract"><span class="extract-syntax">WORDSIZE</span></span> in the origin tree, which is (let
us say) a constant equal to 4. We wire it instead to <span class="extract"><span class="extract-syntax">WORDSIZE</span></span> in the destination
tree, which will also be equal to 4 because we only ever transmigrate between
trees with the same Inter architecture.

View file

@ -137,7 +137,7 @@ reach an end. On all these symbols, <a href="2-tw2.html#SP3" class="internal">Wi
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </b>In general, we have no means of following wiring backwards: that is, given
<span class="extract"><span class="extract-syntax">B</span></span>, we cannpt easily find all the <span class="extract"><span class="extract-syntax">A</span></span> such that <span class="extract"><span class="extract-syntax">A ~~&gt; B</span></span>. What we can do is
<span class="extract"><span class="extract-syntax">B</span></span>, we cannot easily find all the <span class="extract"><span class="extract-syntax">A</span></span> such that <span class="extract"><span class="extract-syntax">A ~~&gt; B</span></span>. What we can do is
to say how many such <span class="extract"><span class="extract-syntax">A</span></span> exist, and it's useful to know when this count is 0,
because then we may be able safely to delete <span class="extract"><span class="extract-syntax">B</span></span> as no longer needed.
</p>

View file

@ -230,7 +230,7 @@ Here then is that <span class="extract"><span class="extract-syntax">printf</spa
an integer; <span class="extract"><span class="extract-syntax">%s</span></span>, a C string; <span class="extract"><span class="extract-syntax">%S</span></span>, a text stream; and three which are higher-level:
</p>
<ul class="items"><li>(a) <span class="extract"><span class="extract-syntax">%k</span></span> takes a <span class="extract"><span class="extract-syntax">kind</span></span> parameter and exoands to its weak ID;
<ul class="items"><li>(a) <span class="extract"><span class="extract-syntax">%k</span></span> takes a <span class="extract"><span class="extract-syntax">kind</span></span> parameter and expands to its weak ID;
</li><li>(b) <span class="extract"><span class="extract-syntax">%L</span></span> takes a <span class="extract"><span class="extract-syntax">local_variable</span></span> and expands to its identifier;
</li><li>(c) <span class="extract"><span class="extract-syntax">%n</span></span> takes an <span class="extract"><span class="extract-syntax">inter_name</span></span>, which expands more cautiously in a way which
stores the actual <span class="extract"><span class="extract-syntax">inter_name</span></span> reference: it is possible for two different

View file

@ -326,7 +326,7 @@ the conjunction of the two propositions had 26 variables.)
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">k</span><span class="plain-syntax"> == </span><span class="constant-syntax">26</span><span class="plain-syntax">) </span><span class="identifier-syntax">next_unused</span><span class="plain-syntax"> = </span><span class="constant-syntax">25</span><span class="plain-syntax">; </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">next_unused</span><span class="plain-syntax"> = </span><span class="identifier-syntax">k</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-bas.html#SP8">&#167;8</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>&#167;9. Getting rid of free variables. </b>Propositions with free variables are vague, and Inforn tries to minimise its
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>&#167;9. Getting rid of free variables. </b>Propositions with free variables are vague, and Inform tries to minimise its
use of them. Whole verb phrases such as "the tree is in the Courtyard" can in
general become propositions with no free variables, while descriptions such as
"open containers which are in lighted rooms" will become propositions in which
@ -368,7 +368,7 @@ room", by applying the existential quantifier to anything free.
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>&#167;11. </b>The second way is "substitution", for use when we do know the value of the
free variable we want to remove. We replace every mention of it with sone
free variable we want to remove. We replace every mention of it with some
other term: but as we shall see, this is trickier than it seems.
</p>

View file

@ -399,7 +399,7 @@ value to <span class="extract"><span class="extract-syntax">x</span></span>. Exa
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>&#167;12. Primitive operations on propositions. </b>Now for some basic operations, as shown in the following examoles:
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>&#167;12. Primitive operations on propositions. </b>Now for some basic operations, as shown in the following examples:
</p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -225,7 +225,7 @@ and <span class="extract"><span class="extract-syntax">prime(n)</span></span>.
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>&#167;6. Unary predicates. </b>The <a href="index.html" class="internal">calculus</a> module aims to be agnostic about what unary predicates will
exist. They are grouped into "families" &mdash; see <a href="2-upf.html" class="internal">Unary Predicate Families</a>
for details &mdash; which loosely group them by implementation. So, for exanple,
for details &mdash; which loosely group them by implementation. So, for example,
Inform has a family of unary predicates in the form <span class="extract"><span class="extract-syntax">calling='whatever'(x)</span></span>
which assert that <span class="extract"><span class="extract-syntax">x</span></span> represents something of a given name. But <a href="index.html" class="internal">calculus</a>
is not concerned with the details. Only one family is built in:

View file

@ -296,7 +296,7 @@ re-use it.
</p>
<p class="commentary">The mock generator makes no use of segmentation (see below) except for the
single temporary segement, which is set to <span class="extract"><span class="extract-syntax">OUT</span></span>.
single temporary segment, which is set to <span class="extract"><span class="extract-syntax">OUT</span></span>.
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -489,7 +489,7 @@ some temporary stream somewhere. For that, use the following pair:
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>&#167;14. </b>The following returns the text stream a generator should write to. Note that
if it has been "temporarily diverted" then the regiular selection is ignored.
if it has been "temporarily diverted" then the regular selection is ignored.
</p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -553,7 +553,7 @@ the pair <span class="extract"><span class="extract-syntax">val1</span></span>,
entries (the three dictionary words above). But if we compiled that directly,
then an attempt to look up the property address <span class="extract"><span class="extract-syntax">obj.&amp;name</span></span> would return the
address of the address of the array, not the address of the array itself. So
we must use the pecualiar I6 syntax here to get the right outcome.
we must use the peculiar I6 syntax here to get the right outcome.
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -655,7 +655,7 @@ each enumerative kind, and is indexed by weak kind ID.
<span class="plain-syntax"> </span><a href="2-cg.html#SP12" class="function-link"><span class="function-syntax">CodeGen::deselect</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">saved</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-i6o.html#SP13">&#167;13</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP13_3" class="paragraph-anchor"></a><b>&#167;13.3. </b>Similarly, the array <span class="extract"><span class="extract-syntax">value_property_holders</span></span> gives the VM-object nunbers for
<p class="commentary firstcommentary"><a id="SP13_3" class="paragraph-anchor"></a><b>&#167;13.3. </b>Similarly, the array <span class="extract"><span class="extract-syntax">value_property_holders</span></span> gives the VM-object numbers for
the value property holders for each enumerative kind.
</p>

View file

@ -692,7 +692,7 @@ let users handle this themselves.
</p>
<p class="commentary">Similar considerations apply to <span class="extract"><span class="Extracts-extract-syntax">@restart</span></span>. The intention of this opcode is
essentially to reboot the virtual machime and start over: here, though, we
essentially to reboot the virtual machine and start over: here, though, we
have a real machine. It's easy enough to reinitialise the process state,
but not so simple to restart execution as if from a clean process start.
</p>

View file

@ -75,7 +75,7 @@ or vice versa. The following functions must be perfect inverses of each other.
<span class="Extracts-plain-syntax">}</span>
</pre>
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.c.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>These two functioms allow external C code to read to, or write from, an
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>These two functions allow external C code to read to, or write from, an
Inform 7 variable inside a currently running process.
</p>

View file

@ -102,7 +102,7 @@ but not of <a href="../inter/index.html" class="internal">inter</a>: and this co
a typical entry might be <span class="extract"><span class="extract-syntax">Index.Pages.Kinds.Caption</span></span>. At present, we do not
take advantage of this to make a more efficient search (one could imagine
a tree structure of dictionaries): we just use these path-like identifiers
as keys to a single dictionary. If we ever need really large localisatiom
as keys to a single dictionary. If we ever need really large localisation
dictionaries, we might revisit this.
</p>

View file

@ -146,7 +146,7 @@ can be set &mdash; including none at all, but if so then commands needing a
named template, like <span class="extract"><span class="extract-syntax">website</span></span>, can't be used. Inblorb looks for any
template it needs by trying each template path in turn (the earliest
defined having the highest priority). The blurb files produced by <span class="extract"><span class="extract-syntax">inform7</span></span>
in its <span class="extract"><span class="extract-syntax">-release</span></span> mode containa chain of three template paths, for the
in its <span class="extract"><span class="extract-syntax">-release</span></span> mode contain a chain of three template paths, for the
individual project folder, the user's library of installed templates, and
the built-in stock inside the Inform user interface application,
respectively.

View file

@ -48,8 +48,8 @@ function togglePopup(material_id) {
</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/docs/index.html">inweb</a></li>
<li><a href="../../../intest/docs/index.html">intest</a></li>
<li><a href="../../../inweb/index.html">inweb</a></li>
<li><a href="../../../intest/index.html">intest</a></li>
</ul>
</nav>
@ -88,11 +88,11 @@ on; then to carry out that work, and then shut down again.
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">main</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">argc</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> **</span><span class="identifier-syntax">argv</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-mn.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Start up the modules</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-mn.html#SP2_8" class="named-paragraph-link"><span class="named-paragraph">Read the command line</span><span class="named-paragraph-number">2.8</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP10" class="function-link"><span class="function-syntax">CommandLine::play_back_log</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP10" class="function-link"><span class="function-syntax">CommandLine::play_back_log</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-mn.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Complete the list of targets</span><span class="named-paragraph-number">2.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-mn.html#SP2_3" class="named-paragraph-link"><span class="named-paragraph">Act on the targets</span><span class="named-paragraph-number">2.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-mn.html#SP2_4" class="named-paragraph-link"><span class="named-paragraph">Shut down the modules</span><span class="named-paragraph-number">2.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/docs/foundation-module/3-em.html#SP1" class="function-link"><span class="function-syntax">Errors::have_occurred</span></a><span class="plain-syntax">()) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/foundation-module/3-em.html#SP1" class="function-link"><span class="function-syntax">Errors::have_occurred</span></a><span class="plain-syntax">()) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -100,7 +100,7 @@ on; then to carry out that work, and then shut down again.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/1-fm.html#SP8" class="function-link"><span class="function-syntax">Foundation::start</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">argc</span><span class="plain-syntax">, </span><span class="identifier-syntax">argv</span><span class="plain-syntax">); </span><span class="comment-syntax"> must be started first</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/1-fm.html#SP8" class="function-link"><span class="function-syntax">Foundation::start</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">argc</span><span class="plain-syntax">, </span><span class="identifier-syntax">argv</span><span class="plain-syntax">); </span><span class="comment-syntax"> must be started first</span>
<span class="plain-syntax"> </span><a href="../words-module/1-wm.html#SP3" class="function-link"><span class="function-syntax">WordsModule::start</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../syntax-module/1-sm.html#SP3" class="function-link"><span class="function-syntax">SyntaxModule::start</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../html-module/1-hm.html#SP2" class="function-link"><span class="function-syntax">HTMLModule::start</span></a><span class="plain-syntax">();</span>
@ -152,8 +152,8 @@ error in this case.
<span class="plain-syntax"> (</span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">edition</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">work</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">genre</span><span class="plain-syntax"> == </span><span class="identifier-syntax">project_file_genre</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">count</span><span class="plain-syntax">++;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">count</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">1</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-em.html#SP7" class="function-link"><span class="function-syntax">Errors::with_text</span></a><span class="plain-syntax">(</span><span class="string-syntax">"can only work on one project bundle at a time"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/docs/foundation-module/4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">filter_text</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><a href="1-mn.html#SP2_7" class="function-link"><span class="function-syntax">Main::add_search_results_as_targets</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">filter_text</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-em.html#SP7" class="function-link"><span class="function-syntax">Errors::with_text</span></a><span class="plain-syntax">(</span><span class="string-syntax">"can only work on one project bundle at a time"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/foundation-module/4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">filter_text</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><a href="1-mn.html#SP2_7" class="function-link"><span class="function-syntax">Main::add_search_results_as_targets</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">filter_text</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-mn.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_3" class="paragraph-anchor"></a><b>&#167;2.3. </b>We make the function call <span class="extract"><span class="extract-syntax">Supervisor::go_operational</span></span> to signal to <span class="extract"><span class="extract-syntax">inbuild</span></span>
@ -169,7 +169,7 @@ that we want to start work now.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">dry_run_mode</span><span class="plain-syntax">) </span><span class="identifier-syntax">use</span><span class="plain-syntax"> = </span><span class="constant-syntax">DRY_RUN_METHODOLOGY</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">build_methodology</span><span class="plain-syntax"> *</span><span class="identifier-syntax">BM</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">path_to_tools</span><span class="plain-syntax">) </span><span class="identifier-syntax">BM</span><span class="plain-syntax"> = </span><a href="../supervisor-module/3-bm.html#SP2" class="function-link"><span class="function-syntax">BuildMethodology::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">path_to_tools</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">use</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">BM</span><span class="plain-syntax"> = </span><a href="../supervisor-module/3-bm.html#SP2" class="function-link"><span class="function-syntax">BuildMethodology::new</span></a><span class="plain-syntax">(</span><a href="../../../inweb/docs/foundation-module/3-pth.html#SP7" class="function-link"><span class="function-syntax">Pathnames::up</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">path_to_inbuild</span><span class="plain-syntax">), </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">use</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">BM</span><span class="plain-syntax"> = </span><a href="../supervisor-module/3-bm.html#SP2" class="function-link"><span class="function-syntax">BuildMethodology::new</span></a><span class="plain-syntax">(</span><a href="../../../inweb/foundation-module/3-pth.html#SP7" class="function-link"><span class="function-syntax">Pathnames::up</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">path_to_inbuild</span><span class="plain-syntax">), </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">use</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">build_trace_mode</span><span class="plain-syntax">) </span><a href="../supervisor-module/3-ib.html#SP6" class="function-link"><span class="function-syntax">IncrementalBuild::enable_trace</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><a href="1-mn.html#SP2_7" class="function-link"><span class="function-syntax">Main::list_of_targets</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">;</span>
@ -211,9 +211,9 @@ utility functions in the <a href="../supervisor-module/index.html" class="intern
<span class="plain-syntax"> </span><span class="identifier-syntax">destination_nest</span><span class="plain-syntax"> = </span><a href="../supervisor-module/5-ps2.html#SP5" class="function-link"><span class="function-syntax">Projects::materials_nest</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">proj</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-em.html#SP7" class="function-link"><span class="function-syntax">Errors::with_text</span></a><span class="plain-syntax">(</span><span class="string-syntax">"no -project in use, so ignoring -archive"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-em.html#SP7" class="function-link"><span class="function-syntax">Errors::with_text</span></a><span class="plain-syntax">(</span><span class="string-syntax">"no -project in use, so ignoring -archive"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">1</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-em.html#SP7" class="function-link"><span class="function-syntax">Errors::with_text</span></a><span class="plain-syntax">(</span><span class="string-syntax">"multiple projects in use, so ignoring -archive"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-em.html#SP7" class="function-link"><span class="function-syntax">Errors::with_text</span></a><span class="plain-syntax">(</span><span class="string-syntax">"multiple projects in use, so ignoring -archive"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
<span class="plain-syntax"> </span><a href="../supervisor-module/2-cps.html#SP13" class="function-link"><span class="function-syntax">Copies::archive</span></a><span class="plain-syntax">(</span><span class="constant-syntax">STDOUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">destination_nest</span><span class="plain-syntax">, </span><span class="identifier-syntax">BM</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
@ -237,7 +237,7 @@ utility functions in the <a href="../supervisor-module/index.html" class="intern
<span class="plain-syntax"> </span><a href="../html-module/1-hm.html#SP2" class="function-link"><span class="function-syntax">HTMLModule::end</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../syntax-module/1-sm.html#SP3" class="function-link"><span class="function-syntax">SyntaxModule::end</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../words-module/1-wm.html#SP3" class="function-link"><span class="function-syntax">WordsModule::end</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/1-fm.html#SP9" class="function-link"><span class="function-syntax">Foundation::end</span></a><span class="plain-syntax">(); </span><span class="comment-syntax"> must be ended last</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/1-fm.html#SP9" class="function-link"><span class="function-syntax">Foundation::end</span></a><span class="plain-syntax">(); </span><span class="comment-syntax"> must be ended last</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-mn.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_5" class="paragraph-anchor"></a><b>&#167;2.5. </b>Preform is the crowning jewel of the <span class="extract"><span class="extract-syntax">words</span></span> module, and parses excerpts of
@ -252,8 +252,8 @@ for use.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Main::load_preform</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Main::load_preform</span></span>:<br/><a href="1-mn.html#SP2_2">&#167;2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/3-pth.html#SP4" class="function-link"><span class="function-syntax">Pathnames::down</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">path_to_inbuild</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Tangled"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/3-fln.html#SP2" class="function-link"><span class="function-syntax">Filenames::in</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Syntax.preform"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="../../../inweb/foundation-module/3-pth.html#SP4" class="function-link"><span class="function-syntax">Pathnames::down</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">path_to_inbuild</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Tangled"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="../../../inweb/foundation-module/3-fln.html#SP2" class="function-link"><span class="function-syntax">Filenames::in</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Syntax.preform"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../words-module/4-lp.html#SP1" class="function-link"><span class="function-syntax">LoadPreform::load</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
@ -285,10 +285,10 @@ the order in which filenames are read from a directory listing.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="function-syntax">Main::list_of_targets</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Main::list_of_targets</span></span>:<br/><a href="1-mn.html#SP2_2">&#167;2.2</a>, <a href="1-mn.html#SP2_3">&#167;2.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">targets</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">targets</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">no_entries</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/2-llas.html#SP7" class="function-link"><span class="function-syntax">LinkedLists::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">targets</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">no_entries</span><span class="plain-syntax"> = </span><a href="../../../inweb/foundation-module/2-llas.html#SP7" class="function-link"><span class="function-syntax">LinkedLists::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">targets</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">no_entries</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">targets</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> **</span><span class="identifier-syntax">sorted_targets</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/2-mmr.html#SP24" class="function-link"><span class="function-syntax">Memory::calloc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">no_entries</span><span class="plain-syntax">, </span><span class="reserved-syntax">sizeof</span><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *), </span><span class="constant-syntax">EXTENSION_DICTIONARY_MREASON</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/2-mmr.html#SP24" class="function-link"><span class="function-syntax">Memory::calloc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">no_entries</span><span class="plain-syntax">, </span><span class="reserved-syntax">sizeof</span><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *), </span><span class="constant-syntax">EXTENSION_DICTIONARY_MREASON</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax">, </span><span class="identifier-syntax">targets</span><span class="plain-syntax">) </span><span class="identifier-syntax">sorted_targets</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">++] = </span><span class="identifier-syntax">C</span><span class="plain-syntax">;</span>
@ -296,7 +296,7 @@ the order in which filenames are read from a directory listing.
<span class="plain-syntax"> </span><span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">result</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;</span><span class="identifier-syntax">no_entries</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">sorted_targets</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">], </span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax">, </span><span class="identifier-syntax">result</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/2-mmr.html#SP26" class="function-link"><span class="function-syntax">Memory::I7_array_free</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sorted_targets</span><span class="plain-syntax">, </span><span class="constant-syntax">EXTENSION_DICTIONARY_MREASON</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/2-mmr.html#SP26" class="function-link"><span class="function-syntax">Memory::I7_array_free</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sorted_targets</span><span class="plain-syntax">, </span><span class="constant-syntax">EXTENSION_DICTIONARY_MREASON</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">no_entries</span><span class="plain-syntax">, </span><span class="reserved-syntax">sizeof</span><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">result</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -304,8 +304,8 @@ the order in which filenames are read from a directory listing.
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Main::add_search_results_as_targets</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Main::add_search_results_as_targets</span></span>:<br/><a href="1-mn.html#SP2_2">&#167;2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req_text</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">errors</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax"> = </span><a href="../supervisor-module/2-rqr.html#SP3" class="function-link"><span class="function-syntax">Requirements::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">req_text</span><span class="plain-syntax">, </span><span class="identifier-syntax">errors</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/docs/foundation-module/4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">errors</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-em.html#SP7" class="function-link"><span class="function-syntax">Errors::with_text</span></a><span class="plain-syntax">(</span><span class="string-syntax">"requirement malformed: %S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">errors</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/foundation-module/4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">errors</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-em.html#SP7" class="function-link"><span class="function-syntax">Errors::with_text</span></a><span class="plain-syntax">(</span><span class="string-syntax">"requirement malformed: %S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">errors</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../supervisor-module/2-nst.html#SP7" class="function-link"><span class="function-syntax">Nests::search_for</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">req</span><span class="plain-syntax">, </span><a href="../supervisor-module/1-ic.html#SP14" class="function-link"><span class="function-syntax">Supervisor::shared_nest_list</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">L</span><span class="plain-syntax">);</span>
@ -317,7 +317,7 @@ the order in which filenames are read from a directory listing.
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Main::add_directory_contents_targets</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Main::add_directory_contents_targets</span></span>:<br/><a href="1-mn.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/3-drc.html#SP3" class="function-link"><span class="function-syntax">Directories::listing</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><a href="../../../inweb/foundation-module/3-drc.html#SP3" class="function-link"><span class="function-syntax">Directories::listing</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">FILENAME</span><span class="plain-syntax">)</span>
@ -329,18 +329,18 @@ the order in which filenames are read from a directory listing.
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Main::add_file_or_path_as_target</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Main::add_file_or_path_as_target</span></span>:<br/><a href="1-mn.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">arg</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">throwing_error</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">pos</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">) - </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">dotpos</span><span class="plain-syntax"> = -1;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">pos</span><span class="plain-syntax"> = </span><a href="../../../inweb/foundation-module/4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">) - </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">dotpos</span><span class="plain-syntax"> = -1;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pos</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">, </span><span class="identifier-syntax">pos</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/docs/foundation-module/1-wp.html#SP4" class="function-link"><span class="function-syntax">Platform::is_folder_separator</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">)) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><a href="../../../inweb/foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">, </span><span class="identifier-syntax">pos</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/foundation-module/1-wp.html#SP4" class="function-link"><span class="function-syntax">Platform::is_folder_separator</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">)) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">'.'</span><span class="plain-syntax">) </span><span class="identifier-syntax">dotpos</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pos</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pos</span><span class="plain-syntax">--;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">dotpos</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/4-sm.html#SP26" class="function-link"><span class="function-syntax">Str::substr</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">, </span><a href="../../../inweb/docs/foundation-module/4-sm.html#SP10" class="function-link"><span class="function-syntax">Str::at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">, </span><span class="identifier-syntax">dotpos</span><span class="plain-syntax">+1), </span><a href="../../../inweb/docs/foundation-module/4-sm.html#SP10" class="function-link"><span class="function-syntax">Str::end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/4-sm.html#SP26" class="function-link"><span class="function-syntax">Str::substr</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">, </span><a href="../../../inweb/foundation-module/4-sm.html#SP10" class="function-link"><span class="function-syntax">Str::at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">, </span><span class="identifier-syntax">dotpos</span><span class="plain-syntax">+1), </span><a href="../../../inweb/foundation-module/4-sm.html#SP10" class="function-link"><span class="function-syntax">Str::end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">directory_status</span><span class="plain-syntax"> = </span><span class="constant-syntax">NOT_APPLICABLE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/docs/foundation-module/1-wp.html#SP4" class="function-link"><span class="function-syntax">Platform::is_folder_separator</span></a><span class="plain-syntax">(</span><a href="../../../inweb/docs/foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_last_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/4-sm.html#SP25" class="function-link"><span class="function-syntax">Str::delete_last_character</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/foundation-module/1-wp.html#SP4" class="function-link"><span class="function-syntax">Platform::is_folder_separator</span></a><span class="plain-syntax">(</span><a href="../../../inweb/foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_last_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/4-sm.html#SP25" class="function-link"><span class="function-syntax">Str::delete_last_character</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">directory_status</span><span class="plain-syntax"> = </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
@ -350,7 +350,7 @@ the order in which filenames are read from a directory listing.
<span class="plain-syntax"> </span><span class="identifier-syntax">VOID_METHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">G</span><span class="plain-syntax">, </span><span class="constant-syntax">GENRE_CLAIM_AS_COPY_MTID</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">arg</span><span class="plain-syntax">, </span><span class="identifier-syntax">ext</span><span class="plain-syntax">, </span><span class="identifier-syntax">directory_status</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">C</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">throwing_error</span><span class="plain-syntax">) </span><a href="../../../inweb/docs/foundation-module/3-em.html#SP7" class="function-link"><span class="function-syntax">Errors::with_text</span></a><span class="plain-syntax">(</span><span class="string-syntax">"unable to identify '%S'"</span><span class="plain-syntax">, </span><span class="identifier-syntax">arg</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">throwing_error</span><span class="plain-syntax">) </span><a href="../../../inweb/foundation-module/3-em.html#SP7" class="function-link"><span class="function-syntax">Errors::with_text</span></a><span class="plain-syntax">(</span><span class="string-syntax">"unable to identify '%S'"</span><span class="plain-syntax">, </span><span class="identifier-syntax">arg</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><a href="1-mn.html#SP2_6" class="function-link"><span class="function-syntax">Main::add_target</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
@ -383,52 +383,52 @@ other options to the selection defined here.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP14" class="function-link"><span class="function-syntax">CommandLine::declare_heading</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP14" class="function-link"><span class="function-syntax">CommandLine::declare_heading</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"[[Purpose]]\n\n"</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"usage: inbuild [-TASK] TARGET1 TARGET2 ...\n"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">COPY_TO_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"copy-to"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">COPY_TO_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"copy-to"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"copy target(s) to nest X"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SYNC_TO_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"sync-to"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SYNC_TO_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"sync-to"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"forcibly copy target(s) to nest X, even if prior version already there"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">BUILD_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"build"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">BUILD_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"build"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"incrementally build target(s)"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">REBUILD_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"rebuild"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">REBUILD_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"rebuild"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"completely rebuild target(s)"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">INSPECT_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"inspect"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">INSPECT_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"inspect"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"show target(s) but take no action"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">GRAPH_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"graph"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">GRAPH_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"graph"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"show dependency graph of target(s) but take no action"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">USE_NEEDS_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"use-needs"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">USE_NEEDS_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"use-needs"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"show all the extensions, kits and so on needed to use"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">BUILD_NEEDS_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"build-needs"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">BUILD_NEEDS_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"build-needs"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"show all the extensions, kits and so on needed to build"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">USE_MISSING_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"use-missing"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">USE_MISSING_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"use-missing"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"show the extensions, kits and so on which are needed to use but missing"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">BUILD_MISSING_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"build-missing"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">BUILD_MISSING_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"build-missing"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"show the extensions, kits and so on which are needed to build but missing"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">ARCHIVE_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"archive"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">ARCHIVE_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"archive"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"sync copies of all extensions, kits and so on needed for -project into Materials"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">ARCHIVE_TO_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"archive-to"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">ARCHIVE_TO_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"archive-to"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"sync copies of all extensions, kits and so on needed into nest X"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TOOLS_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"tools"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TOOLS_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"tools"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"make X the directory of intools executables, and exit developer mode"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP6" class="function-link"><span class="function-syntax">CommandLine::declare_boolean_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DRY_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"dry"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP6" class="function-link"><span class="function-syntax">CommandLine::declare_boolean_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DRY_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"dry"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"make this a dry run (print but do not execute shell commands)"</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP6" class="function-link"><span class="function-syntax">CommandLine::declare_boolean_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">BUILD_TRACE_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"build-trace"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP6" class="function-link"><span class="function-syntax">CommandLine::declare_boolean_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">BUILD_TRACE_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"build-trace"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"show verbose reasoning during -build"</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MATCHING_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"matching"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MATCHING_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"matching"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"apply to all works in nest(s) matching requirement X"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CONTENTS_OF_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"contents-of"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CONTENTS_OF_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"contents-of"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"apply to all targets in the directory X"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../supervisor-module/1-ic.html#SP4" class="function-link"><span class="function-syntax">Supervisor::declare_options</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP8" class="function-link"><span class="function-syntax">CommandLine::read</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">argc</span><span class="plain-syntax">, </span><span class="identifier-syntax">argv</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, &amp;</span><a href="1-mn.html#SP3" class="function-link"><span class="function-syntax">Main::option</span></a><span class="plain-syntax">, &amp;</span><a href="1-mn.html#SP4" class="function-link"><span class="function-syntax">Main::bareword</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP8" class="function-link"><span class="function-syntax">CommandLine::read</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">argc</span><span class="plain-syntax">, </span><span class="identifier-syntax">argv</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, &amp;</span><a href="1-mn.html#SP3" class="function-link"><span class="function-syntax">Main::option</span></a><span class="plain-syntax">, &amp;</span><a href="1-mn.html#SP4" class="function-link"><span class="function-syntax">Main::bareword</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/docs/foundation-module/2-llas.html#SP7" class="function-link"><span class="function-syntax">LinkedLists::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">unsorted_nest_list</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/foundation-module/2-llas.html#SP7" class="function-link"><span class="function-syntax">LinkedLists::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">unsorted_nest_list</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="../supervisor-module/1-ic.html#SP12" class="function-link"><span class="function-syntax">Supervisor::add_nest</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"inform7/Internal"</span><span class="plain-syntax">), </span><span class="constant-syntax">INTERNAL_NEST_TAG</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"inform7/Internal"</span><span class="plain-syntax">), </span><span class="constant-syntax">INTERNAL_NEST_TAG</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">path_to_inbuild</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/3-pth.html#SP3" class="function-link"><span class="function-syntax">Pathnames::installation_path</span></a><span class="plain-syntax">(</span><span class="string-syntax">"INBUILD_PATH"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"inbuild"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">path_to_inbuild</span><span class="plain-syntax"> = </span><a href="../../../inweb/foundation-module/3-pth.html#SP3" class="function-link"><span class="function-syntax">Pathnames::installation_path</span></a><span class="plain-syntax">(</span><span class="string-syntax">"INBUILD_PATH"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"inbuild"</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-mn.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b>Here we handle those options not handled by the <a href="../supervisor-module/index.html" class="internal">supervisor</a> module.
@ -444,23 +444,23 @@ other options to the selection defined here.
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">USE_NEEDS_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">inbuild_task</span><span class="plain-syntax"> = </span><span class="constant-syntax">USE_NEEDS_TTASK</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">BUILD_NEEDS_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">inbuild_task</span><span class="plain-syntax"> = </span><span class="constant-syntax">BUILD_NEEDS_TTASK</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ARCHIVE_TO_CLSW:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">destination_nest</span><span class="plain-syntax"> = </span><a href="../supervisor-module/2-nst.html#SP1" class="function-link"><span class="function-syntax">Nests::new</span></a><span class="plain-syntax">(</span><a href="../../../inweb/docs/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">destination_nest</span><span class="plain-syntax"> = </span><a href="../supervisor-module/2-nst.html#SP1" class="function-link"><span class="function-syntax">Nests::new</span></a><span class="plain-syntax">(</span><a href="../../../inweb/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inbuild_task</span><span class="plain-syntax"> = </span><span class="constant-syntax">ARCHIVE_TO_TTASK</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ARCHIVE_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">inbuild_task</span><span class="plain-syntax"> = </span><span class="constant-syntax">ARCHIVE_TTASK</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">USE_MISSING_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">inbuild_task</span><span class="plain-syntax"> = </span><span class="constant-syntax">USE_MISSING_TTASK</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">BUILD_MISSING_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">inbuild_task</span><span class="plain-syntax"> = </span><span class="constant-syntax">BUILD_MISSING_TTASK</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">TOOLS_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">path_to_tools</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">MATCHING_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">filter_text</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/4-sm.html#SP3" class="function-link"><span class="function-syntax">Str::duplicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">TOOLS_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">path_to_tools</span><span class="plain-syntax"> = </span><a href="../../../inweb/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">MATCHING_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">filter_text</span><span class="plain-syntax"> = </span><a href="../../../inweb/foundation-module/4-sm.html#SP3" class="function-link"><span class="function-syntax">Str::duplicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CONTENTS_OF_CLSW:</span>
<span class="plain-syntax"> </span><a href="1-mn.html#SP2_7" class="function-link"><span class="function-syntax">Main::add_directory_contents_targets</span></a><span class="plain-syntax">(</span><a href="../../../inweb/docs/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">)); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="1-mn.html#SP2_7" class="function-link"><span class="function-syntax">Main::add_directory_contents_targets</span></a><span class="plain-syntax">(</span><a href="../../../inweb/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">)); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">DRY_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">dry_run_mode</span><span class="plain-syntax"> = </span><span class="identifier-syntax">val</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">BUILD_TRACE_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">build_trace_mode</span><span class="plain-syntax"> = </span><span class="identifier-syntax">val</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">COPY_TO_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">inbuild_task</span><span class="plain-syntax"> = </span><span class="constant-syntax">COPY_TO_TTASK</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">destination_nest</span><span class="plain-syntax"> = </span><a href="../supervisor-module/2-nst.html#SP1" class="function-link"><span class="function-syntax">Nests::new</span></a><span class="plain-syntax">(</span><a href="../../../inweb/docs/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">destination_nest</span><span class="plain-syntax"> = </span><a href="../supervisor-module/2-nst.html#SP1" class="function-link"><span class="function-syntax">Nests::new</span></a><span class="plain-syntax">(</span><a href="../../../inweb/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">SYNC_TO_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">inbuild_task</span><span class="plain-syntax"> = </span><span class="constant-syntax">SYNC_TO_TTASK</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">destination_nest</span><span class="plain-syntax"> = </span><a href="../supervisor-module/2-nst.html#SP1" class="function-link"><span class="function-syntax">Nests::new</span></a><span class="plain-syntax">(</span><a href="../../../inweb/docs/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">destination_nest</span><span class="plain-syntax"> = </span><a href="../supervisor-module/2-nst.html#SP1" class="function-link"><span class="function-syntax">Nests::new</span></a><span class="plain-syntax">(</span><a href="../../../inweb/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><a href="../supervisor-module/1-ic.html#SP7" class="function-link"><span class="function-syntax">Supervisor::option</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="identifier-syntax">arg</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">);</span>

View file

@ -46,8 +46,8 @@
</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/docs/index.html">inweb</a></li>
<li><a href="../../../intest/docs/index.html">intest</a></li>
<li><a href="../../../inweb/index.html">inweb</a></li>
<li><a href="../../../intest/index.html">intest</a></li>
</ul>
</nav>

View file

@ -40,8 +40,8 @@
</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/docs/index.html">inweb</a></li>
<li><a href="../../../intest/docs/index.html">intest</a></li>
<li><a href="../../../inweb/index.html">inweb</a></li>
<li><a href="../../../intest/index.html">intest</a></li>
</ul>
</nav>

View file

@ -41,8 +41,8 @@
</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/docs/index.html">inweb</a></li>
<li><a href="../../../intest/docs/index.html">intest</a></li>
<li><a href="../../../inweb/index.html">inweb</a></li>
<li><a href="../../../intest/index.html">intest</a></li>
</ul>
</nav>
@ -266,14 +266,14 @@ will do: they mean that this is (the best) version Inbuild has access to.
They're given because two different versions of the same extension might
make different choices about which other extensions to include. We can say
that version 3 of Menus wants to have Basic Screen Effects, but maybe someday
tbere will be a version 4 which doesn't need it.
there will be a version 4 which doesn't need it.
</p>
<p class="commentary">Another issue to watch out for is that a copy may use different other copies
when compiled to different virtual machines. For example, an extension can
contain a heading of material "for Glulx only", and that heading might
comtain a line which includes another extension X. If so, then we use X on
Glulx but not on other architectures. We can also flag materual as being for
Glulx but not on other architectures. We can also flag material as being for
release only, or for debugging only.
</p>
@ -327,7 +327,7 @@ but also how to perform that build.
<p class="commentary">As noted above, not everything needs building. Extensions do not, in particular,
so running <span class="extract"><span class="ConsoleText-extract-syntax">-build</span></span> on one will do nothing. Kits do need building: what this
does is to "assimilate" the Unform 6-notation source files inside the kit into
does is to "assimilate" the Inform 6-notation source files inside the kit into
binary files of Inter, one for each possible architecture.
</p>
@ -337,7 +337,7 @@ binary files of Inter, one for each possible architecture.
<pre class="ConsoleText-displayed-code all-displayed-code code-font">
<span class="ConsoleText-plain-syntax"> </span><span class="ConsoleText-element-syntax">$</span><span class="ConsoleText-plain-syntax"> </span><span class="ConsoleText-function-syntax">inbuild/Tangled/inbuild</span><span class="ConsoleText-identifier-syntax"> -build</span><span class="ConsoleText-plain-syntax"> Example.inform</span>
</pre>
<p class="commentary">then Inbuild will first build everthing needed to build the Example story
<p class="commentary">then Inbuild will first build everything needed to build the Example story
file, including everything needed to use the things needed to build it, and
so on; and then will build Example itself. As with the Unix utility <span class="extract"><span class="ConsoleText-extract-syntax">make</span></span>,
this is an incremental process, and looks at the timestamps of files to see
@ -381,7 +381,7 @@ specify path <span class="extract"><span class="ConsoleText-extract-syntax">P</s
</p>
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>&#167;12. Specifying what to act on. </b>In all of the examples above, Inbuild is given just one copy to act on.
(That action may end up invplving lots of other copies, but only one is
(That action may end up involving lots of other copies, but only one is
mentioned on the command line.) In fact it's legal to give a list of
copies to work on, one at a time, except that only one of those copies
can be an Inform project. Multiple extensions, or kits, are fine.
@ -463,7 +463,7 @@ when it's used as an app.
five containers hold website templates (used by Inblorb), Inter pipelines,
kits, language definitions, and extensions. In the case of extensions, where
there may be very many in total, a further level of subdirectory is used
for the authpr's name. Thus:
for the author's name. Thus:
</p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -38,8 +38,8 @@
</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/docs/index.html">inweb</a></li>
<li><a href="../../../intest/docs/index.html">intest</a></li>
<li><a href="../../../inweb/index.html">inweb</a></li>
<li><a href="../../../intest/index.html">intest</a></li>
</ul>
</nav>
@ -112,7 +112,7 @@
</li>
<li>
<p class="moduleentry">
<a href="../../../inweb/docs/foundation-module/index.html"><spon class="sectiontitle">inweb/foundation</span></a>
<a href="../../../inweb/foundation-module/index.html"><spon class="sectiontitle">inweb/foundation</span></a>
- <span class="sectionpurpose">A library of utility functions for command-line tools.</span></p>
</li>
</ul>

View file

@ -89,7 +89,7 @@ annotated.
<span class="plain-syntax">} </span><span class="reserved-syntax">simplified_connector</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure simplified_scene is accessed in 2/ir, 3/pe2 and here.</li><li>The structure simplified_end is accessed in 3/pe2 and here.</li><li>The structure simplified_connector is accessed in 3/pe2 and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>This three-deck structure of objects matches a similar hiersrchy of Inter
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>This three-deck structure of objects matches a similar hierarchy of Inter
packages, where <span class="extract"><span class="extract-syntax">_scene_connector</span></span> packages are inside <span class="extract"><span class="extract-syntax">_scene_end</span></span> packages
which are inside <span class="extract"><span class="extract-syntax">_scene</span></span> packages.
</p>
@ -130,7 +130,7 @@ alphabetical order.
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </b>The following returns a valid <span class="extract"><span class="extract-syntax">simplified_scene</span></span> for each <span class="extract"><span class="extract-syntax">_scene</span></span> package,
tpgether with its connectors and ends.
together with its connectors and ends.
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -224,7 +224,7 @@ tpgether with its connectors and ends.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Metadata::optional_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">se</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">end_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^rulebook"</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. </b>A connector leads, of course, to another scene. Determiming that is quite
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. </b>A connector leads, of course, to another scene. Determining that is quite
slow, but ww cache the result so that it must only be done once.
</p>

View file

@ -80,7 +80,7 @@ pages. For example:
<span class="plain-syntax">element Vl</span>
</pre>
<p class="commentary">declares a new index page with leafname <span class="extract"><span class="extract-syntax">Kinds.html</span></span>, and with the highlight
colour (in CSS hexadecimal style) <span class="extract"><span class="extract-syntax">e9cf08</span></span>; and then declzres that it contains
colour (in CSS hexadecimal style) <span class="extract"><span class="extract-syntax">e9cf08</span></span>; and then declares that it contains
the three elements <span class="extract"><span class="extract-syntax">Ch</span></span>, <span class="extract"><span class="extract-syntax">Ar</span></span> and <span class="extract"><span class="extract-syntax">Vl</span></span>, in that order. Note that this file does
not contain any user-facing text: all of that comes from <a href="../html-module/2-lcl.html" class="internal">Localisation (in html)</a>.
</p>

View file

@ -473,7 +473,7 @@ map connection stripe (3 pixels wide) passes through a cell corner.
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. Nested HTML Tables. </b>In 2010 it is considered something of a heresy to be still doing web page
layout using nested tables - supposedly, CSS is now strong enough for all
our needs - but the map is unusually well suited to a table approach since
it consists, in the end, of tessalations of rectangles.
it consists, in the end, of tessellations of rectangles.
</p>
<p class="commentary">Here's the code we will use to create each HTML table.

View file

@ -76,7 +76,7 @@ with specific numbered files of HTML documentation.
<span class="plain-syntax"> </span><a href="3-gi.html#SP5" class="function-link"><span class="function-syntax">Indexes::index_notify_of_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">symbol_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. Cross-references file. </b>Until January 2020, Inform managed cross-references to its dcumentation in a
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. Cross-references file. </b>Until January 2020, Inform managed cross-references to its documentation in a
clumsy way, with explicit sentences such as:
</p>

View file

@ -370,7 +370,7 @@ syntax for Inform phrases.
</p>
<p class="commentary"><span class="extract"><span class="extract-syntax">javascript</span></span> can be <span class="extract"><span class="extract-syntax">yes</span></span> or <span class="extract"><span class="extract-syntax">no</span></span>. The default is <span class="extract"><span class="extract-syntax">yes</span></span>. This indicates
whetber Indoc is allowed to compile Javascript, or has to stick to inactive
whether Indoc is allowed to compile Javascript, or has to stick to inactive
HTML.
</p>

View file

@ -301,10 +301,10 @@ values, and at present Preform return values are <span class="extract"><span cla
</pre>
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>&#167;11. Axes. </b>We can think of a combination of the seven grammatical attributes above as
being like a position in seven-dimensional space, with each being a coordinate
on one of these sevem axes.
on one of these seven axes.
</p>
<p class="commentary">In practice, we're oftem interested in only a few of the seven. Nouns, for
<p class="commentary">In practice, we're often interested in only a few of the seven. Nouns, for
instance, do not have tenses; verbs do not have cases. It's convenient to
represent the seven axes by the following constants, so that an arbitrary
sum of these can represent a set of things we're interested in:

View file

@ -61,7 +61,7 @@ function togglePopup(material_id) {
<ul class="toc"><li><a href="3-lc2.html#SP1">&#167;1. Cluster</a></li><li><a href="3-lc2.html#SP5">&#167;5. Plural fixing</a></li><li><a href="3-lc2.html#SP6">&#167;6. Searching declensions</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Cluster. </b>A cluster is a linked list of declensions, annotated with lingistic roles. For
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Cluster. </b>A cluster is a linked list of declensions, annotated with linguistic roles. For
example, the cluster of forms for the common noun "man" might be:
</p>

View file

@ -48,8 +48,8 @@ function togglePopup(material_id) {
</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/docs/index.html">inweb</a></li>
<li><a href="../../../intest/docs/index.html">intest</a></li>
<li><a href="../../../inweb/index.html">inweb</a></li>
<li><a href="../../../intest/index.html">intest</a></li>
</ul>
</nav>
@ -79,7 +79,7 @@ function togglePopup(material_id) {
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tracing</span><span class="plain-syntax"> = </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Main::add_pipeline_variable</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Main::add_pipeline_variable</span></span>:<br/><a href="1-mn.html#SP2_3">&#167;2.3</a>, <a href="1-mn.html#SP3_1">&#167;3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">value</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/4-sm.html#SP17" class="function-link"><span class="function-syntax">Str::copy</span></a><span class="plain-syntax">(</span><a href="../../../inweb/docs/foundation-module/2-dct.html#SP9" class="function-link"><span class="function-syntax">Dictionaries::create_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pipeline_vars</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">), </span><span class="identifier-syntax">value</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/4-sm.html#SP17" class="function-link"><span class="function-syntax">Str::copy</span></a><span class="plain-syntax">(</span><a href="../../../inweb/foundation-module/2-dct.html#SP9" class="function-link"><span class="function-syntax">Dictionaries::create_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pipeline_vars</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">), </span><span class="identifier-syntax">value</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Main::add_pipeline_variable_from_filename</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Main::add_pipeline_variable_from_filename</span></span>:<br/><a href="1-mn.html#SP2_3">&#167;2.3</a>, <a href="1-mn.html#SP2_4">&#167;2.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">fullname</span><span class="plain-syntax">)</span>
@ -106,7 +106,7 @@ also done with a pipeline.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">kit_to_build</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="1-mn.html#SP2_3" class="named-paragraph-link"><span class="named-paragraph">Select the build-kit pipeline</span><span class="named-paragraph-number">2.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-mn.html#SP2_4" class="named-paragraph-link"><span class="named-paragraph">Run the pipeline</span><span class="named-paragraph-number">2.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-mn.html#SP2_5" class="named-paragraph-link"><span class="named-paragraph">Shut down the modules</span><span class="named-paragraph-number">2.5</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/docs/foundation-module/3-em.html#SP1" class="function-link"><span class="function-syntax">Errors::have_occurred</span></a><span class="plain-syntax">()) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/foundation-module/3-em.html#SP1" class="function-link"><span class="function-syntax">Errors::have_occurred</span></a><span class="plain-syntax">()) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -114,7 +114,7 @@ also done with a pipeline.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/1-fm.html#SP8" class="function-link"><span class="function-syntax">Foundation::start</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">argc</span><span class="plain-syntax">, </span><span class="identifier-syntax">argv</span><span class="plain-syntax">); </span><span class="comment-syntax"> must be started first</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/1-fm.html#SP8" class="function-link"><span class="function-syntax">Foundation::start</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">argc</span><span class="plain-syntax">, </span><span class="identifier-syntax">argv</span><span class="plain-syntax">); </span><span class="comment-syntax"> must be started first</span>
<span class="plain-syntax"> </span><a href="../arch-module/1-am.html#SP3" class="function-link"><span class="function-syntax">ArchModule::start</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../bytecode-module/1-bm.html#SP3" class="function-link"><span class="function-syntax">BytecodeModule::start</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../building-module/1-bm2.html#SP3" class="function-link"><span class="function-syntax">BuildingModule::start</span></a><span class="plain-syntax">();</span>
@ -129,7 +129,7 @@ also done with a pipeline.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_file_list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">filename</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pipeline_vars</span><span class="plain-syntax"> = </span><a href="../pipeline-module/2-pp.html#SP11" class="function-link"><span class="function-syntax">ParsingPipelines::basic_dictionary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"output.i6"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_path</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"inform7/Internal"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_path</span><span class="plain-syntax"> = </span><a href="../../../inweb/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"inform7/Internal"</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-mn.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_3" class="paragraph-anchor"></a><b>&#167;2.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Select the build-kit pipeline</span><span class="named-paragraph-number">2.3</span></span><span class="comment-syntax"> =</span>
@ -137,14 +137,14 @@ also done with a pipeline.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_architecture</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax"> = </span><a href="../pipeline-module/1-pm.html#SP4" class="function-link"><span class="function-syntax">PipelineModule::get_architecture</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">A</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><a href="../../../inweb/docs/foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"no -architecture given"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">A</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><a href="../../../inweb/foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"no -architecture given"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">path_to_pipelines</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/3-pth.html#SP4" class="function-link"><span class="function-syntax">Pathnames::down</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">path_to_inter</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Pipelines"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/3-fln.html#SP2" class="function-link"><span class="function-syntax">Filenames::in</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">path_to_pipelines</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"build-kit.interpipeline"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">path_to_pipelines</span><span class="plain-syntax"> = </span><a href="../../../inweb/foundation-module/3-pth.html#SP4" class="function-link"><span class="function-syntax">Pathnames::down</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">path_to_inter</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Pipelines"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax"> = </span><a href="../../../inweb/foundation-module/3-fln.html#SP2" class="function-link"><span class="function-syntax">Filenames::in</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">path_to_pipelines</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"build-kit.interpipeline"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pipeline_as_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="1-mn.html#SP1" class="function-link"><span class="function-syntax">Main::add_pipeline_variable</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"*kit"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-pth.html#SP7" class="function-link"><span class="function-syntax">Pathnames::directory_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">kit_to_build</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-pth.html#SP7" class="function-link"><span class="function-syntax">Pathnames::directory_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">kit_to_build</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="1-mn.html#SP1" class="function-link"><span class="function-syntax">Main::add_pipeline_variable_from_filename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"*out"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../arch-module/2-arc.html#SP4" class="function-link"><span class="function-syntax">Architectures::canonical_binary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">kit_to_build</span><span class="plain-syntax">, </span><span class="identifier-syntax">A</span><span class="plain-syntax">));</span>
</pre>
@ -154,19 +154,19 @@ also done with a pipeline.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">pipeline_as_text</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"-pipeline-text and -pipeline-file are mutually exclusive"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/docs/foundation-module/4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">output_format</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">output_format</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"Text"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"-pipeline-text and -pipeline-file are mutually exclusive"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/foundation-module/4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">output_format</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">output_format</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"Text"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax"> = </span><a href="../arch-module/2-tvm.html#SP6" class="function-link"><span class="function-syntax">TargetVMs::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">output_format</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VM</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><a href="../../../inweb/docs/foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"unrecognised compilation -format"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VM</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><a href="../../../inweb/foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"unrecognised compilation -format"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_architecture</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax"> = </span><a href="../pipeline-module/1-pm.html#SP4" class="function-link"><span class="function-syntax">PipelineModule::get_architecture</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">A</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="../pipeline-module/1-pm.html#SP4" class="function-link"><span class="function-syntax">PipelineModule::set_architecture</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><a href="../arch-module/2-arc.html#SP5" class="function-link"><span class="function-syntax">Architectures::to_codename</span></a><span class="plain-syntax">(</span><a href="../arch-module/2-tvm.html#SP11" class="function-link"><span class="function-syntax">TargetVMs::get_architecture</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">)));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><a href="../bytecode-module/2-it.html#SP2" class="function-link"><span class="function-syntax">InterTree::new</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/docs/foundation-module/2-llas.html#SP7" class="function-link"><span class="function-syntax">LinkedLists::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inter_file_list</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/docs/foundation-module/2-llas.html#SP7" class="function-link"><span class="function-syntax">LinkedLists::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inter_file_list</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">1</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"only one file of Inter can be supplied"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/foundation-module/2-llas.html#SP7" class="function-link"><span class="function-syntax">LinkedLists::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inter_file_list</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/foundation-module/2-llas.html#SP7" class="function-link"><span class="function-syntax">LinkedLists::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inter_file_list</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">1</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"only one file of Inter can be supplied"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_file_list</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="1-mn.html#SP1" class="function-link"><span class="function-syntax">Main::add_pipeline_variable_from_filename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"*in"</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">);</span>
@ -188,16 +188,16 @@ also done with a pipeline.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SS</span><span class="plain-syntax"> = </span><a href="../pipeline-module/2-pp.html#SP5" class="function-link"><span class="function-syntax">ParsingPipelines::from_file</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax">, </span><span class="identifier-syntax">pipeline_vars</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">SS</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><a href="../../../inweb/docs/foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"pipeline could not be parsed"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">SS</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><a href="../../../inweb/foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"pipeline could not be parsed"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pipeline_as_text</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SS</span><span class="plain-syntax"> = </span><a href="../pipeline-module/2-pp.html#SP5" class="function-link"><span class="function-syntax">ParsingPipelines::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pipeline_as_text</span><span class="plain-syntax">, </span><span class="identifier-syntax">pipeline_vars</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">SS</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><a href="../../../inweb/docs/foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"pipeline could not be parsed"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">SS</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><a href="../../../inweb/foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"pipeline could not be parsed"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">output_file</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SS</span><span class="plain-syntax"> = </span><a href="../pipeline-module/2-pp.html#SP5" class="function-link"><span class="function-syntax">ParsingPipelines::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"read &lt;- *in, generate -&gt; *out"</span><span class="plain-syntax">, </span><span class="identifier-syntax">pipeline_vars</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">SS</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><a href="../../../inweb/docs/foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"pipeline could not be parsed"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/docs/foundation-module/2-llas.html#SP7" class="function-link"><span class="function-syntax">LinkedLists::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inter_file_list</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">SS</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><a href="../../../inweb/foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"pipeline could not be parsed"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/foundation-module/2-llas.html#SP7" class="function-link"><span class="function-syntax">LinkedLists::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inter_file_list</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SS</span><span class="plain-syntax"> = </span><a href="../pipeline-module/2-pp.html#SP5" class="function-link"><span class="function-syntax">ParsingPipelines::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"read &lt;- *in"</span><span class="plain-syntax">, </span><span class="identifier-syntax">pipeline_vars</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">SS</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><a href="../../../inweb/docs/foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"pipeline could not be parsed"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">SS</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><a href="../../../inweb/foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"pipeline could not be parsed"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-mn.html#SP2_4">&#167;2.4</a>.</li></ul>
@ -211,7 +211,7 @@ also done with a pipeline.
<span class="plain-syntax"> </span><a href="../final-module/1-fm2.html#SP3" class="function-link"><span class="function-syntax">FinalModule::end</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../arch-module/1-am.html#SP3" class="function-link"><span class="function-syntax">ArchModule::end</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../index-module/1-im.html#SP2" class="function-link"><span class="function-syntax">IndexModule::end</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/1-fm.html#SP9" class="function-link"><span class="function-syntax">Foundation::end</span></a><span class="plain-syntax">(); </span><span class="comment-syntax"> must be ended last</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/1-fm.html#SP9" class="function-link"><span class="function-syntax">Foundation::end</span></a><span class="plain-syntax">(); </span><span class="comment-syntax"> must be ended last</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-mn.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_6" class="paragraph-anchor"></a><b>&#167;2.6. Command line. </b></p>
@ -235,40 +235,40 @@ also done with a pipeline.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP14" class="function-link"><span class="function-syntax">CommandLine::declare_heading</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP14" class="function-link"><span class="function-syntax">CommandLine::declare_heading</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"[[Purpose]]\n\n"</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"usage: inter file1 file2 ... [options]\n"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">O_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"o"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">O_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"o"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"code-generate to file X"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP6" class="function-link"><span class="function-syntax">CommandLine::declare_textual_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">FORMAT_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"format"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP6" class="function-link"><span class="function-syntax">CommandLine::declare_textual_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">FORMAT_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"format"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"code-generate -o output to format X (default is Text)"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PIPELINE_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"pipeline-text"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PIPELINE_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"pipeline-text"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"specify pipeline textually, with X being a comma-separated list of stages"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PIPELINE_FILE_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"pipeline-file"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PIPELINE_FILE_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"pipeline-file"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"specify pipeline as file X"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PIPELINE_VARIABLE_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"variable"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PIPELINE_VARIABLE_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"variable"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"set pipeline variable X (in form name=value)"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DOMAIN_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"domain"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DOMAIN_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"domain"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"specify folder to read/write inter files from/to"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">INTERNAL_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"internal"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">INTERNAL_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"internal"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"specify folder of internal Inform resources"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">ARCHITECTURE_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"architecture"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">ARCHITECTURE_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"architecture"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"generate Inter with architecture X"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">BUILD_KIT_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"build-kit"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">BUILD_KIT_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"build-kit"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"build Inter kit X for the current architecture"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CONSTRUCTS_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"constructs"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CONSTRUCTS_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"constructs"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"print out table of all constructs in the Inter language"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">ANNOTATIONS_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"annotations"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">ANNOTATIONS_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"annotations"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"print out table of all symbol annotations in the Inter language"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PRIMITIVES_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"primitives"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PRIMITIVES_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"primitives"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"print out table of all primitive invocations in the Inter language"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP6" class="function-link"><span class="function-syntax">CommandLine::declare_boolean_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TRACE_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"trace"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP6" class="function-link"><span class="function-syntax">CommandLine::declare_boolean_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TRACE_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"trace"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"print out all pipeline steps as they are followed"</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP8" class="function-link"><span class="function-syntax">CommandLine::read</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">argc</span><span class="plain-syntax">, </span><span class="identifier-syntax">argv</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, &amp;</span><a href="1-mn.html#SP3" class="function-link"><span class="function-syntax">Main::respond</span></a><span class="plain-syntax">, &amp;</span><a href="1-mn.html#SP4" class="function-link"><span class="function-syntax">Main::add_file</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP8" class="function-link"><span class="function-syntax">CommandLine::read</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">argc</span><span class="plain-syntax">, </span><span class="identifier-syntax">argv</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, &amp;</span><a href="1-mn.html#SP3" class="function-link"><span class="function-syntax">Main::respond</span></a><span class="plain-syntax">, &amp;</span><a href="1-mn.html#SP4" class="function-link"><span class="function-syntax">Main::add_file</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">path_to_inter</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/3-pth.html#SP3" class="function-link"><span class="function-syntax">Pathnames::installation_path</span></a><span class="plain-syntax">(</span><span class="string-syntax">"INTER_PATH"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"inter"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">path_to_inter</span><span class="plain-syntax"> = </span><a href="../../../inweb/foundation-module/3-pth.html#SP3" class="function-link"><span class="function-syntax">Pathnames::installation_path</span></a><span class="plain-syntax">(</span><span class="string-syntax">"INTER_PATH"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"inter"</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-mn.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b></p>
@ -276,17 +276,17 @@ also done with a pipeline.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Main::respond</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Main::respond</span></span>:<br/><a href="1-mn.html#SP2_6">&#167;2.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">arg</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">state</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">id</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">O_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">output_file</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/3-fln.html#SP3" class="function-link"><span class="function-syntax">Filenames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">FORMAT_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">output_format</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/4-sm.html#SP3" class="function-link"><span class="function-syntax">Str::duplicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PIPELINE_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">pipeline_as_text</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/4-sm.html#SP3" class="function-link"><span class="function-syntax">Str::duplicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PIPELINE_FILE_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/3-fln.html#SP3" class="function-link"><span class="function-syntax">Filenames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">O_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">output_file</span><span class="plain-syntax"> = </span><a href="../../../inweb/foundation-module/3-fln.html#SP3" class="function-link"><span class="function-syntax">Filenames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">FORMAT_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">output_format</span><span class="plain-syntax"> = </span><a href="../../../inweb/foundation-module/4-sm.html#SP3" class="function-link"><span class="function-syntax">Str::duplicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PIPELINE_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">pipeline_as_text</span><span class="plain-syntax"> = </span><a href="../../../inweb/foundation-module/4-sm.html#SP3" class="function-link"><span class="function-syntax">Str::duplicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PIPELINE_FILE_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax"> = </span><a href="../../../inweb/foundation-module/3-fln.html#SP3" class="function-link"><span class="function-syntax">Filenames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PIPELINE_VARIABLE_CLSW:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-mn.html#SP3_1" class="named-paragraph-link"><span class="named-paragraph">Add a pipeline variable to the dictionary</span><span class="named-paragraph-number">3.1</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">DOMAIN_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">domain_path</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">BUILD_KIT_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">kit_to_build</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">INTERNAL_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_path</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">DOMAIN_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">domain_path</span><span class="plain-syntax"> = </span><a href="../../../inweb/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">BUILD_KIT_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">kit_to_build</span><span class="plain-syntax"> = </span><a href="../../../inweb/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">INTERNAL_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_path</span><span class="plain-syntax"> = </span><a href="../../../inweb/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ARCHITECTURE_CLSW:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../pipeline-module/1-pm.html#SP4" class="function-link"><span class="function-syntax">PipelineModule::set_architecture</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">) == </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"no such -architecture"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"no such -architecture"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CONSTRUCTS_CLSW:</span><span class="plain-syntax"> </span><a href="../bytecode-module/3-ic.html#SP16" class="function-link"><span class="function-syntax">InterInstruction::show_constructs</span></a><span class="plain-syntax">(</span><span class="constant-syntax">STDOUT</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ANNOTATIONS_CLSW:</span><span class="plain-syntax"> </span><a href="../bytecode-module/2-ann.html#SP5" class="function-link"><span class="function-syntax">SymbolAnnotation::show_annotations</span></a><span class="plain-syntax">(</span><span class="constant-syntax">STDOUT</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
@ -299,24 +299,24 @@ also done with a pipeline.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">match_results</span><span class="plain-syntax"> </span><span class="identifier-syntax">mr</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/4-pm.html#SP9" class="function-link"><span class="function-syntax">Regexp::create_mr</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/docs/foundation-module/4-pm.html#SP10" class="function-link"><span class="function-syntax">Regexp::match</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">arg</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(%c+)=(%c+)"</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/docs/foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_first_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">) != </span><span class="character-syntax">'*'</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"-variable names must begin with '*'"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">match_results</span><span class="plain-syntax"> </span><span class="identifier-syntax">mr</span><span class="plain-syntax"> = </span><a href="../../../inweb/foundation-module/4-pm.html#SP9" class="function-link"><span class="function-syntax">Regexp::create_mr</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/foundation-module/4-pm.html#SP10" class="function-link"><span class="function-syntax">Regexp::match</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">arg</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(%c+)=(%c+)"</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_first_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">) != </span><span class="character-syntax">'*'</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"-variable names must begin with '*'"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><a href="1-mn.html#SP1" class="function-link"><span class="function-syntax">Main::add_pipeline_variable</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[1]);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"-variable should take the form 'name=value'"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"-variable should take the form 'name=value'"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/4-pm.html#SP9" class="function-link"><span class="function-syntax">Regexp::dispose_of</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/4-pm.html#SP9" class="function-link"><span class="function-syntax">Regexp::dispose_of</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-mn.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Main::add_file</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Main::add_file</span></span>:<br/><a href="1-mn.html#SP2_6">&#167;2.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">arg</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">state</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/3-fln.html#SP3" class="function-link"><span class="function-syntax">Filenames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><a href="../../../inweb/foundation-module/3-fln.html#SP3" class="function-link"><span class="function-syntax">Filenames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_file_list</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -45,8 +45,8 @@
</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/docs/index.html">inweb</a></li>
<li><a href="../../../intest/docs/index.html">intest</a></li>
<li><a href="../../../inweb/index.html">inweb</a></li>
<li><a href="../../../intest/index.html">intest</a></li>
</ul>
</nav>

View file

@ -45,8 +45,8 @@
</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/docs/index.html">inweb</a></li>
<li><a href="../../../intest/docs/index.html">intest</a></li>
<li><a href="../../../inweb/index.html">inweb</a></li>
<li><a href="../../../intest/index.html">intest</a></li>
</ul>
</nav>

View file

@ -40,8 +40,8 @@
</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/docs/index.html">inweb</a></li>
<li><a href="../../../intest/docs/index.html">intest</a></li>
<li><a href="../../../inweb/index.html">inweb</a></li>
<li><a href="../../../intest/index.html">intest</a></li>
</ul>
</nav>

View file

@ -46,8 +46,8 @@
</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/docs/index.html">inweb</a></li>
<li><a href="../../../intest/docs/index.html">intest</a></li>
<li><a href="../../../inweb/index.html">inweb</a></li>
<li><a href="../../../intest/index.html">intest</a></li>
</ul>
</nav>

View file

@ -40,8 +40,8 @@
</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/docs/index.html">inweb</a></li>
<li><a href="../../../intest/docs/index.html">intest</a></li>
<li><a href="../../../inweb/index.html">inweb</a></li>
<li><a href="../../../intest/index.html">intest</a></li>
</ul>
</nav>
@ -205,7 +205,7 @@ is via the following.
the storage referred to. Values on the stack have unchecked kinds: it's up to
the author not to pull an inappropriate value.
</li></ul>
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>&#167;10. Accessing storage. </b>Here the <span class="extract"><span class="extract-syntax">ref</span></span> term is a refernce to a piece of storage: a property of an
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>&#167;10. Accessing storage. </b>Here the <span class="extract"><span class="extract-syntax">ref</span></span> term is a reference to a piece of storage: a property of an
instance, or a global variable, or an entry in memory, for example.
</p>
@ -323,7 +323,7 @@ comes at the end of each iteration. Note that this is do/until, not do/while.
</li><li>(d) <span class="extract"><span class="extract-syntax">primitive !objectloopx ref val code -&gt; void</span></span>. A loop over instances,
stored in the variable <span class="extract"><span class="extract-syntax">ref</span></span>, of the kind of object <span class="extract"><span class="extract-syntax">val</span></span>.
</li><li>(e) <span class="extract"><span class="extract-syntax">primitive !objectloop ref val val code -&gt; void</span></span>. A more general form,
where the secomd <span class="extract"><span class="extract-syntax">val</span></span> is a condition to be evaluated which decides whether
where the second <span class="extract"><span class="extract-syntax">val</span></span> is a condition to be evaluated which decides whether
to execute the code for given <span class="extract"><span class="extract-syntax">ref</span></span> value.
</li></ul>
<p class="commentary">A switch statement takes a value, and then executes at most one of an
@ -389,7 +389,7 @@ assembly language instead. This may eventually go, too.
<p class="commentary">And, lastly, the lowest-level way to travel:
</p>
<ul class="items"><li>(a) <span class="extract"><span class="extract-syntax">primitive !jump lab -&gt; void</span></span>. Jumo to this label in the current function.
<ul class="items"><li>(a) <span class="extract"><span class="extract-syntax">primitive !jump lab -&gt; void</span></span>. Jump to this label in the current function.
</li></ul>
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>&#167;15. Interactive fiction-only primitives. </b>The following would make no sense in a general-purpose program. Most mirror
very low-level I6 features. First, the spatial containment object tree:

View file

@ -41,8 +41,8 @@
</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/docs/index.html">inweb</a></li>
<li><a href="../../../intest/docs/index.html">intest</a></li>
<li><a href="../../../inweb/index.html">inweb</a></li>
<li><a href="../../../intest/index.html">intest</a></li>
</ul>
</nav>

View file

@ -40,8 +40,8 @@
</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/docs/index.html">inweb</a></li>
<li><a href="../../../intest/docs/index.html">intest</a></li>
<li><a href="../../../inweb/index.html">inweb</a></li>
<li><a href="../../../intest/index.html">intest</a></li>
</ul>
</nav>

View file

@ -40,8 +40,8 @@
</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/docs/index.html">inweb</a></li>
<li><a href="../../../intest/docs/index.html">intest</a></li>
<li><a href="../../../inweb/index.html">inweb</a></li>
<li><a href="../../../intest/index.html">intest</a></li>
</ul>
</nav>

View file

@ -46,8 +46,8 @@
</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/docs/index.html">inweb</a></li>
<li><a href="../../../intest/docs/index.html">intest</a></li>
<li><a href="../../../inweb/index.html">inweb</a></li>
<li><a href="../../../intest/index.html">intest</a></li>
</ul>
</nav>

View file

@ -38,8 +38,8 @@
</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/docs/index.html">inweb</a></li>
<li><a href="../../../intest/docs/index.html">intest</a></li>
<li><a href="../../../inweb/index.html">inweb</a></li>
<li><a href="../../../intest/index.html">intest</a></li>
</ul>
</nav>
@ -158,7 +158,7 @@
</li>
<li>
<p class="moduleentry">
<a href="../../../inweb/docs/foundation-module/index.html"><spon class="sectiontitle">inweb/foundation</span></a>
<a href="../../../inweb/foundation-module/index.html"><spon class="sectiontitle">inweb/foundation</span></a>
- <span class="sectionpurpose">A library of utility functions for command-line tools.</span></p>
</li>
</ul>

View file

@ -663,8 +663,8 @@ is the super-kind ("value", "thing").
<span class="plain-syntax"> </span><span class="identifier-syntax">NTI::mark_vocabulary</span><span class="plain-syntax">(</span><span class="identifier-syntax">ve</span><span class="plain-syntax">, </span><span class="function-syntax">&lt;k-kind&gt;</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP23" class="paragraph-anchor"></a><b>&#167;23. From context. </b>Sometimes we need to kmow the current values of the 26 kind variables, A
to Z: that depemds on a much wider context than the <span class="extract"><span class="extract-syntax">kinds</span></span> module can see,
<p class="commentary firstcommentary"><a id="SP23" class="paragraph-anchor"></a><b>&#167;23. From context. </b>Sometimes we need to know the current values of the 26 kind variables, A
to Z: that depends on a much wider context than the <span class="extract"><span class="extract-syntax">kinds</span></span> module can see,
so we need the client to help us. <span class="extract"><span class="extract-syntax">v</span></span> is in the range 1 to 26. Returning
<span class="extract"><span class="extract-syntax">NULL</span></span> means there is no current meaning; so if the client provides no
function to tell us, then all variables are permanently unset.

View file

@ -214,7 +214,7 @@ written as <span class="extract"><span class="extract-syntax">k</span></span> an
<p class="commentary"><span class="extract"><span class="extract-syntax">terms</span></span> is used only for proper constructors. For a unary constructor, it will
give one term; for binary, two terms, separated by a comma. Each term should
be <span class="extract"><span class="extract-syntax">covariant</span></span> or <span class="extract"><span class="extract-syntax">contravariant</span></span>, with an ootional keyword after it:
be <span class="extract"><span class="extract-syntax">covariant</span></span> or <span class="extract"><span class="extract-syntax">contravariant</span></span>, with an optional keyword after it:
</p>
<ul class="items"><li>&#9679; <span class="extract"><span class="extract-syntax">optional</span></span> means that it is legal to name the constructor without naming

View file

@ -372,7 +372,7 @@ any, results from performing an arithmetic operation.
<ul class="footnotetexts"><li class="footnote" id="fn:5"><p class="inwebfootnote"><sup id="fnref:5"><a href="#fn:5" rel="footnote">5</a></sup> "List of ..." is what is called a "kind constructor". This term follows the
traditional usage of "type constructor", but note that Haskell and some other
functional languages mean something related but different by this.
<a href="#fnref:5" title="return to text"> &#x21A9;</a></p></li><li class="footnote" id="fn:6"><p class="inwebfootnote"><sup id="fnref:6"><a href="#fn:6" rel="footnote">6</a></sup> So, for examole, Inform acts on text like "A weight is a kind of value." by
<a href="#fnref:5" title="return to text"> &#x21A9;</a></p></li><li class="footnote" id="fn:6"><p class="inwebfootnote"><sup id="fnref:6"><a href="#fn:6" rel="footnote">6</a></sup> So, for example, Inform acts on text like "A weight is a kind of value." by
calling <a href="2-knd.html#SP20" class="internal">Kinds::new_base</a>.
<a href="#fnref:6" title="return to text"> &#x21A9;</a></p></li><li class="footnote" id="fn:7"><p class="inwebfootnote"><sup id="fnref:7"><a href="#fn:7" rel="footnote">7</a></sup> Inform's built-in kinds like <span class="extract"><span class="extract-syntax">number</span></span> or <span class="extract"><span class="extract-syntax">text</span></span> all come from such files,
not by calls to <a href="2-knd.html#SP20" class="internal">Kinds::new_base</a>.

View file

@ -94,7 +94,7 @@ have two different namespaces, and then define <span class="extract"><span class
be <span class="extract"><span class="extract-syntax">INGREDIENTS_MC + RECIPES_MC</span></span> to make both of them parsed exactly.
</p>
<p class="commentary">Mimimal default settings are made if the parent doesn't create these
<p class="commentary">Minimal default settings are made if the parent doesn't create these
constants.
</p>

View file

@ -66,7 +66,7 @@ function togglePopup(material_id) {
<ul class="toc"><li><a href="1-dgr.html#SP6">&#167;6. Creation</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>This section lays out a sort of specification for what we ultinately want
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>This section lays out a sort of specification for what we ultimately want
to turn sentences into: i.e., little sentence diagrams made up of parse nodes.
We do that with the aid of the <a href="../syntax-module/index.html" class="internal">syntax</a> module. So we must first set up
some new node types:

View file

@ -298,7 +298,7 @@ nonterminal tables (see below for their English versions and layout).
</pre>
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>&#167;13. English articles. </b>So, then, these nonterminals are not parsed by Preform but are instead used
to stock small word sets above. The fornat is the same as the one used in
to stock small word sets above. The format is the same as the one used in
<a href="2-prn.html" class="internal">Pronouns</a>: rows are cases, within which the sequence is neuter singular,
neuter plural, masculine singular, masculine plural, feminine singular,
feminine plural. In English, of course, articles hardly inflect at all,

View file

@ -458,7 +458,7 @@ think might be the verb. For example, given
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-vp.html#SP5_4_1_1_1" class="named-paragraph-link"><span class="named-paragraph">Consider whether this usage is being made at this position</span><span class="named-paragraph-number">5.4.1.1.1</span></a></span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-vp.html#SP5_4_1">&#167;5.4.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP5_4_1_1_1" class="paragraph-anchor"></a><b>&#167;5.4.1.1.1. </b>We must test whether our verb usage appears at the front of <span class="extract"><span class="extract-syntax">TW</span></span>, thougn for
<p class="commentary firstcommentary"><a id="SP5_4_1_1_1" class="paragraph-anchor"></a><b>&#167;5.4.1.1.1. </b>We must test whether our verb usage appears at the front of <span class="extract"><span class="extract-syntax">TW</span></span>, though for
efficiency's sake we first test whether the verb has a meaning. (There are
potentially a great many meaningless verbs, because of the way adaptive text
is handled in Inform.)

View file

@ -135,7 +135,7 @@ name is acceptable as an adjective, and should otherwise print some sort of
error message and return <span class="extract"><span class="extract-syntax">FALSE</span></span>. If this callback is not provided, all non-empty
names are acceptable. See <a href="2-adj.html#SP3" class="internal">Adjectives::declare</a>.
</li><li>&#9679; <span class="extract"><span class="extract-syntax">ALLOW_VERB_IN_ASSERTIONS_LINGUISTICS_CALLBACK</span></span> and <span class="extract"><span class="extract-syntax">ALLOW_VERB_LINGUISTICS_CALLBACK</span></span>
give the parent control over which forms of verbs are allowed: for examole, <a href="../core-module/index.html" class="internal">core</a>
give the parent control over which forms of verbs are allowed: for example, <a href="../core-module/index.html" class="internal">core</a>
allows them in assertions only in the third person (singular or plural), whereas
it allows them in any form in non-assertion contexts. See
<a href="3-vu.html#SP7" class="internal">VerbUsages::register_voices_of_verb</a>.

View file

@ -287,7 +287,7 @@ asymmetric roles because the action is done by Peter but to the ball, and
<a href="#fnref:8" title="return to text"> &#x21A9;</a></p></li></ul>
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>&#167;17. Performance in practice. </b>The following tabulates the linguistic stock accumulated by a typical Inform 7
compilation (the same one used to generate the data in <a href="../inform7/M-pm.html" class="internal">Performance Metrics (in inform7)</a>).
Within each categpry, items are listed in order of creation.
Within each category, items are listed in order of creation.
</p>
<pre class="undisplayed-code all-displayed-code code-font">

View file

@ -690,7 +690,7 @@ for the action.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-css.html#SP3_1_3_1_4_5">&#167;3.1.3.1.4.5</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_1_3_1_4_5_3_1" class="paragraph-anchor"></a><b>&#167;3.1.3.1.4.5.3.1. </b>So here <span class="extract"><span class="extract-syntax">value</span></span> is something like <span class="extract"><span class="extract-syntax">##ScriptOn</span></span>, an action name. Maybe that has
already been defined in the kit currently being compiked, in which case a socket
already been defined in the kit currently being compiled, in which case a socket
for it already exists; but maybe not, in which case we have to create the
action. This will be a package at, say, <span class="extract"><span class="extract-syntax">/main/HypotheticalKit/actions/assim_action_1</span></span>
with three things in it:
@ -1029,7 +1029,7 @@ keyword can be linked to.)
<p class="commentary">Note that if there is already a socket of the same name, we do not attempt to
install another one. This will not in practice lead to problems, because the
identifiers supplied to this function all come from identifiers in Inter kits,
which have a single global namespace for functoons and variables anyway.
which have a single global namespace for functions and variables anyway.
</p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -57,7 +57,7 @@ function togglePopup(material_id) {
<!--Weave of 'Parsing Stages' generated by Inweb-->
<div class="breadcrumbs">
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../intern.html">Inter Modules</a></li><li><a href="index.html">pipeline</a></li><li><a href="index.html#3">Chapter 3: Assimilation</a></li><li><b>Parsing Stages</b></li></ul></div>
<p class="purpose">Two stages which accept raw I6-syntax material in the parse tree, either from imsertions made using Inform 7's low-level features, or after reading the source code for a kit.</p>
<p class="purpose">Two stages which accept raw I6-syntax material in the parse tree, either from insertions made using Inform 7's low-level features, or after reading the source code for a kit.</p>
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>These stages have more in common than first appears. Both convert I6T-syntax
source code into a series of <span class="extract"><span class="extract-syntax">SPLAT_IST</span></span> nodes in the Inter tree, with one

View file

@ -253,7 +253,7 @@ to the dictionary when it is reached:
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-rccs.html#SP3_2">&#167;3.2</a>, <a href="3-rccs.html#SP3_3">&#167;3.3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_4" class="paragraph-anchor"></a><b>&#167;3.4. </b>The following can test <span class="extract"><span class="extract-syntax">#Iftrue S == W</span></span> only for non-negative integers <span class="extract"><span class="extract-syntax">W</span></span>. It
woildn't be too hard to test other cases, but we just don't need to. The standard
wouldn't be too hard to test other cases, but we just don't need to. The standard
Inform kits use this only to test <span class="extract"><span class="extract-syntax">#Iftrue WORDSIZE == 4</span></span> or <span class="extract"><span class="extract-syntax">#Iftrue WORDSIZE == 2</span></span>.
</p>
@ -328,7 +328,7 @@ Inform kits use this only to test <span class="extract"><span class="extract-syn
<span class="plain-syntax"> </span><span class="identifier-syntax">compile_this</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-rccs.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_1_1" class="paragraph-anchor"></a><b>&#167;3.1.1. </b>That just leaves some dull code to tokenise the directive. E.g., the secomd
<p class="commentary firstcommentary"><a id="SP3_1_1" class="paragraph-anchor"></a><b>&#167;3.1.1. </b>That just leaves some dull code to tokenise the directive. E.g., the second
token of <span class="extract"><span class="extract-syntax">#Iftrue FROG == 2</span></span> is <span class="extract"><span class="extract-syntax">FROG</span></span>; the "rest of text" is <span class="extract"><span class="extract-syntax">FROG == 2</span></span>.
</p>

View file

@ -61,7 +61,7 @@ function togglePopup(material_id) {
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>At this point the tree contains one module for each compilation unit included
in the link: which is a fancy way of saying, it contains one module for the
main source text, ohe for each extension, and one each for each kit included.
main source text, one for each extension, and one each for each kit included.
</p>
<p class="commentary">We now add one final module, <span class="extract"><span class="extract-syntax">/main/synoptic</span></span>, which contains resources compiled

View file

@ -109,7 +109,7 @@
<li>
<p class="sectionentry"><a href="3-ps.html">
<spon class="sectiontitle">Parsing Stages</span></a> -
<span class="sectionpurpose">Two stages which accept raw I6-syntax material in the parse tree, either from imsertions made using Inform 7's low-level features, or after reading the source code for a kit.</span></p>
<span class="sectionpurpose">Two stages which accept raw I6-syntax material in the parse tree, either from insertions made using Inform 7's low-level features, or after reading the source code for a kit.</span></p>
</li>
<li>
<p class="sectionentry"><a href="3-rccs.html">

View file

@ -201,7 +201,7 @@ text used by <a href="2-pl3.html#SP14" class="internal">StandardProblems::senten
<p class="commentary">Here the punctuation; <span class="extract"><span class="extract-syntax">%3</span></span> is expected to end with a full stop and <span class="extract"><span class="extract-syntax">%2</span></span> not to.
</p>
<p class="commentary">Finally, the escape <span class="extract"><span class="extract-syntax">%P</span></span> means "poragraph break here", and is used for adding
<p class="commentary">Finally, the escape <span class="extract"><span class="extract-syntax">%P</span></span> means "paragraph break here", and is used for adding
subsequent clarifications to long or complicated problems.
</p>

View file

@ -67,7 +67,7 @@ function togglePopup(material_id) {
<p class="commentary">This section defines how the parent communicates with us to get everything
set up correctly. Although nothing at all clever happens in this code, it
requires careful sequencing to avoid invisible errors coming in because
function X assumes that function Y has already been called, or perhaos that
function X assumes that function Y has already been called, or perhaps that
it never will be again. The <a href="index.html" class="internal">supervisor</a> module therefore runs through a
number of named "phases" on its way to reaching fully-operational status,
at which time the parent can freely use its facilities.
@ -465,7 +465,7 @@ hold extensions, kits, language definitions, and so on.
<ul class="items"><li>(a) The "internal" nest is part of the installation of Inform as software.
It contains, for example, the build-in extensions. But it also contains
miscellaneous other files needed by Infomr (see below).
miscellaneous other files needed by Inform (see below).
</li><li>(b) The "external" nest is the one to which the user installs her own
selection of extensions, and so on. On most platforms, the external nest
is also the default home of "transient" storage, for more ephemeral content,

View file

@ -282,7 +282,7 @@ output.
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">HeadingInPlaceOfUnincluded_SYNERROR:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"heading is in place of an extension not included"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">UnequalHeadingInPlaceOf_SYNERROR:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"heading is in place of another heading but of a diffeent level"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"heading is in place of another heading but of a different level"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">HeadingInPlaceOfSubordinate_SYNERROR:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"heading is in place of another heading subordinate to itself"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">HeadingInPlaceOfUnknown_SYNERROR:</span>

View file

@ -83,8 +83,8 @@ positions in the file system hierarchy which may or may not exist.
</pre>
<ul class="endnotetexts"><li>The structure inbuild_nest is accessed in 1/ic, 3/bg, 3/is2, 4/em, 4/km, 4/lm, 4/pm, 4/tm, 5/ps2 and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>Nests used by the Inform and Inbuild tools are tagged with the following
comstamts. (There used to be quite a good joke here, but refactoring of the
code removed its premiss. Literate programming is like that sometimes.)
constants. (There used to be quite a good joke here, but refactoring of the
code removed its premise. Literate programming is like that sometimes.)
</p>
<p class="commentary">The sequence of the following enumerated values is very significant &mdash;

View file

@ -62,7 +62,7 @@ function togglePopup(material_id) {
<ul class="toc"><li><a href="2-wrk.html#SP1">&#167;1. Works</a></li><li><a href="2-wrk.html#SP5">&#167;5. Printing</a></li><li><a href="2-wrk.html#SP8">&#167;8. Identification</a></li><li><a href="2-wrk.html#SP11">&#167;11. Documentation links</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Works. </b>A "work" is a single artistic or programming creation; for example, the IF
story Bronze by Emily Short might be a work. Mamy versions of this IF story
story Bronze by Emily Short might be a work. Many versions of this IF story
may exist over time, but they will all be versions of the same "work".
Extensions are also works: for example, Epistemology by Eric Eve is a work.
</p>
@ -200,7 +200,7 @@ generates its Extensions index entries.
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. </b>The Inbuild module provides the <span class="extract"><span class="extract-syntax">%X</span></span> escape sequence for printing names of
works. (The X used to stand for Extension.) <span class="extract"><span class="extract-syntax">%&lt;X</span></span> ptovides an abbreviated form.
works. (The X used to stand for Extension.) <span class="extract"><span class="extract-syntax">%&lt;X</span></span> provides an abbreviated form.
</p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -308,7 +308,7 @@ it would be redundant to recreate it.
</p>
<p class="commentary">Note that equal timestamps force rebuilding. File timestamping is quite coarse
on some systems, so equal timeatamps might only mean that the two files were
on some systems, so equal timestamps might only mean that the two files were
created during the same second.
</p>

View file

@ -189,7 +189,7 @@ search engine <a href="2-nst.html#SP7" class="internal">Nests::search_for</a>. T
objects, each pointing to a new copy which matches the requirement given.
</p>
<p class="commentary">Requirements can be quite flexible, and are converitble to and from text: see
<p class="commentary">Requirements can be quite flexible, and are convertible to and from text: see
<a href="2-rqr.html#SP3" class="internal">Requirements::from_text</a> and <a href="2-rqr.html#SP6" class="internal">Requirements::write</a>.<sup id="fnref:4"><a href="#fn:4" rel="footnote">4</a></sup> The crucial function
here is <a href="2-rqr.html#SP7" class="internal">Requirements::meets</a>, which tests whether an edition meets the
requirement.

View file

@ -51,7 +51,7 @@
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../services.html">Services</a></li><li><a href="index.html">words</a></li><li><a href="index.html#1">Chapter 1: Setting Up</a></li><li><b>Words Module</b></li></ul></div>
<p class="purpose">Setting up the use of this module.</p>
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>This section simoly sets up the module in ways expected by <a href="../../../inweb/foundation-module/index.html" class="internal">foundation</a>,
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>This section simply sets up the module in ways expected by <a href="../../../inweb/foundation-module/index.html" class="internal">foundation</a>,
and contains no code of interest. The following constant exists only in tools
which use this module:
</p>

View file

@ -96,7 +96,7 @@ useful for other projects.
<p class="commentary">The idea here is that we want an identifier based on a natural language
wording, but which passed the above validity tests, and which does not lead
tp namespace collisions. Such identifiers are composed in a pattern which
to namespace collisions. Such identifiers are composed in a pattern which
uses an identifying letter (e.g., A for Action), a unique ID number
(preventing name-clashes) and then a truncated alphanumeric-safe form of
the words used in the textual description, if any. For example, an object

View file

@ -155,7 +155,7 @@ pointer results. For example, you could make a very crude calculator with:
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;cardinal-number&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">plus</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;cardinal-number&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { R[1]+R[2], - }</span>
</pre>
<p class="commentary">Here <span class="extract"><span class="Preform-extract-syntax">R[1]+R[2]</span></span> produces a result by composition of the two results of
the &lt;cardinal-number&gt; nontermimal which occurred when parsing the line.
the &lt;cardinal-number&gt; nonterminal which occurred when parsing the line.
So, for example, "seven" matches &lt;arithmetic&gt; with result 7, and "two plus
three" with result 5.
</p>

View file

@ -612,7 +612,7 @@ rather than the next number counting upwards; see <a href="4-ap.html" class="int
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-lp.html#SP14_1">&#167;14.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>&#167;15. </b>Here we porse what is, to the Lexer, a single word (at word number <span class="extract"><span class="extract-syntax">wn</span></span>),
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>&#167;15. </b>Here we parse what is, to the Lexer, a single word (at word number <span class="extract"><span class="extract-syntax">wn</span></span>),
but which might actually be a row of possibilities divided by slashes:
for example, <span class="extract"><span class="extract-syntax">onions/shallots</span></span>.
</p>

View file

@ -232,7 +232,7 @@ an internal NT, or try all possible productions for a regular one.
<ul class="endnotetexts"><li>This code is used in <a href="4-prf.html#SP1_3_1">&#167;1.3.1</a>, <a href="4-prf.html#SP1_3_2">&#167;1.3.2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_3_2_1" class="paragraph-anchor"></a><b>&#167;1.3.2.1. Middle level. </b>So from here on down we look only at the regular case, where we're parsing the
text against a production. Recall that a production's NTIC has the "ditto flag"
if it is the same constraint as the previous productions's NTIC; in which
if it is the same constraint as the previous production's NTIC; in which
case we have no need to recompute <span class="extract"><span class="extract-syntax">violates</span></span>.
</p>

View file

@ -1,37 +1,32 @@
100.0% in inform7 run
70.3% in compilation to Inter
50.6% in //Sequence::undertake_queued_tasks//
4.3% in //MajorNodes::pre_pass//
3.3% in //MajorNodes::pass_1//
71.2% in compilation to Inter
50.8% in //Sequence::undertake_queued_tasks//
4.4% in //MajorNodes::pre_pass//
3.4% in //MajorNodes::pass_1//
1.9% in //ImperativeDefinitions::assess_all//
1.7% in //RTPhrasebook::compile_entries//
1.6% in //RTKindConstructors::compile//
0.9% in //Sequence::lint_inter//
0.6% in //MajorNodes::pass_2//
1.9% in //RTPhrasebook::compile_entries//
1.4% in //RTKindConstructors::compile//
1.0% in //Sequence::lint_inter//
0.6% in //World::stage_V//
0.4% in //ImperativeDefinitions::compile_first_block//
0.4% in //MajorNodes::pass_2//
0.4% in //Sequence::undertake_queued_tasks//
0.4% in //Sequence::undertake_queued_tasks//
0.2% in //CompletionModule::compile//
0.2% in //InferenceSubjects::emit_all//
0.2% in //RTKindConstructors::compile_permissions//
0.1% in //InferenceSubjects::emit_all//
0.1% in //Task::make_built_in_kind_constructors//
0.1% in //Understand::traverse//
0.1% in //World::stages_II_and_III//
2.1% not specifically accounted for
26.9% in running Inter pipeline
0.2% in //Task::make_built_in_kind_constructors//
3.0% not specifically accounted for
25.9% in running Inter pipeline
10.2% in step 14/15: generate inform6 -> auto.inf
6.2% in step 6/15: make-synoptic-module
5.6% in step 5/15: load-binary-kits
1.6% in step 9/15: make-identifiers-unique
5.7% in step 5/15: load-binary-kits
5.5% in step 6/15: make-synoptic-module
1.4% in step 9/15: make-identifiers-unique
0.4% in step 12/15: eliminate-redundant-operations
0.4% in step 4/15: compile-splats
0.4% in step 7/15: shorten-wiring
0.3% in step 8/15: detect-indirect-calls
0.2% in step 11/15: eliminate-redundant-labels
0.1% in step 10/15: reconcile-verbs
0.1% in step 2/15: parse-insertions
0.1% in step 3/15: resolve-conditional-compilation
0.7% not specifically accounted for
2.4% in supervisor
0.3% not specifically accounted for
0.2% in step 8/15: detect-indirect-calls
1.3% not specifically accounted for
2.3% in supervisor
0.5% not specifically accounted for

View file

@ -1073,6 +1073,8 @@ to be recognised for what they are.
cons->isn_type = ASSEMBLY_ISNT;
inter_schema_node *prev_node = NULL;
for (inter_schema_token *l = f, *n = l?(l->next):NULL; l; l=n, n=n?(n->next):NULL) {
if ((n) && (Str::eq(l->material, I"("))) continue;
if ((n) && (Str::eq(l->material, I")"))) continue;
if (l->ist_type != WHITE_SPACE_ISTT) {
inter_schema_node *new_isn =
InterSchemas::new_node(cons->parent_schema, EXPRESSION_ISNT);

View file

@ -4120,3 +4120,30 @@ Test: parse schema from:
* (expr)
INLINE -primitive-definition:verbose-checking
=========
Test: parse schema from:
@log_shift xorshift_seed -3 -> temp;
@log_shift xorshift_seed (-3) -> temp;
* (assembly)
* (expr)
OPCODE @log_shift
* (expr)
IDENTIFIER xorshift_seed
* (expr)
NUMBER -3
* (expr)
ASM_ARROW ->
* (expr)
IDENTIFIER temp
* (assembly)
* (expr)
OPCODE @log_shift
* (expr)
IDENTIFIER xorshift_seed
* (expr)
NUMBER -3
* (expr)
ASM_ARROW ->
* (expr)
IDENTIFIER temp
=========

View file

@ -1534,3 +1534,8 @@ end
schema
{-primitive-definition:verbose-checking}
end
schema
@log_shift xorshift_seed -3 -> temp;
@log_shift xorshift_seed (-3) -> temp;
end