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

Merge branch 'ganelson:master' into master

This commit is contained in:
David Kinder 2022-05-07 14:47:00 +01:00 committed by GitHub
commit 26cda6f587
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
47 changed files with 313 additions and 181 deletions

View file

@ -1,6 +1,6 @@
# Inform 7
v10.1.0-beta+6U98 'Krypton' (5 May 2022)
v10.1.0-beta+6U99 'Krypton' (7 May 2022)
## About Inform 7
@ -193,7 +193,7 @@ These are templates used by Inform to release story files within a website:
These are Javascript interpreters used to release such websites in a form which can play the story files interactively online:
* inform7/Internal/Templates - Template websites for Inform 7's 'release as a website' feature
* inform7/Internal/Templates/Parchment - Z-machine in Javascript - __Parchment for Inform 7 (2022.4)__ - from [https://github.com/curiousdannii/parchment], maintained by [Dannii Willis](https://github.com/curiousdannii)
* inform7/Internal/Templates/Parchment - Z-machine in Javascript - __Parchment for Inform 7 (2022.5)__ - from [https://github.com/curiousdannii/parchment], maintained by [Dannii Willis](https://github.com/curiousdannii)
* inform7/Internal/Templates/Quixe - Glulx in Javascript - __Quixe for Inform 7 (v. 2.2.0)__ - from [https://github.com/erkyrath/quixe], maintained by [Andrew Plotkin](https://github.com/erkyrath)
### Documentation shipped with Inform

View file

@ -1,3 +1,3 @@
Prerelease: beta
Build Date: 5 May 2022
Build Number: 6U98
Build Date: 7 May 2022
Build Number: 6U99

View file

@ -1412,7 +1412,10 @@ annotations to them.
<span class="plain-syntax"> (</span><span class="identifier-syntax">Vocabulary::test_flags</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">), </span><span class="identifier-syntax">TEXTWITHSUBS_MC</span><span class="plain-syntax">)) &amp;&amp; (</span><span class="identifier-syntax">depth</span><span class="plain-syntax"> == </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">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Lexer::word_raw_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-is.html#SP3_1_1" class="named-paragraph-link"><span class="named-paragraph">Check that substitution does not contain suspicious punctuation</span><span class="named-paragraph-number">3.1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">A</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Feeds::feed_C_string_expanding_strings</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</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">sub</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-is.html#SP3_1_2" class="named-paragraph-link"><span class="named-paragraph">Write a form of the text bracketing substitutions with commas</span><span class="named-paragraph-number">3.1.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">A</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Feeds::feed_text_expanding_strings</span><span class="plain-syntax">(</span><span class="identifier-syntax">sub</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">sub</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax">&lt;verify-expanded-text-substitution&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><a href="2-is.html#SP3" class="function-link"><span class="function-syntax">ImperativeSubtrees::unroll_says</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cb_node</span><span class="plain-syntax">, </span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">+1);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
@ -1427,42 +1430,59 @@ annotations to them.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">k</span><span class="plain-syntax">, </span><span class="identifier-syntax">sqb</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">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">k</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">k</span><span class="plain-syntax">]; </span><span class="identifier-syntax">k</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">sqb</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">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">k</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">k</span><span class="plain-syntax">]; </span><span class="identifier-syntax">k</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">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">k</span><span class="plain-syntax">]) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'['</span><span class="plain-syntax">: </span><span class="identifier-syntax">sqb</span><span class="plain-syntax">++; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sqb</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-is.html#SP3_1_1_2" class="named-paragraph-link"><span class="named-paragraph">Issue problem message for nested substitution</span><span class="named-paragraph-number">3.1.1.2</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="character-syntax">']'</span><span class="plain-syntax">: </span><span class="identifier-syntax">sqb</span><span class="plain-syntax">--; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sqb</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-is.html#SP3_1_1_4" class="named-paragraph-link"><span class="named-paragraph">Issue problem message for unopened substitution</span><span class="named-paragraph-number">3.1.1.4</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="character-syntax">':'</span><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">&gt;0) &amp;&amp; (</span><span class="identifier-syntax">Characters::isdigit</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">k</span><span class="plain-syntax">-1])) &amp;&amp; (</span><span class="identifier-syntax">Characters::isdigit</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">k</span><span class="plain-syntax">+1]))) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="comment-syntax"> fall through</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-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">sqb</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-is.html#SP3_1_1_6" class="named-paragraph-link"><span class="named-paragraph">Issue PM_TSWithPunctuation problem</span><span class="named-paragraph-number">3.1.1.6</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'['</span><span class="plain-syntax">: </span><span class="identifier-syntax">sqb</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">sqb</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-is.html#SP3_1_1_1" class="named-paragraph-link"><span class="named-paragraph">Issue problem message for nested substitution</span><span class="named-paragraph-number">3.1.1.1</span></a></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="character-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">sqb</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-is.html#SP3_1_1_1" class="named-paragraph-link"><span class="named-paragraph">Issue problem message for comma in a substitution</span><span class="named-paragraph-number">3.1.1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">']'</span><span class="plain-syntax">: </span><span class="identifier-syntax">sqb</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">sqb</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-is.html#SP3_1_1_3" class="named-paragraph-link"><span class="named-paragraph">Issue problem message for unopened substitution</span><span class="named-paragraph-number">3.1.1.3</span></a></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="character-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">k</span><span class="plain-syntax">&gt;0) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Characters::isdigit</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">k</span><span class="plain-syntax">-1])) &amp;&amp; (</span><span class="identifier-syntax">Characters::isdigit</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">k</span><span class="plain-syntax">+1]))) </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">sqb</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-is.html#SP3_1_1_5" class="named-paragraph-link"><span class="named-paragraph">Issue PM_TSWithPunctuation problem</span><span class="named-paragraph-number">3.1.1.5</span></a></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="character-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">sqb</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-is.html#SP3_1_1_5" class="named-paragraph-link"><span class="named-paragraph">Issue PM_TSWithPunctuation problem</span><span class="named-paragraph-number">3.1.1.5</span></a></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>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sqb</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-is.html#SP3_1_1_3" class="named-paragraph-link"><span class="named-paragraph">Issue problem message for unclosed substitution</span><span class="named-paragraph-number">3.1.1.3</span></a></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">sqb</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-is.html#SP3_1_1_2" class="named-paragraph-link"><span class="named-paragraph">Issue problem message for unclosed substitution</span><span class="named-paragraph-number">3.1.1.2</span></a></span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-is.html#SP3_1">&#167;3.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_1_1_1" class="paragraph-anchor"></a><b>&#167;3.1.1.1. </b>And the more specialised:
<p class="commentary firstcommentary"><a id="SP3_1_2" class="paragraph-anchor"></a><b>&#167;3.1.2. </b>A long-standing annoyance in Inform syntax was that commas were not allowed
inside text substitutions: <span class="extract"><span class="extract-syntax">"Like [this, that]."</span></span> The reason for this was that
such a text converts to the say phrase <span class="extract"><span class="extract-syntax">say "Like ", this, that, "."</span></span>; so that
what was intended as a single expression with a comma in <span class="extract"><span class="extract-syntax">this, that</span></span> came out
as two, <span class="extract"><span class="extract-syntax">this</span></span> then <span class="extract"><span class="extract-syntax">that</span></span>. This arose seldom, but meant that phrases using
phrase options, which unhappily include a comma in their syntax, could not
easily be used in substitutions.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue problem message for comma in a substitution</span><span class="named-paragraph-number">3.1.1.1</span></span><span class="comment-syntax"> =</span>
<p class="commentary">The text now converts to <span class="extract"><span class="extract-syntax">say "Like ", (this, that), "."</span></span>, so that a single
bracketed expression <span class="extract"><span class="extract-syntax">(this, that)</span></span> appears. Thus, round brackets are put
around the contents of any substitution which contains a comma.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write a form of the text bracketing substitutions with commas</span><span class="named-paragraph-number">3.1.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">TextSubstitutions::it_is_not_worth_adding</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_TSWithComma</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"a substitution contains a comma ','"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"which is (for obscure reasons) against the rules for text substitutions. "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"(You may be able to get around this by placing the phrase containing the "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"comma in round brackets '(' and ')', which reduces the risk of ambiguity.)"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TextSubstitutions::it_is_worth_adding</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="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">k</span><span class="plain-syntax">=0, </span><span class="identifier-syntax">in_ts_with_commas</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">k</span><span class="plain-syntax">]; </span><span class="identifier-syntax">k</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">k</span><span class="plain-syntax">] == </span><span class="character-syntax">'['</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">j</span><span class="plain-syntax">=</span><span class="identifier-syntax">k</span><span class="plain-syntax">+1; (</span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</span><span class="plain-syntax">]) &amp;&amp; (</span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</span><span class="plain-syntax">] != </span><span class="character-syntax">']'</span><span class="plain-syntax">); </span><span class="identifier-syntax">j</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">j</span><span class="plain-syntax">] == </span><span class="character-syntax">','</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">in_ts_with_commas</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">k</span><span class="plain-syntax">] == </span><span class="character-syntax">']'</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">in_ts_with_commas</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">sub</span><span class="plain-syntax">, </span><span class="character-syntax">')'</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">sub</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">k</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">k</span><span class="plain-syntax">] == </span><span class="character-syntax">'['</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">in_ts_with_commas</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">sub</span><span class="plain-syntax">, </span><span class="character-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">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">k</span><span class="plain-syntax">] == </span><span class="character-syntax">']'</span><span class="plain-syntax">) </span><span class="identifier-syntax">in_ts_with_commas</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-is.html#SP3_1_1">&#167;3.1.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_1_1_2" class="paragraph-anchor"></a><b>&#167;3.1.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue problem message for nested substitution</span><span class="named-paragraph-number">3.1.1.2</span></span><span class="comment-syntax"> =</span>
<ul class="endnotetexts"><li>This code is used in <a href="2-is.html#SP3_1">&#167;3.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_1_1_1" class="paragraph-anchor"></a><b>&#167;3.1.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue problem message for nested substitution</span><span class="named-paragraph-number">3.1.1.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -1485,7 +1505,7 @@ annotations to them.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-is.html#SP3_1_1">&#167;3.1.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_1_1_3" class="paragraph-anchor"></a><b>&#167;3.1.1.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue problem message for unclosed substitution</span><span class="named-paragraph-number">3.1.1.3</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP3_1_1_2" class="paragraph-anchor"></a><b>&#167;3.1.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue problem message for unclosed substitution</span><span class="named-paragraph-number">3.1.1.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -1499,7 +1519,7 @@ annotations to them.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-is.html#SP3_1_1">&#167;3.1.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_1_1_4" class="paragraph-anchor"></a><b>&#167;3.1.1.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue problem message for unopened substitution</span><span class="named-paragraph-number">3.1.1.4</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP3_1_1_3" class="paragraph-anchor"></a><b>&#167;3.1.1.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue problem message for unopened substitution</span><span class="named-paragraph-number">3.1.1.3</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -1513,7 +1533,7 @@ annotations to them.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-is.html#SP3_1_1">&#167;3.1.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_1_1_5" class="paragraph-anchor"></a><b>&#167;3.1.1.5. </b>Something devious happens when text following a "say" is found. Double-quoted text
<p class="commentary firstcommentary"><a id="SP3_1_1_4" class="paragraph-anchor"></a><b>&#167;3.1.1.4. </b>Something devious happens when text following a "say" is found. Double-quoted text
is literal if it contains no square brackets, but is expanded if it includes text
substitutions in squares. Thus:
</p>
@ -1536,17 +1556,17 @@ to &lt;s-say-phrase&gt; to parse the list.
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;verify-expanded-text-substitution&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">***</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">.</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">***</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-is.html#SP3_1_1_6" class="named-paragraph-link"><span class="named-paragraph">Issue PM_TSWithPunctuation problem</span><span class="named-paragraph-number">3.1.1.6</span></a></span><span class="Preform-constant-syntax">;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { fail };</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">,</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">***</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-is.html#SP3_1_1_5_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_EmptySubstitution problem</span><span class="named-paragraph-number">3.1.1.5.1</span></a></span><span class="Preform-constant-syntax">;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { fail };</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">***</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">,</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-is.html#SP3_1_1_5_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_EmptySubstitution problem</span><span class="named-paragraph-number">3.1.1.5.1</span></a></span><span class="Preform-constant-syntax">;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { fail };</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">***</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">,</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">,</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">***</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-is.html#SP3_1_1_5_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_EmptySubstitution problem</span><span class="named-paragraph-number">3.1.1.5.1</span></a></span><span class="Preform-constant-syntax">;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { fail };</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">***</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">.</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">***</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-is.html#SP3_1_1_5" class="named-paragraph-link"><span class="named-paragraph">Issue PM_TSWithPunctuation problem</span><span class="named-paragraph-number">3.1.1.5</span></a></span><span class="Preform-constant-syntax">;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { fail };</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">,</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">***</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-is.html#SP3_1_1_4_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_EmptySubstitution problem</span><span class="named-paragraph-number">3.1.1.4.1</span></a></span><span class="Preform-constant-syntax">;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { fail };</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">***</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">,</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-is.html#SP3_1_1_4_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_EmptySubstitution problem</span><span class="named-paragraph-number">3.1.1.4.1</span></a></span><span class="Preform-constant-syntax">;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { fail };</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">***</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">,</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">,</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">***</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-is.html#SP3_1_1_4_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_EmptySubstitution problem</span><span class="named-paragraph-number">3.1.1.4.1</span></a></span><span class="Preform-constant-syntax">;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { fail };</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { -, - }</span>
</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="SP3_1_1_6" class="paragraph-anchor"></a><b>&#167;3.1.1.6. </b>So now just the problem messages:
<p class="commentary firstcommentary"><a id="SP3_1_1_5" class="paragraph-anchor"></a><b>&#167;3.1.1.5. </b>So now just the problem messages:
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_TSWithPunctuation problem</span><span class="named-paragraph-number">3.1.1.6</span></span><span class="Preform-comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_TSWithPunctuation problem</span><span class="named-paragraph-number">3.1.1.5</span></span><span class="Preform-comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -1556,11 +1576,11 @@ to &lt;s-say-phrase&gt; to parse the list.
<span class="plain-syntax"> </span><span class="string-syntax">"which suggests that a close square bracket ']' may have gone astray."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TextSubstitutions::it_is_worth_adding</span><span class="plain-syntax">();</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-is.html#SP3_1_1">&#167;3.1.1</a>, <a href="2-is.html#SP3_1_1_5">&#167;3.1.1.5</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_1_1_5_1" class="paragraph-anchor"></a><b>&#167;3.1.1.5.1. </b>And:
<ul class="endnotetexts"><li>This code is used in <a href="2-is.html#SP3_1_1">&#167;3.1.1</a> (twice), <a href="2-is.html#SP3_1_1_4">&#167;3.1.1.4</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_1_1_4_1" class="paragraph-anchor"></a><b>&#167;3.1.1.4.1. </b>And:
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_EmptySubstitution problem</span><span class="named-paragraph-number">3.1.1.5.1</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_EmptySubstitution problem</span><span class="named-paragraph-number">3.1.1.4.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -1570,7 +1590,7 @@ to &lt;s-say-phrase&gt; to parse the list.
<span class="plain-syntax"> </span><span class="string-syntax">"which is not allowed. To say nothing - well, say nothing."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TextSubstitutions::it_is_worth_adding</span><span class="plain-syntax">();</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-is.html#SP3_1_1_5">&#167;3.1.1.5</a> (three times).</li></ul>
<ul class="endnotetexts"><li>This code is used in <a href="2-is.html#SP3_1_1_4">&#167;3.1.1.4</a> (three times).</li></ul>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </b>The following manufactures end nodes to match a given begin node.
</p>

View file

@ -1846,7 +1846,7 @@ otherwise convert it from an <span class="extract"><span class="extract-syntax">
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-rmf.html#SP22">&#167;22</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP22_2" class="paragraph-anchor"></a><b>&#167;22.2. </b>Well... so actually we have to be a bit more careful about left vs right
associativity if there are two least-precendence operators both at the top
associativity if there are two least-precedence operators both at the top
level, as in the case of <span class="extract"><span class="extract-syntax">x - y + z</span></span> or (horrifically) <span class="extract"><span class="extract-syntax">x = y = z</span></span>.
</p>

View file

@ -390,6 +390,14 @@ be wired to another connector.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">Wiring::socket</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Wiring::socket</span></span>:<br/>Transmigration - <a href="2-trn.html#SP3_6_1">&#167;3.6.1</a></span></button><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><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">defn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-tw2.html#SP12" class="function-link"><span class="function-syntax">Wiring::socket_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">defn</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">Wiring::socket_one_per_name_only</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><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">defn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-tw2.html#SP12" class="function-link"><span class="function-syntax">Wiring::socket_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">defn</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">Wiring::socket_inner</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><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">defn</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">allow_multiple_sockets_with_the_same_name</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">defn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to make socket for nothing"</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-sym.html#SP13" class="function-link"><span class="function-syntax">InterSymbol::is_socket</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">defn</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">I</span><span class="plain-syntax"> == </span><a href="2-pck.html#SP4" class="function-link"><span class="function-syntax">InterPackage::tree</span></a><span class="plain-syntax">(</span><a href="2-sym.html#SP3" class="function-link"><span class="function-syntax">InterSymbol::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">defn</span><span class="plain-syntax">))) {</span>
@ -414,7 +422,8 @@ be wired to another connector.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">socket</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-sym.html#SP13" class="function-link"><span class="function-syntax">InterSymbol::is_socket</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">socket</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</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">"tried to make socket with same name as a plug"</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-tw2.html#SP2" class="function-link"><span class="function-syntax">Wiring::wired_to</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">socket</span><span class="plain-syntax">) != </span><span class="identifier-syntax">defn</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">allow_multiple_sockets_with_the_same_name</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><a href="2-tw2.html#SP2" class="function-link"><span class="function-syntax">Wiring::wired_to</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">socket</span><span class="plain-syntax">) != </span><span class="identifier-syntax">defn</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">STDERR</span><span class="plain-syntax">, </span><span class="string-syntax">"Socket %S has two defns\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-st.html#SP18" class="function-link"><span class="function-syntax">InterSymbolsTable::write_symbol_URL</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">STDERR</span><span class="plain-syntax">, </span><a href="2-tw2.html#SP2" class="function-link"><span class="function-syntax">Wiring::wired_to</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">socket</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">STDERR</span><span class="plain-syntax">, </span><span class="string-syntax">"\n"</span><span class="plain-syntax">);</span>

View file

@ -920,17 +920,13 @@ a constant 1, 2 or 3, or else plain roman is all you get.
<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">STYLE_BIP:</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterTree::first_child</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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Inode::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">CONSTANT_IST</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">ConstantInstruction::list_format</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CONST_LIST_FORMAT_NONE</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">style</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterValuePairs::to_number</span><span class="plain-syntax">(</span><span class="identifier-syntax">ConstantInstruction::constant</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">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">style</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"style bold"</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="constant-syntax">2</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"style underline"</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="constant-syntax">3</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"style reverse"</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">default:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"style roman"</span><span class="plain-syntax">);</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="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"style roman"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_pair</span><span class="plain-syntax"> </span><span class="identifier-syntax">pair</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ValInstruction::value</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">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">style</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterValuePairs::to_number</span><span class="plain-syntax">(</span><span class="identifier-syntax">pair</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">style</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"style bold"</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="constant-syntax">2</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"style underline"</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="constant-syntax">3</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"style reverse"</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">default:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"style roman"</span><span class="plain-syntax">);</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>

View file

@ -2194,6 +2194,17 @@ representation. This is the functionality I would most like to remove from Infor
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-cii.html#SP11_2" class="named-paragraph-link"><span class="named-paragraph">Evaluate the text as a value</span><span class="named-paragraph-number">11.2</span></a></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">Specifications::is_phrasal</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">LW</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_PhraseInBracketsPlus</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="string-syntax">"In %1, you tried to use '(+' and '+)' to expand to a value computed by a "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"phrase, '%2', but these brackets can only be used with constant values."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</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">"0"</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><span class="identifier-syntax">inter_pair</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><a href="2-cv.html#SP4" class="function-link"><span class="function-syntax">CompileValues::to_pair</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</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">InterValuePairs::is_symbolic</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">)) {</span>

View file

@ -541,7 +541,7 @@ rules:
</p>
<ul class="items"><li>(1) A copy in the Materials nest takes precedence over all others.
</li><li>(2) Otherwise, all other copies take precendence over those in the
</li><li>(2) Otherwise, all other copies take precedence over those in the
internal nest.
</li><li>(3) Otherwise, semantic version number rules are used to determine which
copy had precedence.

View file

@ -182,7 +182,7 @@ number of successes.
</li></ul>
<pre class="undisplayed-code all-displayed-code code-font">
<span class="plain-syntax">Size of lexicon: 3101 excerpt meanings</span>
<span class="plain-syntax"> Stored among 839 words out of total vocabulary of 10569</span>
<span class="plain-syntax"> Stored among 839 words out of total vocabulary of 10568</span>
<span class="plain-syntax"> 709 words have a start list: longest belongs to report (with 293 meanings)</span>
<span class="plain-syntax"> 15 words have an end list: longest belongs to case (with 6 meanings)</span>
<span class="plain-syntax"> 29 words have a middle list: longest belongs to to (with 4 meanings)</span>

View file

@ -202,6 +202,8 @@ function togglePopup(material_id) {
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">do_not_locate_problems</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</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">Log::aspect_switched_on</span><span class="plain-syntax">(</span><span class="identifier-syntax">INTER_DA</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TextualInter::write</span><span class="plain-syntax">(</span><span class="identifier-syntax">DL</span><span class="plain-syntax">, </span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-pe.html#SP2">&#167;2</a> (twice).</li></ul>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. Errors in kit source. </b>Errors like this used to be basically failed assertions, but inevitably people

View file

@ -2323,6 +2323,14 @@ available", using the following, which creates a socket. Again, see
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterNames::to_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Wiring::socket</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">ma_as</span><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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Hierarchy::make_available_one_per_name_only</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::make_available_one_per_name_only</span></span>:<br/>Instances - <a href="5-ins.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ma_as</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterNames::get_translation</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</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">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">ma_as</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">ma_as</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterNames::to_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LargeScale::package_type</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">I</span><span class="string-syntax">"_linkage"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterNames::to_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Wiring::socket_one_per_name_only</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">ma_as</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="SP18" class="paragraph-anchor"></a><b>&#167;18. Adding packages at attachment points. </b>Consider the following example piece of declaration:
</p>
@ -2348,7 +2356,7 @@ such <span class="extract"><span class="extract-syntax">_kind</span></span> pack
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::package</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::package</span></span>:<br/><a href="2-hrr.html#SP19">&#167;19</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">compilation_unit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hap_id</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::package</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::package</span></span>:<br/><a href="2-hrr.html#SP19">&#167;19</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">compilation_unit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hap_id</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">module_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">M</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">C</span><span class="plain-syntax">) ? (</span><a href="2-cu.html#SP1" class="function-link"><span class="function-syntax">CompilationUnits::to_module_package</span></a><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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">HierarchyLocations::attach_new_package</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">M</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">hap_id</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -2357,11 +2365,11 @@ such <span class="extract"><span class="extract-syntax">_kind</span></span> pack
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::local_package</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::local_package</span></span>:<br/>Activities - <a href="5-act.html#SP2">&#167;2</a><br/>Adjectives - <a href="5-adj.html#SP2">&#167;2</a>, <a href="5-adj.html#SP15">&#167;15</a><br/>Chronology - <a href="5-chr.html#SP3_3">&#167;3.3</a>, <a href="5-chr.html#SP7">&#167;7</a><br/>Instances - <a href="5-ins.html#SP1">&#167;1</a><br/>Kind IDs - <a href="5-ki.html#SP7_1_1">&#167;7.1.1</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP13">&#167;13</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hap_id</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::local_package</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::local_package</span></span>:<br/>Activities - <a href="5-act.html#SP2">&#167;2</a><br/>Adjectives - <a href="5-adj.html#SP2">&#167;2</a>, <a href="5-adj.html#SP15">&#167;15</a><br/>Chronology - <a href="5-chr.html#SP3_3">&#167;3.3</a>, <a href="5-chr.html#SP7">&#167;7</a><br/>Instances - <a href="5-ins.html#SP1">&#167;1</a><br/>Kind IDs - <a href="5-ki.html#SP7_1_1">&#167;7.1.1</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP13">&#167;13</a><br/>Noun Filter Tokens - <a href="7-nft.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hap_id</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-hrr.html#SP19" class="function-link"><span class="function-syntax">Hierarchy::local_package_to</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">hap_id</span><span class="plain-syntax">, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::local_package_to</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::local_package_to</span></span>:<br/>Use Options - <a href="3-uo.html#SP1">&#167;1</a><br/>Adjectives - <a href="5-adj.html#SP10">&#167;10</a><br/>Conjugations - <a href="5-cnj.html#SP3">&#167;3</a>, <a href="5-cnj.html#SP4">&#167;4</a>, <a href="5-cnj.html#SP7">&#167;7</a><br/>Equations - <a href="5-eqt.html#SP1">&#167;1</a><br/>Multimedia - <a href="5-mlt.html#SP2">&#167;2</a><br/>Tables - <a href="5-tbl.html#SP1">&#167;1</a><br/>Table Columns - <a href="5-tc.html#SP1">&#167;1</a><br/>Rules - <a href="5-rls.html#SP3">&#167;3</a><br/>Rulebooks - <a href="5-rlb.html#SP2">&#167;2</a>, <a href="5-rlb.html#SP12">&#167;12</a><br/>Variables - <a href="5-vrb.html#SP11">&#167;11</a><br/>Properties - <a href="5-prp.html#SP2">&#167;2</a><br/>Relations - <a href="5-rlt.html#SP2">&#167;2</a><br/>Literal Patterns - <a href="5-lp.html#SP2">&#167;2</a><br/>Kind Constructors - <a href="5-kc.html#SP1">&#167;1</a><br/>Actions - <a href="5-act2.html#SP2">&#167;2</a><br/>Named Action Patterns - <a href="5-nap.html#SP2">&#167;2</a><br/>Test Scripts - <a href="5-ts.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hap_id</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">at</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::local_package_to</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::local_package_to</span></span>:<br/>Use Options - <a href="3-uo.html#SP1">&#167;1</a><br/>Adjectives - <a href="5-adj.html#SP10">&#167;10</a><br/>Conjugations - <a href="5-cnj.html#SP3">&#167;3</a>, <a href="5-cnj.html#SP4">&#167;4</a>, <a href="5-cnj.html#SP7">&#167;7</a><br/>Equations - <a href="5-eqt.html#SP1">&#167;1</a><br/>Multimedia - <a href="5-mlt.html#SP2">&#167;2</a><br/>Tables - <a href="5-tbl.html#SP1">&#167;1</a><br/>Table Columns - <a href="5-tc.html#SP1">&#167;1</a><br/>Rules - <a href="5-rls.html#SP3">&#167;3</a><br/>Rulebooks - <a href="5-rlb.html#SP2">&#167;2</a>, <a href="5-rlb.html#SP12">&#167;12</a><br/>Variables - <a href="5-vrb.html#SP11">&#167;11</a><br/>Properties - <a href="5-prp.html#SP2">&#167;2</a><br/>Relations - <a href="5-rlt.html#SP2">&#167;2</a><br/>Literal Patterns - <a href="5-lp.html#SP2">&#167;2</a><br/>Kind Constructors - <a href="5-kc.html#SP1">&#167;1</a><br/>Actions - <a href="5-act2.html#SP2">&#167;2</a><br/>Named Action Patterns - <a href="5-nap.html#SP2">&#167;2</a><br/>Test Scripts - <a href="5-ts.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hap_id</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">at</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-hrr.html#SP18" class="function-link"><span class="function-syntax">Hierarchy::package</span></a><span class="plain-syntax">(</span><a href="2-cu.html#SP7" class="function-link"><span class="function-syntax">CompilationUnits::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">at</span><span class="plain-syntax">), </span><span class="identifier-syntax">hap_id</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
@ -2370,11 +2378,11 @@ compilation unit is meant: that's why it's "synoptic".
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::synoptic_package</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::synoptic_package</span></span>:<br/>Kind Constructors - <a href="5-kc.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hap_id</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::synoptic_package</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::synoptic_package</span></span>:<br/>Kind Constructors - <a href="5-kc.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hap_id</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">HierarchyLocations::attach_new_package</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">hap_id</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::completion_package</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::completion_package</span></span>:<br/>Completion Module - <a href="3-cm.html#SP1_9">&#167;1.9</a>, <a href="3-cm.html#SP1_11">&#167;1.11</a><br/>Kind Constructors - <a href="5-kc.html#SP1">&#167;1</a>, <a href="5-kc.html#SP10_5">&#167;10.5</a><br/>Phrasebook Index - <a href="6-pi.html#SP1_1">&#167;1.1</a><br/>Mapping Hints - <a href="6-mh.html#SP1">&#167;1</a><br/>Command Grammars - <a href="7-cg.html#SP4">&#167;4</a>, <a href="7-cg.html#SP10">&#167;10</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP3">&#167;3</a><br/>Name Properties - <a href="7-np.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hap_id</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::completion_package</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::completion_package</span></span>:<br/>Completion Module - <a href="3-cm.html#SP1_9">&#167;1.9</a>, <a href="3-cm.html#SP1_11">&#167;1.11</a><br/>Kind Constructors - <a href="5-kc.html#SP1">&#167;1</a>, <a href="5-kc.html#SP10_5">&#167;10.5</a><br/>Phrasebook Index - <a href="6-pi.html#SP1_1">&#167;1.1</a><br/>Mapping Hints - <a href="6-mh.html#SP1">&#167;1</a><br/>Command Grammars - <a href="7-cg.html#SP4">&#167;4</a>, <a href="7-cg.html#SP10">&#167;10</a><br/>Command Grammar Lines - <a href="7-cgl.html#SP3">&#167;3</a><br/>Name Properties - <a href="7-np.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hap_id</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">HierarchyLocations::attach_new_package</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">hap_id</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
@ -2397,7 +2405,7 @@ will automatically trip, in order to enforce the layout rules.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::package_within</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::package_within</span></span>:<br/>Text Substitutions - <a href="4-ts.html#SP5">&#167;5</a><br/>Responses - <a href="4-rsp.html#SP2">&#167;2</a><br/>Activities - <a href="5-act.html#SP7">&#167;7</a><br/>Adjectives - <a href="5-adj.html#SP3">&#167;3</a><br/>Conjugations - <a href="5-cnj.html#SP10">&#167;10</a><br/>Door Instances - <a href="5-di.html#SP6">&#167;6</a><br/>Scene Instances - <a href="5-si.html#SP1">&#167;1</a><br/>Tables - <a href="5-tbl.html#SP2_3">&#167;2.3</a>, <a href="5-tbl.html#SP5">&#167;5</a><br/>Rules - <a href="5-rls.html#SP12_2">&#167;12.2</a>, <a href="5-rls.html#SP13">&#167;13</a><br/>Rulebooks - <a href="5-rlb.html#SP7_1">&#167;7.1</a><br/>Kind Constructors - <a href="5-kc.html#SP10">&#167;10</a><br/>Actions - <a href="5-act2.html#SP9">&#167;9</a><br/>Named Action Patterns - <a href="5-nap.html#SP3">&#167;3</a><br/>Action Bitmap Property - <a href="6-abp.html#SP1">&#167;1</a><br/>Phrasebook Index - <a href="6-pi.html#SP1_2">&#167;1.2</a>, <a href="6-pi.html#SP1_2_3">&#167;1.2.3</a>, <a href="6-pi.html#SP1_3">&#167;1.3</a><br/>Command Grammars - <a href="7-cg.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hap_id</span><span class="plain-syntax">, </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">super</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::package_within</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::package_within</span></span>:<br/>Text Substitutions - <a href="4-ts.html#SP5">&#167;5</a><br/>Responses - <a href="4-rsp.html#SP2">&#167;2</a><br/>Activities - <a href="5-act.html#SP7">&#167;7</a><br/>Adjectives - <a href="5-adj.html#SP3">&#167;3</a><br/>Conjugations - <a href="5-cnj.html#SP10">&#167;10</a><br/>Door Instances - <a href="5-di.html#SP6">&#167;6</a><br/>Scene Instances - <a href="5-si.html#SP1">&#167;1</a><br/>Tables - <a href="5-tbl.html#SP2_3">&#167;2.3</a>, <a href="5-tbl.html#SP5">&#167;5</a><br/>Rules - <a href="5-rls.html#SP12_2">&#167;12.2</a>, <a href="5-rls.html#SP13">&#167;13</a><br/>Rulebooks - <a href="5-rlb.html#SP7_1">&#167;7.1</a><br/>Kind Constructors - <a href="5-kc.html#SP10">&#167;10</a><br/>Actions - <a href="5-act2.html#SP9">&#167;9</a><br/>Named Action Patterns - <a href="5-nap.html#SP3">&#167;3</a><br/>Action Bitmap Property - <a href="6-abp.html#SP1">&#167;1</a><br/>Phrasebook Index - <a href="6-pi.html#SP1_2">&#167;1.2</a>, <a href="6-pi.html#SP1_2_3">&#167;1.2.3</a>, <a href="6-pi.html#SP1_3">&#167;1.3</a><br/>Command Grammars - <a href="7-cg.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hap_id</span><span class="plain-syntax">, </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">super</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">HierarchyLocations::attach_new_package</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">super</span><span class="plain-syntax">, </span><span class="identifier-syntax">hap_id</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
@ -2406,7 +2414,7 @@ point system, and for those:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::make_package_in</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::make_package_in</span></span>:<br/>Activities - <a href="5-act.html#SP4">&#167;4</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="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Hierarchy::make_package_in</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::make_package_in</span></span>:<br/>Activities - <a href="5-act.html#SP4">&#167;4</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="identifier-syntax">package_request</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">HierarchyLocations::subpackage</span><span class="plain-syntax">(</span><a href="2-emt.html#SP1" class="function-link"><span class="function-syntax">Emit::tree</span></a><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="plain-syntax">}</span>
</pre>
@ -2414,43 +2422,43 @@ point system, and for those:
</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">Hierarchy::apply_metadata</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::apply_metadata</span></span>:<br/>Compilation Units - <a href="2-cu.html#SP2_1_2">&#167;2.1.2</a><br/>Completion Module - <a href="3-cm.html#SP1_9">&#167;1.9</a>, <a href="3-cm.html#SP1_11">&#167;1.11</a>, <a href="3-cm.html#SP1_11_1">&#167;1.11.1</a><br/>Use Options - <a href="3-uo.html#SP1">&#167;1</a><br/>Activities - <a href="5-act.html#SP7">&#167;7</a><br/>Adjectives - <a href="5-adj.html#SP6">&#167;6</a><br/>Conjugations - <a href="5-cnj.html#SP6">&#167;6</a>, <a href="5-cnj.html#SP7">&#167;7</a><br/>Instances - <a href="5-ins.html#SP4">&#167;4</a><br/>Multimedia - <a href="5-mlt.html#SP2_3">&#167;2.3</a><br/>Tables - <a href="5-tbl.html#SP2_3">&#167;2.3</a><br/>Table Columns - <a href="5-tc.html#SP2">&#167;2</a><br/>Rules - <a href="5-rls.html#SP12_1">&#167;12.1</a><br/>Rulebooks - <a href="5-rlb.html#SP7_1">&#167;7.1</a><br/>Variables - <a href="5-vrb.html#SP14">&#167;14</a><br/>Properties - <a href="5-prp.html#SP7_2">&#167;7.2</a><br/>Relations - <a href="5-rlt.html#SP6">&#167;6</a><br/>Kind Constructors - <a href="5-kc.html#SP1">&#167;1</a>, <a href="5-kc.html#SP10">&#167;10</a>, <a href="5-kc.html#SP10_5">&#167;10.5</a><br/>Actions - <a href="5-act2.html#SP8_3">&#167;8.3</a>, <a href="5-act2.html#SP9">&#167;9</a><br/>Named Action Patterns - <a href="5-nap.html#SP3">&#167;3</a><br/>Phrasebook Index - <a href="6-pi.html#SP1_1">&#167;1.1</a>, <a href="6-pi.html#SP1_2">&#167;1.2</a>, <a href="6-pi.html#SP1_3">&#167;1.3</a><br/>Mapping Hints - <a href="6-mh.html#SP1">&#167;1</a><br/>Inferences - <a href="6-inf.html#SP1">&#167;1</a>, <a href="6-inf.html#SP3">&#167;3</a><br/>Command Grammars - <a href="7-cg.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><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="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">value</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Hierarchy::apply_metadata</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::apply_metadata</span></span>:<br/>Compilation Units - <a href="2-cu.html#SP2_1_2">&#167;2.1.2</a><br/>Completion Module - <a href="3-cm.html#SP1_9">&#167;1.9</a>, <a href="3-cm.html#SP1_11">&#167;1.11</a>, <a href="3-cm.html#SP1_11_1">&#167;1.11.1</a><br/>Use Options - <a href="3-uo.html#SP1">&#167;1</a><br/>Activities - <a href="5-act.html#SP7">&#167;7</a><br/>Adjectives - <a href="5-adj.html#SP6">&#167;6</a><br/>Conjugations - <a href="5-cnj.html#SP6">&#167;6</a>, <a href="5-cnj.html#SP7">&#167;7</a><br/>Instances - <a href="5-ins.html#SP4">&#167;4</a><br/>Multimedia - <a href="5-mlt.html#SP2_3">&#167;2.3</a><br/>Tables - <a href="5-tbl.html#SP2_3">&#167;2.3</a><br/>Table Columns - <a href="5-tc.html#SP2">&#167;2</a><br/>Rules - <a href="5-rls.html#SP12_1">&#167;12.1</a><br/>Rulebooks - <a href="5-rlb.html#SP7_1">&#167;7.1</a><br/>Variables - <a href="5-vrb.html#SP14">&#167;14</a><br/>Properties - <a href="5-prp.html#SP7_2">&#167;7.2</a><br/>Relations - <a href="5-rlt.html#SP6">&#167;6</a><br/>Kind Constructors - <a href="5-kc.html#SP1">&#167;1</a>, <a href="5-kc.html#SP10">&#167;10</a>, <a href="5-kc.html#SP10_5">&#167;10.5</a><br/>Actions - <a href="5-act2.html#SP8_3">&#167;8.3</a>, <a href="5-act2.html#SP9">&#167;9</a><br/>Named Action Patterns - <a href="5-nap.html#SP3">&#167;3</a><br/>Phrasebook Index - <a href="6-pi.html#SP1_1">&#167;1.1</a>, <a href="6-pi.html#SP1_2">&#167;1.2</a>, <a href="6-pi.html#SP1_3">&#167;1.3</a><br/>Mapping Hints - <a href="6-mh.html#SP1">&#167;1</a><br/>Inferences - <a href="6-inf.html#SP1">&#167;1</a>, <a href="6-inf.html#SP3">&#167;3</a><br/>Command Grammars - <a href="7-cg.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><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="identifier-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><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP12" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><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="plain-syntax"> </span><a href="2-emt.html#SP7" class="function-link"><span class="function-syntax">Emit::text_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</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">Hierarchy::apply_metadata_from_number</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::apply_metadata_from_number</span></span>:<br/>Compilation Units - <a href="2-cu.html#SP2_1_1">&#167;2.1.1</a>, <a href="2-cu.html#SP2_1_2">&#167;2.1.2</a>, <a href="2-cu.html#SP3">&#167;3</a><br/>Kind Declarations - <a href="2-kd.html#SP7">&#167;7</a><br/>Completion Module - <a href="3-cm.html#SP1_9">&#167;1.9</a>, <a href="3-cm.html#SP1_11">&#167;1.11</a>, <a href="3-cm.html#SP1_11_1">&#167;1.11.1</a><br/>Use Options - <a href="3-uo.html#SP1">&#167;1</a><br/>Activities - <a href="5-act.html#SP7">&#167;7</a><br/>Conjugations - <a href="5-cnj.html#SP6">&#167;6</a>, <a href="5-cnj.html#SP7">&#167;7</a><br/>Equations - <a href="5-eqt.html#SP1">&#167;1</a><br/>Instances - <a href="5-ins.html#SP4">&#167;4</a><br/>Scene Instances - <a href="5-si.html#SP1">&#167;1</a><br/>Multimedia - <a href="5-mlt.html#SP1">&#167;1</a>, <a href="5-mlt.html#SP2_3">&#167;2.3</a><br/>Tables - <a href="5-tbl.html#SP2">&#167;2</a>, <a href="5-tbl.html#SP2_3">&#167;2.3</a><br/>Rules - <a href="5-rls.html#SP12_1">&#167;12.1</a>, <a href="5-rls.html#SP12_2">&#167;12.2</a>, <a href="5-rls.html#SP12_3">&#167;12.3</a>, <a href="5-rls.html#SP13">&#167;13</a><br/>Rulebooks - <a href="5-rlb.html#SP7_1">&#167;7.1</a><br/>Variables - <a href="5-vrb.html#SP14">&#167;14</a><br/>Properties - <a href="5-prp.html#SP7_2">&#167;7.2</a><br/>Relations - <a href="5-rlt.html#SP6">&#167;6</a><br/>Kind Constructors - <a href="5-kc.html#SP1">&#167;1</a>, <a href="5-kc.html#SP10">&#167;10</a>, <a href="5-kc.html#SP10_5">&#167;10.5</a><br/>Actions - <a href="5-act2.html#SP8_3">&#167;8.3</a>, <a href="5-act2.html#SP9">&#167;9</a><br/>Named Action Patterns - <a href="5-nap.html#SP3">&#167;3</a><br/>Test Scripts - <a href="5-ts.html#SP4">&#167;4</a><br/>Mapping Hints - <a href="6-mh.html#SP1">&#167;1</a><br/>Command Grammars - <a href="7-cg.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><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="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Hierarchy::apply_metadata_from_number</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::apply_metadata_from_number</span></span>:<br/>Compilation Units - <a href="2-cu.html#SP2_1_1">&#167;2.1.1</a>, <a href="2-cu.html#SP2_1_2">&#167;2.1.2</a>, <a href="2-cu.html#SP3">&#167;3</a><br/>Kind Declarations - <a href="2-kd.html#SP7">&#167;7</a><br/>Completion Module - <a href="3-cm.html#SP1_9">&#167;1.9</a>, <a href="3-cm.html#SP1_11">&#167;1.11</a>, <a href="3-cm.html#SP1_11_1">&#167;1.11.1</a><br/>Use Options - <a href="3-uo.html#SP1">&#167;1</a><br/>Activities - <a href="5-act.html#SP7">&#167;7</a><br/>Conjugations - <a href="5-cnj.html#SP6">&#167;6</a>, <a href="5-cnj.html#SP7">&#167;7</a><br/>Equations - <a href="5-eqt.html#SP1">&#167;1</a><br/>Instances - <a href="5-ins.html#SP4">&#167;4</a><br/>Scene Instances - <a href="5-si.html#SP1">&#167;1</a><br/>Multimedia - <a href="5-mlt.html#SP1">&#167;1</a>, <a href="5-mlt.html#SP2_3">&#167;2.3</a><br/>Tables - <a href="5-tbl.html#SP2">&#167;2</a>, <a href="5-tbl.html#SP2_3">&#167;2.3</a><br/>Rules - <a href="5-rls.html#SP12_1">&#167;12.1</a>, <a href="5-rls.html#SP12_2">&#167;12.2</a>, <a href="5-rls.html#SP12_3">&#167;12.3</a>, <a href="5-rls.html#SP13">&#167;13</a><br/>Rulebooks - <a href="5-rlb.html#SP7_1">&#167;7.1</a><br/>Variables - <a href="5-vrb.html#SP14">&#167;14</a><br/>Properties - <a href="5-prp.html#SP7_2">&#167;7.2</a><br/>Relations - <a href="5-rlt.html#SP6">&#167;6</a><br/>Kind Constructors - <a href="5-kc.html#SP1">&#167;1</a>, <a href="5-kc.html#SP10">&#167;10</a>, <a href="5-kc.html#SP10_5">&#167;10.5</a><br/>Actions - <a href="5-act2.html#SP8_3">&#167;8.3</a>, <a href="5-act2.html#SP9">&#167;9</a><br/>Named Action Patterns - <a href="5-nap.html#SP3">&#167;3</a><br/>Test Scripts - <a href="5-ts.html#SP4">&#167;4</a><br/>Mapping Hints - <a href="6-mh.html#SP1">&#167;1</a><br/>Command Grammars - <a href="7-cg.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><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="identifier-syntax">inter_ti</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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP12" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><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="plain-syntax"> </span><a href="2-emt.html#SP6" class="function-link"><span class="function-syntax">Emit::numeric_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Hierarchy::apply_metadata_from_iname</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::apply_metadata_from_iname</span></span>:<br/>Compilation Units - <a href="2-cu.html#SP3">&#167;3</a><br/>Use Options - <a href="3-uo.html#SP1">&#167;1</a><br/>Activities - <a href="5-act.html#SP7">&#167;7</a><br/>Instances - <a href="5-ins.html#SP4">&#167;4</a><br/>Scene Instances - <a href="5-si.html#SP1">&#167;1</a><br/>Multimedia - <a href="5-mlt.html#SP2_3">&#167;2.3</a><br/>Tables - <a href="5-tbl.html#SP2">&#167;2</a><br/>Rules - <a href="5-rls.html#SP12_2">&#167;12.2</a><br/>Rulebooks - <a href="5-rlb.html#SP7_1">&#167;7.1</a><br/>Variables - <a href="5-vrb.html#SP14">&#167;14</a><br/>Kind Constructors - <a href="5-kc.html#SP10">&#167;10</a><br/>Actions - <a href="5-act2.html#SP8_3">&#167;8.3</a>, <a href="5-act2.html#SP8_6">&#167;8.6</a><br/>Mapping Hints - <a href="6-mh.html#SP1">&#167;1</a><br/>Command Grammars - <a href="7-cg.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><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="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Hierarchy::apply_metadata_from_iname</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::apply_metadata_from_iname</span></span>:<br/>Compilation Units - <a href="2-cu.html#SP3">&#167;3</a><br/>Use Options - <a href="3-uo.html#SP1">&#167;1</a><br/>Activities - <a href="5-act.html#SP7">&#167;7</a><br/>Instances - <a href="5-ins.html#SP4">&#167;4</a><br/>Scene Instances - <a href="5-si.html#SP1">&#167;1</a><br/>Multimedia - <a href="5-mlt.html#SP2_3">&#167;2.3</a><br/>Tables - <a href="5-tbl.html#SP2">&#167;2</a><br/>Rules - <a href="5-rls.html#SP12_2">&#167;12.2</a><br/>Rulebooks - <a href="5-rlb.html#SP7_1">&#167;7.1</a><br/>Variables - <a href="5-vrb.html#SP14">&#167;14</a><br/>Kind Constructors - <a href="5-kc.html#SP10">&#167;10</a><br/>Actions - <a href="5-act2.html#SP8_3">&#167;8.3</a>, <a href="5-act2.html#SP8_6">&#167;8.6</a><br/>Mapping Hints - <a href="6-mh.html#SP1">&#167;1</a><br/>Command Grammars - <a href="7-cg.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><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="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP12" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><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="plain-syntax"> </span><a href="2-emt.html#SP8" class="function-link"><span class="function-syntax">Emit::iname_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</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">Hierarchy::apply_metadata_from_wording</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::apply_metadata_from_wording</span></span>:<br/>Activities - <a href="5-act.html#SP7">&#167;7</a><br/>Tables - <a href="5-tbl.html#SP2_3">&#167;2.3</a><br/>Rules - <a href="5-rls.html#SP12_1">&#167;12.1</a>, <a href="5-rls.html#SP12_3">&#167;12.3</a><br/>Rulebooks - <a href="5-rlb.html#SP7_1">&#167;7.1</a>, <a href="5-rlb.html#SP14_1">&#167;14.1</a><br/>Variables - <a href="5-vrb.html#SP14">&#167;14</a><br/>Properties - <a href="5-prp.html#SP7_2">&#167;7.2</a><br/>Kind Constructors - <a href="5-kc.html#SP1">&#167;1</a><br/>Actions - <a href="5-act2.html#SP8_3">&#167;8.3</a><br/>Test Scripts - <a href="5-ts.html#SP4">&#167;4</a><br/>Command Grammars - <a href="7-cg.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><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="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Hierarchy::apply_metadata_from_wording</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::apply_metadata_from_wording</span></span>:<br/>Activities - <a href="5-act.html#SP7">&#167;7</a><br/>Tables - <a href="5-tbl.html#SP2_3">&#167;2.3</a><br/>Rules - <a href="5-rls.html#SP12_1">&#167;12.1</a>, <a href="5-rls.html#SP12_3">&#167;12.3</a><br/>Rulebooks - <a href="5-rlb.html#SP7_1">&#167;7.1</a>, <a href="5-rlb.html#SP14_1">&#167;14.1</a><br/>Variables - <a href="5-vrb.html#SP14">&#167;14</a><br/>Properties - <a href="5-prp.html#SP7_2">&#167;7.2</a><br/>Kind Constructors - <a href="5-kc.html#SP1">&#167;1</a><br/>Actions - <a href="5-act2.html#SP8_3">&#167;8.3</a><br/>Test Scripts - <a href="5-ts.html#SP4">&#167;4</a><br/>Command Grammars - <a href="7-cg.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><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="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</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">ANT</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">ANT</span><span class="plain-syntax">, </span><span class="string-syntax">"%W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">ANT</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">ANT</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">Hierarchy::apply_metadata_from_raw_wording</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::apply_metadata_from_raw_wording</span></span>:<br/>Completion Module - <a href="3-cm.html#SP1_11_1">&#167;1.11.1</a><br/>Use Options - <a href="3-uo.html#SP1">&#167;1</a><br/>Activities - <a href="5-act.html#SP7">&#167;7</a><br/>Adjectives - <a href="5-adj.html#SP6">&#167;6</a><br/>Equations - <a href="5-eqt.html#SP1">&#167;1</a><br/>Scene Instances - <a href="5-si.html#SP1">&#167;1</a><br/>Multimedia - <a href="5-mlt.html#SP2_3">&#167;2.3</a><br/>Tables - <a href="5-tbl.html#SP2_3">&#167;2.3</a><br/>Table Columns - <a href="5-tc.html#SP2">&#167;2</a><br/>Rules - <a href="5-rls.html#SP12_1">&#167;12.1</a>, <a href="5-rls.html#SP12_2">&#167;12.2</a><br/>Rulebooks - <a href="5-rlb.html#SP7_1">&#167;7.1</a><br/>Variables - <a href="5-vrb.html#SP14">&#167;14</a><br/>Actions - <a href="5-act2.html#SP8_3">&#167;8.3</a>, <a href="5-act2.html#SP9">&#167;9</a><br/>Phrasebook Index - <a href="6-pi.html#SP1_2_3">&#167;1.2.3</a><br/>Command Grammars - <a href="7-cg.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><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="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Hierarchy::apply_metadata_from_raw_wording</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::apply_metadata_from_raw_wording</span></span>:<br/>Completion Module - <a href="3-cm.html#SP1_11_1">&#167;1.11.1</a><br/>Use Options - <a href="3-uo.html#SP1">&#167;1</a><br/>Activities - <a href="5-act.html#SP7">&#167;7</a><br/>Adjectives - <a href="5-adj.html#SP6">&#167;6</a><br/>Equations - <a href="5-eqt.html#SP1">&#167;1</a><br/>Scene Instances - <a href="5-si.html#SP1">&#167;1</a><br/>Multimedia - <a href="5-mlt.html#SP2_3">&#167;2.3</a><br/>Tables - <a href="5-tbl.html#SP2_3">&#167;2.3</a><br/>Table Columns - <a href="5-tc.html#SP2">&#167;2</a><br/>Rules - <a href="5-rls.html#SP12_1">&#167;12.1</a>, <a href="5-rls.html#SP12_2">&#167;12.2</a><br/>Rulebooks - <a href="5-rlb.html#SP7_1">&#167;7.1</a><br/>Variables - <a href="5-vrb.html#SP14">&#167;14</a><br/>Actions - <a href="5-act2.html#SP8_3">&#167;8.3</a>, <a href="5-act2.html#SP9">&#167;9</a><br/>Phrasebook Index - <a href="6-pi.html#SP1_2_3">&#167;1.2.3</a><br/>Command Grammars - <a href="7-cg.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><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="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</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">ANT</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">ANT</span><span class="plain-syntax">, </span><span class="string-syntax">"%+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">ANT</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">ANT</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">Hierarchy::apply_metadata_from_filename</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::apply_metadata_from_filename</span></span>:<br/>Multimedia - <a href="5-mlt.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><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="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Hierarchy::apply_metadata_from_filename</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::apply_metadata_from_filename</span></span>:<br/>Multimedia - <a href="5-mlt.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><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="identifier-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">as_text</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">as_text</span><span class="plain-syntax">, </span><span class="string-syntax">"%f"</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">as_text</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">as_text</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">Hierarchy::apply_metadata_from_heading</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::apply_metadata_from_heading</span></span>:<br/>Variables - <a href="5-vrb.html#SP14">&#167;14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><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="identifier-syntax">heading</span><span class="plain-syntax"> *</span><span class="identifier-syntax">h</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Hierarchy::apply_metadata_from_heading</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">Hierarchy::apply_metadata_from_heading</span></span>:<br/>Variables - <a href="5-vrb.html#SP14">&#167;14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><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="identifier-syntax">heading</span><span class="plain-syntax"> *</span><span class="identifier-syntax">h</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata_from_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><a href="3-cm.html#SP1_10" class="function-link"><span class="function-syntax">CompletionModule::heading_id</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">h</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -98,9 +98,11 @@ raw I6 matter into the Inter tree.
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Interventions::make_all</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">source_text_intervention</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sti</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">sti</span><span class="plain-syntax">, </span><span class="identifier-syntax">source_text_intervention</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">sti</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">infs_to_include_with</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">sti</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">infs_to_include_with</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">sti</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">where_made</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP16" class="function-link"><span class="function-syntax">Emit::intervention</span></a><span class="plain-syntax">(</span><a href="2-int.html#SP4" class="function-link"><span class="function-syntax">Interventions::expand_bracket_plus</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sti</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">matter</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">sti</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">replacing</span><span class="plain-syntax">);</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. </b>Secondly, here are those which append properties to instance or class declarations:
@ -110,8 +112,10 @@ raw I6 matter into the Inter tree.
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Interventions::make_for_subject</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">Interventions::make_for_subject</span></span>:<br/>Property Values - <a href="6-pv.html#SP2_1">&#167;2.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">source_text_intervention</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sti</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">sti</span><span class="plain-syntax">, </span><span class="identifier-syntax">source_text_intervention</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">sti</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">infs_to_include_with</span><span class="plain-syntax"> == </span><span class="identifier-syntax">infs</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">sti</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">infs_to_include_with</span><span class="plain-syntax"> == </span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">sti</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">where_made</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP17" class="function-link"><span class="function-syntax">Emit::append</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><a href="2-int.html#SP4" class="function-link"><span class="function-syntax">Interventions::expand_bracket_plus</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sti</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">matter</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b>Thirdly, from use options:

View file

@ -223,6 +223,7 @@ made in that second case would be something like
<span class="plain-syntax"> </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">UO</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">where_used</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-int.html#SP3" class="function-link"><span class="function-syntax">Interventions::from_use_option</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>

View file

@ -82,6 +82,7 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="element-syntax">declaration_sequence_number</span><span class="plain-syntax"> = -1;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="element-syntax">usages</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ni.html#SP3" class="function-link"><span class="function-syntax">NounIdentifiers::set_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_noun</span><span class="plain-syntax">, </span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="element-syntax">instance_iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP17" class="function-link"><span class="function-syntax">Hierarchy::make_available_one_per_name_only</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="element-syntax">instance_iname</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">icd</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>

View file

@ -662,8 +662,13 @@ location. If it hasn't, we create a project using <span class="extract"><span cl
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">project_file_request</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">F</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">project_file_request</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">P</span><span class="plain-syntax">) </span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="4-pbm.html#SP3" class="function-link"><span class="function-syntax">ProjectBundleManager::claim_folder_as_copy</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">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">F</span><span class="plain-syntax">) </span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="4-pfm.html#SP3" class="function-link"><span class="function-syntax">ProjectFileManager::claim_file_as_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">F</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="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="4-pbm.html#SP3" class="function-link"><span class="function-syntax">ProjectBundleManager::claim_folder_as_copy</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">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="identifier-syntax">Errors::fatal</span><span class="plain-syntax">(</span><span class="string-syntax">"No such Inform project directory"</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">F</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="4-pfm.html#SP3" class="function-link"><span class="function-syntax">ProjectFileManager::claim_file_as_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">F</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="identifier-syntax">Errors::fatal</span><span class="plain-syntax">(</span><span class="string-syntax">"No such Inform source file"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</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">C</span><span class="plain-syntax">) {</span>

View file

@ -132,7 +132,10 @@ not a file, false if we know the reverse, and otherwise not applicable.
<span class="plain-syntax">}</span>
<span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="function-syntax">ProjectBundleManager::claim_folder_as_copy</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">ProjectBundleManager::claim_folder_as_copy</span></span>:<br/>Inbuild Control - <a href="1-ic.html#SP19">&#167;19</a></span></button><span class="plain-syntax">(</span><span class="identifier-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">return</span><span class="plain-syntax"> </span><a href="4-pbm.html#SP2" class="function-link"><span class="function-syntax">ProjectBundleManager::new_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Pathnames::directory_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">canary</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">Pathnames::down</span><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">"Source"</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"story.ni"</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">TextFiles::exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">canary</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-pbm.html#SP2" class="function-link"><span class="function-syntax">ProjectBundleManager::new_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Pathnames::directory_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. Searching. </b>Here we look through a nest to find all projects matching the supplied

View file

@ -133,6 +133,7 @@ or <span class="extract"><span class="extract-syntax">.i7</span></span>.
<span class="plain-syntax">}</span>
<span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="function-syntax">ProjectFileManager::claim_file_as_copy</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">ProjectFileManager::claim_file_as_copy</span></span>:<br/>Inbuild Control - <a href="1-ic.html#SP19">&#167;19</a></span></button><span class="plain-syntax">(</span><span class="identifier-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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">TextFiles::exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</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">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="4-pfm.html#SP2" class="function-link"><span class="function-syntax">ProjectFileManager::new_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Filenames::get_leafname</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">), </span><span class="identifier-syntax">F</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax"> = </span><a href="4-pfm.html#SP2" class="function-link"><span class="function-syntax">ProjectFileManager::from_copy</span></a><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">proj</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">stand_alone</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>

View file

@ -400,7 +400,7 @@ copies of Locksmith around. Inbuild first reduces the list to just those
whose version lies in the acceptable range. It then applies the following
rules:
(1) A copy in the Materials nest takes precedence over all others.
(2) Otherwise, all other copies take precendence over those in the
(2) Otherwise, all other copies take precedence over those in the
internal nest.
(3) Otherwise, semantic version number rules are used to determine which
copy had precedence.

View file

@ -4,5 +4,5 @@ extension: Damaged by Anonymous in directory inbuild/Tests/Zoo/Extensions/Robert
3. extension misworded: the version number '3a' is malformed
4. extension misworded: cannot read compatibility '(For Geeks Only)'
extension: New Standard Tuning by Robert Fripp v3 (for Inform6/32/v3.1.2, Inform6/32d/v3.1.2, Binary/32/v1, Binary/32d/v1, Text/32/v1, Text/32d/v1, C/32/v1, C/32d/v1, Inventory/32/v1 or Inventory/32d/v1) in directory inbuild/Tests/Zoo/Extensions/Robert Fripp
extension: New Standard Tuning by Robert Fripp v3.1-Alpha+6b34 (for Inform6/32/v3.1.2, Inform6/32d/v3.1.2, Binary/32/v1, Binary/32d/v1, Text/32/v1, Text/32d/v1, C/32/v1, C/32d/v1, Inventory/32/v1 or Inventory/32d/v1) in directory inbuild/Tests/Zoo/Extensions/Robert Fripp
extension: New Standard Tuning by Robert Fripp v3.1-Alpha+6B34 (for Inform6/32/v3.1.2, Inform6/32d/v3.1.2, Binary/32/v1, Binary/32d/v1, Text/32/v1, Text/32d/v1, C/32/v1, C/32d/v1, Inventory/32/v1 or Inventory/32d/v1) in directory inbuild/Tests/Zoo/Extensions/Robert Fripp
kit: CastrovalvaKit v2.7.1 (not for Inform6/32/v3.1.2, Inform6/32d/v3.1.2, Binary/32/v1, Binary/32d/v1, Text/32/v1, Text/32d/v1, C/32/v1, C/32d/v1, Inventory/32/v1 or Inventory/32d/v1) at path inbuild/Tests/Zoo/Inter/CastrovalvaKit

View file

@ -556,8 +556,13 @@ void Supervisor::make_project_from_command_line(inbuild_copy *C) {
if (Str::len(project_file_request) > 0)
F = Filenames::from_text(project_file_request);
if (C == NULL) {
if (P) C = ProjectBundleManager::claim_folder_as_copy(P);
else if (F) C = ProjectFileManager::claim_file_as_copy(F);
if (P) {
C = ProjectBundleManager::claim_folder_as_copy(P);
if (C == NULL) Errors::fatal("No such Inform project directory");
} else if (F) {
C = ProjectFileManager::claim_file_as_copy(F);
if (C == NULL) Errors::fatal("No such Inform source file");
}
}
inform_project *proj = NULL;
if (C) {

View file

@ -71,7 +71,10 @@ void ProjectBundleManager::claim_as_copy(inbuild_genre *gen, inbuild_copy **C,
}
inbuild_copy *ProjectBundleManager::claim_folder_as_copy(pathname *P) {
return ProjectBundleManager::new_copy(Pathnames::directory_name(P), P);
filename *canary = Filenames::in(Pathnames::down(P, I"Source"), I"story.ni");
if (TextFiles::exists(canary))
return ProjectBundleManager::new_copy(Pathnames::directory_name(P), P);
return NULL;
}
@h Searching.

View file

@ -72,6 +72,7 @@ void ProjectFileManager::claim_as_copy(inbuild_genre *gen, inbuild_copy **C,
}
inbuild_copy *ProjectFileManager::claim_file_as_copy(filename *F) {
if (TextFiles::exists(F) == FALSE) return NULL;
inbuild_copy *C = ProjectFileManager::new_copy(Filenames::get_leafname(F), F);
inform_project *proj = ProjectFileManager::from_copy(C);
proj->stand_alone = TRUE;

View file

@ -154,7 +154,7 @@
<a id="l0"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">activities</span>&nbsp;&nbsp;</p>
<a id="l1"></a><p class="indexentry" style="margin-left: 4em;"><span class="indexstandard">catalogue</span>&nbsp;&nbsp;<a href="IM_1.html" class="indexlink">1.1</a></p>
<a id="l37"></a><p class="indexentry" style="margin-left: 8em;"><span class="indexactivitycat">bingley</span>&nbsp;&nbsp;<a href="IM_2.html" class="indexlink">2.1</a></p>
<a id="l40"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">apostrophe</span>&nbsp;&nbsp;<span class="indexsee">see</span> <a href="#l3" class="indexseelink">punctuation: apostrophe, meaning quotation mark</a></p>
<a id="l40"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">apostrophe</span>&nbsp;&nbsp;<span class="indexsee">see</span><a href="#l3" class="indexseelink">punctuation: apostrophe, meaning quotation mark</a></p>
<a id="l41"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexphrase"><span class="indexphrasebracketed">(phrase nothing -&gt; value)</span> applied</span>&nbsp;<span class="indexgloss">phrase</span>&nbsp;&nbsp;<a href="IM_2.html#defn1" class="indexlink">2.1</a></p>
<a id="l42"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexphrase"><span class="indexphrasebracketed">(phrase value -&gt; value)</span> applied to <span class="indexphrasebracketed">(value)</span></span>&nbsp;<span class="indexgloss">phrase</span>&nbsp;&nbsp;<a href="IM_2.html#defn2" class="indexlink">2.1</a></p>
<a id="l43"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexphrase"><span class="indexphrasebracketed">(phrase <span class="indexphrasebracketed">(value, value)</span> -&gt; value)</span> applied to <span class="indexphrasebracketed">(value)</span> and <span class="indexphrasebracketed">(value)</span></span>&nbsp;<span class="indexgloss">phrase</span>&nbsp;&nbsp;<a href="IM_2.html#defn3" class="indexlink">2.1</a></p>
@ -178,7 +178,7 @@
</td>
<td>
<a id="l6"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexname">Carroll, Lewis</span>&nbsp;&nbsp;<a href="IM_1.html" class="indexlink">1.1</a></p>
<a id="l11"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">commands (of the player)</span>&nbsp;&nbsp;<span class="indexsee">see</span> <a href="#l8" class="indexseelink">understanding</a></p>
<a id="l11"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">commands (of the player)</span>&nbsp;&nbsp;<span class="indexsee">see</span><a href="#l8" class="indexseelink">understanding</a></p>
</td>
</tr>
@ -198,7 +198,7 @@
<a id="G"></a><b>G</b>
</td>
<td>
<a id="l12"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">grammar of player's command</span>&nbsp;&nbsp;<span class="indexsee">see</span> <a href="#l8" class="indexseelink">understanding</a></p>
<a id="l12"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">grammar of player's command</span>&nbsp;&nbsp;<span class="indexsee">see</span><a href="#l8" class="indexseelink">understanding</a></p>
<a id="l20"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">grammar tokens</span>&nbsp;&nbsp;<a href="IM_1.html" class="indexlink">1.2</a></p>
</td>
@ -274,7 +274,7 @@
</td>
<td>
<a id="l9"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">verbs</span>&nbsp;&nbsp;</p>
<a id="l10"></a><p class="indexentry" style="margin-left: 4em;"><span class="indexstandard">understanding verbs in player's command</span>&nbsp;&nbsp;<span class="indexsee">see</span> <a href="#l8" class="indexseelink">understanding</a></p>
<a id="l10"></a><p class="indexentry" style="margin-left: 4em;"><span class="indexstandard">understanding verbs in player's command</span>&nbsp;&nbsp;<span class="indexsee">see</span><a href="#l8" class="indexseelink">understanding</a></p>
<a id="l24"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexrel">visibility</span>&nbsp;<span class="indexgloss">relation</span>&nbsp;&nbsp;</p>
<a id="l25"></a><p class="indexentry" style="margin-left: 4em;"><span class="indexstandard">requirement in defining actions</span>&nbsp;&nbsp;<a href="IM_1.html" class="indexlink">1.2</a></p>

View file

@ -123,7 +123,7 @@
<a id="l0"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">activities</span>&nbsp;&nbsp;</p>
<a id="l1"></a><p class="indexentry" style="margin-left: 4em;"><span class="indexstandard">catalogue</span>&nbsp;&nbsp;<a href="doc1.html" class="indexlink">1.1</a></p>
<a id="l37"></a><p class="indexentry" style="margin-left: 8em;"><span class="indexactivitycat">bingley</span>&nbsp;&nbsp;<a href="doc3.html" class="indexlink">2.1</a></p>
<a id="l40"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">apostrophe</span>&nbsp;&nbsp;<span class="indexsee">see</span> <a href="#l3" class="indexseelink">punctuation: apostrophe, meaning quotation mark</a></p>
<a id="l40"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">apostrophe</span>&nbsp;&nbsp;<span class="indexsee">see</span><a href="#l3" class="indexseelink">punctuation: apostrophe, meaning quotation mark</a></p>
<a id="l41"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexphrase"><span class="indexphrasebracketed">(phrase nothing -&gt; value)</span> applied</span>&nbsp;<span class="indexgloss">phrase</span>&nbsp;&nbsp;<a href="doc3.html#defn1" class="indexlink">2.1</a></p>
<a id="l42"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexphrase"><span class="indexphrasebracketed">(phrase value -&gt; value)</span> applied to <span class="indexphrasebracketed">(value)</span></span>&nbsp;<span class="indexgloss">phrase</span>&nbsp;&nbsp;<a href="doc3.html#defn2" class="indexlink">2.1</a></p>
<a id="l43"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexphrase"><span class="indexphrasebracketed">(phrase <span class="indexphrasebracketed">(value, value)</span> -&gt; value)</span> applied to <span class="indexphrasebracketed">(value)</span> and <span class="indexphrasebracketed">(value)</span></span>&nbsp;<span class="indexgloss">phrase</span>&nbsp;&nbsp;<a href="doc3.html#defn3" class="indexlink">2.1</a></p>
@ -147,7 +147,7 @@
</td>
<td>
<a id="l6"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexname">Carroll, Lewis</span>&nbsp;&nbsp;<a href="doc1.html" class="indexlink">1.1</a></p>
<a id="l12"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">commands (of the player)</span>&nbsp;&nbsp;<span class="indexsee">see</span> <a href="#l9" class="indexseelink">understanding</a></p>
<a id="l12"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">commands (of the player)</span>&nbsp;&nbsp;<span class="indexsee">see</span><a href="#l9" class="indexseelink">understanding</a></p>
</td>
</tr>
@ -167,7 +167,7 @@
<a id="G"></a><b>G</b>
</td>
<td>
<a id="l13"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">grammar of player's command</span>&nbsp;&nbsp;<span class="indexsee">see</span> <a href="#l9" class="indexseelink">understanding</a></p>
<a id="l13"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">grammar of player's command</span>&nbsp;&nbsp;<span class="indexsee">see</span><a href="#l9" class="indexseelink">understanding</a></p>
<a id="l21"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">grammar tokens</span>&nbsp;&nbsp;<a href="doc2.html" class="indexlink">1.2</a></p>
</td>
@ -243,7 +243,7 @@
</td>
<td>
<a id="l10"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">verbs</span>&nbsp;&nbsp;</p>
<a id="l11"></a><p class="indexentry" style="margin-left: 4em;"><span class="indexstandard">understanding verbs in player's command</span>&nbsp;&nbsp;<span class="indexsee">see</span> <a href="#l9" class="indexseelink">understanding</a></p>
<a id="l11"></a><p class="indexentry" style="margin-left: 4em;"><span class="indexstandard">understanding verbs in player's command</span>&nbsp;&nbsp;<span class="indexsee">see</span><a href="#l9" class="indexseelink">understanding</a></p>
<a id="l25"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexrel">visibility</span>&nbsp;<span class="indexgloss">relation</span>&nbsp;&nbsp;</p>
<a id="l26"></a><p class="indexentry" style="margin-left: 4em;"><span class="indexstandard">requirement in defining actions</span>&nbsp;&nbsp;<a href="doc2.html" class="indexlink">1.2</a></p>

View file

@ -80,7 +80,9 @@
<div class="headingtext">
Documentation</div>
<div class="headingrubric">
Two complete books about Inform:<br><i>Writing with Inform</i>, a comprehensive introduction<br><i>The Inform Recipe Book</i>, practical solutions for authors to use</div>
Two complete books about Inform:<br>
<i>Writing with Inform</i>, a comprehensive introduction<br>
<i>The Inform Recipe Book</i>, practical solutions for authors to use</div>
</div>
</td>

View file

@ -123,7 +123,7 @@
<a id="l0"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">activities</span>&nbsp;&nbsp;</p>
<a id="l1"></a><p class="indexentry" style="margin-left: 4em;"><span class="indexstandard">catalogue</span>&nbsp;&nbsp;<a href="doc1.html" class="indexlink">1.1</a></p>
<a id="l37"></a><p class="indexentry" style="margin-left: 8em;"><span class="indexactivitycat">bingley</span>&nbsp;&nbsp;<a href="doc3.html" class="indexlink">2.1</a></p>
<a id="l40"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">apostrophe</span>&nbsp;&nbsp;<span class="indexsee">see</span> <a href="#l3" class="indexseelink">punctuation: apostrophe, meaning quotation mark</a></p>
<a id="l40"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">apostrophe</span>&nbsp;&nbsp;<span class="indexsee">see</span><a href="#l3" class="indexseelink">punctuation: apostrophe, meaning quotation mark</a></p>
<a id="l41"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexphrase"><span class="indexphrasebracketed">(phrase nothing -&gt; value)</span> applied</span>&nbsp;<span class="indexgloss">phrase</span>&nbsp;&nbsp;<a href="doc3.html#defn1" class="indexlink">2.1</a></p>
<a id="l42"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexphrase"><span class="indexphrasebracketed">(phrase value -&gt; value)</span> applied to <span class="indexphrasebracketed">(value)</span></span>&nbsp;<span class="indexgloss">phrase</span>&nbsp;&nbsp;<a href="doc3.html#defn2" class="indexlink">2.1</a></p>
<a id="l43"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexphrase"><span class="indexphrasebracketed">(phrase <span class="indexphrasebracketed">(value, value)</span> -&gt; value)</span> applied to <span class="indexphrasebracketed">(value)</span> and <span class="indexphrasebracketed">(value)</span></span>&nbsp;<span class="indexgloss">phrase</span>&nbsp;&nbsp;<a href="doc3.html#defn3" class="indexlink">2.1</a></p>
@ -147,7 +147,7 @@
</td>
<td>
<a id="l6"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexname">Carroll, Lewis</span>&nbsp;&nbsp;<a href="doc1.html" class="indexlink">1.1</a></p>
<a id="l12"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">commands (of the player)</span>&nbsp;&nbsp;<span class="indexsee">see</span> <a href="#l9" class="indexseelink">understanding</a></p>
<a id="l12"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">commands (of the player)</span>&nbsp;&nbsp;<span class="indexsee">see</span><a href="#l9" class="indexseelink">understanding</a></p>
</td>
</tr>
@ -167,7 +167,7 @@
<a id="G"></a><b>G</b>
</td>
<td>
<a id="l13"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">grammar of player's command</span>&nbsp;&nbsp;<span class="indexsee">see</span> <a href="#l9" class="indexseelink">understanding</a></p>
<a id="l13"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">grammar of player's command</span>&nbsp;&nbsp;<span class="indexsee">see</span><a href="#l9" class="indexseelink">understanding</a></p>
<a id="l21"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">grammar tokens</span>&nbsp;&nbsp;<a href="doc2.html" class="indexlink">1.2</a></p>
</td>
@ -243,7 +243,7 @@
</td>
<td>
<a id="l10"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexstandard">verbs</span>&nbsp;&nbsp;</p>
<a id="l11"></a><p class="indexentry" style="margin-left: 4em;"><span class="indexstandard">understanding verbs in player's command</span>&nbsp;&nbsp;<span class="indexsee">see</span> <a href="#l9" class="indexseelink">understanding</a></p>
<a id="l11"></a><p class="indexentry" style="margin-left: 4em;"><span class="indexstandard">understanding verbs in player's command</span>&nbsp;&nbsp;<span class="indexsee">see</span><a href="#l9" class="indexseelink">understanding</a></p>
<a id="l25"></a><p class="indexentry" style="margin-left: 0em;"><span class="indexrel">visibility</span>&nbsp;<span class="indexgloss">relation</span>&nbsp;&nbsp;</p>
<a id="l26"></a><p class="indexentry" style="margin-left: 4em;"><span class="indexstandard">requirement in defining actions</span>&nbsp;&nbsp;<a href="doc2.html" class="indexlink">1.2</a></p>

View file

@ -80,7 +80,9 @@
<div class="headingtext">
Documentation</div>
<div class="headingrubric">
Two complete books about Inform:<br><i>Writing with Inform</i>, a comprehensive introduction<br><i>The Inform Recipe Book</i>, practical solutions for authors to use</div>
Two complete books about Inform:<br>
<i>Writing with Inform</i>, a comprehensive introduction<br>
<i>The Inform Recipe Book</i>, practical solutions for authors to use</div>
</div>
</td>

View file

@ -1,9 +1,9 @@
Total memory consumption was 129402K = 126 MB
Total memory consumption was 129430K = 126 MB
---- was used for 2043907 objects, in 362622 frames in 0 x 800K = 0K = 0 MB:
---- was used for 2044308 objects, in 362627 frames in 0 x 800K = 0K = 0 MB:
31.5% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes
19.5% text_stream_array 4600 x 100 = 460000 objects, 25907200 bytes
19.5% text_stream_array 4603 x 100 = 460300 objects, 25924096 bytes
18.3% linked_list 43446 objects, 24329760 bytes
10.6% inter_symbol_array 132 x 1024 = 135168 objects, 14061696 bytes
9.9% inter_error_stash_array 101 x 1024 = 103424 objects, 13241504 bytes
@ -17,7 +17,7 @@ Total memory consumption was 129402K = 126 MB
1.5% inter_schema_token 13969 objects, 2011536 bytes
1.4% package_request 21151 objects, 1861288 bytes
1.3% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes
1.1% dict_entry_array 467 x 100 = 46700 objects, 1509344 bytes
1.1% dict_entry_array 468 x 100 = 46800 objects, 1512576 bytes
1.1% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes
1.1% inter_symbols_table 26588 objects, 1488928 bytes
1.0% i6_schema_array 23 x 100 = 2300 objects, 1380736 bytes
@ -49,7 +49,7 @@ Total memory consumption was 129402K = 126 MB
0.1% rule_family_data 401 objects, 147568 bytes
0.1% nonterminal 760 objects, 139840 bytes
0.1% nascent_array 2125 objects, 136000 bytes
---- documentation_ref 1274 objects, 112112 bytes
---- documentation_ref 1273 objects, 112024 bytes
---- inference 1703 objects, 108992 bytes
---- imperative_defn 1379 objects, 99288 bytes
---- noun_usage 2403 objects, 96120 bytes
@ -112,10 +112,10 @@ Total memory consumption was 129402K = 126 MB
---- generated_segment 14 objects, 14784 bytes
---- booking_list 407 objects, 13024 bytes
---- adjective_iname_holder 320 objects, 12800 bytes
---- pathname 314 objects, 12560 bytes
---- pathname 315 objects, 12600 bytes
---- uniqueness_count 454 objects, 10896 bytes
---- inter_construct 30 objects, 10320 bytes
---- filename 252 objects, 10080 bytes
---- filename 253 objects, 10120 bytes
---- stopwatch_timer 113 objects, 9040 bytes
---- equation_node 68 objects, 7616 bytes
---- understanding_item_array 3 x 100 = 300 objects, 7296 bytes
@ -237,7 +237,7 @@ Total memory consumption was 129402K = 126 MB
100.0% was used for memory not allocated for objects:
59.7% text stream storage 79116868 bytes in 478026 claims
59.7% text stream storage 79145104 bytes in 478305 claims
3.9% dictionary storage 5227008 bytes in 7517 claims
---- sorting 1448 bytes in 149 claims
5.4% source text 7200000 bytes in 3 claims
@ -255,5 +255,5 @@ Total memory consumption was 129402K = 126 MB
---- code generation workspace for objects 1336 bytes in 4 claims
0.2% emitter array storage 280032 bytes in 1997 claims
-138.-6% was overhead - -183787216 bytes = -179479K = -175 MB
-138.-6% was overhead - -183807336 bytes = -179499K = -175 MB

View file

@ -1,32 +1,33 @@
100.0% in inform7 run
71.5% in compilation to Inter
71.4% in compilation to Inter
50.2% in //Sequence::undertake_queued_tasks//
4.3% in //MajorNodes::pre_pass//
4.2% in //MajorNodes::pre_pass//
3.5% in //MajorNodes::pass_1//
2.5% in //RTPhrasebook::compile_entries//
2.6% in //RTPhrasebook::compile_entries//
1.8% in //ImperativeDefinitions::assess_all//
1.6% in //RTKindConstructors::compile//
1.0% in //Sequence::lint_inter//
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.4% in //World::stage_V//
0.2% in //CompletionModule::compile//
0.2% in //InferenceSubjects::emit_all//
0.2% in //RTKindConstructors::compile_permissions//
0.2% in //Task::make_built_in_kind_constructors//
3.3% not specifically accounted for
25.5% in running Inter pipeline
1.4% in //RTKindConstructors::compile//
1.1% in //Sequence::lint_inter//
0.5% in //ImperativeDefinitions::compile_first_block//
0.5% in //MajorNodes::pass_2//
0.5% in //Sequence::undertake_queued_tasks//
0.5% in //Sequence::undertake_queued_tasks//
0.5% in //World::stage_V//
0.1% in //CompletionModule::compile//
0.1% in //InferenceSubjects::emit_all//
0.1% in //RTKindConstructors::compile_permissions//
0.1% in //Task::make_built_in_kind_constructors//
0.1% in //World::stages_II_and_III//
2.5% not specifically accounted for
25.7% in running Inter pipeline
10.0% in step 14/15: generate inform6 -> auto.inf
5.6% in step 5/15: load-binary-kits
5.2% in step 6/15: make-synoptic-module
5.4% 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.2% in step 11/15: eliminate-redundant-labels
0.2% in step 8/15: detect-indirect-calls
0.3% in step 12/15: eliminate-redundant-operations
0.3% in step 4/15: compile-splats
0.3% in step 7/15: shorten-wiring
0.3% in step 8/15: detect-indirect-calls
0.1% in step 11/15: eliminate-redundant-labels
1.5% not specifically accounted for
2.5% in supervisor
0.5% not specifically accounted for
2.2% in supervisor
0.6% not specifically accounted for

View file

@ -33,7 +33,7 @@ ph_defaultvalue _ doc62 "4.11" "4.11. Default values of kinds"
PM_EmptyKind VARIABLES var_location _ doc63 "4.12" "4.12. Values that vary"
PM_TooManyDuplicates _ doc65 "4.14" "4.14. Duplicates"
PM_ComplexEvery PM_AssemblyRegress PM_AssemblyLoop _ doc66 "4.15" "4.15. Assemblies and body parts"
PM_TSWithPunctuation PM_TSWithComma _ doc69 "5.1" "5.1. Text with substitutions"
PM_TSWithPunctuation _ doc69 "5.1" "5.1. Text with substitutions"
phs_bracket phs_closebracket phs_apostrophe phs_quotemark _ doc70 "5.2" "5.2. How Inform reads quoted text"
ph_say phs_a phs_A phs_the phs_The _ doc71 "5.3" "5.3. Text which names things"
phs_numwords phs_s _ doc72 "5.4" "5.4. Text with numbers"

View file

@ -0,0 +1,10 @@
The lab is a room.
To decide which number is the magic number:
(- 35638 -).
Include (-
[ foo_func x;
x = (+ the magic number +);
];
-).

View file

@ -1,3 +0,0 @@
Home is a room.
When play begins: say "Hello [,]".

View file

@ -0,0 +1,11 @@
Inform 7 v10.1.0 has started.
I've now read your source text, which is 18 words long.
I've also read Basic Inform by Graham Nelson, which is 7691 words long.
I've also read English Language by Graham Nelson, which is 2328 words long.
I've also read Standard Rules by Graham Nelson, which is 32168 words long.
Problem__ PM_PhraseInBracketsPlus
>--> In 'Include (- [ foo_func x; x = (+ the magic number +); ]; -)' (source
text, line 6), you tried to use '(+' and '+)' to expand to a value computed
by a phrase, 'the magic number', but these brackets can only be used with
constant values.
Inform 7 has finished.

View file

@ -1,12 +0,0 @@
Inform 7 v10.1.0 has started.
I've now read your source text, which is 10 words long.
I've also read Basic Inform by Graham Nelson, which is 7691 words long.
I've also read English Language by Graham Nelson, which is 2328 words long.
I've also read Standard Rules by Graham Nelson, which is 32092 words long.
Problem__ PM_TSWithComma
>--> You wrote 'say "Hello [,]"' (source text, line 3): but a substitution
contains a comma ',', which is (for obscure reasons) against the rules for
text substitutions. (You may be able to get around this by placing the
phrase containing the comma in round brackets '(' and ')', which reduces
the risk of ambiguity.)
Inform 7 has finished.

View file

@ -1088,7 +1088,10 @@ void ImperativeSubtrees::unroll_says(parse_node *cb_node, wording W, int depth)
(Vocabulary::test_flags(Wordings::first_wn(W), TEXTWITHSUBS_MC)) && (depth == 0)) {
wchar_t *p = Lexer::word_raw_text(Wordings::first_wn(W));
@<Check that substitution does not contain suspicious punctuation@>;
wording A = Feeds::feed_C_string_expanding_strings(p);
TEMPORARY_TEXT(sub)
@<Write a form of the text bracketing substitutions with commas@>;
wording A = Feeds::feed_text_expanding_strings(sub);
DISCARD_TEXT(sub)
if (<verify-expanded-text-substitution>(A))
ImperativeSubtrees::unroll_says(cb_node, A, depth+1);
} else {
@ -1099,34 +1102,50 @@ void ImperativeSubtrees::unroll_says(parse_node *cb_node, wording W, int depth)
}
@<Check that substitution does not contain suspicious punctuation@> =
int k, sqb = 0;
for (k=0; p[k]; k++) {
int sqb = 0;
for (int k=0; p[k]; k++) {
switch (p[k]) {
case '[': sqb++; if (sqb > 1) @<Issue problem message for nested substitution@>; break;
case ']': sqb--; if (sqb < 0) @<Issue problem message for unopened substitution@>; break;
case ':': if ((k>0) && (Characters::isdigit(p[k-1])) && (Characters::isdigit(p[k+1]))) break;
/* fall through */
case ';':
case '[': sqb++;
if (sqb > 1) @<Issue problem message for nested substitution@>;
break;
case ']': sqb--;
if (sqb < 0) @<Issue problem message for unopened substitution@>;
break;
case ':':
if ((k>0) &&
(Characters::isdigit(p[k-1])) && (Characters::isdigit(p[k+1]))) break;
if (sqb > 0) @<Issue PM_TSWithPunctuation problem@>;
break;
case ',':
if (sqb > 0) @<Issue problem message for comma in a substitution@>;
case ';':
if (sqb > 0) @<Issue PM_TSWithPunctuation problem@>;
break;
}
}
if (sqb != 0) @<Issue problem message for unclosed substitution@>;
@ And the more specialised:
@ A long-standing annoyance in Inform syntax was that commas were not allowed
inside text substitutions: |"Like [this, that]."| The reason for this was that
such a text converts to the say phrase |say "Like ", this, that, "."|; so that
what was intended as a single expression with a comma in |this, that| came out
as two, |this| then |that|. This arose seldom, but meant that phrases using
phrase options, which unhappily include a comma in their syntax, could not
easily be used in substitutions.
@<Issue problem message for comma in a substitution@> =
TextSubstitutions::it_is_not_worth_adding();
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_TSWithComma),
"a substitution contains a comma ','",
"which is (for obscure reasons) against the rules for text substitutions. "
"(You may be able to get around this by placing the phrase containing the "
"comma in round brackets '(' and ')', which reduces the risk of ambiguity.)");
TextSubstitutions::it_is_worth_adding();
return;
The text now converts to |say "Like ", (this, that), "."|, so that a single
bracketed expression |(this, that)| appears. Thus, round brackets are put
around the contents of any substitution which contains a comma.
@<Write a form of the text bracketing substitutions with commas@> =
for (int k=0, in_ts_with_commas = FALSE; p[k]; k++) {
if (p[k] == '[')
for (int j=k+1; (p[j]) && (p[j] != ']'); j++)
if (p[j] == ',')
in_ts_with_commas = TRUE;
if ((p[k] == ']') && (in_ts_with_commas)) PUT_TO(sub, ')');
PUT_TO(sub, p[k]);
if ((p[k] == '[') && (in_ts_with_commas)) PUT_TO(sub, '(');
if (p[k] == ']') in_ts_with_commas = FALSE;
}
@<Issue problem message for nested substitution@> =
TextSubstitutions::it_is_not_worth_adding();

View file

@ -1706,7 +1706,18 @@ void CSIInline::eval_bracket_plus_to_text(text_stream *OUT, wording LW) {
parse_node *spec = NULL;
@<Evaluate the text as a value@>;
if (Specifications::is_phrasal(spec)) {
Problems::quote_source(1, current_sentence);
Problems::quote_wording(2, LW);
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_PhraseInBracketsPlus));
Problems::issue_problem_segment(
"In %1, you tried to use '(+' and '+)' to expand to a value computed by a "
"phrase, '%2', but these brackets can only be used with constant values.");
Problems::issue_problem_end();
WRITE("0");
return;
}
inter_pair val = CompileValues::to_pair(spec);
if (InterValuePairs::is_symbolic(val)) {
PUT(URL_SYMBOL_CHAR);

View file

@ -2133,6 +2133,14 @@ void Hierarchy::make_available(inter_name *iname) {
Wiring::socket(Emit::tree(), ma_as, S);
}
void Hierarchy::make_available_one_per_name_only(inter_name *iname) {
text_stream *ma_as = InterNames::get_translation(iname);
if (Str::len(ma_as) == 0) ma_as = InterNames::to_text(iname);
LargeScale::package_type(Emit::tree(), I"_linkage");
inter_symbol *S = InterNames::to_symbol(iname);
Wiring::socket_one_per_name_only(Emit::tree(), ma_as, S);
}
@h Adding packages at attachment points.
Consider the following example piece of declaration:
= (text as InC)

View file

@ -32,9 +32,11 @@ Firstly, here are the free-standing interventions:
void Interventions::make_all(void) {
source_text_intervention *sti;
LOOP_OVER(sti, source_text_intervention)
if (sti->infs_to_include_with == NULL)
if (sti->infs_to_include_with == NULL) {
current_sentence = sti->where_made;
Emit::intervention(Interventions::expand_bracket_plus(sti->matter),
sti->replacing);
}
}
@ Secondly, here are those which append properties to instance or class declarations:
@ -43,8 +45,10 @@ void Interventions::make_all(void) {
void Interventions::make_for_subject(inter_name *iname, inference_subject *infs) {
source_text_intervention *sti;
LOOP_OVER(sti, source_text_intervention)
if (sti->infs_to_include_with == infs)
if (sti->infs_to_include_with == infs) {
current_sentence = sti->where_made;
Emit::append(iname, Interventions::expand_bracket_plus(sti->matter));
}
}
@ Thirdly, from use options:

View file

@ -153,5 +153,6 @@ made in that second case would be something like
PUT_TO(S, Str::get_at(UO, i));
}
}
current_sentence = uo->where_used;
Interventions::from_use_option(S);
}

View file

@ -23,6 +23,7 @@ instance_compilation_data RTInstances::new_compilation_data(instance *I) {
icd.declaration_sequence_number = -1;
icd.usages = NEW_LINKED_LIST(parse_node);
NounIdentifiers::set_iname(I->as_noun, icd.instance_iname);
Hierarchy::make_available_one_per_name_only(icd.instance_iname);
return icd;
}

View file

@ -1621,7 +1621,7 @@ otherwise convert it from an |OPERATOR_ISTT| to an |IDENTIFIER_ISTT|.
}
@ Well... so actually we have to be a bit more careful about left vs right
associativity if there are two least-precendence operators both at the top
associativity if there are two least-precedence operators both at the top
level, as in the case of |x - y + z| or (horrifically) |x = y = z|.
=

View file

@ -300,6 +300,14 @@ be wired to another connector.
=
inter_symbol *Wiring::socket(inter_tree *I, text_stream *name, inter_symbol *defn) {
return Wiring::socket_inner(I, name, defn, FALSE);
}
inter_symbol *Wiring::socket_one_per_name_only(inter_tree *I, text_stream *name,
inter_symbol *defn) {
return Wiring::socket_inner(I, name, defn, TRUE);
}
inter_symbol *Wiring::socket_inner(inter_tree *I, text_stream *name, inter_symbol *defn,
int allow_multiple_sockets_with_the_same_name) {
if (defn == NULL) internal_error("tried to make socket for nothing");
if (InterSymbol::is_socket(defn)) {
if (I == InterPackage::tree(InterSymbol::package(defn))) {
@ -324,7 +332,8 @@ inter_symbol *Wiring::socket(inter_tree *I, text_stream *name, inter_symbol *def
if (socket) {
if (InterSymbol::is_socket(socket) == FALSE)
internal_error("tried to make socket with same name as a plug");
if (Wiring::wired_to(socket) != defn) {
if ((allow_multiple_sockets_with_the_same_name == FALSE) &&
(Wiring::wired_to(socket) != defn)) {
WRITE_TO(STDERR, "Socket %S has two defns\n", name);
InterSymbolsTable::write_symbol_URL(STDERR, Wiring::wired_to(socket));
WRITE_TO(STDERR, "\n");

View file

@ -704,17 +704,13 @@ a constant 1, 2 or 3, or else plain roman is all you get.
break;
case STYLE_BIP: {
inter_tree_node *N = InterTree::first_child(P);
if ((Inode::is(N, CONSTANT_IST)) &&
(ConstantInstruction::list_format(N) == CONST_LIST_FORMAT_NONE)) {
inter_ti style = InterValuePairs::to_number(ConstantInstruction::constant(N));
switch (style) {
case 1: WRITE("style bold"); break;
case 2: WRITE("style underline"); break;
case 3: WRITE("style reverse"); break;
default: WRITE("style roman");
}
} else {
WRITE("style roman");
inter_pair pair = ValInstruction::value(N);
inter_ti style = InterValuePairs::to_number(pair);
switch (style) {
case 1: WRITE("style bold"); break;
case 2: WRITE("style underline"); break;
case 3: WRITE("style reverse"); break;
default: WRITE("style roman");
}
break;
}

View file

@ -128,6 +128,8 @@ void PipelineErrors::error_with(pipeline_step *step, char *erm, text_stream *quo
}
}
do_not_locate_problems = FALSE;
if (Log::aspect_switched_on(INTER_DA))
TextualInter::write(DL, Emit::tree(), NULL);
@h Errors in kit source.
Errors like this used to be basically failed assertions, but inevitably people

View file

@ -2307,7 +2307,7 @@ That concludes our tour through the design of the initial state of a simulated w
But that is about all. There is as yet no element of surprise, no aim or sense of progress to be earned, and no narrative thread. We have painted the backcloth, and laid out the properties, but the actors have yet to take the stage.
[Chapter: Text] Text with substitutions {PM_TSWithComma} {PM_TSWithPunctuation}
[Chapter: Text] Text with substitutions {PM_TSWithPunctuation}
^^{text <-- strings of characters}
^^{text: displaying}

View file

@ -1,5 +1,5 @@
Size of lexicon: 3101 excerpt meanings
Stored among 839 words out of total vocabulary of 10569
Stored among 839 words out of total vocabulary of 10568
709 words have a start list: longest belongs to report (with 293 meanings)
15 words have an end list: longest belongs to case (with 6 meanings)
29 words have a middle list: longest belongs to to (with 4 meanings)