1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-16 23:30:44 +03:00

Tentative work on imperative nodes

This commit is contained in:
Graham Nelson 2021-03-24 00:20:56 +00:00
parent 3869e103ba
commit 919fd9bc3e
96 changed files with 8659 additions and 11971 deletions

View file

@ -1,6 +1,6 @@
# Inform 7
v10.1.0-alpha.1+6R59 'Krypton' (23 March 2021)
v10.1.0-alpha.1+6R60 'Krypton' (24 March 2021)
## About Inform 7

View file

@ -1,3 +1,3 @@
Prerelease: alpha.1
Build Date: 23 March 2021
Build Number: 6R59
Build Date: 24 March 2021
Build Number: 6R60

View file

@ -234,7 +234,7 @@ conclusion we would have reached.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-ptmn.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-am.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-bv.html">bv</a></li><li class="progresssection"><a href="2-ptmn.html">ptmn</a></li><li class="progresscurrent">ar</li><li class="progresssection"><a href="2-cs.html">cs</a></li><li class="progresssection"><a href="2-ps.html">ps</a></li><li class="progresschapter"><a href="3-dlr.html">3</a></li><li class="progresschapter"><a href="4-nr.html">4</a></li><li class="progresschapter"><a href="5-tc.html">5</a></li><li class="progresschapter"><a href="6-kpr.html">6</a></li><li class="progressnext"><a href="2-cs.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-ptmn.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-am.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-bv.html">bv</a></li><li class="progresssection"><a href="2-ptmn.html">ptmn</a></li><li class="progresscurrent">ar</li><li class="progresssection"><a href="2-cs.html">cs</a></li><li class="progresssection"><a href="2-ps.html">ps</a></li><li class="progresssection"><a href="2-is.html">is</a></li><li class="progresschapter"><a href="3-dlr.html">3</a></li><li class="progresschapter"><a href="4-nr.html">4</a></li><li class="progresschapter"><a href="5-tc.html">5</a></li><li class="progresschapter"><a href="6-kpr.html">6</a></li><li class="progressnext"><a href="2-cs.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -297,7 +297,7 @@ other languages may as well drop the hyphens.
</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>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="1-am.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-am.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresscurrent">bv</li><li class="progresssection"><a href="2-ptmn.html">ptmn</a></li><li class="progresssection"><a href="2-ar.html">ar</a></li><li class="progresssection"><a href="2-cs.html">cs</a></li><li class="progresssection"><a href="2-ps.html">ps</a></li><li class="progresschapter"><a href="3-dlr.html">3</a></li><li class="progresschapter"><a href="4-nr.html">4</a></li><li class="progresschapter"><a href="5-tc.html">5</a></li><li class="progresschapter"><a href="6-kpr.html">6</a></li><li class="progressnext"><a href="2-ptmn.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="1-am.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-am.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresscurrent">bv</li><li class="progresssection"><a href="2-ptmn.html">ptmn</a></li><li class="progresssection"><a href="2-ar.html">ar</a></li><li class="progresssection"><a href="2-cs.html">cs</a></li><li class="progresssection"><a href="2-ps.html">ps</a></li><li class="progresssection"><a href="2-is.html">is</a></li><li class="progresschapter"><a href="3-dlr.html">3</a></li><li class="progresschapter"><a href="4-nr.html">4</a></li><li class="progresschapter"><a href="5-tc.html">5</a></li><li class="progresschapter"><a href="6-kpr.html">6</a></li><li class="progressnext"><a href="2-ptmn.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -438,7 +438,7 @@ property of something.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-ar.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-am.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-bv.html">bv</a></li><li class="progresssection"><a href="2-ptmn.html">ptmn</a></li><li class="progresssection"><a href="2-ar.html">ar</a></li><li class="progresscurrent">cs</li><li class="progresssection"><a href="2-ps.html">ps</a></li><li class="progresschapter"><a href="3-dlr.html">3</a></li><li class="progresschapter"><a href="4-nr.html">4</a></li><li class="progresschapter"><a href="5-tc.html">5</a></li><li class="progresschapter"><a href="6-kpr.html">6</a></li><li class="progressnext"><a href="2-ps.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-ar.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-am.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-bv.html">bv</a></li><li class="progresssection"><a href="2-ptmn.html">ptmn</a></li><li class="progresssection"><a href="2-ar.html">ar</a></li><li class="progresscurrent">cs</li><li class="progresssection"><a href="2-ps.html">ps</a></li><li class="progresssection"><a href="2-is.html">is</a></li><li class="progresschapter"><a href="3-dlr.html">3</a></li><li class="progresschapter"><a href="4-nr.html">4</a></li><li class="progresschapter"><a href="5-tc.html">5</a></li><li class="progresschapter"><a href="6-kpr.html">6</a></li><li class="progressnext"><a href="2-ps.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -228,7 +228,7 @@ production of &lt;has-property-name&gt;.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-ps.html#SP5">&#167;5</a> (twice).</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-cs.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-am.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-bv.html">bv</a></li><li class="progresssection"><a href="2-ptmn.html">ptmn</a></li><li class="progresssection"><a href="2-ar.html">ar</a></li><li class="progresssection"><a href="2-cs.html">cs</a></li><li class="progresscurrent">ps</li><li class="progresschapter"><a href="3-dlr.html">3</a></li><li class="progresschapter"><a href="4-nr.html">4</a></li><li class="progresschapter"><a href="5-tc.html">5</a></li><li class="progresschapter"><a href="6-kpr.html">6</a></li><li class="progressnext"><a href="3-dlr.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-cs.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-am.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-bv.html">bv</a></li><li class="progresssection"><a href="2-ptmn.html">ptmn</a></li><li class="progresssection"><a href="2-ar.html">ar</a></li><li class="progresssection"><a href="2-cs.html">cs</a></li><li class="progresscurrent">ps</li><li class="progresssection"><a href="2-is.html">is</a></li><li class="progresschapter"><a href="3-dlr.html">3</a></li><li class="progresschapter"><a href="4-nr.html">4</a></li><li class="progresschapter"><a href="5-tc.html">5</a></li><li class="progresschapter"><a href="6-kpr.html">6</a></li><li class="progressnext"><a href="2-is.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -208,7 +208,7 @@ organisation, and are not directly functional in themselves.
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ENDHERE_NT:</span><span class="plain-syntax"> </span><a href="2-ar.html#SP2" class="function-link"><span class="function-syntax">Anaphora::new_discussion</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">global_pass_state</span><span class="plain-syntax">.</span><span class="element-syntax">near_start_of_extension</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">RULE_NT:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ptmn.html#SP3_1_1" class="named-paragraph-link"><span class="named-paragraph">Pass through a RULE node</span><span class="named-paragraph-number">3.1.1</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">IMPERATIVE_NT:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ptmn.html#SP3_1_1" class="named-paragraph-link"><span class="named-paragraph">Pass through an IMPERATIVE node</span><span class="named-paragraph-number">3.1.1</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">SENTENCE_NT:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ptmn.html#SP3_1_2" class="named-paragraph-link"><span class="named-paragraph">Pass through a SENTENCE node</span><span class="named-paragraph-number">3.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="identifier-syntax">TRACE_NT:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ptmn.html#SP3_1_5" class="named-paragraph-link"><span class="named-paragraph">Pass through a TRACE node</span><span class="named-paragraph-number">3.1.5</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
@ -234,19 +234,19 @@ organisation, and are not directly functional in themselves.
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-ptmn.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_1_1" class="paragraph-anchor"></a><b>&#167;3.1.1. </b>This is a little convoluted. The <a href="../linguistics-module/index.html" class="internal">linguistics</a> module turns sentences in
rule form into a <span class="extract"><span class="extract-syntax">RULE_NT</span></span> node followed by subsequent <span class="extract"><span class="extract-syntax">INVOCATION_NT</span></span> nodes,
and the first call here makes them into a neat subtree. After that, we look
out for adjectives defined by phrases, and for phrases with names, since
both will affect how we read sentences in passes 1 and 2.
<p class="commentary firstcommentary"><a id="SP3_1_1" class="paragraph-anchor"></a><b>&#167;3.1.1. </b>This is a little convoluted: see <a href="2-is.html" class="internal">Imperative Subtrees</a> for how
"acceptance" tidies up the nodes in the syntax tree corresponding to a block
of imperative code. After that, we look out for adjectives defined by phrases,
and for phrases with names, since both will affect how we read sentences in
passes 1 and 2.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Pass through a RULE node</span><span class="named-paragraph-number">3.1.1</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Pass through an IMPERATIVE node</span><span class="named-paragraph-number">3.1.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">global_pass_state</span><span class="plain-syntax">.</span><span class="element-syntax">pass</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">SyntaxTree::traverse_run</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">RuleSubtrees::demote_command_nodes</span><span class="plain-syntax">, </span><span class="identifier-syntax">RULE_NT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SyntaxTree::traverse_run</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><a href="2-is.html#SP1" class="function-link"><span class="function-syntax">ImperativeSubtrees::accept</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">IMPERATIVE_NT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Phrases::Adjectives::look_for_headers</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">Phrases::Usage::predeclare_name_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
@ -390,7 +390,7 @@ followed by double-quoted text is a note for the telemetry file.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-bv.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-am.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-bv.html">bv</a></li><li class="progresscurrent">ptmn</li><li class="progresssection"><a href="2-ar.html">ar</a></li><li class="progresssection"><a href="2-cs.html">cs</a></li><li class="progresssection"><a href="2-ps.html">ps</a></li><li class="progresschapter"><a href="3-dlr.html">3</a></li><li class="progresschapter"><a href="4-nr.html">4</a></li><li class="progresschapter"><a href="5-tc.html">5</a></li><li class="progresschapter"><a href="6-kpr.html">6</a></li><li class="progressnext"><a href="2-ar.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-bv.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-am.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-bv.html">bv</a></li><li class="progresscurrent">ptmn</li><li class="progresssection"><a href="2-ar.html">ar</a></li><li class="progresssection"><a href="2-cs.html">cs</a></li><li class="progresssection"><a href="2-ps.html">ps</a></li><li class="progresssection"><a href="2-is.html">is</a></li><li class="progresschapter"><a href="3-dlr.html">3</a></li><li class="progresschapter"><a href="4-nr.html">4</a></li><li class="progresschapter"><a href="5-tc.html">5</a></li><li class="progresschapter"><a href="6-kpr.html">6</a></li><li class="progressnext"><a href="2-ar.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -184,7 +184,7 @@ modifiers and a pointer to a Preform nonterminal if one has been named.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-ps.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-am.html">1</a></li><li class="progresschapter"><a href="2-bv.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresscurrent">dlr</li><li class="progresssection"><a href="3-pr.html">pr</a></li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresssection"><a href="3-nuor.html">nuor</a></li><li class="progresssection"><a href="3-uor.html">uor</a></li><li class="progresssection"><a href="3-tr2.html">tr2</a></li><li class="progresssection"><a href="3-dbtr.html">dbtr</a></li><li class="progresssection"><a href="3-rpr.html">rpr</a></li><li class="progresssection"><a href="3-nar.html">nar</a></li><li class="progresssection"><a href="3-nlpr.html">nlpr</a></li><li class="progresssection"><a href="3-nrr.html">nrr</a></li><li class="progresssection"><a href="3-npr.html">npr</a></li><li class="progresssection"><a href="3-nvr.html">nvr</a></li><li class="progresssection"><a href="3-nar2.html">nar2</a></li><li class="progresschapter"><a href="4-nr.html">4</a></li><li class="progresschapter"><a href="5-tc.html">5</a></li><li class="progresschapter"><a href="6-kpr.html">6</a></li><li class="progressnext"><a href="3-pr.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-is.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-am.html">1</a></li><li class="progresschapter"><a href="2-bv.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresscurrent">dlr</li><li class="progresssection"><a href="3-pr.html">pr</a></li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresssection"><a href="3-nuor.html">nuor</a></li><li class="progresssection"><a href="3-uor.html">uor</a></li><li class="progresssection"><a href="3-tr2.html">tr2</a></li><li class="progresssection"><a href="3-dbtr.html">dbtr</a></li><li class="progresssection"><a href="3-rpr.html">rpr</a></li><li class="progresssection"><a href="3-nar.html">nar</a></li><li class="progresssection"><a href="3-nlpr.html">nlpr</a></li><li class="progresssection"><a href="3-nrr.html">nrr</a></li><li class="progresssection"><a href="3-npr.html">npr</a></li><li class="progresssection"><a href="3-nvr.html">nvr</a></li><li class="progresssection"><a href="3-nar2.html">nar2</a></li><li class="progresschapter"><a href="4-nr.html">4</a></li><li class="progresschapter"><a href="5-tc.html">5</a></li><li class="progresschapter"><a href="6-kpr.html">6</a></li><li class="progressnext"><a href="3-pr.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -128,7 +128,7 @@ generalisations which apply to it.
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">generalisation</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure generalisation is accessed in 2/ptmn, 2/cs, 2/ps, 3/dlr, 3/pr, 3/tr, 3/nuor, 3/uor, 3/tr2, 3/dbtr, 3/rpr, 3/nar, 3/nlpr, 3/nrr, 3/npr, 3/nvr, 3/nar2, 4/rpt, 4/tc, 4/ass, 4/npa, 4/rk, 4/imp, 5/tbl, 5/eqt, 6/tcp, 6/cu and here.</li></ul>
<ul class="endnotetexts"><li>The structure generalisation is accessed in 2/ptmn, 2/cs, 2/ps, 2/is, 3/dlr, 3/pr, 3/tr, 3/nuor, 3/uor, 3/tr2, 3/dbtr, 3/rpr, 3/nar, 3/nlpr, 3/nrr, 3/npr, 3/nvr, 3/nar2, 4/rpt, 4/tc, 4/ass, 4/npa, 4/rk, 4/imp, 5/tbl, 5/eqt, 6/tcp, 6/cu and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b>For reasons to do with timing, each object needs to keep track of which
generalisations have and have not yet applied to it. In practice, this is
a list of pairs \((K, g)\) where \(K\) is a kind and \(g\) is the most recent one
@ -142,7 +142,7 @@ applied from \(K\)'s list.
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">application</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</span><span class="plain-syntax">;</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">application</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure application is accessed in 2/ptmn, 2/cs, 2/ps, 3/dlr, 3/pr, 3/tr, 3/nuor, 3/uor, 3/tr2, 3/dbtr, 3/rpr, 3/nar, 3/nlpr, 3/nrr, 3/npr, 3/nvr, 3/nar2, 4/rpt, 4/tc, 4/ass, 4/npa, 4/rk, 4/imp, 5/tbl, 5/eqt, 6/tcp, 6/cu and here.</li></ul>
<ul class="endnotetexts"><li>The structure application is accessed in 2/ptmn, 2/cs, 2/ps, 2/is, 3/dlr, 3/pr, 3/tr, 3/nuor, 3/uor, 3/tr2, 3/dbtr, 3/rpr, 3/nar, 3/nlpr, 3/nrr, 3/npr, 3/nvr, 3/nar2, 4/rpt, 4/tc, 4/ass, 4/npa, 4/rk, 4/imp, 5/tbl, 5/eqt, 6/tcp, 6/cu and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </b>These structures are combined in the following packet of data attached to
each inference subject:
</p>

View file

@ -135,7 +135,7 @@ instance has its own <span class="extract"><span class="extract-syntax">equation
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">equation_symbol</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure equation_symbol is accessed in 2/ptmn, 2/cs, 2/ps, 3/dlr, 3/pr, 3/tr, 3/nuor, 3/uor, 3/tr2, 3/dbtr, 3/rpr, 3/nar, 3/nlpr, 3/nrr, 3/npr, 3/nvr, 3/nar2, 4/rpt, 4/tc, 4/ass, 4/npa, 4/rk, 4/ass2, 4/imp, 5/tc, 5/tbl, 6/tcp, 6/cu and here.</li></ul>
<ul class="endnotetexts"><li>The structure equation_symbol is accessed in 2/ptmn, 2/cs, 2/ps, 2/is, 3/dlr, 3/pr, 3/tr, 3/nuor, 3/uor, 3/tr2, 3/dbtr, 3/rpr, 3/nar, 3/nlpr, 3/nrr, 3/npr, 3/nvr, 3/nar2, 4/rpt, 4/tc, 4/ass, 4/npa, 4/rk, 4/ass2, 4/imp, 5/tc, 5/tbl, 6/tcp, 6/cu and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b>In addition, there are some standing symbols used by all equations: the
constant "pi", for example. They're stored in this linked list:
</p>

View file

@ -120,7 +120,7 @@ column ID numbers: see <a href="../runtime-module/4-rsft.html" class="internal">
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">table_contribution</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</span><span class="plain-syntax">;</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">table_contribution</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure table_contribution is accessed in 2/ptmn, 2/cs, 2/ps, 3/dlr, 3/pr, 3/tr, 3/nuor, 3/uor, 3/tr2, 3/dbtr, 3/rpr, 3/nar, 3/nlpr, 3/nrr, 3/npr, 3/nvr, 3/nar2, 4/rpt, 4/tc, 4/ass, 4/npa, 4/rk, 4/ass2, 4/imp, 5/eqt, 6/tcp, 6/cu and here.</li></ul>
<ul class="endnotetexts"><li>The structure table_contribution is accessed in 2/ptmn, 2/cs, 2/ps, 2/is, 3/dlr, 3/pr, 3/tr, 3/nuor, 3/uor, 3/tr2, 3/dbtr, 3/rpr, 3/nar, 3/nlpr, 3/nrr, 3/npr, 3/nvr, 3/nar2, 4/rpt, 4/tc, 4/ass, 4/npa, 4/rk, 4/ass2, 4/imp, 5/eqt, 6/tcp, 6/cu and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b>These are convenient during parsing.
</p>

View file

@ -114,6 +114,11 @@
<spon class="sectiontitle">Property Sentences</span></a> -
<span class="sectionpurpose">To examine assertion sentences for property creation.</span></p>
</li>
<li>
<p class="sectionentry"><a href="2-is.html">
<spon class="sectiontitle">Imperative Subtrees</span></a> -
<span class="sectionpurpose">To tidy up blocks of rule and phrase definition in the syntax tree.</span></p>
</li>
</ul>
</li>
<li>

View file

@ -271,11 +271,7 @@ so on. Those absolute basics are made here.
<span class="plain-syntax"> </span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::advance_stage_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PHRASES_CSEQ</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Phrases and rules"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax">, </span><span class="identifier-syntax">debugging</span><span class="plain-syntax">, </span><span class="identifier-syntax">sequence_timer</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">LiteralPatterns::define_named_phrases</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Phrases::Manager::traverse</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Phrases::Manager::register_meanings</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Phrases::Manager::parse_rule_parameters</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Phrases::Manager::add_rules_to_rulebooks</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Phrases::Manager::parse_rule_placements</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">ImperativeDefinitions::find_phrases_and_rules</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Equations::traverse_to_stock</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Tables::traverse_to_stock</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTProperties::annotate_attributes</span><span class="plain-syntax">)</span>
@ -313,14 +309,14 @@ so on. Those absolute basics are made here.
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Tables::complete</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTTables::compile</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTEquations::compile_identifiers</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Phrases::Manager::compile_first_block</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Phrases::Manager::compile_rulebooks</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Phrases::Manager::rulebooks_array</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">ImperativeDefinitions::compile_first_block</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTRules::compile_rulebooks</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTRules::rulebooks_array_array</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTRules::rulebook_var_creators</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTActivities::activity_var_creators</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTRelations::IterateRelations</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Phrases::Manager::RulebookNames_array</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Phrases::Manager::RulePrintingRule_routine</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTRules::RulebookNames_array</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTRules::RulePrintingRule_routine</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTVerbs::ConjugateVerb</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTAdjectives::agreements</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">debugging</span><span class="plain-syntax">) {</span>
@ -337,12 +333,12 @@ so on. Those absolute basics are made here.
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Lists::check</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">ConstantLists::compile</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Phrases::invoke_to_begin</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Phrases::Manager::compile_as_needed</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">ImperativeDefinitions::compile_as_needed</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Strings::compile_responses</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Lists::check</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">ConstantLists::compile</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTRelations::compile_defined_relations</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Phrases::Manager::compile_as_needed</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">ImperativeDefinitions::compile_as_needed</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Strings::TextSubstitutions::allow_no_further_text_subs</span><span class="plain-syntax">)</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-htc.html#SP2">&#167;2</a>.</li></ul>

View file

@ -104,7 +104,7 @@ declarations and assertion sentences.
</li></ul>
<li>&#9679; Code nodes, category <span class="extract"><span class="extract-syntax">CODE_NCAT</span></span>, are defined only below. They occur only
inside imperative code (i.e. rules and phrase definitions), in subtrees headed
by a level-2 <span class="extract"><span class="extract-syntax">RULE_NT</span></span> node, and they organise what is to be compiled.
by a level-2 <span class="extract"><span class="extract-syntax">IMPERATIVE_NT</span></span> node, and they organise what is to be compiled.
</li><li>&#9679; Specification nodes represent values or descriptions of values, and are
defined only below. These occur frequently in the parse tree as children of
code nodes, but can also be used in detached form as a way to represent, say,
@ -268,7 +268,7 @@ also makes it easier for us to manipulate the results.
<span class="plain-syntax"> </span><span class="identifier-syntax">NodeType::new</span><span class="plain-syntax">(</span><span class="constant-syntax">TEST_VALUE_NT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"TEST_VALUE_NT"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="constant-syntax">COND_NCAT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-inaa.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </b>Level 4 structural nodes can only be children of <span class="extract"><span class="extract-syntax">RULE_NT</span></span> nodes (level 2)
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </b>Level 4 structural nodes can only be children of <span class="extract"><span class="extract-syntax">IMPERATIVE_NT</span></span> nodes (level 2)
or of each other, and their children are otherwise specifications.
</p>
@ -469,7 +469,7 @@ are made in <a href="../building-module/1-bm.html" class="internal">Building Mod
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow_for_category</span><span class="plain-syntax">(</span><span class="identifier-syntax">L2_NCAT</span><span class="plain-syntax">, </span><span class="constant-syntax">clears_pronouns_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow_for_category</span><span class="plain-syntax">(</span><span class="identifier-syntax">L2_NCAT</span><span class="plain-syntax">, </span><span class="constant-syntax">interpretation_of_subject_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow_for_category</span><span class="plain-syntax">(</span><span class="identifier-syntax">L2_NCAT</span><span class="plain-syntax">, </span><span class="constant-syntax">verb_problem_issued_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULE_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">indentation_level_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="identifier-syntax">IMPERATIVE_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">indentation_level_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="identifier-syntax">SENTENCE_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">implicit_in_creation_of_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="identifier-syntax">SENTENCE_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">implicitness_count_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::allow</span><span class="plain-syntax">(</span><span class="identifier-syntax">SENTENCE_NT</span><span class="plain-syntax">, </span><span class="constant-syntax">you_can_ignore_ANNOT</span><span class="plain-syntax">);</span>

View file

@ -422,7 +422,7 @@ ends merrily" and "when the Banquet Entertainment ends merrily".
<span class="plain-syntax"> </span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">, </span><span class="identifier-syntax">end</span><span class="plain-syntax">);</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">i6_code</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Sentences::make_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">Feeds::end</span><span class="plain-syntax">(</span><span class="identifier-syntax">id</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">RuleSubtrees::register_recently_lexed_phrases</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ImperativeSubtrees::accept_all</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">i6_code</span><span class="plain-syntax">)</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-scn.html#SP15">&#167;15</a>.</li></ul>

View file

@ -167,7 +167,7 @@ the rulebook; instead, the booking is marked for automatic placement later on.
</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">RuleBookings::make_automatic_placements</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">RuleBookings::make_automatic_placements</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RuleBookings::make_automatic_placements</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">RuleBookings::make_automatic_placements</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">br</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">br</span><span class="plain-syntax">, </span><span class="reserved-syntax">booking</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">br</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">place_automatically</span><span class="plain-syntax">) {</span>
@ -189,6 +189,7 @@ the rulebook; instead, the booking is marked for automatic placement later on.
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"Inter-defined rules cannot be automatically placed"</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">RTRules::compile_NUMBER_RULEBOOKS_CREATED</span><span class="plain-syntax">();</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. Specificity of bookings. </b>This <span class="extract"><span class="extract-syntax">strcmp</span></span>-like function is intended to be used in sorting algorithms,

View file

@ -70,198 +70,22 @@ function togglePopup(material_id) {
<!--Weave of 'Construction Sequence' generated by Inweb-->
<div class="breadcrumbs">
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">imperative</a></li><li><a href="index.html#3">Chapter 3: Phrases</a></li><li><b>Construction Sequence</b></li></ul></div>
<p class="purpose">To deal with all the |.i6t| interpreted commands which bring about the compilation of phrases, and to ensure that they are used in the correct order.</p>
<p class="purpose">Managing the timing of dealing with defined phrases and rules.</p>
<ul class="toc"><li><a href="3-cs.html#SP1">&#167;1. A day in the life</a></li><li><a href="3-cs.html#SP2">&#167;2. Early morning</a></li><li><a href="3-cs.html#SP3">&#167;3. Mid-morning</a></li><li><a href="3-cs.html#SP4">&#167;4. Late morning</a></li><li><a href="3-cs.html#SP5">&#167;5. Just before noon</a></li><li><a href="3-cs.html#SP6">&#167;6. Noon</a></li><li><a href="3-cs.html#SP7">&#167;7. Early afternoon</a></li><li><a href="3-cs.html#SP11">&#167;11. Mid-afternoon</a></li><li><a href="3-cs.html#SP12">&#167;12. Late Afternoon</a></li><li><a href="3-cs.html#SP15">&#167;15. Evening</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. A day in the life. </b>Suppose we compare the run of Inform to a single day. At dawn the program
starts up. In the morning it finds out the names of all the constant values
defined in the source text: names like "Mrs Blenkinsop", "hatstand", and
so on. By noon it has also found out the wording used for phrases, such as
"award prize (N - a number) to (gardener - a woman)". This means that in
the afternoon it knows every name it ever will, and so it can work through
the definitions of phrases like "award prize...". In the evening, it does
some book-keeping, and at nightfall it shuts down.
</p>
<p class="commentary">We will use the story of our single day throughout this section on timing,
because everything has to happen in just the right order.
</p>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">DAWN_PHT</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">EARLY_MORNING_PHT</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">LATE_MORNING_PHT</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">PRE_NOON_PHT</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">EARLY_AFTERNOON_PHT</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">MID_AFTERNOON_PHT</span><span class="plain-syntax"> </span><span class="constant-syntax">5</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">LATE_AFTERNOON_PHT</span><span class="plain-syntax"> </span><span class="constant-syntax">6</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">EVENING_PHT</span><span class="plain-syntax"> </span><span class="constant-syntax">7</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">phrase_time_now</span><span class="plain-syntax"> = </span><span class="constant-syntax">DAWN_PHT</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Manager::advance_phrase_time_to</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">Phrases::Manager::advance_phrase_time_to</span></span>:<br/><a href="3-cs.html#SP4">&#167;4</a>, <a href="3-cs.html#SP5">&#167;5</a>, <a href="3-cs.html#SP7">&#167;7</a>, <a href="3-cs.html#SP8">&#167;8</a>, <a href="3-cs.html#SP9">&#167;9</a>, <a href="3-cs.html#SP11">&#167;11</a>, <a href="3-cs.html#SP12">&#167;12</a>, <a href="3-cs.html#SP13">&#167;13</a>, <a href="3-cs.html#SP14">&#167;14</a>, <a href="3-cs.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">advance_to</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">advance_to</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">phrase_time_now</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Advance from %d to %d\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">phrase_time_now</span><span class="plain-syntax">, </span><span class="identifier-syntax">advance_to</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="plain-syntax"> </span><span class="string-syntax">"The necessary phrase construction events are out of sequence"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">phrase_time_now</span><span class="plain-syntax"> = </span><span class="identifier-syntax">advance_to</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. Early morning. </b>We run through the phrase preambles to look for named rules like this:
</p>
<blockquote>
<p>Instead of pushing the red button (this is the fire alarm rule): ...</p>
</blockquote>
<p class="commentary">This looking-for-names is done by parsing the preamble text to a PHUD in
what is called "coarse mode", which can only get an approximate idea at
best: at this stage the "Instead" rulebook and the "red button" don't
exist, so most of the words here are meaningless. The PHUD which coarse
mode parsing produces is far too sketchy to use, and is thrown away.
But at least it does pick out the name "fire alarm rule", and Inform
creates an empty "rule" structure called this, registering this as the
name of a new constant.
</p>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. Mid-morning. </b>This is when Inform is making its main traverses through assertions.
Something very useful is happening, but it's happening somewhere else.
Assertions such as
</p>
<blockquote>
<p>Instead is a rulebook.</p>
</blockquote>
<p class="commentary">are being read, and rulebooks are therefore being created.
</p>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. Late morning. </b>With the assertions read, all the values have their names, and that means
we can go back to phrases like:
</p>
<blockquote>
<p>Instead of pushing the red button (this is the fire alarm rule): ...</p>
</blockquote>
<p class="commentary">and read them properly. So Inform now runs through the preambles again and
parses them for a second time to PHUDs, but this time in "fine mode" rather
than "coarse mode", and this time the result is not thrown away. If the
phrase is a "To..." phrase declaration, then the PHUD is pretty sketchy and
we parse more substantial PHTD and PHOD structures to accompany it. But if
it is a rule, the PHUD contains a great deal of useful information, and we
accompany it with essentially blank PHTD and PHOD structures. Either way, we
end up with a triplet of PHUD, PHTD and PHOD, and these are combined into a
new <span class="extract"><span class="extract-syntax">phrase</span></span> structure. The PHSF structure is initially created as a
function of the PHTD: for example, if the phrase reads
</p>
<blockquote>
<p>To award (points - a number): ...</p>
</blockquote>
<p class="commentary">then the PHTD notes that "points" is the name of a parameter whose kind is
to be "number". The stack frame, PHSF, deduces that "points" will be a
local variable of kind "number" within the phrase when it's running.
Lastly, a blank PHRCD structure is created, filling out the set of five
substructures.
</p>
<p class="commentary">As they are created, the "To..." phrases are insertion-sorted into a list of
phrases in logical precedence order. This can be done now because it relies
only on the kinds listed in the PHTD, all of which have existed since
mid-morning.
</p>
<p class="commentary">For reasons discussed below, rules are not yet sorted. But the names created
in mid-morning, such as "fire alarm rule", are associated with their
phrases, and they are marked for what's called "automatic placement". For
example, the fire alarm rule will automatically be placed into the Instead
rulebook, because its preamble begins "Instead". The reason rules are only
marked to be placed later is that placement has to occur in logical
precedence order, but rules are harder to sort than phrases. They have to be
sorted by their PHRCDs, not their PHTDs, and a PHRCD cannot even be parsed
until afternoon because the conditions for a rule often mention phrases &mdash;
for instance, "Instead of waiting when in darkness", making use of an "in
darkness" phrase. So for now we just make a mental note to do automatic
placement later on.
</p>
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Manager::traverse</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="3-cs.html#SP1" class="function-link"><span class="function-syntax">Phrases::Manager::advance_phrase_time_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">LATE_MORNING_PHT</span><span class="plain-syntax">);</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ImperativeDefinitions::find_phrases_and_rules</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">initial_problem_count</span><span class="plain-syntax"> = </span><span class="identifier-syntax">problem_count</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">progress_target</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">progress_made</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">SyntaxTree::traverse_intp</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><a href="3-cs.html#SP4" class="function-link"><span class="function-syntax">Phrases::Manager::visit_to_count</span></a><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">progress_target</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SyntaxTree::traverse_intp_intp</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><a href="3-cs.html#SP4" class="function-link"><span class="function-syntax">Phrases::Manager::visit_to_create</span></a><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">progress_target</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">progress_made</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">Phrases::Manager::visit_to_count</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</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">progress_target</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> (*</span><span class="identifier-syntax">progress_target</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">Phrases::Manager::visit_to_create</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</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">progress_target</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">progress_made</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> (*</span><span class="identifier-syntax">progress_made</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">progress_made</span><span class="plain-syntax">) % </span><span class="constant-syntax">10</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">ProgressBar::update</span><span class="plain-syntax">(3,</span>
<span class="plain-syntax"> ((</span><span class="reserved-syntax">float</span><span class="plain-syntax">) (*</span><span class="identifier-syntax">progress_made</span><span class="plain-syntax">))/((</span><span class="reserved-syntax">float</span><span class="plain-syntax">) (*</span><span class="identifier-syntax">progress_target</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">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) == </span><span class="identifier-syntax">RULE_NT</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="3-phr.html#SP5" class="function-link"><span class="function-syntax">Phrases::create_from_preamble</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="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>&#167;5. Just before noon. </b>It is now nearly noon, and things appear to be a little untidy. Why
are the "To..." phrases not yet registered with the excerpt parser?
The answer is that we needed to wait until all of the "To..." phrases
had been created as structures before we could safely proceed. The first
phrase couldn't be registered until we knew the complete logical order
of them all. Well: at last, we do know that, and can make the registration.
Phrases are the very last things to get their names in Inform (well, not
counting local variables, whose names only exist fleetingly).
</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">Phrases::Manager::register_meanings</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="3-cs.html#SP1" class="function-link"><span class="function-syntax">Phrases::Manager::advance_phrase_time_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PRE_NOON_PHT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SyntaxTree::traverse_intp</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><a href="3-cs.html#SP1" class="function-link"><span class="function-syntax">ImperativeDefinitions::visit_to_count</span></a><span class="plain-syntax">,</span>
<span class="plain-syntax"> &amp;</span><span class="identifier-syntax">progress_target</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SyntaxTree::traverse_intp_intp</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><a href="3-cs.html#SP1" class="function-link"><span class="function-syntax">ImperativeDefinitions::visit_to_create</span></a><span class="plain-syntax">,</span>
<span class="plain-syntax"> &amp;</span><span class="identifier-syntax">progress_target</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">progress_made</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">initial_problem_count</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">problem_count</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="3-tph.html#SP5" class="function-link"><span class="function-syntax">Routines::ToPhrases::register_all</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>&#167;6. Noon. </b>When the final phrase is registered, the hour chimes. From this point
onwards, there's no longer any text which can't be parsed because some
of the names don't exist yet: everything exists.
</p>
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. Early afternoon. </b>In the afternoon, we begin by binding up the rulebooks. First, we go through
the phrases destined to be rules, and for each we translate the PHUD (which
contains mainly textual representations of the usage information, e.g.
"taking something (called the thingummy) which is in a lighted room during
Scene Two when the marble slab is open") to a PHRCD (which contains fully
parsed Inform data structures, e.g., an action pattern and a pointer to a
<span class="extract"><span class="extract-syntax">scene</span></span> structure). As noted above, this often means parsing conditions
which involve phrases, and that's why we're doing it in the afternoon.
</p>
<p class="commentary">During this PHUD-to-PHRCD parsing process, we make sure that the relevant
phrase's PHSF is the current stack frame, because it's here that the names
of any callings (e.g. "thingummy") are created as local variables to be
valid throughout the phrase.
</p>
<p class="commentary">Once we're done with this, the PHUD will never be used again.
</p>
<p class="commentary">Note that the PHRCDs have to be parsed in source text appearance order (the
order which <span class="extract"><span class="extract-syntax">LOOP_OVER</span></span> follows) so that the back reference "doing it" can
correctly refer to the most recently mentioned action.
</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">Phrases::Manager::parse_rule_parameters</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="3-cs.html#SP1" class="function-link"><span class="function-syntax">Phrases::Manager::advance_phrase_time_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">EARLY_AFTERNOON_PHT</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">initial_problem_count</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">problem_count</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">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</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">ph</span><span class="plain-syntax">, </span><span class="reserved-syntax">phrase</span><span class="plain-syntax">) {</span>
@ -271,79 +95,63 @@ correctly refer to the most recently mentioned action.
<span class="plain-syntax"> </span><a href="3-pu.html#SP19" class="function-link"><span class="function-syntax">Phrases::Usage::to_runtime_context_data</span></a><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">usage_data</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="4-sf.html#SP7" class="function-link"><span class="function-syntax">Frames::remove_current</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>&#167;8. </b>We can finally make the automatic placements of rules into rulebooks: so
our "fire alarm rule" will at last be placed in the "Instead" rulebook. The
PHRCDs are used to make sure it appears in the right position.
</p>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">initial_problem_count</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">problem_count</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Manager::add_rules_to_rulebooks</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="3-cs.html#SP1" class="function-link"><span class="function-syntax">Phrases::Manager::advance_phrase_time_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">EARLY_AFTERNOON_PHT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-rb.html#SP6" class="function-link"><span class="function-syntax">RuleBookings::make_automatic_placements</span></a><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><span class="identifier-syntax">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">NUMBER_RULEBOOKS_CREATED_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::named_numeric_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">NUMBER_CREATED</span><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_available</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</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">initial_problem_count</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">problem_count</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SyntaxTree::traverse</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><a href="3-cs.html#SP2" class="function-link"><span class="function-syntax">ImperativeDefinitions::visit_to_parse_placements</span></a><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">ImperativeDefinitions::visit_to_count</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</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">progress_target</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> (*</span><span class="identifier-syntax">progress_target</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">ImperativeDefinitions::visit_to_create</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</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">progress_target</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">progress_made</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> (*</span><span class="identifier-syntax">progress_made</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">progress_made</span><span class="plain-syntax">) % </span><span class="constant-syntax">10</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">ProgressBar::update</span><span class="plain-syntax">(3,</span>
<span class="plain-syntax"> ((</span><span class="reserved-syntax">float</span><span class="plain-syntax">) (*</span><span class="identifier-syntax">progress_made</span><span class="plain-syntax">))/((</span><span class="reserved-syntax">float</span><span class="plain-syntax">) (*</span><span class="identifier-syntax">progress_target</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">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) == </span><span class="identifier-syntax">IMPERATIVE_NT</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="3-phr.html#SP5" class="function-link"><span class="function-syntax">Phrases::create_from_preamble</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="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>&#167;9. </b>It might seem as if the rulebooks are now complete, but this is not true,
because we still have to take care of manual placements like:
</p>
<blockquote>
<p>The fire alarm rule is listed in the safety procedures rulebook.</p>
</blockquote>
<p class="commentary">This is where we get on with that, traversing the parse tree for sentences
of this general sort. Rules can also be unlisted, or constrained to happen
only conditionally, or substituted by other rules.
</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">Phrases::Manager::parse_rule_placements</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="3-cs.html#SP1" class="function-link"><span class="function-syntax">Phrases::Manager::advance_phrase_time_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">EARLY_AFTERNOON_PHT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SyntaxTree::traverse</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><a href="3-cs.html#SP10" class="function-link"><span class="function-syntax">Phrases::Manager::visit_to_parse_placements</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>&#167;10. </b></p>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b></p>
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">TRAVERSE_FOR_RULE_FILING_SMFT</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Manager::visit_to_parse_placements</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Phrases::Manager::visit_to_parse_placements</span></span>:<br/><a href="3-cs.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ImperativeDefinitions::visit_to_parse_placements</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">ImperativeDefinitions::visit_to_parse_placements</span></span>:<br/><a href="3-cs.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</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">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) == </span><span class="identifier-syntax">SENTENCE_NT</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">) == </span><span class="identifier-syntax">VERB_NT</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">, </span><span class="identifier-syntax">verbal_certainty_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">, </span><span class="identifier-syntax">verbal_certainty_ANNOT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">MajorNodes::try_special_meaning</span><span class="plain-syntax">(</span><span class="constant-syntax">TRAVERSE_FOR_RULE_FILING_SMFT</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">down</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>&#167;11. Mid-afternoon. </b>It is now mid-afternoon, and the rulebooks are complete. It is time to
compile the I6 routines which will provide the run-time definitions of all
these phrases. This will be a long task, and much of it will be left until
the evening. But we do get rid of some easy cases now: the rules and
adjective definitions.
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b>The rulebooks are now complete and final. It is time to
compile the Inter code which will provide the run-time definitions of all
these phrases. This will be a long task, and we can only do most of it now,
because more phrases will appear later.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">total_phrases_to_compile</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">total_phrases_compiled</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Manager::compile_first_block</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="3-cs.html#SP1" class="function-link"><span class="function-syntax">Phrases::Manager::advance_phrase_time_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MID_AFTERNOON_PHT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-cs.html#SP11_1" class="named-paragraph-link"><span class="named-paragraph">Count up the scale of the task</span><span class="named-paragraph-number">11.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-cs.html#SP11_2" class="named-paragraph-link"><span class="named-paragraph">Compile definitions of rules in rulebooks</span><span class="named-paragraph-number">11.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-cs.html#SP11_3" class="named-paragraph-link"><span class="named-paragraph">Compile definitions of rules left out of rulebooks</span><span class="named-paragraph-number">11.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-cs.html#SP11_4" class="named-paragraph-link"><span class="named-paragraph">Compile phrases which define adjectives</span><span class="named-paragraph-number">11.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-cs.html#SP11_5" class="named-paragraph-link"><span class="named-paragraph">Mark To... phrases which have definite kinds for future compilation</span><span class="named-paragraph-number">11.5</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-cs.html#SP11_6" class="named-paragraph-link"><span class="named-paragraph">Throw problems for phrases with return kinds too vaguely defined</span><span class="named-paragraph-number">11.6</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-cs.html#SP11_7" class="named-paragraph-link"><span class="named-paragraph">Throw problems for inline phrases named as constants</span><span class="named-paragraph-number">11.7</span></a></span><span class="plain-syntax">;</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ImperativeDefinitions::compile_first_block</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-cs.html#SP3_1" class="named-paragraph-link"><span class="named-paragraph">Count up the scale of the task</span><span class="named-paragraph-number">3.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-cs.html#SP3_2" class="named-paragraph-link"><span class="named-paragraph">Compile definitions of rules in rulebooks</span><span class="named-paragraph-number">3.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-cs.html#SP3_3" class="named-paragraph-link"><span class="named-paragraph">Compile definitions of rules left out of rulebooks</span><span class="named-paragraph-number">3.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-cs.html#SP3_4" class="named-paragraph-link"><span class="named-paragraph">Compile phrases which define adjectives</span><span class="named-paragraph-number">3.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-cs.html#SP3_5" class="named-paragraph-link"><span class="named-paragraph">Mark To... phrases which have definite kinds for future compilation</span><span class="named-paragraph-number">3.5</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-cs.html#SP3_6" class="named-paragraph-link"><span class="named-paragraph">Throw problems for phrases with return kinds too vaguely defined</span><span class="named-paragraph-number">3.6</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-cs.html#SP3_7" class="named-paragraph-link"><span class="named-paragraph">Throw problems for inline phrases named as constants</span><span class="named-paragraph-number">3.7</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP11_1" class="paragraph-anchor"></a><b>&#167;11.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Count up the scale of the task</span><span class="named-paragraph-number">11.1</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP3_1" class="paragraph-anchor"></a><b>&#167;3.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Count up the scale of the task</span><span class="named-paragraph-number">3.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -353,8 +161,8 @@ adjective definitions.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">at_least_one_compiled_form_needed</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">total_phrases_to_compile</span><span class="plain-syntax">++;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-cs.html#SP11">&#167;11</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP11_2" class="paragraph-anchor"></a><b>&#167;11.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile definitions of rules in rulebooks</span><span class="named-paragraph-number">11.2</span></span><span class="comment-syntax"> =</span>
<ul class="endnotetexts"><li>This code is used in <a href="3-cs.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_2" class="paragraph-anchor"></a><b>&#167;3.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile definitions of rules in rulebooks</span><span class="named-paragraph-number">3.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -363,8 +171,8 @@ adjective definitions.
<span class="plain-syntax"> </span><span class="identifier-syntax">RTRules::compile_rule_phrases</span><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> &amp;</span><span class="identifier-syntax">total_phrases_compiled</span><span class="plain-syntax">, </span><span class="identifier-syntax">total_phrases_to_compile</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-cs.html#SP11">&#167;11</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP11_3" class="paragraph-anchor"></a><b>&#167;11.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile definitions of rules left out of rulebooks</span><span class="named-paragraph-number">11.3</span></span><span class="comment-syntax"> =</span>
<ul class="endnotetexts"><li>This code is used in <a href="3-cs.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_3" class="paragraph-anchor"></a><b>&#167;3.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile definitions of rules left out of rulebooks</span><span class="named-paragraph-number">3.3</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -373,13 +181,13 @@ adjective definitions.
<span class="plain-syntax"> </span><span class="identifier-syntax">RTRules::compile_definition</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> &amp;</span><span class="identifier-syntax">total_phrases_compiled</span><span class="plain-syntax">, </span><span class="identifier-syntax">total_phrases_to_compile</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-cs.html#SP11">&#167;11</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP11_4" class="paragraph-anchor"></a><b>&#167;11.4. </b>This doesn't compile all adjective definitions, only the ones which supply
<ul class="endnotetexts"><li>This code is used in <a href="3-cs.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_4" class="paragraph-anchor"></a><b>&#167;3.4. </b>This doesn't compile all adjective definitions, only the ones which supply
a whole multi-step phrase to define them &mdash; a relatively little-used feature
of Inform.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile phrases which define adjectives</span><span class="named-paragraph-number">11.4</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile phrases which define adjectives</span><span class="named-paragraph-number">3.4</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -391,8 +199,8 @@ of Inform.
<span class="plain-syntax"> </span><span class="identifier-syntax">total_phrases_to_compile</span><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">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RTAdjectives::compile_support_code</span><span class="plain-syntax">();</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-cs.html#SP11">&#167;11</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP11_5" class="paragraph-anchor"></a><b>&#167;11.5. </b>As we'll see, it's legal in Inform to define "To..." phrases with vague
<ul class="endnotetexts"><li>This code is used in <a href="3-cs.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_5" class="paragraph-anchor"></a><b>&#167;3.5. </b>As we'll see, it's legal in Inform to define "To..." phrases with vague
kinds: "To expose (X - a value)", for example. This can't be compiled as
vaguely as the definition implies, since there would be no way to know how
to store X. Instead, for each different kind of X which is actually needed,
@ -406,7 +214,7 @@ request the boring ones with straightforward kinds ("To award (N - a number)
points", say). This is where we do it:
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Mark To... phrases which have definite kinds for future compilation</span><span class="named-paragraph-number">11.5</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Mark To... phrases which have definite kinds for future compilation</span><span class="named-paragraph-number">3.5</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -419,8 +227,8 @@ points", say). This is where we do it:
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-cs.html#SP11">&#167;11</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP11_6" class="paragraph-anchor"></a><b>&#167;11.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Throw problems for phrases with return kinds too vaguely defined</span><span class="named-paragraph-number">11.6</span></span><span class="comment-syntax"> =</span>
<ul class="endnotetexts"><li>This code is used in <a href="3-cs.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_6" class="paragraph-anchor"></a><b>&#167;3.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Throw problems for phrases with return kinds too vaguely defined</span><span class="named-paragraph-number">3.6</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -459,8 +267,8 @@ points", say). This is where we do it:
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-cs.html#SP11">&#167;11</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP11_7" class="paragraph-anchor"></a><b>&#167;11.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Throw problems for inline phrases named as constants</span><span class="named-paragraph-number">11.7</span></span><span class="comment-syntax"> =</span>
<ul class="endnotetexts"><li>This code is used in <a href="3-cs.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_7" class="paragraph-anchor"></a><b>&#167;3.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Throw problems for inline phrases named as constants</span><span class="named-paragraph-number">3.7</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -480,59 +288,8 @@ points", say). This is where we do it:
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-cs.html#SP11">&#167;11</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>&#167;12. Late Afternoon. </b>Rules are pretty well sorted out now, but we still need to compile some I6
to show how they fit together. These miscellaneous function calls can happen
in any order, so long as they all occur in the late afternoon.
</p>
<p class="commentary">First, rules set to go off at a particular time need to have their timings
noted down:
</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">Phrases::Manager::TimedEventsTable</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="3-cs.html#SP1" class="function-link"><span class="function-syntax">Phrases::Manager::advance_phrase_time_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">LATE_AFTERNOON_PHT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-tp.html#SP3" class="function-link"><span class="function-syntax">Phrases::Timed::TimedEventsTable</span></a><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">Phrases::Manager::TimedEventTimesTable</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="3-cs.html#SP1" class="function-link"><span class="function-syntax">Phrases::Manager::advance_phrase_time_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">LATE_AFTERNOON_PHT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-tp.html#SP3" class="function-link"><span class="function-syntax">Phrases::Timed::TimedEventTimesTable</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>&#167;13. </b>Second, the rulebooks need to be compiled into I6 arrays:
</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">Phrases::Manager::rulebooks_array</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="3-cs.html#SP1" class="function-link"><span class="function-syntax">Phrases::Manager::advance_phrase_time_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">LATE_AFTERNOON_PHT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RTRules::rulebooks_array_array</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">Phrases::Manager::compile_rulebooks</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="3-cs.html#SP1" class="function-link"><span class="function-syntax">Phrases::Manager::advance_phrase_time_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">LATE_AFTERNOON_PHT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RTRules::compile_rulebooks</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">Phrases::Manager::RulebookNames_array</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="3-cs.html#SP1" class="function-link"><span class="function-syntax">Phrases::Manager::advance_phrase_time_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">LATE_AFTERNOON_PHT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RTRules::RulebookNames_array</span><span class="plain-syntax">();</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>&#167;14. </b>And finally, just as the sun slips below the horizon, we compile the code
which prints out values of the kind "rule" at run-time &mdash; for example, taking
the address of the routine which our example rule was compiled to and then
printing out "fire alarm rule".
</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">Phrases::Manager::RulePrintingRule_routine</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="3-cs.html#SP1" class="function-link"><span class="function-syntax">Phrases::Manager::advance_phrase_time_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">LATE_AFTERNOON_PHT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RTRules::RulePrintingRule_routine</span><span class="plain-syntax">();</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>&#167;15. Evening. </b>The twilight gathers, but our work is far from done. Recall that we have
<ul class="endnotetexts"><li>This code is used in <a href="3-cs.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </b>The twilight gathers, but our work is far from done. Recall that we have
accumulated compilation requests for "To..." phrases, but haven't actually
acted on them yet.
</p>
@ -567,13 +324,11 @@ phrases alone: we must compile phrases, then things arising from them, then
phrases arising from those, then things arising from the phrases arising
from those, and so on, until we're done. The process is therefore structured
as a set of "coroutines" which each carry out as much as they can and then
hand over to the others to generate more work. (Indeed, the routine below
can be called multiple times in the course of the evening.)
hand over to the others to generate more work.
</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">Phrases::Manager::compile_as_needed</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="3-cs.html#SP1" class="function-link"><span class="function-syntax">Phrases::Manager::advance_phrase_time_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">EVENING_PHT</span><span class="plain-syntax">);</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ImperativeDefinitions::compile_as_needed</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</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">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RTRules::compile_definition</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">,</span>
@ -598,7 +353,7 @@ can be called multiple times in the course of the evening.)
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-rs.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-itp.html">itp</a></li><li class="progresssection"><a href="3-rs.html">rs</a></li><li class="progresscurrent">cs</li><li class="progresssection"><a href="3-phr.html">phr</a></li><li class="progresssection"><a href="3-pu.html">pu</a></li><li class="progresssection"><a href="3-prcd.html">prcd</a></li><li class="progresssection"><a href="3-ptd.html">ptd</a></li><li class="progresssection"><a href="3-dptd.html">dptd</a></li><li class="progresssection"><a href="3-po.html">po</a></li><li class="progresssection"><a href="3-pav.html">pav</a></li><li class="progresssection"><a href="3-tph.html">tph</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-pi.html">pi</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="3-phr.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="3-itp.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-itp.html">itp</a></li><li class="progresscurrent">cs</li><li class="progresssection"><a href="3-phr.html">phr</a></li><li class="progresssection"><a href="3-pu.html">pu</a></li><li class="progresssection"><a href="3-prcd.html">prcd</a></li><li class="progresssection"><a href="3-ptd.html">ptd</a></li><li class="progresssection"><a href="3-dptd.html">dptd</a></li><li class="progresssection"><a href="3-po.html">po</a></li><li class="progresssection"><a href="3-pav.html">pav</a></li><li class="progresssection"><a href="3-tph.html">tph</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="3-phr.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -326,7 +326,7 @@ match is shown.
</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">Phrases::TypeData::Textual::write_index_representation</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Phrases::TypeData::Textual::write_index_representation</span></span>:<br/><a href="3-dptd.html#SP6">&#167;6</a><br/>Phrasebook Index - <a href="3-pi.html#SP1_3">&#167;1.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">ph_type_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phtd</span><span class="plain-syntax">, </span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::TypeData::Textual::write_index_representation</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Phrases::TypeData::Textual::write_index_representation</span></span>:<br/><a href="3-dptd.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">ph_type_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phtd</span><span class="plain-syntax">, </span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</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">phtd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">manner_of_return</span><span class="plain-syntax"> == </span><span class="constant-syntax">DECIDES_CONDITION_MOR</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">"&lt;i&gt;if&lt;/i&gt; "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-phr.html#SP9" class="function-link"><span class="function-syntax">Phrases::write_HTML_representation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph</span><span class="plain-syntax">, </span><span class="constant-syntax">INDEX_PHRASE_FORMAT</span><span class="plain-syntax">);</span>
@ -350,7 +350,7 @@ This is the routine which prints those details.
</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">Phrases::TypeData::Textual::write_reveal_box</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">Phrases::TypeData::Textual::write_reveal_box</span></span>:<br/>Phrasebook Index - <a href="3-pi.html#SP1_3">&#167;1.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">ph_type_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phtd</span><span class="plain-syntax">, </span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::TypeData::Textual::write_reveal_box</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">ph_type_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phtd</span><span class="plain-syntax">, </span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-dptd.html#SP6_1" class="named-paragraph-link"><span class="named-paragraph">Present a paste button containing the text of the phrase</span><span class="named-paragraph-number">6.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="3-dptd.html#SP5" class="function-link"><span class="function-syntax">Phrases::TypeData::Textual::write_index_representation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">phtd</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph</span><span class="plain-syntax">);</span>
@ -490,7 +490,7 @@ correctly set.
</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">Phrases::TypeData::Textual::parse</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Phrases::TypeData::Textual::parse</span></span>:<br/>Phrases - <a href="3-phr.html#SP5_3">&#167;5.3</a><br/>Phrases as Values - <a href="3-pav.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_type_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phtd</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">XW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OW</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::TypeData::Textual::parse</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">Phrases::TypeData::Textual::parse</span></span>:<br/>Phrases - <a href="3-phr.html#SP5_3">&#167;5.3</a><br/>Phrases as Values - <a href="3-pav.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_type_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phtd</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">XW</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OW</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">say_flag</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="comment-syntax"> is this going to be a "say" phrase?</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">XW</span><span class="plain-syntax">)) </span><span class="identifier-syntax">XW</span><span class="plain-syntax"> = </span><a href="3-dptd.html#SP16" class="function-link"><span class="function-syntax">Phrases::TypeData::Textual::phtd_parse_return_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">phtd</span><span class="plain-syntax">, </span><span class="identifier-syntax">XW</span><span class="plain-syntax">); </span><span class="comment-syntax"> trim return data from the front</span>
@ -716,7 +716,7 @@ haven't yet been parsed, so that we don't yet know it will be meaningful.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">no_truth_state_returns</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::TypeData::Textual::phtd_parse_return_data</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Phrases::TypeData::Textual::phtd_parse_return_data</span></span>:<br/><a href="3-dptd.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_type_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phtd</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">XW</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::TypeData::Textual::phtd_parse_return_data</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Phrases::TypeData::Textual::phtd_parse_return_data</span></span>:<br/><a href="3-dptd.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_type_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phtd</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">XW</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">phtd</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">return_kind</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="function-syntax">&lt;to-return-data&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">XW</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">XW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax">&lt;to-return-data&gt;</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
@ -746,7 +746,7 @@ preamble word range backwards &mdash; it returns the current last word number.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::TypeData::Textual::phtd_parse_doodads</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Phrases::TypeData::Textual::phtd_parse_doodads</span></span>:<br/><a href="3-dptd.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_type_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phtd</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">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">say_flag</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::TypeData::Textual::phtd_parse_doodads</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Phrases::TypeData::Textual::phtd_parse_doodads</span></span>:<br/><a href="3-dptd.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_type_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phtd</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">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">say_flag</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="function-syntax">&lt;&lt;operation&gt;&gt;</span><span class="plain-syntax"> = -1; </span><span class="function-syntax">&lt;&lt;assignment&gt;&gt;</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="function-syntax">&lt;&lt;deprecated&gt;&gt;</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="function-syntax">&lt;&lt;run-on&gt;&gt;</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="function-syntax">&lt;phrase-preamble&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">); </span><span class="comment-syntax"> guaranteed to match any non-empty text</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax">&lt;&lt;r&gt;&gt;</span><span class="plain-syntax"> == </span><span class="constant-syntax">SAY_ANN</span><span class="plain-syntax">) </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax">&lt;say-preamble&gt;</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
@ -976,7 +976,7 @@ form the word and token sequences:
</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">Phrases::TypeData::Textual::phtd_parse_word_sequence</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">Phrases::TypeData::Textual::phtd_parse_word_sequence</span></span>:<br/><a href="3-dptd.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_type_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phtd</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">Phrases::TypeData::Textual::phtd_parse_word_sequence</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Phrases::TypeData::Textual::phtd_parse_word_sequence</span></span>:<br/><a href="3-dptd.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_type_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phtd</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">phtd</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">no_tokens</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">phtd</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">no_words</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
@ -1179,7 +1179,7 @@ such as "list of numbers", it returns 0.)
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::TypeData::Textual::find_kind_variable_domains</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">Phrases::TypeData::Textual::find_kind_variable_domains</span></span>:<br/><a href="3-dptd.html#SP20_3">&#167;20.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">usages</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> **</span><span class="identifier-syntax">declarations</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::TypeData::Textual::find_kind_variable_domains</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">Phrases::TypeData::Textual::find_kind_variable_domains</span></span>:<br/><a href="3-dptd.html#SP20_3">&#167;20.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">usages</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> **</span><span class="identifier-syntax">declarations</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">t</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><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">N</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::get_variable_number</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
@ -1231,7 +1231,7 @@ in exactly one place: for example,
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-dptd.html#SP21">&#167;21</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-ptd.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-itp.html">itp</a></li><li class="progresssection"><a href="3-rs.html">rs</a></li><li class="progresssection"><a href="3-cs.html">cs</a></li><li class="progresssection"><a href="3-phr.html">phr</a></li><li class="progresssection"><a href="3-pu.html">pu</a></li><li class="progresssection"><a href="3-prcd.html">prcd</a></li><li class="progresssection"><a href="3-ptd.html">ptd</a></li><li class="progresscurrent">dptd</li><li class="progresssection"><a href="3-po.html">po</a></li><li class="progresssection"><a href="3-pav.html">pav</a></li><li class="progresssection"><a href="3-tph.html">tph</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-pi.html">pi</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="3-po.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="3-ptd.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-itp.html">itp</a></li><li class="progresssection"><a href="3-cs.html">cs</a></li><li class="progresssection"><a href="3-phr.html">phr</a></li><li class="progresssection"><a href="3-pu.html">pu</a></li><li class="progresssection"><a href="3-prcd.html">prcd</a></li><li class="progresssection"><a href="3-ptd.html">ptd</a></li><li class="progresscurrent">dptd</li><li class="progresssection"><a href="3-po.html">po</a></li><li class="progresssection"><a href="3-pav.html">pav</a></li><li class="progresssection"><a href="3-tph.html">tph</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="3-po.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -228,7 +228,7 @@ significant timing difficulties.
</p>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-act.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresscurrent">itp</li><li class="progresssection"><a href="3-rs.html">rs</a></li><li class="progresssection"><a href="3-cs.html">cs</a></li><li class="progresssection"><a href="3-phr.html">phr</a></li><li class="progresssection"><a href="3-pu.html">pu</a></li><li class="progresssection"><a href="3-prcd.html">prcd</a></li><li class="progresssection"><a href="3-ptd.html">ptd</a></li><li class="progresssection"><a href="3-dptd.html">dptd</a></li><li class="progresssection"><a href="3-po.html">po</a></li><li class="progresssection"><a href="3-pav.html">pav</a></li><li class="progresssection"><a href="3-tph.html">tph</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-pi.html">pi</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="3-rs.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-act.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresscurrent">itp</li><li class="progresssection"><a href="3-cs.html">cs</a></li><li class="progresssection"><a href="3-phr.html">phr</a></li><li class="progresssection"><a href="3-pu.html">pu</a></li><li class="progresssection"><a href="3-prcd.html">prcd</a></li><li class="progresssection"><a href="3-ptd.html">ptd</a></li><li class="progresssection"><a href="3-dptd.html">dptd</a></li><li class="progresssection"><a href="3-po.html">po</a></li><li class="progresssection"><a href="3-pav.html">pav</a></li><li class="progresssection"><a href="3-tph.html">tph</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="3-cs.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -314,7 +314,7 @@ made above.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-pav.html#SP8">&#167;8</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-po.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-itp.html">itp</a></li><li class="progresssection"><a href="3-rs.html">rs</a></li><li class="progresssection"><a href="3-cs.html">cs</a></li><li class="progresssection"><a href="3-phr.html">phr</a></li><li class="progresssection"><a href="3-pu.html">pu</a></li><li class="progresssection"><a href="3-prcd.html">prcd</a></li><li class="progresssection"><a href="3-ptd.html">ptd</a></li><li class="progresssection"><a href="3-dptd.html">dptd</a></li><li class="progresssection"><a href="3-po.html">po</a></li><li class="progresscurrent">pav</li><li class="progresssection"><a href="3-tph.html">tph</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-pi.html">pi</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="3-tph.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="3-po.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-itp.html">itp</a></li><li class="progresssection"><a href="3-cs.html">cs</a></li><li class="progresssection"><a href="3-phr.html">phr</a></li><li class="progresssection"><a href="3-pu.html">pu</a></li><li class="progresssection"><a href="3-prcd.html">prcd</a></li><li class="progresssection"><a href="3-ptd.html">ptd</a></li><li class="progresssection"><a href="3-dptd.html">dptd</a></li><li class="progresssection"><a href="3-po.html">po</a></li><li class="progresscurrent">pav</li><li class="progresssection"><a href="3-tph.html">tph</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="3-tph.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -117,7 +117,7 @@ code below.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">declaration_node</span><span class="plain-syntax">; </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">RULE_NT</span></span><span class="comment-syntax"> node where declared</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">declaration_node</span><span class="plain-syntax">; </span><span class="comment-syntax"> </span><span class="extract"><span class="extract-syntax">IMPERATIVE_NT</span></span><span class="comment-syntax"> node where declared</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">inline_wn</span><span class="plain-syntax">; </span><span class="comment-syntax"> word number of inline I6 definition, or </span><span class="extract"><span class="extract-syntax">-1</span></span><span class="comment-syntax"> if not inline</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inter_head_defn</span><span class="plain-syntax">; </span><span class="comment-syntax"> inline definition translated to inter, if possible</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inter_tail_defn</span><span class="plain-syntax">; </span><span class="comment-syntax"> inline definition translated to inter, if possible</span>
@ -126,7 +126,6 @@ code below.
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">ph_documentation_symbol</span><span class="plain-syntax">; </span><span class="comment-syntax"> cross-reference with documentation</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">compilation_unit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owning_module</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">requests_package</span><span class="plain-syntax">;</span>
<span class="comment-syntax"> struct package_request *rule_package;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">ph_type_data</span><span class="plain-syntax"> </span><span class="identifier-syntax">type_data</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> </span><span class="identifier-syntax">usage_data</span><span class="plain-syntax">;</span>
@ -146,7 +145,7 @@ code below.
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">phrase</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure phrase is accessed in 2/rls, 2/rb, 3/cs, 3/pu, 3/prcd, 3/ptd, 3/dptd, 3/po, 3/pav, 3/tph, 3/tp, 3/pi, 6/inv, 6/pi, 6/ci, 6/cii, 6/cp, 6/cste and here.</li></ul>
<ul class="endnotetexts"><li>The structure phrase is accessed in 2/rls, 2/rb, 3/cs, 3/pu, 3/prcd, 3/ptd, 3/dptd, 3/po, 3/pav, 3/tph, 3/tp, 6/inv, 6/pi, 6/ci, 6/cii, 6/cp, 6/cste and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </b>"To..." phrases, though no others, are listed in logical precedence order:
</p>
@ -162,9 +161,9 @@ invocation which is given as verbatim I6.
</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">Phrases::create_from_preamble</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">Phrases::create_from_preamble</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</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">p</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) != </span><span class="identifier-syntax">RULE_NT</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">"a phrase preamble should be at a RULE_NT node"</span><span class="plain-syntax">);</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::create_from_preamble</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">Phrases::create_from_preamble</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</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">p</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) != </span><span class="identifier-syntax">IMPERATIVE_NT</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">"a phrase preamble should be at a IMPERATIVE_NT node"</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">inline_wn</span><span class="plain-syntax"> = -1; </span><span class="comment-syntax"> the word number of an inline I6 definition if any</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">mor</span><span class="plain-syntax"> = </span><span class="constant-syntax">DONT_KNOW_MOR</span><span class="plain-syntax">; </span><span class="comment-syntax"> and its manner of return</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">OW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">; </span><span class="comment-syntax"> the text of the phrase options, if any</span>
@ -506,7 +505,7 @@ what number is...", for instance.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ph_iname</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Phrases::declaration_node</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">Phrases::declaration_node</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP11_6">&#167;11.6</a>, <a href="3-cs.html#SP11_7">&#167;11.7</a><br/>Phrase Usage - <a href="3-pu.html#SP9_2_1">&#167;9.2.1</a><br/>To Phrases - <a href="3-tph.html#SP3">&#167;3</a>, <a href="3-tph.html#SP6_1">&#167;6.1</a>, <a href="3-tph.html#SP7">&#167;7</a><br/>Phrasebook Index - <a href="3-pi.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Phrases::declaration_node</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">Phrases::declaration_node</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP3_6">&#167;3.6</a>, <a href="3-cs.html#SP3_7">&#167;3.7</a><br/>Phrase Usage - <a href="3-pu.html#SP9_2_1">&#167;9.2.1</a><br/>To Phrases - <a href="3-tph.html#SP3">&#167;3</a>, <a href="3-tph.html#SP6_1">&#167;6.1</a>, <a href="3-tph.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</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">ph</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">declaration_node</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -521,7 +520,7 @@ response to "requests". All other phrases are compiled just once.
<span class="plain-syntax"> </span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">imported</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::compile</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">Phrases::compile</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP11_4">&#167;11.4</a><br/>To Phrases - <a href="3-tph.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">max_i</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::compile</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">Phrases::compile</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP3_4">&#167;3.4</a><br/>To Phrases - <a href="3-tph.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">max_i</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">stacked_variable_owner_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">legible</span><span class="plain-syntax">, </span><span class="reserved-syntax">to_phrase_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</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">ph</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">imported</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">effect</span><span class="plain-syntax"> = </span><a href="3-pu.html#SP14" class="function-link"><span class="function-syntax">Phrases::Usage::get_effect</span></a><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">usage_data</span><span class="plain-syntax">));</span>
@ -593,7 +592,7 @@ response to "requests". All other phrases are compiled just once.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-cs.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-itp.html">itp</a></li><li class="progresssection"><a href="3-rs.html">rs</a></li><li class="progresssection"><a href="3-cs.html">cs</a></li><li class="progresscurrent">phr</li><li class="progresssection"><a href="3-pu.html">pu</a></li><li class="progresssection"><a href="3-prcd.html">prcd</a></li><li class="progresssection"><a href="3-ptd.html">ptd</a></li><li class="progresssection"><a href="3-dptd.html">dptd</a></li><li class="progresssection"><a href="3-po.html">po</a></li><li class="progresssection"><a href="3-pav.html">pav</a></li><li class="progresssection"><a href="3-tph.html">tph</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-pi.html">pi</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="3-pu.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="3-cs.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-itp.html">itp</a></li><li class="progresssection"><a href="3-cs.html">cs</a></li><li class="progresscurrent">phr</li><li class="progresssection"><a href="3-pu.html">pu</a></li><li class="progresssection"><a href="3-prcd.html">prcd</a></li><li class="progresssection"><a href="3-ptd.html">ptd</a></li><li class="progresssection"><a href="3-dptd.html">dptd</a></li><li class="progresssection"><a href="3-po.html">po</a></li><li class="progresssection"><a href="3-pav.html">pav</a></li><li class="progresssection"><a href="3-tph.html">tph</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="3-pu.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -407,7 +407,7 @@ by "and":
</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>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-dptd.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-itp.html">itp</a></li><li class="progresssection"><a href="3-rs.html">rs</a></li><li class="progresssection"><a href="3-cs.html">cs</a></li><li class="progresssection"><a href="3-phr.html">phr</a></li><li class="progresssection"><a href="3-pu.html">pu</a></li><li class="progresssection"><a href="3-prcd.html">prcd</a></li><li class="progresssection"><a href="3-ptd.html">ptd</a></li><li class="progresssection"><a href="3-dptd.html">dptd</a></li><li class="progresscurrent">po</li><li class="progresssection"><a href="3-pav.html">pav</a></li><li class="progresssection"><a href="3-tph.html">tph</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-pi.html">pi</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="3-pav.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="3-dptd.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-itp.html">itp</a></li><li class="progresssection"><a href="3-cs.html">cs</a></li><li class="progresssection"><a href="3-phr.html">phr</a></li><li class="progresssection"><a href="3-pu.html">pu</a></li><li class="progresssection"><a href="3-prcd.html">prcd</a></li><li class="progresssection"><a href="3-ptd.html">ptd</a></li><li class="progresssection"><a href="3-dptd.html">dptd</a></li><li class="progresscurrent">po</li><li class="progresssection"><a href="3-pav.html">pav</a></li><li class="progresssection"><a href="3-tph.html">tph</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="3-pav.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -734,7 +734,7 @@ with the default outcome return (see above).
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<ul class="endnotetexts"><li>The structure activity_list is accessed in 2/rlb, 2/act, 3/rs, 3/phr, 3/tph, 3/tp, 4/lv, 4/sv, 4/sf, 5/dtd, 5/cdp, 6/inv, 6/pi, 6/cii, 6/cp, 6/cste and here.</li></ul>
<ul class="endnotetexts"><li>The structure activity_list is accessed in 2/rlb, 2/act, 3/phr, 3/tph, 3/tp, 4/lv, 4/sv, 4/sf, 5/dtd, 5/cdp, 6/inv, 6/pi, 6/cii, 6/cp, 6/cste and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>&#167;11. </b>Run-time contexts are seen in the "while" clauses at the end of rules.
For example:
</p>
@ -901,7 +901,7 @@ values, of the kind to which the activity applies.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-pu.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-itp.html">itp</a></li><li class="progresssection"><a href="3-rs.html">rs</a></li><li class="progresssection"><a href="3-cs.html">cs</a></li><li class="progresssection"><a href="3-phr.html">phr</a></li><li class="progresssection"><a href="3-pu.html">pu</a></li><li class="progresscurrent">prcd</li><li class="progresssection"><a href="3-ptd.html">ptd</a></li><li class="progresssection"><a href="3-dptd.html">dptd</a></li><li class="progresssection"><a href="3-po.html">po</a></li><li class="progresssection"><a href="3-pav.html">pav</a></li><li class="progresssection"><a href="3-tph.html">tph</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-pi.html">pi</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="3-ptd.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="3-pu.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-itp.html">itp</a></li><li class="progresssection"><a href="3-cs.html">cs</a></li><li class="progresssection"><a href="3-phr.html">phr</a></li><li class="progresssection"><a href="3-pu.html">pu</a></li><li class="progresscurrent">prcd</li><li class="progresssection"><a href="3-ptd.html">ptd</a></li><li class="progresssection"><a href="3-dptd.html">dptd</a></li><li class="progresssection"><a href="3-po.html">po</a></li><li class="progresssection"><a href="3-pav.html">pav</a></li><li class="progresssection"><a href="3-tph.html">tph</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="3-ptd.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -326,7 +326,7 @@ whistles and doodads which regular phrases don't.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">phtd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">manner_of_return</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Phrases::TypeData::get_return_kind</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Phrases::TypeData::get_return_kind</span></span>:<br/><a href="3-ptd.html#SP12">&#167;12</a><br/>Construction Sequence - <a href="3-cs.html#SP11_6">&#167;11.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_type_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phtd</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Phrases::TypeData::get_return_kind</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Phrases::TypeData::get_return_kind</span></span>:<br/><a href="3-ptd.html#SP12">&#167;12</a><br/>Construction Sequence - <a href="3-cs.html#SP3_6">&#167;3.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_type_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phtd</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">phtd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">manner_of_return</span><span class="plain-syntax"> == </span><span class="constant-syntax">DECIDES_CONDITION_MOR</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">K_truth_state</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">phtd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">return_kind</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -403,7 +403,7 @@ logic, since one argument is in effect a kind rather than a value.)
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Phrases::TypeData::kind</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Phrases::TypeData::kind</span></span>:<br/><a href="3-ptd.html#SP13">&#167;13</a><br/>Construction Sequence - <a href="3-cs.html#SP11_5">&#167;11.5</a><br/>Phrases - <a href="3-phr.html#SP5_5">&#167;5.5</a><br/>Describing Phrase Type Data - <a href="3-dptd.html#SP6_5">&#167;6.5</a><br/>Phrases as Values - <a href="3-pav.html#SP4">&#167;4</a><br/>Parse Invocations - <a href="6-pi.html#SP3">&#167;3</a><br/>Compile Phrases - <a href="6-cp.html#SP2_2">&#167;2.2</a><br/>Compile Solutions to Equations - <a href="6-cste.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_type_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phtd</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Phrases::TypeData::kind</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Phrases::TypeData::kind</span></span>:<br/><a href="3-ptd.html#SP13">&#167;13</a><br/>Construction Sequence - <a href="3-cs.html#SP3_5">&#167;3.5</a><br/>Phrases - <a href="3-phr.html#SP5_5">&#167;5.5</a><br/>Describing Phrase Type Data - <a href="3-dptd.html#SP6_5">&#167;6.5</a><br/>Phrases as Values - <a href="3-pav.html#SP4">&#167;4</a><br/>Parse Invocations - <a href="6-pi.html#SP3">&#167;3</a><br/>Compile Phrases - <a href="6-cp.html#SP2_2">&#167;2.2</a><br/>Compile Solutions to Equations - <a href="6-cste.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_type_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phtd</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">argument_kinds</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_TOKENS_PER_PHRASE</span><span class="plain-syntax">];</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</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">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="function-syntax">&lt;phtd-&gt;</span><span class="element-syntax">no_tokens</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++)</span>
@ -427,7 +427,7 @@ logic, since one argument is in effect a kind rather than a value.)
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::TypeData::tokens_contain_variable</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Phrases::TypeData::tokens_contain_variable</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP11_6">&#167;11.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_type_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phtd</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">v</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::TypeData::tokens_contain_variable</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Phrases::TypeData::tokens_contain_variable</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP3_6">&#167;3.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_type_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phtd</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">v</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="function-syntax">&lt;phtd-&gt;</span><span class="element-syntax">no_tokens</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</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">Kinds::Behaviour::involves_var</span><span class="plain-syntax">(</span><span class="identifier-syntax">phtd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">token_sequence</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">].</span><span class="element-syntax">token_kind</span><span class="plain-syntax">, </span><span class="identifier-syntax">v</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">TRUE</span><span class="plain-syntax">;</span>
@ -477,7 +477,7 @@ in the next.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::TypeData::deprecated</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">Phrases::TypeData::deprecated</span></span>:<br/>Describing Phrase Type Data - <a href="3-dptd.html#SP6_6">&#167;6.6</a><br/>Phrasebook Index - <a href="3-pi.html#SP1_3">&#167;1.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_type_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phtd</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::TypeData::deprecated</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">Phrases::TypeData::deprecated</span></span>:<br/>Describing Phrase Type Data - <a href="3-dptd.html#SP6_6">&#167;6.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_type_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phtd</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">phtd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">now_deprecated</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -918,7 +918,7 @@ by than name.
<span class="plain-syntax"> </span><span class="identifier-syntax">phtd</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_inline</span><span class="plain-syntax">.</span><span class="element-syntax">invoked_inline_not_as_call</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">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::TypeData::invoked_inline</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">Phrases::TypeData::invoked_inline</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP11_7">&#167;11.7</a><br/>To Phrases - <a href="3-tph.html#SP7">&#167;7</a><br/>Compile Invocations - <a href="6-ci.html#SP2_1_1_1">&#167;2.1.1.1</a>, <a href="6-ci.html#SP3_1">&#167;3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::TypeData::invoked_inline</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">Phrases::TypeData::invoked_inline</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP3_7">&#167;3.7</a><br/>To Phrases - <a href="3-tph.html#SP7">&#167;7</a><br/>Compile Invocations - <a href="6-ci.html#SP2_1_1_1">&#167;2.1.1.1</a>, <a href="6-ci.html#SP3_1">&#167;3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</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">ph</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">type_data</span><span class="plain-syntax">.</span><span class="element-syntax">as_inline</span><span class="plain-syntax">.</span><span class="element-syntax">invoked_inline_not_as_call</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -935,7 +935,7 @@ by than name.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::TypeData::arithmetic_operation</span><button class="popup" onclick="togglePopup('usagePopup27')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup27">Usage of <span class="code-font"><span class="function-syntax">Phrases::TypeData::arithmetic_operation</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP11_6">&#167;11.6</a><br/>Compile Invocations Inline - <a href="6-cii.html#SP3_5_7">&#167;3.5.7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::TypeData::arithmetic_operation</span><button class="popup" onclick="togglePopup('usagePopup27')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup27">Usage of <span class="code-font"><span class="function-syntax">Phrases::TypeData::arithmetic_operation</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP3_6">&#167;3.6</a><br/>Compile Invocations Inline - <a href="6-cii.html#SP3_5_7">&#167;3.5.7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</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">ph</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">type_data</span><span class="plain-syntax">.</span><span class="element-syntax">as_inline</span><span class="plain-syntax">.</span><span class="element-syntax">arithmetical_operation</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -991,7 +991,7 @@ source text.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-prcd.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-itp.html">itp</a></li><li class="progresssection"><a href="3-rs.html">rs</a></li><li class="progresssection"><a href="3-cs.html">cs</a></li><li class="progresssection"><a href="3-phr.html">phr</a></li><li class="progresssection"><a href="3-pu.html">pu</a></li><li class="progresssection"><a href="3-prcd.html">prcd</a></li><li class="progresscurrent">ptd</li><li class="progresssection"><a href="3-dptd.html">dptd</a></li><li class="progresssection"><a href="3-po.html">po</a></li><li class="progresssection"><a href="3-pav.html">pav</a></li><li class="progresssection"><a href="3-tph.html">tph</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-pi.html">pi</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="3-dptd.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="3-prcd.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-itp.html">itp</a></li><li class="progresssection"><a href="3-cs.html">cs</a></li><li class="progresssection"><a href="3-phr.html">phr</a></li><li class="progresssection"><a href="3-pu.html">pu</a></li><li class="progresssection"><a href="3-prcd.html">prcd</a></li><li class="progresscurrent">ptd</li><li class="progresssection"><a href="3-dptd.html">dptd</a></li><li class="progresssection"><a href="3-po.html">po</a></li><li class="progresssection"><a href="3-pav.html">pav</a></li><li class="progresssection"><a href="3-tph.html">tph</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="3-dptd.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -697,7 +697,7 @@ of the stem, so we have to be very careful:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::get_effect</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Phrases::Usage::get_effect</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP11_4">&#167;11.4</a><br/>Phrases - <a href="3-phr.html#SP5">&#167;5</a>, <a href="3-phr.html#SP11">&#167;11</a><br/>Phrasebook Index - <a href="3-pi.html#SP1">&#167;1</a><br/>Compile Phrases - <a href="6-cp.html#SP4_3_3">&#167;4.3.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::get_effect</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Phrases::Usage::get_effect</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP3_4">&#167;3.4</a><br/>Phrases - <a href="3-phr.html#SP5">&#167;5</a>, <a href="3-phr.html#SP11">&#167;11</a><br/>Compile Phrases - <a href="6-cp.html#SP4_3_3">&#167;4.3.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</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">phud</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">phrase_effect</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -718,7 +718,7 @@ of the stem, so we have to be very careful:
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">phud</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">timing_of_event</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::has_name_as_constant</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">Phrases::Usage::has_name_as_constant</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP11_7">&#167;11.7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::has_name_as_constant</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">Phrases::Usage::has_name_as_constant</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP3_7">&#167;3.7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</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">phud</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">constant_phrase_holder</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">phud</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">explicit_name_used_in_maths</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">Nouns::nominative_singular</span><span class="plain-syntax">(</span><span class="identifier-syntax">phud</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">constant_phrase_holder</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</span><span class="plain-syntax">)))) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
@ -836,7 +836,7 @@ seen problems in Inform. A couple of variables are needed just for that:
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>&#167;19. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::to_runtime_context_data</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">Phrases::Usage::to_runtime_context_data</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Usage::to_runtime_context_data</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">Phrases::Usage::to_runtime_context_data</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_usage_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phud</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> </span><span class="identifier-syntax">phrcd</span><span class="plain-syntax"> = </span><a href="3-prcd.html#SP2" class="function-link"><span class="function-syntax">Phrases::Context::new</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">phud</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">phrase_effect</span><span class="plain-syntax"> == </span><span class="constant-syntax">RULE_NOT_IN_RULEBOOK_EFF</span><span class="plain-syntax">)</span>
@ -1298,7 +1298,7 @@ might have gone wrong.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-pu.html#SP24">&#167;24</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-phr.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-itp.html">itp</a></li><li class="progresssection"><a href="3-rs.html">rs</a></li><li class="progresssection"><a href="3-cs.html">cs</a></li><li class="progresssection"><a href="3-phr.html">phr</a></li><li class="progresscurrent">pu</li><li class="progresssection"><a href="3-prcd.html">prcd</a></li><li class="progresssection"><a href="3-ptd.html">ptd</a></li><li class="progresssection"><a href="3-dptd.html">dptd</a></li><li class="progresssection"><a href="3-po.html">po</a></li><li class="progresssection"><a href="3-pav.html">pav</a></li><li class="progresssection"><a href="3-tph.html">tph</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-pi.html">pi</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="3-prcd.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="3-phr.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-itp.html">itp</a></li><li class="progresssection"><a href="3-cs.html">cs</a></li><li class="progresssection"><a href="3-phr.html">phr</a></li><li class="progresscurrent">pu</li><li class="progresssection"><a href="3-prcd.html">prcd</a></li><li class="progresssection"><a href="3-ptd.html">ptd</a></li><li class="progresssection"><a href="3-dptd.html">dptd</a></li><li class="progresssection"><a href="3-po.html">po</a></li><li class="progresssection"><a href="3-pav.html">pav</a></li><li class="progresssection"><a href="3-tph.html">tph</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="3-prcd.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -92,12 +92,12 @@ defined as "At 9:00 AM: ..." But two values are special:
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">use_as_event</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure use_as_event is accessed in 2/rlb, 2/act, 3/rs, 3/phr, 3/prcd, 3/tph, 4/lv, 4/sv, 4/sf, 5/dtd, 5/cdp, 6/inv, 6/pi, 6/cii, 6/cp, 6/cste and here.</li></ul>
<ul class="endnotetexts"><li>The structure use_as_event is accessed in 2/rlb, 2/act, 3/phr, 3/prcd, 3/tph, 4/lv, 4/sv, 4/sf, 5/dtd, 5/cdp, 6/inv, 6/pi, 6/cii, 6/cp, 6/cste and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b>Timed events are stored in two simple arrays, processed by run-time code.
</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">Phrases::Timed::TimedEventsTable</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">Phrases::Timed::TimedEventsTable</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP12">&#167;12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Timed::TimedEventsTable</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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">TIMEDEVENTSTABLE_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Emit::named_table_array_begin</span><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="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">when_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
@ -117,7 +117,7 @@ defined as "At 9:00 AM: ..." But two values are special:
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_available</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Timed::TimedEventTimesTable</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Phrases::Timed::TimedEventTimesTable</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP12">&#167;12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Timed::TimedEventTimesTable</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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">TIMEDEVENTTIMESTABLE_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Emit::named_table_array_begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_number</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">when_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
@ -141,7 +141,7 @@ defined as "At 9:00 AM: ..." But two values are special:
</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">Phrases::Timed::note_usage</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Phrases::Timed::note_usage</span></span>:<br/>Compile Invocations Inline - <a href="6-cii.html#SP3_1_1_4_12">&#167;3.1.1.4.12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Timed::note_usage</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">Phrases::Timed::note_usage</span></span>:<br/>Compile Invocations Inline - <a href="6-cii.html#SP3_1_1_4_12">&#167;3.1.1.4.12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax"> = </span><a href="3-pu.html#SP14" class="function-link"><span class="function-syntax">Phrases::Usage::get_timing_of_event</span></a><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">usage_data</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">t</span><span class="plain-syntax"> == </span><span class="constant-syntax">NO_FIXED_TIME</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">use_as_event</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uae</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">use_as_event</span><span class="plain-syntax">);</span>
@ -243,7 +243,7 @@ arguably shouldn't block compilation. Then again...
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-tp.html#SP6">&#167;6</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-tph.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-itp.html">itp</a></li><li class="progresssection"><a href="3-rs.html">rs</a></li><li class="progresssection"><a href="3-cs.html">cs</a></li><li class="progresssection"><a href="3-phr.html">phr</a></li><li class="progresssection"><a href="3-pu.html">pu</a></li><li class="progresssection"><a href="3-prcd.html">prcd</a></li><li class="progresssection"><a href="3-ptd.html">ptd</a></li><li class="progresssection"><a href="3-dptd.html">dptd</a></li><li class="progresssection"><a href="3-po.html">po</a></li><li class="progresssection"><a href="3-pav.html">pav</a></li><li class="progresssection"><a href="3-tph.html">tph</a></li><li class="progresscurrent">tp</li><li class="progresssection"><a href="3-pi.html">pi</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="3-pi.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="3-tph.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-itp.html">itp</a></li><li class="progresssection"><a href="3-cs.html">cs</a></li><li class="progresssection"><a href="3-phr.html">phr</a></li><li class="progresssection"><a href="3-pu.html">pu</a></li><li class="progresssection"><a href="3-prcd.html">prcd</a></li><li class="progresssection"><a href="3-ptd.html">ptd</a></li><li class="progresssection"><a href="3-dptd.html">dptd</a></li><li class="progresssection"><a href="3-po.html">po</a></li><li class="progresssection"><a href="3-pav.html">pav</a></li><li class="progresssection"><a href="3-tph.html">tph</a></li><li class="progresscurrent">tp</li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="4-lv.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -189,7 +189,7 @@ reasons, that is, to make the compiled code more legible.
</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">Routines::ToPhrases::register_all</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Routines::ToPhrases::register_all</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Routines::ToPhrases::register_all</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Routines::ToPhrases::register_all</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</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">c</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">ph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">first_in_logical_order</span><span class="plain-syntax">; </span><span class="identifier-syntax">ph</span><span class="plain-syntax">; </span><span class="identifier-syntax">ph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next_in_logical_order</span><span class="plain-syntax">) {</span>
@ -234,7 +234,7 @@ values in force, so that there is no possible ambiguity in how we read K.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">to_phrase_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Routines::ToPhrases::make_request</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">Routines::ToPhrases::make_request</span></span>:<br/><a href="3-tph.html#SP7">&#167;7</a><br/>Construction Sequence - <a href="3-cs.html#SP11_5">&#167;11.5</a><br/>Phrases - <a href="3-phr.html#SP12">&#167;12</a><br/>Phrases as Values - <a href="3-pav.html#SP6">&#167;6</a><br/>Compile Invocations As Calls - <a href="6-ciac.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">to_phrase_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Routines::ToPhrases::make_request</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">Routines::ToPhrases::make_request</span></span>:<br/><a href="3-tph.html#SP7">&#167;7</a><br/>Construction Sequence - <a href="3-cs.html#SP3_5">&#167;3.5</a><br/>Phrases - <a href="3-phr.html#SP12">&#167;12</a><br/>Phrases as Values - <a href="3-pav.html#SP6">&#167;6</a><br/>Compile Invocations As Calls - <a href="6-ciac.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind_variable_declaration</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kvd</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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ph</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">K</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">"bad request"</span><span class="plain-syntax">);</span>
@ -338,7 +338,7 @@ since the last time it was called.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">to_phrase_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">latest_request_granted</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Routines::ToPhrases::compilation_coroutine</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Routines::ToPhrases::compilation_coroutine</span></span>:<br/>Construction Sequence - <a href="3-cs.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">i</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">max_i</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Routines::ToPhrases::compilation_coroutine</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Routines::ToPhrases::compilation_coroutine</span></span>:<br/>Construction Sequence - <a href="3-cs.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">i</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">max_i</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">N</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">while</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">to_phrase_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax">;</span>
@ -403,7 +403,7 @@ is confined to the current Chapter.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-pav.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-itp.html">itp</a></li><li class="progresssection"><a href="3-rs.html">rs</a></li><li class="progresssection"><a href="3-cs.html">cs</a></li><li class="progresssection"><a href="3-phr.html">phr</a></li><li class="progresssection"><a href="3-pu.html">pu</a></li><li class="progresssection"><a href="3-prcd.html">prcd</a></li><li class="progresssection"><a href="3-ptd.html">ptd</a></li><li class="progresssection"><a href="3-dptd.html">dptd</a></li><li class="progresssection"><a href="3-po.html">po</a></li><li class="progresssection"><a href="3-pav.html">pav</a></li><li class="progresscurrent">tph</li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-pi.html">pi</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="3-tp.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="3-pav.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-itp.html">itp</a></li><li class="progresssection"><a href="3-cs.html">cs</a></li><li class="progresssection"><a href="3-phr.html">phr</a></li><li class="progresssection"><a href="3-pu.html">pu</a></li><li class="progresssection"><a href="3-prcd.html">prcd</a></li><li class="progresssection"><a href="3-ptd.html">ptd</a></li><li class="progresssection"><a href="3-dptd.html">dptd</a></li><li class="progresssection"><a href="3-po.html">po</a></li><li class="progresssection"><a href="3-pav.html">pav</a></li><li class="progresscurrent">tph</li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="3-tp.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -148,7 +148,7 @@ marks it as deallocated.
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure local_variable is accessed in 2/rlb, 2/act, 3/rs, 3/phr, 3/prcd, 3/tph, 3/tp, 4/sv, 4/sf, 5/dtd, 5/cdp, 6/inv, 6/pi, 6/cii, 6/cp, 6/cste and here.</li></ul>
<ul class="endnotetexts"><li>The structure local_variable is accessed in 2/rlb, 2/act, 3/phr, 3/prcd, 3/tph, 3/tp, 4/sv, 4/sf, 5/dtd, 5/cdp, 6/inv, 6/pi, 6/cii, 6/cp, 6/cste and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b>A local variable needs to be stored somewhere at run-time. The obvious
correspondence is to put these into I6 local variables, which are, in effect,
CPU registers. We won't need to do much in the way of register-allocation,
@ -1368,7 +1368,7 @@ need in the compilation of any given routine:
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-pi.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresschapter"><a href="3-itp.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresscurrent">lv</li><li class="progresssection"><a href="4-sv.html">sv</a></li><li class="progresssection"><a href="4-pb.html">pb</a></li><li class="progresssection"><a href="4-sf.html">sf</a></li><li class="progresssection"><a href="4-chr.html">chr</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="4-sv.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="3-tp.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresschapter"><a href="3-itp.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresscurrent">lv</li><li class="progresssection"><a href="4-sv.html">sv</a></li><li class="progresssection"><a href="4-pb.html">pb</a></li><li class="progresssection"><a href="4-sf.html">sf</a></li><li class="progresssection"><a href="4-chr.html">chr</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="4-sv.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -191,12 +191,12 @@ if that's active, and otherwise must be set as needed.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">current_frame</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">Frames::make_current</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Frames::make_current</span></span>:<br/><a href="4-sf.html#SP5">&#167;5</a><br/>Construction Sequence - <a href="3-cs.html#SP7">&#167;7</a><br/>Phrase Runtime Context Data - <a href="3-prcd.html#SP8">&#167;8</a><br/>Compile Phrases - <a href="6-cp.html#SP2_2">&#167;2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Frames::make_current</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Frames::make_current</span></span>:<br/><a href="4-sf.html#SP5">&#167;5</a><br/>Construction Sequence - <a href="3-cs.html#SP1">&#167;1</a><br/>Phrase Runtime Context Data - <a href="3-prcd.html#SP8">&#167;8</a><br/>Compile Phrases - <a href="6-cp.html#SP2_2">&#167;2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</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">phsf</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">"can't select null stack frame"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">current_frame</span><span class="plain-syntax"> = </span><span class="identifier-syntax">phsf</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">Frames::remove_current</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">Frames::remove_current</span></span>:<br/><a href="4-sf.html#SP5">&#167;5</a><br/>Construction Sequence - <a href="3-cs.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Frames::remove_current</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">Frames::remove_current</span></span>:<br/><a href="4-sf.html#SP5">&#167;5</a><br/>Construction Sequence - <a href="3-cs.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">current_frame</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -107,7 +107,7 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">stacked_variable_owner_list</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure stacked_variable is accessed in 2/rls, 2/fao, 2/act, 3/pu, 3/dptd, 3/po, 3/pav, 6/cii, 6/cste and here.</li><li>The structure stacked_variable_list is accessed in 2/rlb, 2/act, 3/rs, 3/phr, 3/prcd, 3/tph, 3/tp, 4/lv, 4/sf, 5/dtd, 5/cdp, 6/inv, 6/pi, 6/cii, 6/cp, 6/cste and here.</li><li>The structure stacked_variable_owner is private to this section.</li><li>The structure stacked_variable_owner_list is accessed in 2/rlb, 2/act, 3/rs, 3/phr, 3/prcd, 3/tph, 3/tp, 4/lv, 4/sf, 5/dtd, 5/cdp, 6/inv, 6/pi, 6/cii, 6/cp, 6/cste and here.</li></ul>
<ul class="endnotetexts"><li>The structure stacked_variable is accessed in 2/rls, 2/fao, 2/act, 3/pu, 3/dptd, 3/po, 3/pav, 6/cii, 6/cste and here.</li><li>The structure stacked_variable_list is accessed in 2/rlb, 2/act, 3/phr, 3/prcd, 3/tph, 3/tp, 4/lv, 4/sf, 5/dtd, 5/cdp, 6/inv, 6/pi, 6/cii, 6/cp, 6/cste and here.</li><li>The structure stacked_variable_owner is private to this section.</li><li>The structure stacked_variable_owner_list is accessed in 2/rlb, 2/act, 3/phr, 3/prcd, 3/tph, 3/tp, 4/lv, 4/sf, 5/dtd, 5/cdp, 6/inv, 6/pi, 6/cii, 6/cp, 6/cste and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b></p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -129,7 +129,7 @@ which create routines which... and so on.
<span class="plain-syntax">}</span>
<span class="reserved-syntax">pcalc_prop_deferral</span><span class="plain-syntax"> *</span><span class="identifier-syntax">latest_pcd</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Propositions::Deferred::compilation_coroutine</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Propositions::Deferred::compilation_coroutine</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP15">&#167;15</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Propositions::Deferred::compilation_coroutine</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Propositions::Deferred::compilation_coroutine</span></span>:<br/>Construction Sequence - <a href="3-cs.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</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">while</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">pcalc_prop_deferral</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pdef</span><span class="plain-syntax">;</span>

View file

@ -104,7 +104,7 @@ should always be supplied for "To..." phrases, but left null for rules.
<span class="plain-syntax"> </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</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">ph</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">declaration_node</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">declaration_node</span><span class="plain-syntax">) != </span><span class="identifier-syntax">RULE_NT</span><span class="plain-syntax">) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">declaration_node</span><span class="plain-syntax">) != </span><span class="identifier-syntax">IMPERATIVE_NT</span><span class="plain-syntax">) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">declaration_node</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 compile phrase with bad ROUTINE node"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">PHRASE_COMPILATION</span><span class="plain-syntax">, </span><span class="string-syntax">"Compiling phrase:\n$T"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">declaration_node</span><span class="plain-syntax">);</span>

View file

@ -131,15 +131,10 @@
<spon class="sectiontitle">Introduction to Phrases</span></a> -
<span class="sectionpurpose">An exposition of the data structures used inside Inform to hold phrases, rules and rulebooks.</span></p>
</li>
<li>
<p class="sectionentry"><a href="3-rs.html">
<spon class="sectiontitle">Rule Subtrees</span></a> -
<span class="sectionpurpose">To tidy up invocation nodes into a list of children under the relevant rule node, and so turn each rule definition into a single subtree.</span></p>
</li>
<li>
<p class="sectionentry"><a href="3-cs.html">
<spon class="sectiontitle">Construction Sequence</span></a> -
<span class="sectionpurpose">To deal with all the |.i6t| interpreted commands which bring about the compilation of phrases, and to ensure that they are used in the correct order.</span></p>
<span class="sectionpurpose">Managing the timing of dealing with defined phrases and rules.</span></p>
</li>
<li>
<p class="sectionentry"><a href="3-phr.html">
@ -186,11 +181,6 @@
<spon class="sectiontitle">Timed Phrases</span></a> -
<span class="sectionpurpose">Another way phrases can be invoked is as timed events, which need no special Inform data structure and are simply compiled into a pair of timetable I6 arrays to be processed at run-time.</span></p>
</li>
<li>
<p class="sectionentry"><a href="3-pi.html">
<spon class="sectiontitle">Phrasebook Index</span></a> -
<span class="sectionpurpose">To compile most of the HTML page for the Phrasebook index.</span></p>
</li>
</ul>
</li>
<li>

View file

@ -161,7 +161,7 @@ function togglePopup(material_id) {
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-rls.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresscurrent">act</li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="3-fgr.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-rls.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresscurrent">act</li><li class="progresssection"><a href="2-pi.html">pi</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-pi.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -104,7 +104,7 @@ prefaced "(of a rulebook)", "(of an activity)", and so on.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-adj.html#SP1">&#167;1</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-ins.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresscurrent">adj</li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-vrb.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-ins.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresscurrent">adj</li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresssection"><a href="2-pi.html">pi</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-vrb.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -472,7 +472,7 @@ and we need to search fairly seldom:
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-dr.html#SP12">&#167;12</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-ifs.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresscurrent">dr</li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-li.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-ifs.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresscurrent">dr</li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresssection"><a href="2-pi.html">pi</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-li.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -379,7 +379,7 @@ dictionary.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-ki.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresscurrent">ie</li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-ih.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-ki.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresscurrent">ie</li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresssection"><a href="2-pi.html">pi</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-ih.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -776,7 +776,7 @@ to show, hide and colour things:
<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::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">elt</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"Ph"</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Phrases::Index::index_page_Phrasebook</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-pi.html#SP1" class="function-link"><span class="function-syntax">Phrases::Index::index_page_Phrasebook</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">elt</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"Lx"</span><span class="plain-syntax">)) {</span>
@ -941,7 +941,7 @@ the source text in the application.
</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">Index::link</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Index::link</span></span>:<br/>Lexicon Index - <a href="2-li.html#SP7_11_2">&#167;7.11.2</a>, <a href="2-li.html#SP8">&#167;8</a><br/>Index Physical World - <a href="2-ipw.html#SP3_5">&#167;3.5</a>, <a href="2-ipw.html#SP3_8">&#167;3.8</a>, <a href="2-ipw.html#SP4">&#167;4</a><br/>Kinds Index - <a href="2-ki.html#SP6">&#167;6</a><br/>Index Extensions - <a href="2-ie.html#SP1">&#167;1</a><br/>Instances - <a href="2-ins.html#SP5">&#167;5</a><br/>Adjectives - <a href="2-adj.html#SP1">&#167;1</a><br/>Variables - <a href="2-vrb.html#SP3">&#167;3</a><br/>Inferences - <a href="2-inf.html#SP3">&#167;3</a><br/>Rules - <a href="2-rls.html#SP2_5">&#167;2.5</a>, <a href="2-rls.html#SP2_7">&#167;2.7</a>, <a href="2-rls.html#SP7_1">&#167;7.1</a>, <a href="2-rls.html#SP9">&#167;9</a><br/>Activities - <a href="2-act.html#SP2">&#167;2</a><br/>Figures - <a href="3-fgr.html#SP1">&#167;1</a><br/>Sound Effects - <a href="3-se.html#SP1">&#167;1</a><br/>External Files - <a href="3-ef.html#SP1">&#167;1</a><br/>Spatial - <a href="3-spt.html#SP4">&#167;4</a><br/>Scenes - <a href="3-scn.html#SP1_5_1_1">&#167;1.5.1.1</a>, <a href="3-scn.html#SP1_5_1_4_2">&#167;1.5.1.4.2</a>, <a href="3-scn.html#SP1_5_1_4_3">&#167;1.5.1.4.3</a><br/>Actions - <a href="3-act.html#SP1">&#167;1</a><br/>Commands Index - <a href="3-ci.html#SP6">&#167;6</a>, <a href="3-ci.html#SP7">&#167;7</a>, <a href="3-ci.html#SP10">&#167;10</a>, <a href="3-ci.html#SP11">&#167;11</a><br/>Spatial Map - <a href="4-sm.html#SP44">&#167;44</a><br/>HTML Map - <a href="4-hm.html#SP12">&#167;12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">wn</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::link</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Index::link</span></span>:<br/>Lexicon Index - <a href="2-li.html#SP7_11_2">&#167;7.11.2</a>, <a href="2-li.html#SP8">&#167;8</a><br/>Index Physical World - <a href="2-ipw.html#SP3_5">&#167;3.5</a>, <a href="2-ipw.html#SP3_8">&#167;3.8</a>, <a href="2-ipw.html#SP4">&#167;4</a><br/>Kinds Index - <a href="2-ki.html#SP6">&#167;6</a><br/>Index Extensions - <a href="2-ie.html#SP1">&#167;1</a><br/>Instances - <a href="2-ins.html#SP5">&#167;5</a><br/>Adjectives - <a href="2-adj.html#SP1">&#167;1</a><br/>Variables - <a href="2-vrb.html#SP3">&#167;3</a><br/>Inferences - <a href="2-inf.html#SP3">&#167;3</a><br/>Rules - <a href="2-rls.html#SP2_5">&#167;2.5</a>, <a href="2-rls.html#SP2_7">&#167;2.7</a>, <a href="2-rls.html#SP7_1">&#167;7.1</a>, <a href="2-rls.html#SP9">&#167;9</a><br/>Activities - <a href="2-act.html#SP2">&#167;2</a><br/>Phrasebook Index - <a href="2-pi.html#SP1_3">&#167;1.3</a><br/>Figures - <a href="3-fgr.html#SP1">&#167;1</a><br/>Sound Effects - <a href="3-se.html#SP1">&#167;1</a><br/>External Files - <a href="3-ef.html#SP1">&#167;1</a><br/>Spatial - <a href="3-spt.html#SP4">&#167;4</a><br/>Scenes - <a href="3-scn.html#SP1_5_1_1">&#167;1.5.1.1</a>, <a href="3-scn.html#SP1_5_1_4_2">&#167;1.5.1.4.2</a>, <a href="3-scn.html#SP1_5_1_4_3">&#167;1.5.1.4.3</a><br/>Actions - <a href="3-act.html#SP1">&#167;1</a><br/>Commands Index - <a href="3-ci.html#SP6">&#167;6</a>, <a href="3-ci.html#SP7">&#167;7</a>, <a href="3-ci.html#SP10">&#167;10</a>, <a href="3-ci.html#SP11">&#167;11</a><br/>Spatial Map - <a href="4-sm.html#SP44">&#167;44</a><br/>HTML Map - <a href="4-hm.html#SP12">&#167;12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">wn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="2-ifs.html#SP9" class="function-link"><span class="function-syntax">Index::link_to_location</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Lexer::word_location</span><span class="plain-syntax">(</span><span class="identifier-syntax">wn</span><span class="plain-syntax">), </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -998,21 +998,21 @@ code.
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">, </span><span class="string-syntax">"name=%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">); </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</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">Index::below_link_numbered</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">Index::below_link_numbered</span></span>:<br/>Lexicon Index - <a href="2-li.html#SP7_11_2">&#167;7.11.2</a><br/>Kinds Index - <a href="2-ki.html#SP4">&#167;4</a><br/>Scenes - <a href="3-scn.html#SP2_2">&#167;2.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::below_link_numbered</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">Index::below_link_numbered</span></span>:<br/>Lexicon Index - <a href="2-li.html#SP7_11_2">&#167;7.11.2</a><br/>Kinds Index - <a href="2-ki.html#SP4">&#167;4</a><br/>Phrasebook Index - <a href="2-pi.html#SP1_2">&#167;1.2</a><br/>Scenes - <a href="3-scn.html#SP2_2">&#167;2.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&amp;nbsp;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">, </span><span class="string-syntax">"href=#A%d"</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">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">, </span><span class="string-syntax">"border=0 src=inform:/doc_images/Below.png"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</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">Index::anchor_numbered</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">Index::anchor_numbered</span></span>:<br/>Lexicon Index - <a href="2-li.html#SP8">&#167;8</a><br/>Kinds Index - <a href="2-ki.html#SP1_7">&#167;1.7</a><br/>Scenes - <a href="3-scn.html#SP1_5_1_1">&#167;1.5.1.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::anchor_numbered</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">Index::anchor_numbered</span></span>:<br/>Lexicon Index - <a href="2-li.html#SP8">&#167;8</a><br/>Kinds Index - <a href="2-ki.html#SP1_7">&#167;1.7</a><br/>Phrasebook Index - <a href="2-pi.html#SP1_2">&#167;1.2</a><br/>Scenes - <a href="3-scn.html#SP1_5_1_1">&#167;1.5.1.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">, </span><span class="string-syntax">"name=A%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">n</span><span class="plain-syntax">); </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>&#167;12. "Show extra" links, and also a spacer of equivalent width. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::extra_link</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">Index::extra_link</span></span>:<br/><a href="2-ifs.html#SP16">&#167;16</a><br/>Index Physical World - <a href="2-ipw.html#SP3">&#167;3</a>, <a href="2-ipw.html#SP4">&#167;4</a><br/>Rules - <a href="2-rls.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::extra_link</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">Index::extra_link</span></span>:<br/><a href="2-ifs.html#SP16">&#167;16</a><br/>Index Physical World - <a href="2-ipw.html#SP3">&#167;3</a>, <a href="2-ipw.html#SP4">&#167;4</a><br/>Rules - <a href="2-rls.html#SP7">&#167;7</a><br/>Phrasebook Index - <a href="2-pi.html#SP1_3">&#167;1.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">, </span><span class="string-syntax">"href=\"#\" onclick=\"showExtra('extra%d', 'plus%d'); return false;\""</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">, </span><span class="string-syntax">"border=0 id=\"plus%d\" src=inform:/doc_images/extra.png"</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">);</span>
@ -1031,7 +1031,7 @@ code.
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&amp;nbsp;"</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">Index::noextra_link</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::noextra_link</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">Index::noextra_link</span></span>:<br/>Phrasebook Index - <a href="2-pi.html#SP1_3">&#167;1.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">, </span><span class="string-syntax">"border=0 src=inform:/doc_images/noextra.png"</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">"&amp;nbsp;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -1040,24 +1040,24 @@ code.
</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">Index::extra_div_open</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">Index::extra_div_open</span></span>:<br/><a href="2-ifs.html#SP16">&#167;16</a><br/>Index Physical World - <a href="2-ipw.html#SP3">&#167;3</a>, <a href="2-ipw.html#SP4">&#167;4</a><br/>Rules - <a href="2-rls.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">indent</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">colour</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::extra_div_open</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">Index::extra_div_open</span></span>:<br/><a href="2-ifs.html#SP16">&#167;16</a><br/>Index Physical World - <a href="2-ipw.html#SP3">&#167;3</a>, <a href="2-ipw.html#SP4">&#167;4</a><br/>Rules - <a href="2-rls.html#SP7">&#167;7</a><br/>Phrasebook Index - <a href="2-pi.html#SP1_3">&#167;1.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">indent</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">colour</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"div"</span><span class="plain-syntax">, </span><span class="string-syntax">"id=\"extra%d\" style=\"display: none;\""</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">indent</span><span class="plain-syntax">, </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_coloured_box</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">colour</span><span class="plain-syntax">, </span><span class="identifier-syntax">ROUND_BOX_TOP</span><span class="plain-syntax">+</span><span class="identifier-syntax">ROUND_BOX_BOTTOM</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">Index::extra_div_close</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">Index::extra_div_close</span></span>:<br/><a href="2-ifs.html#SP16">&#167;16</a><br/>Index Physical World - <a href="2-ipw.html#SP3">&#167;3</a>, <a href="2-ipw.html#SP4">&#167;4</a><br/>Rules - <a href="2-rls.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">colour</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::extra_div_close</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">Index::extra_div_close</span></span>:<br/><a href="2-ifs.html#SP16">&#167;16</a><br/>Index Physical World - <a href="2-ipw.html#SP3">&#167;3</a>, <a href="2-ipw.html#SP4">&#167;4</a><br/>Rules - <a href="2-rls.html#SP7">&#167;7</a><br/>Phrasebook Index - <a href="2-pi.html#SP1_3">&#167;1.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">colour</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::close_coloured_box</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">colour</span><span class="plain-syntax">, </span><span class="identifier-syntax">ROUND_BOX_TOP</span><span class="plain-syntax">+</span><span class="identifier-syntax">ROUND_BOX_BOTTOM</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"div"</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">Index::extra_div_open_nested</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">Index::extra_div_open_nested</span></span>:<br/>Rules - <a href="2-rls.html#SP2_3">&#167;2.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">indent</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::extra_div_open_nested</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">Index::extra_div_open_nested</span></span>:<br/>Rules - <a href="2-rls.html#SP2_3">&#167;2.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">indent</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"div"</span><span class="plain-syntax">, </span><span class="string-syntax">"id=\"extra%d\" style=\"display: none;\""</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">indent</span><span class="plain-syntax">, </span><span class="string-syntax">""</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">Index::extra_div_close_nested</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">Index::extra_div_close_nested</span></span>:<br/>Rules - <a href="2-rls.html#SP2_3">&#167;2.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::extra_div_close_nested</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">Index::extra_div_close_nested</span></span>:<br/>Rules - <a href="2-rls.html#SP2_3">&#167;2.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"div"</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -1065,7 +1065,7 @@ code.
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>&#167;14. "Deprecation" icons. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::deprecation_icon</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::deprecation_icon</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">Index::deprecation_icon</span></span>:<br/>Phrasebook Index - <a href="2-pi.html#SP1_3">&#167;1.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">, </span><span class="string-syntax">"href=\"#\" onclick=\"showExtra('extra%d', 'plus%d'); return false;\""</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">, </span><span class="string-syntax">"border=0 src=inform:/doc_images/deprecated.png"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">);</span>
@ -1077,7 +1077,7 @@ quotes.
</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">Index::dequote</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">Index::dequote</span></span>:<br/>Inferences - <a href="2-inf.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::dequote</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">Index::dequote</span></span>:<br/>Inferences - <a href="2-inf.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">p</span><span class="plain-syntax">[0] == </span><span class="constant-syntax">0</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">p</span><span class="plain-syntax">[1] == </span><span class="constant-syntax">0</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=1; </span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">+1]; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
@ -1092,7 +1092,7 @@ quotes.
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>&#167;16. Describing the current VM. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::innards</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">Index::innards</span></span>:<br/><a href="2-ifs.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::innards</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">Index::innards</span></span>:<br/><a href="2-ifs.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="2-ifs.html#SP17" class="function-link"><span class="function-syntax">Index::index_VM</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">NewUseOptions::index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
@ -1133,7 +1133,7 @@ quotes.
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>&#167;17. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::index_VM</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">Index::index_VM</span></span>:<br/><a href="2-ifs.html#SP16">&#167;16</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::index_VM</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">Index::index_VM</span></span>:<br/><a href="2-ifs.html#SP16">&#167;16</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VM</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"target VM not set yet"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ifs.html#SP11" class="function-link"><span class="function-syntax">Index::anchor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"STORYFILE"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Story file format: "</span><span class="plain-syntax">);</span>
@ -1145,7 +1145,7 @@ quotes.
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>&#167;18. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::show_configuration</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">Index::show_configuration</span></span>:<br/><a href="2-ifs.html#SP16">&#167;16</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::show_configuration</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">Index::show_configuration</span></span>:<br/><a href="2-ifs.html#SP16">&#167;16</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ifs.html#SP11" class="function-link"><span class="function-syntax">Index::anchor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"CONFIG"</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">"Inform language definition:\n"</span><span class="plain-syntax">);</span>
@ -1155,7 +1155,7 @@ quotes.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="1-im.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresscurrent">ifs</li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-dr.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="1-im.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresscurrent">ifs</li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresssection"><a href="2-pi.html">pi</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-dr.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -350,7 +350,7 @@ but should this arise then the best recourse is to ignore the heading.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-ih.html#SP4">&#167;4</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-ie.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresscurrent">ih</li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-ins.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-ie.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresscurrent">ih</li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresssection"><a href="2-pi.html">pi</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-ins.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -194,7 +194,7 @@ state of being boolean, and the given certainty levels:
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-prp.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresscurrent">inf</li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-rls.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-prp.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresscurrent">inf</li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresssection"><a href="2-pi.html">pi</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-rls.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -203,7 +203,7 @@ constant value.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-ih.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresscurrent">ins</li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-adj.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-ih.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresscurrent">ins</li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresssection"><a href="2-pi.html">pi</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-adj.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -509,7 +509,7 @@ table of Kinds.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-li.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresscurrent">ipw</li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-ki.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-li.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresscurrent">ipw</li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresssection"><a href="2-pi.html">pi</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-ki.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -571,7 +571,7 @@ as "0 kg", "0 hectares", or whatever is appropriate.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP6">&#167;6</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-ipw.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresscurrent">ki</li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-ie.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-ipw.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresscurrent">ki</li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresssection"><a href="2-pi.html">pi</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-ie.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -654,7 +654,7 @@ be able to print out a table of just those verbs created in that extension.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-dr.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresscurrent">li</li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-ipw.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-dr.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresscurrent">li</li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresssection"><a href="2-pi.html">pi</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-ipw.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -58,11 +58,11 @@ function togglePopup(material_id) {
<li><a href="../assertions-module/index.html">assertions</a></li>
<li><a href="../values-module/index.html">values</a></li>
<li><a href="../knowledge-module/index.html">knowledge</a></li>
<li><a href="index.html"><span class="selectedlink">imperative</span></a></li>
<li><a href="../imperative-module/index.html">imperative</a></li>
<li><a href="../runtime-module/index.html">runtime</a></li>
<li><a href="../if-module/index.html">if</a></li>
<li><a href="../multimedia-module/index.html">multimedia</a></li>
<li><a href="../index-module/index.html">index</a></li>
<li><a href="index.html"><span class="selectedlink">index</span></a></li>
</ul><h2>Inter Modules</h2><ul>
<li><a href="../bytecode-module/index.html">bytecode</a></li>
<li><a href="../building-module/index.html">building</a></li>
@ -84,7 +84,7 @@ function togglePopup(material_id) {
<main role="main">
<!--Weave of 'Phrasebook Index' generated by Inweb-->
<div class="breadcrumbs">
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">imperative</a></li><li><a href="index.html#3">Chapter 3: Phrases</a></li><li><b>Phrasebook Index</b></li></ul></div>
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">index</a></li><li><a href="index.html#2">Chapter 2: Indexing</a></li><li><b>Phrasebook Index</b></li></ul></div>
<p class="purpose">To compile most of the HTML page for the Phrasebook index.</p>
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>The Phrasebook is produced in two passes. On pass 1, we show just the
@ -106,21 +106,21 @@ suppress indexing of their definitions.
</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">Phrases::Index::index_page_Phrasebook</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Index::index_page_Phrasebook</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">Phrases::Index::index_page_Phrasebook</span></span>:<br/>Index File Services - <a href="2-ifs.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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">pass</span><span class="plain-syntax">=1; </span><span class="identifier-syntax">pass</span><span class="plain-syntax">&lt;=2; </span><span class="identifier-syntax">pass</span><span class="plain-syntax">++) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">last_extension_named</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">division</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NUMBER_CREATED</span><span class="plain-syntax">(</span><span class="identifier-syntax">inform_extension</span><span class="plain-syntax">); </span><span class="identifier-syntax">division</span><span class="plain-syntax"> &lt;= </span><span class="identifier-syntax">N</span><span class="plain-syntax">; </span><span class="identifier-syntax">division</span><span class="plain-syntax">++) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">heading</span><span class="plain-syntax"> *</span><span class="identifier-syntax">last_heading_named</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">no_subdivision_yet</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">CLW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax">, *</span><span class="identifier-syntax">run_begin</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">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">, </span><span class="reserved-syntax">phrase</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax">, *</span><span class="identifier-syntax">run_begin</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">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">, </span><span class="identifier-syntax">phrase</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="comment-syntax"> include only if this is a To... phrase</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-pu.html#SP14" class="function-link"><span class="function-syntax">Phrases::Usage::get_effect</span></a><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">usage_data</span><span class="plain-syntax">)) != </span><span class="constant-syntax">TO_PHRASE_EFF</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">Phrases::Usage::get_effect</span><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">usage_data</span><span class="plain-syntax">)) != </span><span class="identifier-syntax">TO_PHRASE_EFF</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="comment-syntax"> and only if it is under an indexed heading</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">heading</span><span class="plain-syntax"> *</span><span class="identifier-syntax">this_heading</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Headings::of_wording</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><a href="3-phr.html#SP10" class="function-link"><span class="function-syntax">Phrases::declaration_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">)));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Headings::of_wording</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">Phrases::declaration_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">ph</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">Headings::indexed</span><span class="plain-syntax">(</span><span class="identifier-syntax">this_heading</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="comment-syntax"> and only if that heading lies in the piece of source for this division</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">this_extension</span><span class="plain-syntax"> =</span>
@ -131,12 +131,12 @@ suppress indexing of their definitions.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">this_extension</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">this_extension</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax"> != </span><span class="identifier-syntax">division</span><span class="plain-syntax">)) </span><span class="reserved-syntax">continue</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">last_extension_named</span><span class="plain-syntax"> != </span><span class="identifier-syntax">this_extension</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-pi.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Mark a division in the Phrasebook</span><span class="named-paragraph-number">1.1</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">this_heading</span><span class="plain-syntax"> != </span><span class="identifier-syntax">last_heading_named</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-pi.html#SP1_2" class="named-paragraph-link"><span class="named-paragraph">Mark a subdivision in the Phrasebook</span><span class="named-paragraph-number">1.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">last_extension_named</span><span class="plain-syntax"> != </span><span class="identifier-syntax">this_extension</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-pi.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Mark a division in the Phrasebook</span><span class="named-paragraph-number">1.1</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">this_heading</span><span class="plain-syntax"> != </span><span class="identifier-syntax">last_heading_named</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-pi.html#SP1_2" class="named-paragraph-link"><span class="named-paragraph">Mark a subdivision in the Phrasebook</span><span class="named-paragraph-number">1.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">last_heading_named</span><span class="plain-syntax"> = </span><span class="identifier-syntax">this_heading</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">last_extension_named</span><span class="plain-syntax"> = </span><span class="identifier-syntax">this_extension</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">pass</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-pi.html#SP1_3" class="named-paragraph-link"><span class="named-paragraph">Actually index the phrase</span><span class="named-paragraph-number">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">pass</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-pi.html#SP1_3" class="named-paragraph-link"><span class="named-paragraph">Actually index the phrase</span><span class="named-paragraph-number">1.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
@ -168,7 +168,7 @@ the extension's name as a major subheading in our index.
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">no_subdivision_yet</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-pi.html#SP1">&#167;1</a>.</li></ul>
<ul class="endnotetexts"><li>This code is used in <a href="2-pi.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_2" class="paragraph-anchor"></a><b>&#167;1.2. </b>In pass 1, subdivisions are shown in a comma-separated list; in pass 2,
each has a paragraph of its own.
</p>
@ -179,34 +179,34 @@ each has a paragraph of its own.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">HW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Headings::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">this_heading</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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">HW</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">pass</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-pi.html#SP1_2_1" class="named-paragraph-link"><span class="named-paragraph">Strip away bracketed matter in the heading name</span><span class="named-paragraph-number">1.2.1</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">pass</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-pi.html#SP1_2_1" class="named-paragraph-link"><span class="named-paragraph">Strip away bracketed matter in the heading name</span><span class="named-paragraph-number">1.2.1</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">Extensions::is_standard</span><span class="plain-syntax">(</span><span class="identifier-syntax">this_extension</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-pi.html#SP1_2_3" class="named-paragraph-link"><span class="named-paragraph">Mark a faked division due to inter-hyphen clue in SR heading</span><span class="named-paragraph-number">1.2.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-pi.html#SP1_2_3" class="named-paragraph-link"><span class="named-paragraph">Mark a faked division due to inter-hyphen clue in SR heading</span><span class="named-paragraph-number">1.2.3</span></a></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">pass</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">no_subdivision_yet</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-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">pass</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::anchor_numbered</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ifs.html#SP11" class="function-link"><span class="function-syntax">Index::anchor_numbered</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">, </span><span class="string-syntax">"class=\"in2\""</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">"&lt;b&gt;"</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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">HW</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">HW</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Miscellaneous"</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">pass</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="identifier-syntax">Index::below_link_numbered</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</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">pass</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><a href="2-ifs.html#SP11" class="function-link"><span class="function-syntax">Index::below_link_numbered</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</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">pass</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;/b&gt;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">no_subdivision_yet</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-pi.html#SP1">&#167;1</a>.</li></ul>
<ul class="endnotetexts"><li>This code is used in <a href="2-pi.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_2_1" class="paragraph-anchor"></a><b>&#167;1.2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Strip away bracketed matter in the heading name</span><span class="named-paragraph-number">1.2.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax">&lt;heading-with-parenthesis&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">HW</span><span class="plain-syntax">)) </span><span class="identifier-syntax">HW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax">&lt;heading-with-parenthesis&gt;</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-pi.html#SP1_2">&#167;1.2</a>.</li></ul>
<ul class="endnotetexts"><li>This code is used in <a href="2-pi.html#SP1_2">&#167;1.2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_2_2" class="paragraph-anchor"></a><b>&#167;1.2.2. </b>The Standard Rules contain such a profusion of phrase definitions that,
without making use of subheadings, the Phrasebook Index would be a shapeless
list in which it was impossible to find things.
@ -267,7 +267,7 @@ and the second and third pieces used as headings and subheadings respectively.
<span class="plain-syntax"> </span><span class="identifier-syntax">HW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax">&lt;heading-name-hyphenated&gt;</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-pi.html#SP1_2">&#167;1.2</a>.</li></ul>
<ul class="endnotetexts"><li>This code is used in <a href="2-pi.html#SP1_2">&#167;1.2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_3" class="paragraph-anchor"></a><b>&#167;1.3. </b>We see where <span class="extract"><span class="extract-syntax">ph</span></span> is in a run of phrases which share a common documentation
symbol; only the first in the run has a plus-sign link to reveal the box of
documentation in question, and only the last in the run is followed by the
@ -278,40 +278,40 @@ code for the box.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ph</span><span class="plain-syntax">, *</span><span class="identifier-syntax">run_end</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ph</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-pi.html#SP2" class="function-link"><span class="function-syntax">Phrases::Index::ph_same_doc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">, </span><span class="identifier-syntax">run_begin</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">run_begin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ph</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ph2</span><span class="plain-syntax">) &amp;&amp; (</span><a href="3-pi.html#SP2" class="function-link"><span class="function-syntax">Phrases::Index::ph_same_doc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph2</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">run_end</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ph2</span><span class="plain-syntax">; </span><span class="identifier-syntax">ph2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEXT_OBJECT</span><span class="plain-syntax">(</span><span class="identifier-syntax">ph2</span><span class="plain-syntax">, </span><span class="reserved-syntax">phrase</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ph</span><span class="plain-syntax">, *</span><span class="identifier-syntax">run_end</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ph</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-pi.html#SP2" class="function-link"><span class="function-syntax">Phrases::Index::ph_same_doc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">, </span><span class="identifier-syntax">run_begin</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">run_begin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ph</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ph2</span><span class="plain-syntax">) &amp;&amp; (</span><a href="2-pi.html#SP2" class="function-link"><span class="function-syntax">Phrases::Index::ph_same_doc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph2</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">run_end</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ph2</span><span class="plain-syntax">; </span><span class="identifier-syntax">ph2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEXT_OBJECT</span><span class="plain-syntax">(</span><span class="identifier-syntax">ph2</span><span class="plain-syntax">, </span><span class="identifier-syntax">phrase</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">, </span><span class="string-syntax">"class=\"tightin2\""</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">run_begin</span><span class="plain-syntax"> == </span><span class="identifier-syntax">ph</span><span class="plain-syntax">) </span><span class="identifier-syntax">Index::extra_link</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">run_end</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">Index::noextra_link</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-dptd.html#SP5" class="function-link"><span class="function-syntax">Phrases::TypeData::Textual::write_index_representation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, &amp;(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">type_data</span><span class="plain-syntax">), </span><span class="identifier-syntax">ph</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-ptd.html#SP18" class="function-link"><span class="function-syntax">Phrases::TypeData::deprecated</span></a><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">type_data</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::deprecation_icon</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">run_begin</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::link</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">declaration_node</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">run_begin</span><span class="plain-syntax"> == </span><span class="identifier-syntax">ph</span><span class="plain-syntax">) </span><a href="2-ifs.html#SP12" class="function-link"><span class="function-syntax">Index::extra_link</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">run_end</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="2-ifs.html#SP12" class="function-link"><span class="function-syntax">Index::noextra_link</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Phrases::TypeData::Textual::write_index_representation</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, &amp;(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">type_data</span><span class="plain-syntax">), </span><span class="identifier-syntax">ph</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">Phrases::TypeData::deprecated</span><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">type_data</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><a href="2-ifs.html#SP14" class="function-link"><span class="function-syntax">Index::deprecation_icon</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">run_begin</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ifs.html#SP9" class="function-link"><span class="function-syntax">Index::link</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">declaration_node</span><span class="plain-syntax">)));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-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">run_end</span><span class="plain-syntax"> == </span><span class="identifier-syntax">ph</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::extra_div_open</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, </span><span class="string-syntax">"e0e0e0"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-dptd.html#SP6" class="function-link"><span class="function-syntax">Phrases::TypeData::Textual::write_reveal_box</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, &amp;(</span><span class="identifier-syntax">run_begin</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">type_data</span><span class="plain-syntax">), </span><span class="identifier-syntax">run_begin</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::extra_div_close</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"e0e0e0"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ifs.html#SP13" class="function-link"><span class="function-syntax">Index::extra_div_open</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, </span><span class="string-syntax">"e0e0e0"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Phrases::TypeData::Textual::write_reveal_box</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, &amp;(</span><span class="identifier-syntax">run_begin</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">type_data</span><span class="plain-syntax">), </span><span class="identifier-syntax">run_begin</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ifs.html#SP13" class="function-link"><span class="function-syntax">Index::extra_div_close</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"e0e0e0"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-pi.html#SP1">&#167;1</a>.</li></ul>
<ul class="endnotetexts"><li>This code is used in <a href="2-pi.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>Where the following detects if two phrases have the same documentation
symbol, i.e., are essentially rewordings of the same phrase, and will have
a single shared reveal-box:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Index::ph_same_doc</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">Phrases::Index::ph_same_doc</span></span>:<br/><a href="3-pi.html#SP1_3">&#167;1.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p1</span><span class="plain-syntax">, </span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p2</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Index::ph_same_doc</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Phrases::Index::ph_same_doc</span></span>:<br/><a href="2-pi.html#SP1_3">&#167;1.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p1</span><span class="plain-syntax">, </span><span class="identifier-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p2</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">p1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">p2</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">Wordings::empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">p1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ph_documentation_symbol</span><span class="plain-syntax">)) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">p1</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">ph_documentation_symbol</span><span class="plain-syntax">)) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">p2</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">ph_documentation_symbol</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">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">Wordings::match</span><span class="plain-syntax">(</span><span class="identifier-syntax">p1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ph_documentation_symbol</span><span class="plain-syntax">, </span><span class="identifier-syntax">p2</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ph_documentation_symbol</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">Wordings::match</span><span class="plain-syntax">(</span><span class="identifier-syntax">p1</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">ph_documentation_symbol</span><span class="plain-syntax">, </span><span class="identifier-syntax">p2</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">ph_documentation_symbol</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">TRUE</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">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -321,7 +321,7 @@ above, it may as well go here.
</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">Phrases::Index::index_definition_area</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">show_if_unhyphenated</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Index::index_definition_area</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Phrases::Index::index_definition_area</span></span>:<br/>Variables - <a href="2-vrb.html#SP2_2">&#167;2.2</a><br/>Actions - <a href="3-act.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">show_if_unhyphenated</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="function-syntax">&lt;heading-name-hyphenated&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</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;&lt;r&gt;&gt;</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">show_if_unhyphenated</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="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"b"</span><span class="plain-syntax">);</span>
@ -343,7 +343,7 @@ above, it may as well go here.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-tp.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-rls.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-itp.html">itp</a></li><li class="progresssection"><a href="3-rs.html">rs</a></li><li class="progresssection"><a href="3-cs.html">cs</a></li><li class="progresssection"><a href="3-phr.html">phr</a></li><li class="progresssection"><a href="3-pu.html">pu</a></li><li class="progresssection"><a href="3-prcd.html">prcd</a></li><li class="progresssection"><a href="3-ptd.html">ptd</a></li><li class="progresssection"><a href="3-dptd.html">dptd</a></li><li class="progresssection"><a href="3-po.html">po</a></li><li class="progresssection"><a href="3-pav.html">pav</a></li><li class="progresssection"><a href="3-tph.html">tph</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresscurrent">pi</li><li class="progresschapter"><a href="4-lv.html">4</a></li><li class="progresschapter"><a href="5-cfs.html">5</a></li><li class="progresschapter"><a href="6-inv.html">6</a></li><li class="progressnext"><a href="4-lv.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-act.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresscurrent">pi</li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="3-fgr.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -143,7 +143,7 @@ function togglePopup(material_id) {
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-vrb.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresscurrent">prp</li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-inf.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-vrb.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresscurrent">prp</li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresssection"><a href="2-pi.html">pi</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-inf.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -801,7 +801,7 @@ have affected it in this way:
</pre>
<ul class="endnotetexts"><li>The structure rulebook_indexing_data is private to this section.</li><li>The structure placement_affecting is accessed in 2/ins, 2/act, 3/scn, 4/em and here.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-inf.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresscurrent">rls</li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-act.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-inf.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresscurrent">rls</li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresssection"><a href="2-pi.html">pi</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-act.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -127,7 +127,7 @@ the following:
<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="identifier-syntax">Headings::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">definition_area</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><span class="identifier-syntax">Phrases::Index::index_definition_area</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><a href="2-pi.html#SP3" class="function-link"><span class="function-syntax">Phrases::Index::index_definition_area</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">current_area</span><span class="plain-syntax"> = </span><span class="identifier-syntax">definition_area</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-vrb.html#SP3" class="function-link"><span class="function-syntax">IXVariables::index_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">nlv</span><span class="plain-syntax">);</span>
@ -152,7 +152,7 @@ the following:
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-adj.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresscurrent">vrb</li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-prp.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-adj.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresscurrent">vrb</li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progresssection"><a href="2-rls.html">rls</a></li><li class="progresssection"><a href="2-act.html">act</a></li><li class="progresssection"><a href="2-pi.html">pi</a></li><li class="progresschapter"><a href="3-fgr.html">3</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="2-prp.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -131,7 +131,7 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</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">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Headings::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">definition_area</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">Wordings::nonempty</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">Phrases::Index::index_definition_area</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-pi.html#SP3" class="function-link"><span class="function-syntax">Phrases::Index::index_definition_area</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</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">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (*</span><span class="identifier-syntax">ext</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;b&gt;"</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">"New actions"</span><span class="plain-syntax">);</span>

View file

@ -165,7 +165,7 @@ to match this width, preserving the aspect ratio.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-act.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifs.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresscurrent">fgr</li><li class="progresssection"><a href="3-se.html">se</a></li><li class="progresssection"><a href="3-ef.html">ef</a></li><li class="progresssection"><a href="3-bd.html">bd</a></li><li class="progresssection"><a href="3-spt.html">spt</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-bck.html">bck</a></li><li class="progresssection"><a href="3-rgn.html">rgn</a></li><li class="progresssection"><a href="3-tm.html">tm</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresssection"><a href="3-ci.html">ci</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="3-se.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-pi.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifs.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresscurrent">fgr</li><li class="progresssection"><a href="3-se.html">se</a></li><li class="progresssection"><a href="3-ef.html">ef</a></li><li class="progresssection"><a href="3-bd.html">bd</a></li><li class="progresssection"><a href="3-spt.html">spt</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-bck.html">bck</a></li><li class="progresssection"><a href="3-rgn.html">rgn</a></li><li class="progresssection"><a href="3-tm.html">tm</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresssection"><a href="3-ci.html">ci</a></li><li class="progresschapter"><a href="4-sg.html">4</a></li><li class="progressnext"><a href="3-se.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -148,6 +148,11 @@
<spon class="sectiontitle">Activities</span></a> -
<span class="sectionpurpose">To index activities.</span></p>
</li>
<li>
<p class="sectionentry"><a href="2-pi.html">
<spon class="sectiontitle">Phrasebook Index</span></a> -
<span class="sectionpurpose">To compile most of the HTML page for the Phrasebook index.</span></p>
</li>
</ul>
</li>
<li>

View file

@ -142,7 +142,7 @@ equivalent of unlocking the doors and turning the lights on in the morning.
<span class="plain-syntax"> </span><a href="../imperative-module/1-im2.html#SP2" class="function-link"><span class="function-syntax">ImperativeModule::start</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../runtime-module/1-rm.html#SP2" class="function-link"><span class="function-syntax">RuntimeModule::start</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../values-module/1-vm.html#SP2" class="function-link"><span class="function-syntax">ValuesModule::start</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../if-module/1-im3.html#SP5" class="function-link"><span class="function-syntax">IFModule::start</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../if-module/1-im3.html#SP2" class="function-link"><span class="function-syntax">IFModule::start</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../multimedia-module/1-mm.html#SP2" class="function-link"><span class="function-syntax">MultimediaModule::start</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../html-module/1-hm.html#SP2" class="function-link"><span class="function-syntax">HTMLModule::start</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../index-module/1-im4.html#SP2" class="function-link"><span class="function-syntax">IndexModule::start</span></a><span class="plain-syntax">();</span>
@ -320,7 +320,7 @@ they can be rather lengthy.
<span class="plain-syntax"> </span><a href="../imperative-module/1-im2.html#SP2" class="function-link"><span class="function-syntax">ImperativeModule::end</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../runtime-module/1-rm.html#SP2" class="function-link"><span class="function-syntax">RuntimeModule::end</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../values-module/1-vm.html#SP2" class="function-link"><span class="function-syntax">ValuesModule::end</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../if-module/1-im3.html#SP5" class="function-link"><span class="function-syntax">IFModule::end</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../if-module/1-im3.html#SP3" class="function-link"><span class="function-syntax">IFModule::end</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../index-module/1-im4.html#SP2" class="function-link"><span class="function-syntax">IndexModule::end</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../html-module/1-hm.html#SP2" class="function-link"><span class="function-syntax">HTMLModule::end</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="../bytecode-module/1-bm.html#SP3" class="function-link"><span class="function-syntax">BytecodeModule::end</span></a><span class="plain-syntax">();</span>

View file

@ -83,41 +83,39 @@ which take more than 1/1000th of the total running time.
<pre class="undisplayed-code all-displayed-code code-font">
<span class="plain-syntax">100.0% in inform7 run</span>
<span class="plain-syntax"> 67.3% in compilation to Inter</span>
<span class="plain-syntax"> 26.1% in </span><a href="../imperative-module/3-cs2.html#SP11" class="internal">Phrases::Manager::compile_first_block</a>
<span class="plain-syntax"> 8.1% in </span><a href="../imperative-module/3-cs2.html#SP15" class="internal">Phrases::Manager::compile_as_needed</a>
<span class="plain-syntax"> 6.8% in </span><a href="../runtime-module/4-rsp.html#SP6" class="internal">Strings::compile_responses</a>
<span class="plain-syntax"> 6.3% in </span><a href="../knowledge-module/4-is.html#SP27" class="internal">InferenceSubjects::emit_all</a>
<span class="plain-syntax"> 4.4% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pre_pass</a>
<span class="plain-syntax"> 3.3% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pass_1</a>
<span class="plain-syntax"> 2.0% in </span><a href="../imperative-module/3-cs2.html#SP14" class="internal">Phrases::Manager::RulePrintingRule_routine</a>
<span class="plain-syntax"> 1.8% in </span><a href="../imperative-module/3-cs2.html#SP13" class="internal">Phrases::Manager::rulebooks_array</a>
<span class="plain-syntax"> 1.1% in </span><a href="../runtime-module/4-vart.html#SP4" class="internal">RTVerbs::ConjugateVerb</a>
<span class="plain-syntax"> 0.7% in </span><a href="../imperative-module/3-cs2.html#SP4" class="internal">Phrases::Manager::traverse</a>
<span class="plain-syntax"> 0.5% in </span><a href="../imperative-module/3-cs2.html#SP7" class="internal">Phrases::Manager::parse_rule_parameters</a>
<span class="plain-syntax"> 0.5% in </span><a href="../knowledge-module/5-tmw.html#SP5" class="internal">World::stage_V</a>
<span class="plain-syntax"> 66.3% in compilation to Inter</span>
<span class="plain-syntax"> 26.9% in </span><a href="../imperative-module/3-cs2.html#SP11" class="internal">Phrases::Manager::compile_first_block</a>
<span class="plain-syntax"> 8.3% in </span><a href="../imperative-module/3-cs2.html#SP15" class="internal">Phrases::Manager::compile_as_needed</a>
<span class="plain-syntax"> 6.7% in </span><a href="../knowledge-module/4-is.html#SP27" class="internal">InferenceSubjects::emit_all</a>
<span class="plain-syntax"> 4.3% in </span><a href="../runtime-module/4-rsp.html#SP6" class="internal">Strings::compile_responses</a>
<span class="plain-syntax"> 4.1% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pre_pass</a>
<span class="plain-syntax"> 3.5% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pass_1</a>
<span class="plain-syntax"> 2.1% in </span><a href="../imperative-module/3-cs2.html#SP14" class="internal">Phrases::Manager::RulePrintingRule_routine</a>
<span class="plain-syntax"> 1.9% in </span><a href="../imperative-module/3-cs2.html#SP13" class="internal">Phrases::Manager::rulebooks_array</a>
<span class="plain-syntax"> 0.9% in </span><a href="../imperative-module/3-cs2.html#SP4" class="internal">Phrases::Manager::traverse</a>
<span class="plain-syntax"> 0.9% in </span><a href="../runtime-module/4-vart.html#SP4" class="internal">RTVerbs::ConjugateVerb</a>
<span class="plain-syntax"> 0.3% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pass_2</a>
<span class="plain-syntax"> 0.3% in </span><a href="../imperative-module/3-cs2.html#SP13" class="internal">Phrases::Manager::compile_rulebooks</a>
<span class="plain-syntax"> 0.3% in </span><a href="../runtime-module/4-rart.html#SP18" class="internal">RTRelations::compile_defined_relations</a>
<span class="plain-syntax"> 0.1% in </span><a href="../if-module/5-gv.html#SP25" class="internal">PL::Parsing::Verbs::compile_all</a>
<span class="plain-syntax"> 0.3% in </span><a href="../imperative-module/3-cs2.html#SP7" class="internal">Phrases::Manager::parse_rule_parameters</a>
<span class="plain-syntax"> 0.3% in </span><a href="../knowledge-module/5-tmw.html#SP5" class="internal">World::stage_V</a>
<span class="plain-syntax"> 0.1% in </span><a href="../runtime-module/5-cg.html#SP2" class="internal">RTCommandGrammars::compile_all</a>
<span class="plain-syntax"> 0.1% in </span><a href="../runtime-module/4-rsfk.html#SP27" class="internal">RTKinds::compile_data_type_support_routines</a>
<span class="plain-syntax"> 0.1% in </span><a href="../runtime-module/4-rart.html#SP18" class="internal">RTRelations::compile_defined_relations</a>
<span class="plain-syntax"> 0.1% in </span><a href="../core-module/1-wtc.html#SP9" class="internal">Task::make_built_in_kind_constructors</a>
<span class="plain-syntax"> 0.1% in </span><a href="../knowledge-module/5-tmw.html#SP3" class="internal">World::stages_II_and_III</a>
<span class="plain-syntax"> 3.3% not specifically accounted for</span>
<span class="plain-syntax"> 30.2% in running Inter pipeline</span>
<span class="plain-syntax"> 10.0% in step preparation</span>
<span class="plain-syntax"> 9.6% in inter step 2/12: link</span>
<span class="plain-syntax"> 7.0% in inter step 12/12: generate inform6 -&gt; auto.inf</span>
<span class="plain-syntax"> 3.8% not specifically accounted for</span>
<span class="plain-syntax"> 31.2% in running Inter pipeline</span>
<span class="plain-syntax"> 10.4% in step preparation</span>
<span class="plain-syntax"> 10.2% in inter step 2/12: link</span>
<span class="plain-syntax"> 7.3% in inter step 12/12: generate inform6 -&gt; auto.inf</span>
<span class="plain-syntax"> 0.3% in inter step 9/12: make-identifiers-unique</span>
<span class="plain-syntax"> 0.1% in inter step 10/12: reconcile-verbs</span>
<span class="plain-syntax"> 0.1% in inter step 11/12: eliminate-redundant-labels</span>
<span class="plain-syntax"> 0.1% in inter step 5/12: resolve-conditional-compilation</span>
<span class="plain-syntax"> 0.1% in inter step 6/12: assimilate</span>
<span class="plain-syntax"> 0.1% in inter step 7/12: resolve-external-symbols</span>
<span class="plain-syntax"> 0.1% in inter step 8/12: inspect-plugs</span>
<span class="plain-syntax"> 2.0% not specifically accounted for</span>
<span class="plain-syntax"> 2.0% in supervisor</span>
<span class="plain-syntax"> 0.4% not specifically accounted for</span>
<span class="plain-syntax"> 1.7% not specifically accounted for</span>
<span class="plain-syntax"> 2.1% in supervisor</span>
<span class="plain-syntax"> 0.2% not specifically accounted for</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. Memory consumption. </b>The following gives some idea of which classes of object have the most
instances, and also of how Inform's memory tends to be used in practice.
@ -126,39 +124,39 @@ represent less than 1/1000th of the total.
</p>
<pre class="undisplayed-code all-displayed-code code-font">
<span class="plain-syntax">Total memory consumption was 258576K = 253 MB</span>
<span class="plain-syntax">Total memory consumption was 250062K = 244 MB</span>
<span class="plain-syntax">62.4% was used for 1337983 objects, in 278604 frames in 202 x 800K = 161600K = 157 MB:</span>
<span class="plain-syntax">61.7% was used for 1234378 objects, in 255236 frames in 193 x 800K = 154400K = 150 MB:</span>
<span class="plain-syntax"> 9.8% inter_tree_node_array 36 x 8192 = 294912 objects, 25953408 bytes</span>
<span class="plain-syntax"> 5.5% text_stream_array 2595 x 100 = 259500 objects, 14615040 bytes</span>
<span class="plain-syntax"> 3.9% parse_node 129993 objects, 10399440 bytes</span>
<span class="plain-syntax"> 9.8% inter_tree_node_array 35 x 8192 = 286720 objects, 25232480 bytes</span>
<span class="plain-syntax"> 5.4% text_stream_array 2479 x 100 = 247900 objects, 13961728 bytes</span>
<span class="plain-syntax"> 3.3% parse_node 106882 objects, 8550560 bytes</span>
<span class="plain-syntax"> 2.8% verb_conjugation 160 objects, 7425280 bytes</span>
<span class="plain-syntax"> 2.6% parse_node_annotation_array 431 x 500 = 215500 objects, 6909792 bytes</span>
<span class="plain-syntax"> 2.4% linked_list 11778 objects, 6595680 bytes</span>
<span class="plain-syntax"> 2.3% inter_symbol_array 70 x 1024 = 71680 objects, 6310080 bytes</span>
<span class="plain-syntax"> 1.2% pcalc_prop_array 24 x 1000 = 24000 objects, 3264768 bytes</span>
<span class="plain-syntax"> 2.7% linked_list 12666 objects, 7092960 bytes</span>
<span class="plain-syntax"> 2.3% inter_symbol_array 66 x 1024 = 67584 objects, 5949504 bytes</span>
<span class="plain-syntax"> 2.1% parse_node_annotation_array 346 x 500 = 173000 objects, 5547072 bytes</span>
<span class="plain-syntax"> 1.2% map_data 670 objects, 3178480 bytes</span>
<span class="plain-syntax"> 0.9% kind_array 65 x 1000 = 65000 objects, 2602080 bytes</span>
<span class="plain-syntax"> 0.7% inter_schema_token 13492 objects, 1942848 bytes</span>
<span class="plain-syntax"> 0.6% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes</span>
<span class="plain-syntax"> 1.2% pcalc_prop_array 23 x 1000 = 23000 objects, 3128736 bytes</span>
<span class="plain-syntax"> 0.8% kind_array 56 x 1000 = 56000 objects, 2241792 bytes</span>
<span class="plain-syntax"> 0.7% inter_schema_token 13230 objects, 1905120 bytes</span>
<span class="plain-syntax"> 0.5% vocabulary_entry_array 136 x 100 = 13600 objects, 1527552 bytes</span>
<span class="plain-syntax"> 0.5% match_trie_array 10 x 1000 = 10000 objects, 1360320 bytes</span>
<span class="plain-syntax"> 0.4% phrase 940 objects, 1210720 bytes</span>
<span class="plain-syntax"> 0.3% inter_name_array 21 x 1000 = 21000 objects, 1008672 bytes</span>
<span class="plain-syntax"> 0.3% phrase 940 objects, 1007680 bytes</span>
<span class="plain-syntax"> 0.3% adjective_meaning 202 objects, 1000304 bytes</span>
<span class="plain-syntax"> 0.3% excerpt_meaning 3098 objects, 966576 bytes</span>
<span class="plain-syntax"> 0.3% inter_package 13227 objects, 952344 bytes</span>
<span class="plain-syntax"> 0.3% production 3875 objects, 899000 bytes</span>
<span class="plain-syntax"> 0.3% ptoken 8374 objects, 870896 bytes</span>
<span class="plain-syntax"> 0.3% inter_name_array 20 x 1000 = 20000 objects, 960640 bytes</span>
<span class="plain-syntax"> 0.3% inter_package 13213 objects, 951336 bytes</span>
<span class="plain-syntax"> 0.3% production 3888 objects, 902016 bytes</span>
<span class="plain-syntax"> 0.3% ptoken 8392 objects, 872768 bytes</span>
<span class="plain-syntax"> 0.3% grammatical_usage 3610 objects, 866400 bytes</span>
<span class="plain-syntax"> 0.3% individual_form 2560 objects, 860160 bytes</span>
<span class="plain-syntax"> 0.3% inter_symbols_table 13227 objects, 846528 bytes</span>
<span class="plain-syntax"> 0.3% inter_schema_node 8692 objects, 834432 bytes</span>
<span class="plain-syntax"> 0.2% dictionary 16372 objects, 785856 bytes</span>
<span class="plain-syntax"> 0.2% dict_entry_array 232 x 100 = 23200 objects, 749824 bytes</span>
<span class="plain-syntax"> 0.2% package_request 7954 objects, 699952 bytes</span>
<span class="plain-syntax"> 0.2% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes</span>
<span class="plain-syntax"> 0.3% inter_symbols_table 13213 objects, 845632 bytes</span>
<span class="plain-syntax"> 0.3% inter_schema_node 8526 objects, 818496 bytes</span>
<span class="plain-syntax"> 0.2% dictionary 15943 objects, 765264 bytes</span>
<span class="plain-syntax"> 0.2% dict_entry_array 220 x 100 = 22000 objects, 711040 bytes</span>
<span class="plain-syntax"> 0.2% package_request 7944 objects, 699072 bytes</span>
<span class="plain-syntax"> 0.2% inter_name_generator_array 16 x 1000 = 16000 objects, 640512 bytes</span>
<span class="plain-syntax"> 0.2% unary_predicate_array 15 x 1000 = 15000 objects, 600480 bytes</span>
<span class="plain-syntax"> 0.1% local_variable_array 45 x 100 = 4500 objects, 505440 bytes</span>
<span class="plain-syntax"> 0.1% verb_usage 1128 objects, 388032 bytes</span>
<span class="plain-syntax"> 0.1% rule 469 objects, 363944 bytes</span>
@ -166,67 +164,71 @@ represent less than 1/1000th of the total.
<span class="plain-syntax"> 0.1% i6_schema_array 5 x 100 = 500 objects, 300160 bytes</span>
<span class="plain-syntax"> 0.1% scan_directory 70 objects, 288960 bytes</span>
<span class="plain-syntax"> 0.1% noun 2379 objects, 285480 bytes</span>
<span class="plain-syntax"> ---- inference_subject 665 objects, 260680 bytes</span>
<span class="plain-syntax"> ---- action_name_list_array 3 x 1000 = 3000 objects, 240096 bytes</span>
<span class="plain-syntax"> 0.1% inference_subject 665 objects, 260680 bytes</span>
<span class="plain-syntax"> ---- inter_annotation_array 1 x 8192 objects, 196640 bytes</span>
<span class="plain-syntax"> ---- linguistic_stock_item 3315 objects, 159120 bytes</span>
<span class="plain-syntax"> ---- binary_predicate 321 objects, 156648 bytes</span>
<span class="plain-syntax"> ---- stacked_variable_owner_list_array 38 x 100 = 3800 objects, 153216 bytes</span>
<span class="plain-syntax"> ---- index_lexicon_entry 395 objects, 142200 bytes</span>
<span class="plain-syntax"> ---- nonterminal 757 objects, 139288 bytes</span>
<span class="plain-syntax"> ---- action_pattern_array 6 x 100 = 600 objects, 129792 bytes</span>
<span class="plain-syntax"> ---- nonterminal 759 objects, 139656 bytes</span>
<span class="plain-syntax"> ---- documentation_ref 1275 objects, 112200 bytes</span>
<span class="plain-syntax"> ---- inference 1703 objects, 108992 bytes</span>
<span class="plain-syntax"> ---- hierarchy_location 730 objects, 105120 bytes</span>
<span class="plain-syntax"> ---- hierarchy_location 723 objects, 104112 bytes</span>
<span class="plain-syntax"> ---- anl_entry_array 2 x 1000 = 2000 objects, 96064 bytes</span>
<span class="plain-syntax"> ---- noun_usage 2401 objects, 96040 bytes</span>
<span class="plain-syntax"> ---- preposition 273 objects, 87360 bytes</span>
<span class="plain-syntax"> ---- lexical_cluster 2516 objects, 80512 bytes</span>
<span class="plain-syntax"> ---- pcalc_term_array 2 x 1000 = 2000 objects, 80064 bytes</span>
<span class="plain-syntax"> ---- kind_variable_declaration 1652 objects, 79296 bytes</span>
<span class="plain-syntax"> ---- inter_tree 6 objects, 78624 bytes</span>
<span class="plain-syntax"> ---- inter_schema 1509 objects, 72432 bytes</span>
<span class="plain-syntax"> ---- rulebook 407 objects, 71632 bytes</span>
<span class="plain-syntax"> ---- inter_schema 1482 objects, 71136 bytes</span>
<span class="plain-syntax"> ---- rulebook 407 objects, 65120 bytes</span>
<span class="plain-syntax"> ---- spatial_data 670 objects, 64320 bytes</span>
<span class="plain-syntax"> ---- kind_macro_definition 9 objects, 62280 bytes</span>
<span class="plain-syntax"> ---- booking 860 objects, 61920 bytes</span>
<span class="plain-syntax"> ---- grammar_verb 130 objects, 57200 bytes</span>
<span class="plain-syntax"> ---- command_grammar 130 objects, 58240 bytes</span>
<span class="plain-syntax"> ---- pcalc_func_array 1 x 1000 objects, 56032 bytes</span>
<span class="plain-syntax"> ---- ph_stack_frame_box 577 objects, 55392 bytes</span>
<span class="plain-syntax"> ---- kind_constructor 77 objects, 54824 bytes</span>
<span class="plain-syntax"> ---- cg_token 603 objects, 53064 bytes</span>
<span class="plain-syntax"> ---- property_inference_data 1315 objects, 52600 bytes</span>
<span class="plain-syntax"> ---- ap_clause_array 2 x 400 = 800 objects, 51264 bytes</span>
<span class="plain-syntax"> ---- text_substitution 436 objects, 48832 bytes</span>
<span class="plain-syntax"> ---- grammar_line 230 objects, 46000 bytes</span>
<span class="plain-syntax"> ---- cg_line 230 objects, 47840 bytes</span>
<span class="plain-syntax"> ---- table 7 objects, 45528 bytes</span>
<span class="plain-syntax"> ---- inter_node_list 750 objects, 42000 bytes</span>
<span class="plain-syntax"> ---- activity_list_array 1 x 1000 objects, 40032 bytes</span>
<span class="plain-syntax"> ---- anl_clause_array 1 x 1000 objects, 40032 bytes</span>
<span class="plain-syntax"> ---- response_message 407 objects, 35816 bytes</span>
<span class="plain-syntax"> ---- production_list 617 objects, 34552 bytes</span>
<span class="plain-syntax"> ---- regions_data 670 objects, 32160 bytes</span>
<span class="plain-syntax"> ---- HTML_tag_array 1 x 1000 objects, 32032 bytes</span>
<span class="plain-syntax"> ---- kind_variable_declaration 662 objects, 31776 bytes</span>
<span class="plain-syntax"> ---- property_permission 96 objects, 30720 bytes</span>
<span class="plain-syntax"> ---- verb_sense 403 objects, 29016 bytes</span>
<span class="plain-syntax"> ---- stacked_variable_owner_array 6 x 100 = 600 objects, 28992 bytes</span>
<span class="plain-syntax"> ---- heading 198 objects, 28512 bytes</span>
<span class="plain-syntax"> ---- action_pattern_array 7 x 100 = 700 objects, 28224 bytes</span>
<span class="plain-syntax"> ---- counting_data 670 objects, 26800 bytes</span>
<span class="plain-syntax"> ---- ap_optional_clause_array 1 x 400 objects, 22432 bytes</span>
<span class="plain-syntax"> ---- parsing_data 670 objects, 21440 bytes</span>
<span class="plain-syntax"> ---- bp_runtime_implementation 321 objects, 20544 bytes</span>
<span class="plain-syntax"> ---- instance 167 objects, 20040 bytes</span>
<span class="plain-syntax"> ---- pcalc_prop_deferral 90 objects, 19440 bytes</span>
<span class="plain-syntax"> ---- nonlocal_variable 93 objects, 19344 bytes</span>
<span class="plain-syntax"> ---- action_name 90 objects, 18720 bytes</span>
<span class="plain-syntax"> ---- pcalc_prop_deferral 87 objects, 18792 bytes</span>
<span class="plain-syntax"> ---- property 146 objects, 18688 bytes</span>
<span class="plain-syntax"> ---- action_name 90 objects, 18000 bytes</span>
<span class="plain-syntax"> ---- parse_node_tree 20 objects, 17280 bytes</span>
<span class="plain-syntax"> ---- understanding_reference_array 2 x 100 = 200 objects, 16064 bytes</span>
<span class="plain-syntax"> ---- action_name_list_array 1 x 1000 objects, 16032 bytes</span>
<span class="plain-syntax"> ---- match_avinue_array 1 x 1000 objects, 16032 bytes</span>
<span class="plain-syntax"> ---- linked_list_item_array 1 x 1000 objects, 16032 bytes</span>
<span class="plain-syntax"> ---- method 327 objects, 15696 bytes</span>
<span class="plain-syntax"> ---- to_phrase_request 59 objects, 15576 bytes</span>
<span class="plain-syntax"> ---- method 323 objects, 15504 bytes</span>
<span class="plain-syntax"> ---- adjective 137 objects, 14248 bytes</span>
<span class="plain-syntax"> ---- booking_list 407 objects, 13024 bytes</span>
<span class="plain-syntax"> ---- literal_text 147 objects, 12936 bytes</span>
<span class="plain-syntax"> ---- adjective_iname_holder 320 objects, 12800 bytes</span>
<span class="plain-syntax"> ---- stopwatch_timer 149 objects, 11920 bytes</span>
<span class="plain-syntax"> ---- understanding_reference_array 2 x 100 = 200 objects, 11264 bytes</span>
<span class="plain-syntax"> ---- pathname 261 objects, 10440 bytes</span>
<span class="plain-syntax"> ---- stopwatch_timer 145 objects, 11600 bytes</span>
<span class="plain-syntax"> ---- pathname 262 objects, 10480 bytes</span>
<span class="plain-syntax"> ---- filename 208 objects, 8320 bytes</span>
<span class="plain-syntax"> ---- equation_node 68 objects, 7616 bytes</span>
<span class="plain-syntax"> ---- understanding_item_array 3 x 100 = 300 objects, 7296 bytes</span>
@ -236,24 +238,25 @@ represent less than 1/1000th of the total.
<span class="plain-syntax"> ---- verb 108 objects, 6048 bytes</span>
<span class="plain-syntax"> ---- text_literal_holder 145 objects, 5800 bytes</span>
<span class="plain-syntax"> ---- inbuild_work 78 objects, 4992 bytes</span>
<span class="plain-syntax"> ---- explicit_action_array 1 x 100 objects, 4832 bytes</span>
<span class="plain-syntax"> ---- value_property_data 84 objects, 4704 bytes</span>
<span class="plain-syntax"> ---- heading_tree 20 objects, 4640 bytes</span>
<span class="plain-syntax"> ---- parsing_pp_data 96 objects, 4608 bytes</span>
<span class="plain-syntax"> ---- build_vertex 40 objects, 4480 bytes</span>
<span class="plain-syntax"> ---- hierarchy_attachment_point 48 objects, 4224 bytes</span>
<span class="plain-syntax"> ---- placement_affecting_array 1 x 100 objects, 4032 bytes</span>
<span class="plain-syntax"> ---- stacked_variable_list_array 1 x 100 objects, 4032 bytes</span>
<span class="plain-syntax"> ---- placement_affecting_array 1 x 100 objects, 4032 bytes</span>
<span class="plain-syntax"> ---- activity 35 objects, 3920 bytes</span>
<span class="plain-syntax"> ---- inbuild_edition 54 objects, 3888 bytes</span>
<span class="plain-syntax"> ---- parse_node_annotation_type 118 objects, 3776 bytes</span>
<span class="plain-syntax"> ---- inbuild_copy 35 objects, 3640 bytes</span>
<span class="plain-syntax"> ---- parse_node_annotation_type 113 objects, 3616 bytes</span>
<span class="plain-syntax"> ---- command_line_switch 43 objects, 3440 bytes</span>
<span class="plain-syntax"> ---- property_setting_bp_data 84 objects, 3360 bytes</span>
<span class="plain-syntax"> ---- instance_usage_array 1 x 200 objects, 3232 bytes</span>
<span class="plain-syntax"> ---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes</span>
<span class="plain-syntax"> ---- instance_usage_array 1 x 200 objects, 3232 bytes</span>
<span class="plain-syntax"> ---- method_set 100 objects, 3200 bytes</span>
<span class="plain-syntax"> ---- compatibility_specification 66 objects, 3168 bytes</span>
<span class="plain-syntax"> ---- definition 44 objects, 3168 bytes</span>
<span class="plain-syntax"> ---- compatibility_specification 66 objects, 3168 bytes</span>
<span class="plain-syntax"> ---- inform_extension 19 objects, 3040 bytes</span>
<span class="plain-syntax"> ---- property_of_value_storage 93 objects, 2976 bytes</span>
<span class="plain-syntax"> ---- either_or_property_data 62 objects, 2976 bytes</span>
@ -265,19 +268,19 @@ represent less than 1/1000th of the total.
<span class="plain-syntax"> ---- kind_constructor_instance_array 1 x 100 objects, 2432 bytes</span>
<span class="plain-syntax"> ---- equation_symbol 30 objects, 2400 bytes</span>
<span class="plain-syntax"> ---- semver_range 22 objects, 2288 bytes</span>
<span class="plain-syntax"> ---- scene 1 object, 2096 bytes</span>
<span class="plain-syntax"> ---- use_option 29 objects, 1856 bytes</span>
<span class="plain-syntax"> ---- pronoun_usage 42 objects, 1680 bytes</span>
<span class="plain-syntax"> ---- activity_crossref_array 1 x 100 objects, 1632 bytes</span>
<span class="plain-syntax"> ---- table_contribution_array 1 x 100 objects, 1632 bytes</span>
<span class="plain-syntax"> ---- kind_interaction 39 objects, 1560 bytes</span>
<span class="plain-syntax"> ---- plugin 24 objects, 1536 bytes</span>
<span class="plain-syntax"> ---- inter_annotation_form 37 objects, 1480 bytes</span>
<span class="plain-syntax"> ---- plugin 23 objects, 1472 bytes</span>
<span class="plain-syntax"> ---- pipeline_step 12 objects, 1440 bytes</span>
<span class="plain-syntax"> ---- noun_filter_token 22 objects, 1408 bytes</span>
<span class="plain-syntax"> ---- scene 1 object, 1344 bytes</span>
<span class="plain-syntax"> ---- special_meaning_holder 33 objects, 1320 bytes</span>
<span class="plain-syntax"> ---- constant_phrase 20 objects, 1280 bytes</span>
<span class="plain-syntax"> ---- build_script 40 objects, 1280 bytes</span>
<span class="plain-syntax"> ---- constant_phrase 20 objects, 1280 bytes</span>
<span class="plain-syntax"> ---- invocation_options_array 1 x 100 objects, 1224 bytes</span>
<span class="plain-syntax"> ---- direction_inference_data 30 objects, 1200 bytes</span>
<span class="plain-syntax"> ---- hierarchy_metadatum 15 objects, 1200 bytes</span>
@ -289,32 +292,32 @@ represent less than 1/1000th of the total.
<span class="plain-syntax"> ---- cached_understanding 21 objects, 840 bytes</span>
<span class="plain-syntax"> ---- runtime_kind_structure 13 objects, 832 bytes</span>
<span class="plain-syntax"> ---- phrase_option_array 1 x 100 objects, 824 bytes</span>
<span class="plain-syntax"> ---- pipeline_stage 17 objects, 816 bytes</span>
<span class="plain-syntax"> ---- target_vm 6 objects, 816 bytes</span>
<span class="plain-syntax"> ---- pipeline_stage 17 objects, 816 bytes</span>
<span class="plain-syntax"> ---- generated_segment 25 objects, 800 bytes</span>
<span class="plain-syntax"> ---- inter_data_type 14 objects, 784 bytes</span>
<span class="plain-syntax"> ---- submodule_identity 23 objects, 736 bytes</span>
<span class="plain-syntax"> ---- rulebook_outcome 17 objects, 680 bytes</span>
<span class="plain-syntax"> ---- inform_language 6 objects, 672 bytes</span>
<span class="plain-syntax"> ---- relation_guard 5 objects, 640 bytes</span>
<span class="plain-syntax"> ---- inter_warehouse_room 10 objects, 640 bytes</span>
<span class="plain-syntax"> ---- I6T_intervention 8 objects, 640 bytes</span>
<span class="plain-syntax"> ---- inter_warehouse_room 10 objects, 640 bytes</span>
<span class="plain-syntax"> ---- relation_guard 5 objects, 640 bytes</span>
<span class="plain-syntax"> ---- nascent_array 7 objects, 616 bytes</span>
<span class="plain-syntax"> ---- named_rulebook_outcome 15 objects, 600 bytes</span>
<span class="plain-syntax"> ---- inbuild_search_result 15 objects, 600 bytes</span>
<span class="plain-syntax"> ---- label_namespace 10 objects, 560 bytes</span>
<span class="plain-syntax"> ---- rulebook_outcome 17 objects, 544 bytes</span>
<span class="plain-syntax"> ---- small_word_set 11 objects, 528 bytes</span>
<span class="plain-syntax"> ---- inform_kit 5 objects, 520 bytes</span>
<span class="plain-syntax"> ---- implication 13 objects, 520 bytes</span>
<span class="plain-syntax"> ---- inference_family 11 objects, 440 bytes</span>
<span class="plain-syntax"> ---- i6_memory_setting 13 objects, 416 bytes</span>
<span class="plain-syntax"> ---- equation 4 objects, 416 bytes</span>
<span class="plain-syntax"> ---- i6_memory_setting 13 objects, 416 bytes</span>
<span class="plain-syntax"> ---- module_package 10 objects, 400 bytes</span>
<span class="plain-syntax"> ---- dval_written 10 objects, 400 bytes</span>
<span class="plain-syntax"> ---- bp_family 12 objects, 384 bytes</span>
<span class="plain-syntax"> ---- article_usage 8 objects, 384 bytes</span>
<span class="plain-syntax"> ---- source_file 5 objects, 360 bytes</span>
<span class="plain-syntax"> ---- inbuild_genre 7 objects, 336 bytes</span>
<span class="plain-syntax"> ---- label_namespace 6 objects, 336 bytes</span>
<span class="plain-syntax"> ---- grammatical_category 8 objects, 320 bytes</span>
<span class="plain-syntax"> ---- pronoun 8 objects, 320 bytes</span>
<span class="plain-syntax"> ---- door_dir_notice 5 objects, 320 bytes</span>
@ -329,50 +332,50 @@ represent less than 1/1000th of the total.
<span class="plain-syntax"> ---- release_instructions 1 object, 208 bytes</span>
<span class="plain-syntax"> ---- compilation_unit 5 objects, 200 bytes</span>
<span class="plain-syntax"> ---- build_skill 5 objects, 200 bytes</span>
<span class="plain-syntax"> ---- plural_dictionary_entry 4 objects, 192 bytes</span>
<span class="plain-syntax"> ---- kit_dependency 4 objects, 192 bytes</span>
<span class="plain-syntax"> ---- plural_dictionary_entry 4 objects, 192 bytes</span>
<span class="plain-syntax"> ---- inform_project 1 object, 176 bytes</span>
<span class="plain-syntax"> ---- inference_subject_family 5 objects, 160 bytes</span>
<span class="plain-syntax"> ---- link_instruction 4 objects, 160 bytes</span>
<span class="plain-syntax"> ---- inter_architecture 4 objects, 160 bytes</span>
<span class="plain-syntax"> ---- inference_subject_family 5 objects, 160 bytes</span>
<span class="plain-syntax"> ---- pointer_allocation 2 objects, 160 bytes</span>
<span class="plain-syntax"> ---- code_generation_target 4 objects, 160 bytes</span>
<span class="plain-syntax"> ---- link_instruction 4 objects, 160 bytes</span>
<span class="plain-syntax"> ---- codegen_pipeline 1 object, 128 bytes</span>
<span class="plain-syntax"> ---- element_activation 4 objects, 128 bytes</span>
<span class="plain-syntax"> ---- codegen_pipeline 1 object, 128 bytes</span>
<span class="plain-syntax"> ---- inbuild_nest 3 objects, 120 bytes</span>
<span class="plain-syntax"> ---- inform_kit_ittt 2 objects, 96 bytes</span>
<span class="plain-syntax"> ---- compile_task_data 1 object, 80 bytes</span>
<span class="plain-syntax"> ---- article 2 objects, 80 bytes</span>
<span class="plain-syntax"> ---- list_together_routine 2 objects, 80 bytes</span>
<span class="plain-syntax"> ---- compile_task_data 1 object, 80 bytes</span>
<span class="plain-syntax"> ---- inter_warehouse 1 object, 56 bytes</span>
<span class="plain-syntax"> ---- build_methodology 1 object, 56 bytes</span>
<span class="plain-syntax"> ---- inter_warehouse 1 object, 56 bytes</span>
<span class="plain-syntax"> ---- star_invention 1 object, 48 bytes</span>
<span class="plain-syntax"> ---- figures_data 1 object, 48 bytes</span>
<span class="plain-syntax"> ---- HTML_file_state 1 object, 48 bytes</span>
<span class="plain-syntax"> ---- star_invention 1 object, 48 bytes</span>
<span class="plain-syntax"> ---- by_routine_bp_data 1 object, 40 bytes</span>
<span class="plain-syntax"> ---- parse_name_notice 1 object, 40 bytes</span>
<span class="plain-syntax"> ---- kind_template_definition 1 object, 40 bytes</span>
<span class="plain-syntax"> ---- loop_over_scope 1 object, 40 bytes</span>
<span class="plain-syntax"> ---- parse_name_notice 1 object, 40 bytes</span>
<span class="plain-syntax"> ---- by_routine_bp_data 1 object, 40 bytes</span>
<span class="plain-syntax">37.5% was used for memory not allocated for objects:</span>
<span class="plain-syntax">38.2% was used for memory not allocated for objects:</span>
<span class="plain-syntax"> 15.9% text stream storage 42248560 bytes in 265815 claims</span>
<span class="plain-syntax"> 3.5% dictionary storage 9278976 bytes in 16372 claims</span>
<span class="plain-syntax"> ---- sorting 1056 bytes in 3 claims</span>
<span class="plain-syntax"> 2.7% source text 7200000 bytes in 3 claims</span>
<span class="plain-syntax"> 4.0% source text details 10800000 bytes in 2 claims</span>
<span class="plain-syntax"> 16.0% text stream storage 41145960 bytes in 254029 claims</span>
<span class="plain-syntax"> 3.5% dictionary storage 9059328 bytes in 15943 claims</span>
<span class="plain-syntax"> ---- sorting 1024 bytes in 3 claims</span>
<span class="plain-syntax"> 2.8% source text 7200000 bytes in 3 claims</span>
<span class="plain-syntax"> 4.2% source text details 10800000 bytes in 2 claims</span>
<span class="plain-syntax"> ---- linguistic stock array 81920 bytes in 2 claims</span>
<span class="plain-syntax"> ---- small word set array 105600 bytes in 22 claims</span>
<span class="plain-syntax"> 0.8% inter symbols storage 2280320 bytes in 13937 claims</span>
<span class="plain-syntax"> 6.3% inter bytecode storage 16802820 bytes in 14 claims</span>
<span class="plain-syntax"> 3.3% inter links storage 8750208 bytes in 246 claims</span>
<span class="plain-syntax"> 0.8% inter symbols storage 2257200 bytes in 13880 claims</span>
<span class="plain-syntax"> 6.5% inter bytecode storage 16802820 bytes in 14 claims</span>
<span class="plain-syntax"> 3.4% inter links storage 8750208 bytes in 246 claims</span>
<span class="plain-syntax"> 0.6% instance-of-kind counting 1695204 bytes in 1 claim</span>
<span class="plain-syntax"> ---- compilation workspace for objects 21856 bytes in 25 claims</span>
<span class="plain-syntax"> ---- lists for type-checking invocations 16000 bytes in 1 claim</span>
<span class="plain-syntax"> ---- emitter array storage 12320 bytes in 8 claims</span>
<span class="plain-syntax"> ---- code generation workspace for objects 9200 bytes in 9 claims</span>
<span class="plain-syntax">19.9% was overhead - 52766376 bytes = 51529K = 50 MB</span>
<span class="plain-syntax">19.9% was overhead - 51161488 bytes = 49962K = 48 MB</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. Preform grammar. </b>The full annotated description of the Preform grammar (see <a href="../words-module/4-ap.html" class="internal">About Preform (in words)</a>),
with optimisation details and hit/miss statistics added, is also long: it's
@ -381,31 +384,31 @@ sample, showing the nonterminal used to parse literals in Inform 7 source text:
</p>
<pre class="undisplayed-code all-displayed-code code-font">
<span class="plain-syntax">&lt;s-literal&gt; hits 2097/23662 nti 12 constraint (none) extremes [1, infinity)</span>
<span class="plain-syntax">&lt;s-literal&gt; hits 1130/20872 nti 12 constraint (none) extremes [1, infinity)</span>
<span class="plain-syntax"> English:</span>
<span class="plain-syntax"> (@1)&lt;cardinal-number&gt;=1 </span>
<span class="plain-syntax"> (hits 171/171) (matched: '100') constraint CS = {r0} extremes [1, 1]</span>
<span class="plain-syntax"> (hits 169/169) (matched: '100') constraint CS = {r0} extremes [1, 1]</span>
<span class="plain-syntax"> (@1)minus (@2)&lt;cardinal-number&gt;=1 </span>
<span class="plain-syntax"> (hits 0/1941) constraint DS = {12} extremes [2, 2]</span>
<span class="plain-syntax"> (hits 0/2045) constraint DS = {12} extremes [2, 2]</span>
<span class="plain-syntax"> (@1)&lt;quoted-text&gt;=1 (@2)( (@3)&lt;response-letter&gt;=2 (@4)) </span>
<span class="plain-syntax"> (hits 273/831) (matched: '"[current item from the multiple object list]: [run paragraph on]" ( a )') constraint DS = {12} extremes [4, 4]</span>
<span class="plain-syntax"> (hits 273/846) (matched: '"[current item from the multiple object list]: [run paragraph on]" ( a )') constraint DS = {12} extremes [4, 4]</span>
<span class="plain-syntax"> (@1)&lt;quoted-text&gt;=1 </span>
<span class="plain-syntax"> (hits 1564/5496) (matched: 'Represents geographical locations, both indoor</span>
<span class="plain-syntax"> (hits 599/4227) (matched: 'Represents geographical locations, both indoor</span>
<span class="plain-syntax"> and outdoor, which are not necessarily areas in a building. A player in one</span>
<span class="plain-syntax"> room is mostly unable to sense, or interact with, anything in a different room.</span>
<span class="plain-syntax"> Rooms are arranged in a map.') constraint (none) extremes [1, 1]</span>
<span class="plain-syntax"> &lt;s-literal-real-number&gt;=1 </span>
<span class="plain-syntax"> (hits 11/9823) (matched: 'plus infinity') constraint (none) extremes [1, infinity)</span>
<span class="plain-syntax"> (hits 11/9395) (matched: 'plus infinity') constraint (none) extremes [1, infinity)</span>
<span class="plain-syntax"> (@1)&lt;s-literal-truth-state&gt;=1 </span>
<span class="plain-syntax"> (hits 78/392) (matched: 'false') constraint CS = {6} extremes [1, 1]</span>
<span class="plain-syntax"> (hits 78/774) (matched: 'false') constraint CS = {6} extremes [1, 1]</span>
<span class="plain-syntax"> &lt;s-literal-list&gt;=1 </span>
<span class="plain-syntax"> (hits 0/1692) constraint DS = {8} extremes [2, infinity)</span>
<span class="plain-syntax"> (hits 0/3087) constraint DS = {8} extremes [2, infinity)</span>
<span class="plain-syntax"> (@1)unicode &lt;s-unicode-character&gt;=1 </span>
<span class="plain-syntax"> (hits 0/4359) constraint DS = {12} extremes [2, infinity)</span>
<span class="plain-syntax"> (hits 0/4503) constraint DS = {12} extremes [2, infinity)</span>
<span class="plain-syntax"> &lt;s-literal-time&gt;=1 </span>
<span class="plain-syntax"> (hits 0/3578) constraint DW = {9, 10, 11} extremes [2, 5]</span>
<span class="plain-syntax"> (hits 0/2105) constraint DW = {9, 10, 11} extremes [2, 5]</span>
<span class="plain-syntax"> &lt;s-literal-unit-notation&gt;=1 </span>
<span class="plain-syntax"> (hits 0/9734) constraint (none) extremes [1, infinity)</span>
<span class="plain-syntax"> (hits 0/9306) constraint (none) extremes [1, infinity)</span>
</pre>
<p class="commentary">The unabridged grammar is here:
</p>
@ -415,7 +418,7 @@ sample, showing the nonterminal used to parse literals in Inform 7 source text:
<a href="preform-diagnostics.txt" download>
<button class="download-button">
<img src="../docs-assets/download.png" alt="download icon" height=16 width=16>
Download <b>preform-diagnostics.txt</b> (Preform diagnostics file, 391.3kB)
Download <b>preform-diagnostics.txt</b> (Preform diagnostics file, 391.2kB)
</button>
</a>
</p>
@ -426,7 +429,7 @@ sample, showing the nonterminal used to parse literals in Inform 7 source text:
is a roughly 20,000-line text file, and again is too long to quote in full.
This is a summary, showing just the portion of tree from the main source text,
that is, with the content of extensions excluded, and with the content of
<span class="extract"><span class="extract-syntax">RULE_NT</span></span> also cut. It still makes for a lengthy read:
<span class="extract"><span class="extract-syntax">IMPERATIVE_NT</span></span> also cut. It still makes for a lengthy read:
</p>
<pre class="undisplayed-code all-displayed-code code-font">
@ -460,8 +463,8 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'asking for information'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'out of world'</span>
<span class="plain-syntax"> RULE_NT'carry out asking for information' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'when play begins' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out asking for information' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'when play begins' {unit: 4}</span>
<span class="plain-syntax"> HEADING_NT'section 1 - errands' {heading 5} {under: H5'section 1 - errands'} {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'the current actor is a person which varies' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
@ -471,8 +474,8 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'current owner' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'current owner' {nonlocal: 'current owner'(var)person}} {created here}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'person which varies' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values variable-pointer'-k} {creation: &lt;&lt; kind=people variable-pointer(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> RULE_NT'every turn' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'every turn' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'every turn' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'every turn' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'a person can be active or passive' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'can be' {verb 'be able to be' s/p 3p act IS_TENSE +ve} {special meaning: can-be}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'a person' {refined} {refers: infs'person'} {creation: &lt;&lt; kind=person(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
@ -488,34 +491,34 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'are' {verb 'be' 3p p act IS_TENSE +ve}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'character movement rules' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT {kind: rulebook} {rulebook: character movement}} {created here}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: &lt;&lt; kind=rulebook(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> RULE_NT'the first character movement rule' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'a character movement rule' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'a character movement rule' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'to decide whether movement has not yet occurred' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'definition' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'definition' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'the first character movement rule' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'a character movement rule' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'a character movement rule' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to decide whether movement has not yet occurred' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'the shopowner rules is a rulebook' {unit: 4} {classified} {clears pronouns}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'shopowner rules' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT {kind: rulebook} {rulebook: shopowner}} {created here}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: &lt;&lt; kind=rulebook(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> RULE_NT'a shopowner rule' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'report someone closing a door when the person asked owns the' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'report vanessa closing the metal door when the metal door is' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'a shopowner rule' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'a shopowner rule' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone closing a door when the person asked owns the' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report vanessa closing the metal door when the metal door is' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'a shopowner rule' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'filing is an action applying to one thing' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'filing'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'applying to one thing'</span>
<span class="plain-syntax"> RULE_NT'before someone filing something which is not carried by the ' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'carry out someone filing' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'report someone filing' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before someone filing something which is not carried by the ' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone filing' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone filing' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'the shopper rules is a rulebook' {unit: 4} {classified} {clears pronouns}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'shopper rules' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT {kind: rulebook} {rulebook: shopper}} {created here}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: &lt;&lt; kind=rulebook(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> RULE_NT'a shopper rule' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'a shopper rule' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'definition' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'a shopper rule' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'a shopper rule' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'protection relates a door ( called x ) to a room ( called y ' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'relates' {verb 'relate' 3p s act IS_TENSE +ve} {special meaning: new-relation}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'protection' {new relation: protection}</span>
@ -543,8 +546,8 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> COMMON_NOUN_NT'artwork' {indefinite 'an' n/m/f nom/acc s} {refined} {creation: &lt;&lt; kind=artwork(x) &gt;&gt;} {refers: infs'artwork'} {eval: TEST_VALUE_NT} {created here}</span>
<span class="plain-syntax"> KIND_NT'kind of thing' {refined} {refers: infs'thing'}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'thing' {refined} {refers: infs'thing'} {creation: &lt;&lt; kind=thing(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> RULE_NT'before printing the name of an artwork' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'after printing the name of an artwork' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of an artwork' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after printing the name of an artwork' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'an artwork can be submitted or reserved' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'can be' {verb 'be able to be' s/p 3p act IS_TENSE +ve} {special meaning: can-be}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'an artwork' {refined} {refers: infs'artwork'} {creation: &lt;&lt; kind=artwork(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
@ -557,49 +560,49 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> COMMON_NOUN_NT'book' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: &lt;&lt; kind=book(x) &gt;&gt;} {refers: infs'book'} {eval: TEST_VALUE_NT} {created here}</span>
<span class="plain-syntax"> KIND_NT'kind of artwork' {refined} {refers: infs'artwork'}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'artwork' {refined} {refers: infs'artwork'} {creation: &lt;&lt; kind=artwork(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> RULE_NT'before someone resolving a book when the person asked is not' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'carry out someone resolving a book' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'report someone resolving a book' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'before listing contents' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'before grouping together books' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before someone resolving a book when the person asked is not' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a book' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone resolving a book' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before listing contents' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before grouping together books' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'a stamped envelope is a kind of thing' {unit: 4} {classified} {interpretation of subject: infs'book'}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'stamped envelope' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: &lt;&lt; kind=stamped envelope(x) &gt;&gt;} {refers: infs'stamped envelope'} {eval: TEST_VALUE_NT} {created here}</span>
<span class="plain-syntax"> KIND_NT'kind of thing' {refined} {refers: infs'thing'}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'thing' {refined} {refers: infs'thing'} {creation: &lt;&lt; kind=thing(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> RULE_NT'before someone resolving a stamped envelope when the person ' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'carry out someone resolving a stamped envelope' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'report someone resolving a stamped envelope' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'instead of someone resolving a stamped envelope when the per' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before someone resolving a stamped envelope when the person ' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a stamped envelope' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone resolving a stamped envelope' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of someone resolving a stamped envelope when the per' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'a dvd is a kind of artwork' {unit: 4} {classified} {interpretation of subject: infs'stamped envelope'}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'dvd' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: &lt;&lt; kind=dvd(x) &gt;&gt;} {refers: infs'dvd'} {eval: TEST_VALUE_NT} {created here}</span>
<span class="plain-syntax"> KIND_NT'kind of artwork' {refined} {refers: infs'artwork'}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'artwork' {refined} {refers: infs'artwork'} {creation: &lt;&lt; kind=artwork(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> RULE_NT'before someone resolving a dvd when the person asked is not ' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'carry out someone resolving a dvd' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'report someone resolving a dvd' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'instead of someone resolving a dvd when the person asked car' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'before listing contents' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'before grouping together dvds' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before someone resolving a dvd when the person asked is not ' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a dvd' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone resolving a dvd' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of someone resolving a dvd when the person asked car' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before listing contents' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before grouping together dvds' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'approaching is an action applying to one thing' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'approaching'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'applying to one thing'</span>
<span class="plain-syntax"> RULE_NT'carry out someone approaching' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone approaching' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'a coupon is a kind of thing' {unit: 4} {classified} {interpretation of subject: infs'dvd'}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'coupon' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: &lt;&lt; kind=coupon(x) &gt;&gt;} {refers: infs'coupon'} {eval: TEST_VALUE_NT} {created here}</span>
<span class="plain-syntax"> KIND_NT'kind of thing' {refined} {refers: infs'thing'}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'thing' {refined} {refers: infs'thing'} {creation: &lt;&lt; kind=thing(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> RULE_NT'carry out someone resolving a coupon' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a coupon' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'the block giving rule is not listed in any rulebook' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {rule placement sense: negative} {special meaning: rule-listed-in}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'the block giving rule'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'in any rulebook'</span>
<span class="plain-syntax"> RULE_NT'check giving something to someone ( this is the block player' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'before someone resolving a coupon when the person asked is n' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'after someone giving a coupon to vanessa' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'check giving something to someone ( this is the block player' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before someone resolving a coupon when the person asked is n' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after someone giving a coupon to vanessa' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'infection color is a kind of value' {unit: 4} {classified} {interpretation of subject: infs'coupon'}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'infection color' {refined} {creation: &lt;&lt; kind=infection color(x) &gt;&gt;} {refers: infs'object'-k} {eval: TEST_VALUE_NT} {created here}</span>
@ -659,7 +662,7 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> AND_NT',' {refined}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'saffron silk' {refined} {refers: infs'saffron silk'} {eval: CONSTANT_NT'saffron silk' {kind: infection color} {instance: I86'saffron silk'[infection color]} {enumeration: 25}} {created here}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'cookie dough cream' {refined} {refers: infs'cookie dough cream'} {eval: CONSTANT_NT'cookie dough cream' {kind: infection color} {instance: I87'cookie dough cream'[infection color]} {enumeration: 26}} {created here}</span>
<span class="plain-syntax"> RULE_NT'to say list of flavors' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to say list of flavors' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'understand "ask vanessa for [flavored ice cream]" as buying ' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'"ask vanessa for [flavored ice cream]"'</span>
@ -672,8 +675,8 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'buying the flavor'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'applying to one infection color'</span>
<span class="plain-syntax"> RULE_NT'check buying the flavor' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'carry out buying the flavor' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'check buying the flavor' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out buying the flavor' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'understand "ice cream" or "cream" or "ice" or "sherbet" or "' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'"ice cream" or "cream" or "ice" or "sherbet" or "sorbet"'</span>
@ -707,12 +710,12 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'the infection color property'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'referring to an ice cream cone'</span>
<span class="plain-syntax"> RULE_NT'carry out someone resolving an ice cream cone' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'instead of someone eating a fresh ice cream cone' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'report someone eating an ice cream cone' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'before printing the name of an ice cream cone' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving an ice cream cone' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of someone eating a fresh ice cream cone' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone eating an ice cream cone' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of an ice cream cone' {unit: 4}</span>
<span class="plain-syntax"> HEADING_NT'section 2 - infection rules' {heading 5} {under: H5'section 2 - infection rules'} {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'this is the infection rule' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'this is the infection rule' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'a person can be infected or clean' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'can be' {verb 'be able to be' s/p 3p act IS_TENSE +ve} {special meaning: can-be}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'a person' {refined} {refers: infs'person'} {creation: &lt;&lt; kind=person(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
@ -725,11 +728,11 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> COMMON_NOUN_NT'person' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'person'} {creation: &lt;&lt; kind=person(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> ALLOWED_NT'has' {refined}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'infection color' {indefinite 'an' n/m/f nom/acc s} {refined}</span>
<span class="plain-syntax"> RULE_NT'every turn' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'definition' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'definition' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'when play begins' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'every turn' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'every turn' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'when play begins' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'every turn' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'understand "sneeze on [something]" as sneezing on' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'"sneeze on [something]"'</span>
@ -738,11 +741,11 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'sneezing on'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'applying to one thing'</span>
<span class="plain-syntax"> RULE_NT'check sneezing on' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'carry out sneezing on' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'carry out someone sneezing on' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'report sneezing on' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'report someone sneezing on' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'check sneezing on' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out sneezing on' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone sneezing on' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report sneezing on' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone sneezing on' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'understand "inject [someone] with [something]" as injecting ' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'"inject [someone] with [something]"'</span>
@ -763,10 +766,10 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'injecting it with'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'applying to two things'</span>
<span class="plain-syntax"> RULE_NT'check injecting it with' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'carry out injecting it with' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'after injecting the player with something' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'report injecting it with' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'check injecting it with' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out injecting it with' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after injecting the player with something' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report injecting it with' {unit: 4}</span>
<span class="plain-syntax"> HEADING_NT'section 3 - geography' {heading 5} {under: H5'section 3 - geography'} {unit: 4}</span>
<span class="plain-syntax"> INCLUSION_NT'include locksmith by emily short' {unit: 4}</span>
<span class="plain-syntax"> HEADING_NT'version 12 of locksmith by emily short begins here' {heading 0} {under: H0'version 12 of locksmith by emily short begins here'} {includes: Locksmith by Emily Short v12 } {unit: 4}</span>
@ -791,9 +794,9 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'going toward'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'applying to one thing'</span>
<span class="plain-syntax"> RULE_NT'check going toward' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'carry out going toward' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'instead of waiting when the destination of the player is not' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'check going toward' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out going toward' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of waiting when the destination of the player is not' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'understand "stop" or "cease" as stopping' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'"stop" or "cease"'</span>
@ -802,11 +805,11 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'stopping'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'applying to nothing'</span>
<span class="plain-syntax"> RULE_NT'carry out stopping' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'report stopping' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'after going to an air-conditioned room' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'after going from an air-conditioned room' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'instead of listening to an air-conditioned room' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out stopping' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report stopping' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after going to an air-conditioned room' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after going from an air-conditioned room' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of listening to an air-conditioned room' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'the alfred cralle pool hall is a room' {unit: 4} {classified} {interpretation of subject: infs'person'}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'alfred cralle pool hall' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'alfred cralle pool hall'} {eval: CONSTANT_NT'alfred cralle pool hall' {kind: object} {instance: I88'alfred cralle pool hall'} {enumeration: 0}} {created here}</span>
@ -848,7 +851,7 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> PROPER_NOUN_NT'felt door' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'felt door'} {eval: CONSTANT_NT'felt door' {kind: door} {instance: I90'felt door'} {enumeration: 0}}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'description' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'description'=text}}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'"It has a prominent lock, designed for an old-fashioned key.' {refined} {eval: CONSTANT_NT'"It has a prominent lock, designed for an old-fashioned key.' {kind: text}}</span>
<span class="plain-syntax"> RULE_NT'after locking a door with something in the presence of an ot' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after locking a door with something in the presence of an ot' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'nancy johnson memorial square is west of the felt door' {unit: 4} {classified} {interpretation of subject: infs'key to the city'}</span>
<span class="plain-syntax"> VERB_NT'is west of' {verb 'be' 3p s act IS_TENSE +ve} {prep1: west of}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'nancy johnson memorial square' {refined} {refers: infs'nancy johnson memorial square'} {eval: CONSTANT_NT'nancy johnson memorial square' {kind: object} {instance: I92'nancy johnson memorial square'} {enumeration: 0}} {created here}</span>
@ -910,8 +913,8 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'slot' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'slot'} {eval: CONSTANT_NT'slot' {kind: object} {instance: I97'slot'} {enumeration: 0}}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'container' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'container'} {creation: &lt;&lt; kind=container(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> RULE_NT'carry out inserting something into the slot' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'report inserting something into the slot' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out inserting something into the slot' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report inserting something into the slot' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'hamwi street is northeast of an iron gate' {unit: 4} {classified} {interpretation of subject: infs'slot'}</span>
<span class="plain-syntax"> VERB_NT'is northeast of' {verb 'be' 3p s act IS_TENSE +ve} {prep1: northeast of}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'hamwi street' {refined} {refers: infs'hamwi street'} {eval: CONSTANT_NT'hamwi street' {kind: object} {instance: I98'hamwi street'} {enumeration: 0}} {created here}</span>
@ -935,7 +938,7 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> AND_NT'and' {refined}</span>
<span class="plain-syntax"> ADJECTIVE_NT'lockable' {refined} {predicate: lockable} {creation: &lt;&lt; lockable(x) ^ lockable(x) &gt;&gt;}</span>
<span class="plain-syntax"> ADJECTIVE_NT'unlocked' {refined} {predicate: unlocked} {creation: &lt;&lt; unlocked(x) ^ unlocked(x) &gt;&gt;}</span>
<span class="plain-syntax"> RULE_NT'before printing the name of the iron gate while not opening ' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of the iron gate while not opening ' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'cold comfort ice cream is north of a metal door' {unit: 4} {classified} {interpretation of subject: infs'iron gate'}</span>
<span class="plain-syntax"> VERB_NT'is north of' {verb 'be' 3p s act IS_TENSE +ve} {prep1: north of}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'cold comfort ice cream' {refined} {refers: infs'cold comfort ice cream'} {eval: CONSTANT_NT'cold comfort ice cream' {kind: object} {instance: I100'cold comfort ice cream'} {enumeration: 0}} {created here}</span>
@ -1041,8 +1044,8 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'"glass"'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'the box'</span>
<span class="plain-syntax"> RULE_NT'instead of attacking the closed emergency box' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'instead of attacking the open emergency box' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of attacking the closed emergency box' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of attacking the open emergency box' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'the syringe is in the emergency box' {unit: 4} {classified} {interpretation of subject: infs'emergency box'}</span>
<span class="plain-syntax"> VERB_NT'is in' {verb 'be' 3p s act IS_TENSE +ve} {prep1: in}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'syringe' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'syringe'} {eval: CONSTANT_NT'syringe' {kind: object} {instance: I109'syringe'} {enumeration: 0}} {created here}</span>
@ -1145,9 +1148,9 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> SENTENCE_NT'use full-length room descriptions' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'use' {verb 'use' 3p p act IS_TENSE +ve} {special meaning: use}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'full-length room descriptions'</span>
<span class="plain-syntax"> RULE_NT'after looking in an outdoors room' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'definition' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'before exiting when the player is in an indoors room' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after looking in an outdoors room' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before exiting when the player is in an indoors room' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'blank is a room' {unit: 4} {classified} {interpretation of subject: infs'key to the city'}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'blank' {refined} {refers: infs'blank'} {eval: CONSTANT_NT'blank' {kind: object} {instance: I113'blank'} {enumeration: 0}} {created here}</span>
@ -1373,15 +1376,15 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> PROPER_NOUN_NT'ned' {refined} {refers: infs'ned'} {eval: CONSTANT_NT'ned' {kind: man} {instance: I166'ned'} {enumeration: 0}}</span>
<span class="plain-syntax"> RELATIONSHIP_NT'owns' {meaning: ownership-r} {refined}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'movie rental' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'movie rental store'} {eval: CONSTANT_NT'movie rental store' {kind: object} {instance: I104'movie rental store'} {enumeration: 0}}</span>
<span class="plain-syntax"> RULE_NT'after printing the name of someone ( called target ) while l' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after printing the name of someone ( called target ) while l' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'the description of a person is usually "[The noun] [if the n' {unit: 4} {classified} {interpretation of subject: infs'ned'}</span>
<span class="plain-syntax"> VERB_NT'is usually' {certainty:likely} {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> X_OF_Y_NT'description of a person' {definite 'the' n/m/f s/p nom/acc} {refined}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'person' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'person'} {creation: &lt;&lt; kind=person(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'description' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'description'=text}}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'"[The noun] [if the noun is clean]looks healthy[otherwise]is' {refined} {eval: CONSTANT_NT'"[The noun] [if the noun is clean]looks healthy[otherwise]is' {kind: text}}</span>
<span class="plain-syntax"> RULE_NT'after examining another person who is carrying something' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'when play begins' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after examining another person who is carrying something' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'when play begins' {unit: 4}</span>
<span class="plain-syntax"> HEADING_NT'section 5 - conversation' {heading 5} {under: H5'section 5 - conversation'} {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'a person has a table name called conversation' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}</span>
@ -1390,8 +1393,8 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> PROPERTYCALLED_NT'called'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'table name' {indefinite 'a' n/m/f nom/acc s}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'conversation'</span>
<span class="plain-syntax"> RULE_NT'instead of asking someone about something' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'instead of telling someone about something' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of asking someone about something' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of telling someone about something' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'understand "recap" or "recall" or "review" as recalling conv' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'"recap" or "recall" or "review"'</span>
@ -1400,7 +1403,7 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'recalling conversations'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'applying to nothing'</span>
<span class="plain-syntax"> RULE_NT'carry out recalling conversations' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out recalling conversations' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'the conversation of a person is usually table of general chi' {unit: 4} {classified} {interpretation of subject: infs'person'}</span>
<span class="plain-syntax"> VERB_NT'is usually' {certainty:likely} {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> X_OF_Y_NT'conversation of a person' {definite 'the' n/m/f s/p nom/acc} {refined}</span>
@ -1415,7 +1418,7 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> PROPER_NOUN_NT'conversation' {refined} {eval: CONSTANT_NT {kind: table names valued property} {property: 'conversation'=table name}}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'table of vanessa chatter' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'table of vanessa chatter' {kind: table name} {table: table_data}{meaning: {table of vanessa chatter = TABLE_MC}}}</span>
<span class="plain-syntax"> TABLE_NT'table of vanessa chatter topic reply summary turn stamp char' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'after reading a command' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after reading a command' {unit: 4}</span>
<span class="plain-syntax"> HEADING_NT'section 6 - movement description' {heading 5} {under: H5'section 6 - movement description'} {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'a person has some text called walk style' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}</span>
@ -1462,8 +1465,8 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> PROPER_NOUN_NT'"sashay"' {refined} {eval: CONSTANT_NT'"sashay"' {kind: text}}</span>
<span class="plain-syntax"> TABLE_NT'table of visible exits character second third heading chosen' {unit: 4}</span>
<span class="plain-syntax"> TABLE_NT'table of visible entrances character second third heading ch' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'to clear ( current table - a table name )' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'to tidy departures of ( current table - a table name )' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to clear ( current table - a table name )' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to tidy departures of ( current table - a table name )' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'a door has a person called last opener' {unit: 4} {classified} {interpretation of subject: infs'person'}</span>
<span class="plain-syntax"> VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'door' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'door'} {creation: &lt;&lt; kind=door(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
@ -1471,21 +1474,21 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> PROPERTYCALLED_NT'called'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'person' {indefinite 'a' n/m/f nom/acc s}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'last opener'</span>
<span class="plain-syntax"> RULE_NT'report someone opening a door' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'report someone going through a door ( called route )' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone opening a door' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone going through a door ( called route )' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'the last thing named is a thing that varies' {unit: 4} {classified} {interpretation of subject: infs'door'}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'last thing named' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'last thing named' {nonlocal: 'last thing named'(var)thing}} {created here}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'thing that varies' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values variable-pointer'-k} {creation: &lt;&lt; kind=things variable-pointer(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> RULE_NT'before printing the name of something ( called target ) whic' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'report someone going a direction' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'this is the movement reporting rule' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'to generate descriptions from ( current table - a table name' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of something ( called target ) whic' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone going a direction' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'this is the movement reporting rule' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to generate descriptions from ( current table - a table name' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'the last person named is a person that varies' {unit: 4} {classified} {interpretation of subject: infs'door'}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'last person named' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'last person named' {nonlocal: 'last person named'(var)person}} {created here}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'person that varies' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values variable-pointer'-k} {creation: &lt;&lt; kind=people variable-pointer(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> RULE_NT'before printing the name of a person ( called target )' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of a person ( called target )' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'group size is a number that varies' {unit: 4} {classified} {interpretation of subject: infs'door'}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'group size' {refined} {eval: NONLOCAL_VARIABLE_NT'group size' {nonlocal: 'group size'(var)number}} {created here}</span>
@ -1494,19 +1497,19 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'group size' {refined} {eval: NONLOCAL_VARIABLE_NT'group size' {nonlocal: 'group size'(var)number}{meaning: {group size = VARIABLE_MC}}}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'1' {refined} {eval: CONSTANT_NT'1' {kind: number} {explicit literal} {number: 1}}</span>
<span class="plain-syntax"> RULE_NT'to clear marked people' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'before listing nondescript items' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'to describe patients' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'to say ( named character - a man ) as pronoun' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'to say ( named character - a woman ) as pronoun' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'to say looks as though dipped in for ( index - a number )' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to clear marked people' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before listing nondescript items' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to describe patients' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to say ( named character - a man ) as pronoun' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to say ( named character - a woman ) as pronoun' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to say looks as though dipped in for ( index - a number )' {unit: 4}</span>
<span class="plain-syntax"> TABLE_NT'table of dipping phrases dipping "looks as though dipped in"' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'a door is usually scenery' {unit: 4} {classified} {interpretation of subject: infs'door'}</span>
<span class="plain-syntax"> VERB_NT'is usually' {certainty:likely} {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'door' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'door'} {creation: &lt;&lt; kind=door(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> ADJECTIVE_NT'scenery' {refined} {predicate: scenery} {creation: &lt;&lt; scenery(x) ^ scenery(x) &gt;&gt;}</span>
<span class="plain-syntax"> RULE_NT'to make delimiter ( index - a number ) of ( count - a number' {unit: 4}</span>
<span class="plain-syntax"> RULE_NT'to say optional comma' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to make delimiter ( index - a number ) of ( count - a number' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to say optional comma' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'test me with go to cold comfort / z / z / z / z / ask vaness' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'test' {verb 'test' 3p p act IS_TENSE +ve} {prep2: with} {special meaning: test-with}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'me'</span>
@ -1584,7 +1587,7 @@ that is, with the content of extensions excluded, and with the content of
<a href="syntax-diagnostics.txt" download>
<button class="download-button">
<img src="../docs-assets/download.png" alt="download icon" height=16 width=16>
Download <b>syntax-diagnostics.txt</b> (Complete syntax tree, 2.5MB)
Download <b>syntax-diagnostics.txt</b> (Complete syntax tree, 2.3MB)
</button>
</a>
</p>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -243,7 +243,7 @@ can't normally be unravelled at compile time.
<span class="plain-syntax"> </span><span class="identifier-syntax">Grading::make_superlative</span><span class="plain-syntax">(</span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">headword</span><span class="plain-syntax">, </span><span class="identifier-syntax">Task::language_of_syntax</span><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ma.html#SP3_3_1" class="named-paragraph-link"><span class="named-paragraph">Feed the preamble for the superlative phrase into the lexer</span><span class="named-paragraph-number">3.3.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ma.html#SP3_3_2" class="named-paragraph-link"><span class="named-paragraph">Feed the body of the superlative phrase into the lexer</span><span class="named-paragraph-number">3.3.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RuleSubtrees::register_recently_lexed_phrases</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ImperativeSubtrees::accept_all</span><span class="plain-syntax">();</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-ma.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_3_1" class="paragraph-anchor"></a><b>&#167;3.3.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Feed the preamble for the superlative phrase into the lexer</span><span class="named-paragraph-number">3.3.1</span></span><span class="comment-syntax"> =</span>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -190,7 +190,7 @@ the doubled use of colons is unfortunate.)
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Adjectives::look_for_headers</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</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">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) == </span><span class="identifier-syntax">RULE_NT</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">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) == </span><span class="identifier-syntax">IMPERATIVE_NT</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;definition-header&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</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">compilation_unit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cm</span><span class="plain-syntax"> = </span><a href="2-cu.html#SP6" class="function-link"><span class="function-syntax">CompilationUnits::current</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-cu.html#SP6" class="function-link"><span class="function-syntax">CompilationUnits::set_current</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
@ -223,7 +223,7 @@ is defined by routine or not.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">) != </span><span class="identifier-syntax">RULE_NT</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">) != </span><span class="identifier-syntax">IMPERATIVE_NT</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">BelievedImpossible</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"don't leave me in suspense"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"write a definition after 'Definition:'!"</span><span class="plain-syntax">);</span>

View file

@ -442,7 +442,7 @@ which were introduced in December 2010.
</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">RTRules::start_list_compilation</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">RTRules::start_list_compilation</span></span>:<br/><a href="4-rls.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTRules::start_list_compilation</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">RTRules::start_list_compilation</span></span>:<br/><a href="4-rls.html#SP12">&#167;12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="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#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">EMPTY_RULEBOOK_INAME_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><a href="4-rtn.html#SP1" class="function-link"><span class="function-syntax">Routines::begin</span></a><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">LocalVariables::add_named_call</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"forbid_breaks"</span><span class="plain-syntax">);</span>
@ -459,7 +459,7 @@ which were introduced in December 2010.
<span class="definition-keyword">define</span> <span class="constant-syntax">RULE_OPTIMISATION_THRESHOLD</span><span class="plain-syntax"> </span><span class="constant-syntax">20</span><span class="plain-syntax"> </span><span class="comment-syntax"> group arrays when larger than this number of rules</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTRules::list_compile</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">RTRules::list_compile</span></span>:<br/><a href="4-rls.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">booking_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">,</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTRules::list_compile</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">RTRules::list_compile</span></span>:<br/><a href="4-rls.html#SP12">&#167;12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">booking_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">identifier</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">action_based</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">parameter_based</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">L</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</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="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb_symb</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
@ -755,6 +755,15 @@ than once for each rule.
</pre>
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>&#167;10. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTRules::compile_NUMBER_RULEBOOKS_CREATED</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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">NUMBER_RULEBOOKS_CREATED_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::named_numeric_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">NUMBER_CREATED</span><span class="plain-syntax">(</span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>&#167;11. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">rulebook_compilation_data</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stv_creator_iname</span><span class="plain-syntax">;</span>
@ -772,7 +781,7 @@ than once for each rule.
<span class="plain-syntax">}</span>
</pre>
<ul class="endnotetexts"><li>The structure rulebook_compilation_data is private to this section.</li></ul>
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>&#167;11. </b>We do not actually compile the I6 routines for a rulebook here, but simply
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>&#167;12. </b>We do not actually compile the I6 routines for a rulebook here, but simply
act as a proxy. The I6 arrays making the rulebooks available to run-time
code are the real outcome of the code in this section.
</p>
@ -834,7 +843,7 @@ code are the real outcome of the code in this section.
<span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTRules::get_stv_creator_iname</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">RTRules::get_stv_creator_iname</span></span>:<br/><a href="4-rls.html#SP11_1">&#167;11.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTRules::get_stv_creator_iname</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">RTRules::get_stv_creator_iname</span></span>:<br/><a href="4-rls.html#SP12_1">&#167;12.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</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">B</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">stv_creator_iname</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">B</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">stv_creator_iname</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">RULEBOOK_STV_CREATOR_FN_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">B</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">rb_package</span><span class="plain-syntax">);</span>
@ -846,7 +855,7 @@ code are the real outcome of the code in this section.
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="identifier-syntax">rulebook</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">StackedVariables::owner_empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">my_variables</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">StackedVariables::compile_frame_creator</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">my_variables</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="4-rls.html#SP11" class="function-link"><span class="function-syntax">RTRules::get_stv_creator_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="4-rls.html#SP12" class="function-link"><span class="function-syntax">RTRules::get_stv_creator_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">B</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">global_compilation_settings</span><span class="plain-syntax">.</span><span class="identifier-syntax">memory_economy_in_force</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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">RULEBOOK_VAR_CREATORS_HL</span><span class="plain-syntax">);</span>
@ -858,10 +867,10 @@ code are the real outcome of the code in this section.
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_numeric_entry</span></a><span class="plain-syntax">(0);</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><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">else</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-rls.html#SP11_1" class="named-paragraph-link"><span class="named-paragraph">Make slow lookup routine</span><span class="named-paragraph-number">11.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-rls.html#SP12_1" class="named-paragraph-link"><span class="named-paragraph">Make slow lookup routine</span><span class="named-paragraph-number">12.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP11_1" class="paragraph-anchor"></a><b>&#167;11.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make slow lookup routine</span><span class="named-paragraph-number">11.1</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP12_1" class="paragraph-anchor"></a><b>&#167;12.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make slow lookup routine</span><span class="named-paragraph-number">12.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -885,7 +894,7 @@ code are the real outcome of the code in this section.
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">RETURN_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_iname</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="4-rls.html#SP11" class="function-link"><span class="function-syntax">RTRules::get_stv_creator_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_iname</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="4-rls.html#SP12" class="function-link"><span class="function-syntax">RTRules::get_stv_creator_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
@ -900,8 +909,8 @@ code are the real outcome of the code in this section.
<span class="plain-syntax"> </span><a href="4-rtn.html#SP4" class="function-link"><span class="function-syntax">Routines::end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-rls.html#SP11">&#167;11</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>&#167;12. </b></p>
<ul class="endnotetexts"><li>This code is used in <a href="4-rls.html#SP12">&#167;12</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>&#167;13. </b></p>
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;notable-rulebook-outcomes&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
@ -912,7 +921,7 @@ code are the real outcome of the code in this section.
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">it</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">is</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">very</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">unlikely</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="SP13" class="paragraph-anchor"></a><b>&#167;13. </b></p>
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>&#167;14. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTRules::new_outcome</span><span class="plain-syntax">(</span><span class="identifier-syntax">named_rulebook_outcome</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rbno</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>

View file

@ -374,7 +374,7 @@ absence of rooms would otherwise result in.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_an_enumeration</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_rulebook_outcome</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP4" class="function-link"><span class="function-syntax">Emit::to_ival</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><a href="4-rls.html#SP13" class="function-link"><span class="function-syntax">RTRules::default_outcome_identifier</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP4" class="function-link"><span class="function-syntax">Emit::to_ival</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><a href="4-rls.html#SP14" class="function-link"><span class="function-syntax">RTRules::default_outcome_identifier</span></a><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>
@ -620,7 +620,7 @@ which might occupy up to 31 characters, the maximum length of an I6 identifier:
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_numeric_entry</span></a><span class="plain-syntax">((</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) (</span><a href="4-rsfk.html#SP11" class="function-link"><span class="function-syntax">RTKinds::weak_id</span></a><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">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTKinds::emit_weak_id_as_val</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">RTKinds::emit_weak_id_as_val</span></span>:<br/><a href="4-rsfk.html#SP15">&#167;15</a>, <a href="4-rsfk.html#SP27_6_1">&#167;27.6.1</a>, <a href="4-rsfk.html#SP27_6_2">&#167;27.6.2</a>, <a href="4-rsfk.html#SP27_6_3">&#167;27.6.3</a>, <a href="4-rsfk.html#SP27_6_4">&#167;27.6.4</a>, <a href="4-rsfk.html#SP27_6_5">&#167;27.6.5</a>, <a href="4-rsfk.html#SP27_6_6">&#167;27.6.6</a><br/>Rules - <a href="4-rls.html#SP13">&#167;13</a><br/>Showme Command - <a href="5-sc.html#SP4_1">&#167;4.1</a>, <a href="5-sc.html#SP4_1_1">&#167;4.1.1</a>, <a href="5-sc.html#SP4_1_1_1">&#167;4.1.1.1</a><br/>Scenes - <a href="5-scn.html#SP5_1">&#167;5.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTKinds::emit_weak_id_as_val</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">RTKinds::emit_weak_id_as_val</span></span>:<br/><a href="4-rsfk.html#SP15">&#167;15</a>, <a href="4-rsfk.html#SP27_6_1">&#167;27.6.1</a>, <a href="4-rsfk.html#SP27_6_2">&#167;27.6.2</a>, <a href="4-rsfk.html#SP27_6_3">&#167;27.6.3</a>, <a href="4-rsfk.html#SP27_6_4">&#167;27.6.4</a>, <a href="4-rsfk.html#SP27_6_5">&#167;27.6.5</a>, <a href="4-rsfk.html#SP27_6_6">&#167;27.6.6</a><br/>Rules - <a href="4-rls.html#SP14">&#167;14</a><br/>Showme Command - <a href="5-sc.html#SP4_1">&#167;4.1</a>, <a href="5-sc.html#SP4_1_1">&#167;4.1.1</a>, <a href="5-sc.html#SP4_1_1_1">&#167;4.1.1.1</a><br/>Scenes - <a href="5-scn.html#SP5_1">&#167;5.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</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">K</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">"cannot emit null kind as val"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</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><span class="identifier-syntax">Kinds::Constructors::iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">);</span>

View file

@ -81,7 +81,7 @@ already been set up, or not. Here's not:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Routines::begin</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">Routines::begin</span></span>:<br/>List Together - <a href="4-lt.html#SP3_1">&#167;3.1</a><br/>Text Literals - <a href="4-tl.html#SP13_2">&#167;13.2</a><br/>Text Substitutions - <a href="4-ts.html#SP11">&#167;11</a><br/>Responses - <a href="4-rsp.html#SP5_1">&#167;5.1</a>, <a href="4-rsp.html#SP5_2">&#167;5.2</a>, <a href="4-rsp.html#SP6_2">&#167;6.2</a><br/>Rules - <a href="4-rls.html#SP3_1">&#167;3.1</a>, <a href="4-rls.html#SP5">&#167;5</a>, <a href="4-rls.html#SP7">&#167;7</a>, <a href="4-rls.html#SP8_1_1">&#167;8.1.1</a>, <a href="4-rls.html#SP11_1">&#167;11.1</a>, <a href="4-rls.html#SP13">&#167;13</a><br/>Equations Support - <a href="4-es.html#SP1">&#167;1</a><br/>Test Scripts - <a href="4-ts2.html#SP3">&#167;3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">&#167;4</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1_1">&#167;1.1</a>, <a href="4-uoart.html#SP1_2">&#167;1.2</a><br/>Variables - <a href="4-vrb.html#SP5_1">&#167;5.1</a><br/>Measurements - <a href="4-msr.html#SP1">&#167;1</a><br/>Adjectives - <a href="4-adj.html#SP3_2">&#167;3.2</a>, <a href="4-adj.html#SP5">&#167;5</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP19_3">&#167;19.3</a>, <a href="4-rsfk.html#SP27_1">&#167;27.1</a>, <a href="4-rsfk.html#SP27_2">&#167;27.2</a>, <a href="4-rsfk.html#SP27_3">&#167;27.3</a>, <a href="4-rsfk.html#SP27_4">&#167;27.4</a>, <a href="4-rsfk.html#SP27_5">&#167;27.5</a>, <a href="4-rsfk.html#SP27_6_1">&#167;27.6.1</a>, <a href="4-rsfk.html#SP27_6_2">&#167;27.6.2</a>, <a href="4-rsfk.html#SP27_6_3">&#167;27.6.3</a>, <a href="4-rsfk.html#SP27_6_4">&#167;27.6.4</a>, <a href="4-rsfk.html#SP27_6_5">&#167;27.6.5</a>, <a href="4-rsfk.html#SP27_6_6">&#167;27.6.6</a>, <a href="4-rsfk.html#SP28">&#167;28</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">&#167;1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4_1">&#167;4.1</a>, <a href="4-vart.html#SP4_2">&#167;4.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP4">&#167;4</a>, <a href="4-rart.html#SP4_2">&#167;4.2</a>, <a href="4-rart.html#SP6">&#167;6</a>, <a href="4-rart.html#SP18_1">&#167;18.1</a>, <a href="4-rart.html#SP18_2">&#167;18.2</a>, <a href="4-rart.html#SP18_3">&#167;18.3</a>, <a href="4-rart.html#SP18_4">&#167;18.4</a>, <a href="4-rart.html#SP18_5">&#167;18.5</a>, <a href="4-rart.html#SP18_6">&#167;18.6</a>, <a href="4-rart.html#SP19">&#167;19</a>, <a href="4-rart.html#SP23">&#167;23</a><br/>Literal Patterns at Run Time - <a href="4-lpart.html#SP2">&#167;2</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP2">&#167;2</a>, <a href="4-rsft.html#SP5">&#167;5</a><br/>Naming - <a href="5-nmn.html#SP2">&#167;2</a><br/>Backdrops - <a href="5-bck.html#SP2_1">&#167;2.1</a>, <a href="5-bck.html#SP2_2">&#167;2.2</a><br/>Regions - <a href="5-rgn.html#SP2">&#167;2</a><br/>The Map - <a href="5-tm.html#SP4">&#167;4</a><br/>Showme Command - <a href="5-sc.html#SP2">&#167;2</a><br/>Scenes - <a href="5-scn.html#SP2">&#167;2</a>, <a href="5-scn.html#SP6">&#167;6</a><br/>Actions - <a href="5-act.html#SP2">&#167;2</a><br/>Looping Over Scope - <a href="5-los.html#SP2_1">&#167;2.1</a><br/>Named Action Patterns - <a href="5-nap.html#SP1">&#167;1</a><br/>Command Grammars - <a href="5-cg.html#SP7">&#167;7</a><br/>Command Grammar Lines - <a href="5-cgl.html#SP2">&#167;2</a>, <a href="5-cgl.html#SP8">&#167;8</a><br/>Noun Filter Tokens - <a href="5-nft.html#SP2">&#167;2</a><br/>Tokens Parsing Values - <a href="5-tpv.html#SP1">&#167;1</a><br/>General Parsing Routines - <a href="5-gpr.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Routines::begin</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">Routines::begin</span></span>:<br/>List Together - <a href="4-lt.html#SP3_1">&#167;3.1</a><br/>Text Literals - <a href="4-tl.html#SP13_2">&#167;13.2</a><br/>Text Substitutions - <a href="4-ts.html#SP11">&#167;11</a><br/>Responses - <a href="4-rsp.html#SP5_1">&#167;5.1</a>, <a href="4-rsp.html#SP5_2">&#167;5.2</a>, <a href="4-rsp.html#SP6_2">&#167;6.2</a><br/>Rules - <a href="4-rls.html#SP3_1">&#167;3.1</a>, <a href="4-rls.html#SP5">&#167;5</a>, <a href="4-rls.html#SP7">&#167;7</a>, <a href="4-rls.html#SP8_1_1">&#167;8.1.1</a>, <a href="4-rls.html#SP12_1">&#167;12.1</a>, <a href="4-rls.html#SP14">&#167;14</a><br/>Equations Support - <a href="4-es.html#SP1">&#167;1</a><br/>Test Scripts - <a href="4-ts2.html#SP3">&#167;3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">&#167;4</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1_1">&#167;1.1</a>, <a href="4-uoart.html#SP1_2">&#167;1.2</a><br/>Variables - <a href="4-vrb.html#SP5_1">&#167;5.1</a><br/>Measurements - <a href="4-msr.html#SP1">&#167;1</a><br/>Adjectives - <a href="4-adj.html#SP3_2">&#167;3.2</a>, <a href="4-adj.html#SP5">&#167;5</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP19_3">&#167;19.3</a>, <a href="4-rsfk.html#SP27_1">&#167;27.1</a>, <a href="4-rsfk.html#SP27_2">&#167;27.2</a>, <a href="4-rsfk.html#SP27_3">&#167;27.3</a>, <a href="4-rsfk.html#SP27_4">&#167;27.4</a>, <a href="4-rsfk.html#SP27_5">&#167;27.5</a>, <a href="4-rsfk.html#SP27_6_1">&#167;27.6.1</a>, <a href="4-rsfk.html#SP27_6_2">&#167;27.6.2</a>, <a href="4-rsfk.html#SP27_6_3">&#167;27.6.3</a>, <a href="4-rsfk.html#SP27_6_4">&#167;27.6.4</a>, <a href="4-rsfk.html#SP27_6_5">&#167;27.6.5</a>, <a href="4-rsfk.html#SP27_6_6">&#167;27.6.6</a>, <a href="4-rsfk.html#SP28">&#167;28</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">&#167;1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4_1">&#167;4.1</a>, <a href="4-vart.html#SP4_2">&#167;4.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP4">&#167;4</a>, <a href="4-rart.html#SP4_2">&#167;4.2</a>, <a href="4-rart.html#SP6">&#167;6</a>, <a href="4-rart.html#SP18_1">&#167;18.1</a>, <a href="4-rart.html#SP18_2">&#167;18.2</a>, <a href="4-rart.html#SP18_3">&#167;18.3</a>, <a href="4-rart.html#SP18_4">&#167;18.4</a>, <a href="4-rart.html#SP18_5">&#167;18.5</a>, <a href="4-rart.html#SP18_6">&#167;18.6</a>, <a href="4-rart.html#SP19">&#167;19</a>, <a href="4-rart.html#SP23">&#167;23</a><br/>Literal Patterns at Run Time - <a href="4-lpart.html#SP2">&#167;2</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP2">&#167;2</a>, <a href="4-rsft.html#SP5">&#167;5</a><br/>Naming - <a href="5-nmn.html#SP2">&#167;2</a><br/>Backdrops - <a href="5-bck.html#SP2_1">&#167;2.1</a>, <a href="5-bck.html#SP2_2">&#167;2.2</a><br/>Regions - <a href="5-rgn.html#SP2">&#167;2</a><br/>The Map - <a href="5-tm.html#SP4">&#167;4</a><br/>Showme Command - <a href="5-sc.html#SP2">&#167;2</a><br/>Scenes - <a href="5-scn.html#SP2">&#167;2</a>, <a href="5-scn.html#SP6">&#167;6</a><br/>Actions - <a href="5-act.html#SP2">&#167;2</a><br/>Looping Over Scope - <a href="5-los.html#SP2_1">&#167;2.1</a><br/>Named Action Patterns - <a href="5-nap.html#SP1">&#167;1</a><br/>Command Grammars - <a href="5-cg.html#SP7">&#167;7</a><br/>Command Grammar Lines - <a href="5-cgl.html#SP2">&#167;2</a>, <a href="5-cgl.html#SP8">&#167;8</a><br/>Noun Filter Tokens - <a href="5-nft.html#SP2">&#167;2</a><br/>Tokens Parsing Values - <a href="5-tpv.html#SP1">&#167;1</a><br/>General Parsing Routines - <a href="5-gpr.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</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">return</span><span class="plain-syntax"> </span><a href="4-rtn.html#SP3" class="function-link"><span class="function-syntax">Routines::begin_framed</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
@ -140,7 +140,7 @@ did not.
</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">Routines::end</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Routines::end</span></span>:<br/>List Together - <a href="4-lt.html#SP3_1">&#167;3.1</a><br/>Text Literals - <a href="4-tl.html#SP13_2">&#167;13.2</a><br/>Text Substitutions - <a href="4-ts.html#SP11">&#167;11</a><br/>Responses - <a href="4-rsp.html#SP5_1">&#167;5.1</a>, <a href="4-rsp.html#SP5_2">&#167;5.2</a>, <a href="4-rsp.html#SP6_2">&#167;6.2</a><br/>Rules - <a href="4-rls.html#SP3_1">&#167;3.1</a>, <a href="4-rls.html#SP5">&#167;5</a>, <a href="4-rls.html#SP7">&#167;7</a>, <a href="4-rls.html#SP8_1_5">&#167;8.1.5</a>, <a href="4-rls.html#SP11_1">&#167;11.1</a>, <a href="4-rls.html#SP13">&#167;13</a><br/>Equations Support - <a href="4-es.html#SP1">&#167;1</a><br/>Test Scripts - <a href="4-ts2.html#SP3">&#167;3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">&#167;4</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1_1">&#167;1.1</a>, <a href="4-uoart.html#SP1_2">&#167;1.2</a><br/>Variables - <a href="4-vrb.html#SP5_1">&#167;5.1</a><br/>Measurements - <a href="4-msr.html#SP1">&#167;1</a><br/>Adjectives - <a href="4-adj.html#SP3_2">&#167;3.2</a>, <a href="4-adj.html#SP5">&#167;5</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP19_3">&#167;19.3</a>, <a href="4-rsfk.html#SP27_1">&#167;27.1</a>, <a href="4-rsfk.html#SP27_2">&#167;27.2</a>, <a href="4-rsfk.html#SP27_3">&#167;27.3</a>, <a href="4-rsfk.html#SP27_4">&#167;27.4</a>, <a href="4-rsfk.html#SP27_5">&#167;27.5</a>, <a href="4-rsfk.html#SP27_6_1">&#167;27.6.1</a>, <a href="4-rsfk.html#SP27_6_2">&#167;27.6.2</a>, <a href="4-rsfk.html#SP27_6_3">&#167;27.6.3</a>, <a href="4-rsfk.html#SP27_6_4">&#167;27.6.4</a>, <a href="4-rsfk.html#SP27_6_5">&#167;27.6.5</a>, <a href="4-rsfk.html#SP27_6_6">&#167;27.6.6</a>, <a href="4-rsfk.html#SP28">&#167;28</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">&#167;1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4_1">&#167;4.1</a>, <a href="4-vart.html#SP4_2">&#167;4.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP4">&#167;4</a>, <a href="4-rart.html#SP4_2">&#167;4.2</a>, <a href="4-rart.html#SP6">&#167;6</a>, <a href="4-rart.html#SP18_1">&#167;18.1</a>, <a href="4-rart.html#SP18_2">&#167;18.2</a>, <a href="4-rart.html#SP18_3">&#167;18.3</a>, <a href="4-rart.html#SP18_4">&#167;18.4</a>, <a href="4-rart.html#SP18_5">&#167;18.5</a>, <a href="4-rart.html#SP18_6">&#167;18.6</a>, <a href="4-rart.html#SP19">&#167;19</a>, <a href="4-rart.html#SP23">&#167;23</a><br/>Literal Patterns at Run Time - <a href="4-lpart.html#SP2">&#167;2</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP2">&#167;2</a>, <a href="4-rsft.html#SP5">&#167;5</a><br/>Naming - <a href="5-nmn.html#SP2">&#167;2</a><br/>Backdrops - <a href="5-bck.html#SP2_1">&#167;2.1</a>, <a href="5-bck.html#SP2_2">&#167;2.2</a><br/>Regions - <a href="5-rgn.html#SP2">&#167;2</a><br/>The Map - <a href="5-tm.html#SP4">&#167;4</a><br/>Showme Command - <a href="5-sc.html#SP2">&#167;2</a><br/>Scenes - <a href="5-scn.html#SP2">&#167;2</a>, <a href="5-scn.html#SP6">&#167;6</a><br/>Actions - <a href="5-act.html#SP2">&#167;2</a><br/>Looping Over Scope - <a href="5-los.html#SP2_1">&#167;2.1</a><br/>Named Action Patterns - <a href="5-nap.html#SP1">&#167;1</a><br/>Command Grammars - <a href="5-cg.html#SP7">&#167;7</a><br/>Command Grammar Lines - <a href="5-cgl.html#SP2">&#167;2</a>, <a href="5-cgl.html#SP8">&#167;8</a><br/>Noun Filter Tokens - <a href="5-nft.html#SP2">&#167;2</a><br/>Tokens Parsing Values - <a href="5-tpv.html#SP1">&#167;1</a><br/>General Parsing Routines - <a href="5-gpr.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Routines::end</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Routines::end</span></span>:<br/>List Together - <a href="4-lt.html#SP3_1">&#167;3.1</a><br/>Text Literals - <a href="4-tl.html#SP13_2">&#167;13.2</a><br/>Text Substitutions - <a href="4-ts.html#SP11">&#167;11</a><br/>Responses - <a href="4-rsp.html#SP5_1">&#167;5.1</a>, <a href="4-rsp.html#SP5_2">&#167;5.2</a>, <a href="4-rsp.html#SP6_2">&#167;6.2</a><br/>Rules - <a href="4-rls.html#SP3_1">&#167;3.1</a>, <a href="4-rls.html#SP5">&#167;5</a>, <a href="4-rls.html#SP7">&#167;7</a>, <a href="4-rls.html#SP8_1_5">&#167;8.1.5</a>, <a href="4-rls.html#SP12_1">&#167;12.1</a>, <a href="4-rls.html#SP14">&#167;14</a><br/>Equations Support - <a href="4-es.html#SP1">&#167;1</a><br/>Test Scripts - <a href="4-ts2.html#SP3">&#167;3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">&#167;4</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1_1">&#167;1.1</a>, <a href="4-uoart.html#SP1_2">&#167;1.2</a><br/>Variables - <a href="4-vrb.html#SP5_1">&#167;5.1</a><br/>Measurements - <a href="4-msr.html#SP1">&#167;1</a><br/>Adjectives - <a href="4-adj.html#SP3_2">&#167;3.2</a>, <a href="4-adj.html#SP5">&#167;5</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP19_3">&#167;19.3</a>, <a href="4-rsfk.html#SP27_1">&#167;27.1</a>, <a href="4-rsfk.html#SP27_2">&#167;27.2</a>, <a href="4-rsfk.html#SP27_3">&#167;27.3</a>, <a href="4-rsfk.html#SP27_4">&#167;27.4</a>, <a href="4-rsfk.html#SP27_5">&#167;27.5</a>, <a href="4-rsfk.html#SP27_6_1">&#167;27.6.1</a>, <a href="4-rsfk.html#SP27_6_2">&#167;27.6.2</a>, <a href="4-rsfk.html#SP27_6_3">&#167;27.6.3</a>, <a href="4-rsfk.html#SP27_6_4">&#167;27.6.4</a>, <a href="4-rsfk.html#SP27_6_5">&#167;27.6.5</a>, <a href="4-rsfk.html#SP27_6_6">&#167;27.6.6</a>, <a href="4-rsfk.html#SP28">&#167;28</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">&#167;1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4_1">&#167;4.1</a>, <a href="4-vart.html#SP4_2">&#167;4.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP4">&#167;4</a>, <a href="4-rart.html#SP4_2">&#167;4.2</a>, <a href="4-rart.html#SP6">&#167;6</a>, <a href="4-rart.html#SP18_1">&#167;18.1</a>, <a href="4-rart.html#SP18_2">&#167;18.2</a>, <a href="4-rart.html#SP18_3">&#167;18.3</a>, <a href="4-rart.html#SP18_4">&#167;18.4</a>, <a href="4-rart.html#SP18_5">&#167;18.5</a>, <a href="4-rart.html#SP18_6">&#167;18.6</a>, <a href="4-rart.html#SP19">&#167;19</a>, <a href="4-rart.html#SP23">&#167;23</a><br/>Literal Patterns at Run Time - <a href="4-lpart.html#SP2">&#167;2</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP2">&#167;2</a>, <a href="4-rsft.html#SP5">&#167;5</a><br/>Naming - <a href="5-nmn.html#SP2">&#167;2</a><br/>Backdrops - <a href="5-bck.html#SP2_1">&#167;2.1</a>, <a href="5-bck.html#SP2_2">&#167;2.2</a><br/>Regions - <a href="5-rgn.html#SP2">&#167;2</a><br/>The Map - <a href="5-tm.html#SP4">&#167;4</a><br/>Showme Command - <a href="5-sc.html#SP2">&#167;2</a><br/>Scenes - <a href="5-scn.html#SP2">&#167;2</a>, <a href="5-scn.html#SP6">&#167;6</a><br/>Actions - <a href="5-act.html#SP2">&#167;2</a><br/>Looping Over Scope - <a href="5-los.html#SP2_1">&#167;2.1</a><br/>Named Action Patterns - <a href="5-nap.html#SP1">&#167;1</a><br/>Command Grammars - <a href="5-cg.html#SP7">&#167;7</a><br/>Command Grammar Lines - <a href="5-cgl.html#SP2">&#167;2</a>, <a href="5-cgl.html#SP8">&#167;8</a><br/>Noun Filter Tokens - <a href="5-nft.html#SP2">&#167;2</a><br/>Tokens Parsing Values - <a href="5-tpv.html#SP1">&#167;1</a><br/>General Parsing Routines - <a href="5-gpr.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::deduced_function_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">currently_compiling_in_frame</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">kernel_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">public_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">currently_compiling_iname</span><span class="plain-syntax">;</span>

View file

@ -429,14 +429,14 @@ a request for a new text substitution to be compiled later...
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ts_code_block</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">RULE_NT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ts_code_block</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">IMPERATIVE_NT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_unit</span><span class="plain-syntax">(</span><span class="identifier-syntax">ts_code_block</span><span class="plain-syntax">, </span><span class="identifier-syntax">ts</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">belongs_to_module</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">compilation_unit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cm</span><span class="plain-syntax"> = </span><a href="2-cu.html#SP6" class="function-link"><span class="function-syntax">CompilationUnits::current</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-cu.html#SP6" class="function-link"><span class="function-syntax">CompilationUnits::set_current_to</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ts</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">belongs_to_module</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ts_code_block</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">INVOCATION_LIST_NT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">ts_code_block</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">, </span><span class="identifier-syntax">ts</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">unsubstituted_text</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">ts_code_block</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">, </span><span class="identifier-syntax">from_text_substitution_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RuleSubtrees::parse_routine_structure</span><span class="plain-syntax">(</span><span class="identifier-syntax">ts_code_block</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ts_code_block</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">UNKNOWN_NT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">ts_code_block</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">, </span><span class="identifier-syntax">ts</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">unsubstituted_text</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Annotations::write_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">ts_code_block</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">next</span><span class="plain-syntax">, </span><span class="identifier-syntax">from_text_substitution_ANNOT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ImperativeSubtrees::accept</span><span class="plain-syntax">(</span><span class="identifier-syntax">ts_code_block</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Routines::Compile::code_block_outer</span><span class="plain-syntax">(0, </span><span class="identifier-syntax">ts_code_block</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">);</span>

View file

@ -246,18 +246,18 @@ Inform users: it increases output to the debugging log.)
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">NODE_METADATA_SETUP_SYNTAX_CALLBACK</span><span class="plain-syntax"> </span><a href="6-st.html#SP8" class="function-link"><span class="function-syntax">SourceText::node_metadata</span></a>
<span class="definition-keyword">enum</span> <span class="constant-syntax">BIBLIOGRAPHIC_NT</span><span class="plain-syntax"> </span><span class="comment-syntax"> For the initial title sentence</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">RULE_NT</span><span class="plain-syntax"> </span><span class="comment-syntax"> "Instead of taking something, ..."</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">IMPERATIVE_NT</span><span class="plain-syntax"> </span><span class="comment-syntax"> "Instead of taking something, ..."</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">INFORM6CODE_NT</span><span class="plain-syntax"> </span><span class="comment-syntax"> "Include (- ... -)</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">TABLE_NT</span><span class="plain-syntax"> </span><span class="comment-syntax"> "Table 1 - Counties of England"</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">EQUATION_NT</span><span class="plain-syntax"> </span><span class="comment-syntax"> "Equation 2 - Newton's Second Law"</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">TRACE_NT</span><span class="plain-syntax"> </span><span class="comment-syntax"> A sentence consisting of an asterisk and optional quoted text</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">list_node_type</span><span class="plain-syntax"> </span><span class="constant-syntax">RULE_NT</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">list_node_type</span><span class="plain-syntax"> </span><span class="constant-syntax">IMPERATIVE_NT</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">list_entry_node_type</span><span class="plain-syntax"> </span><span class="identifier-syntax">UNKNOWN_NT</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">SourceText::node_metadata</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">NodeType::new</span><span class="plain-syntax">(</span><span class="constant-syntax">BIBLIOGRAPHIC_NT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"BIBLIOGRAPHIC_NT"</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">L2_NCAT</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">NodeType::new</span><span class="plain-syntax">(</span><span class="constant-syntax">RULE_NT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"RULE_NT"</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">INFTY</span><span class="plain-syntax">, </span><span class="identifier-syntax">L2_NCAT</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">NodeType::new</span><span class="plain-syntax">(</span><span class="constant-syntax">IMPERATIVE_NT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"IMPERATIVE_NT"</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">INFTY</span><span class="plain-syntax">, </span><span class="identifier-syntax">L2_NCAT</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">NodeType::new</span><span class="plain-syntax">(</span><span class="constant-syntax">INFORM6CODE_NT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"INFORM6CODE_NT"</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">L2_NCAT</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">NodeType::new</span><span class="plain-syntax">(</span><span class="constant-syntax">TABLE_NT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"TABLE_NT"</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">L2_NCAT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TABBED_NFLAG</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">NodeType::new</span><span class="plain-syntax">(</span><span class="constant-syntax">EQUATION_NT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"EQUATION_NT"</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">L2_NCAT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>

View file

@ -388,8 +388,8 @@ sentences or so will exceed the typical stack size Inform has to run in.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG_INDENT</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">recurse</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">RULE_NT</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">summarise</span><span class="plain-syntax">) &amp;&amp; (</span><a href="2-pn.html#SP5" class="function-link"><span class="function-syntax">Node::is</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">RULE_NT</span><span class="plain-syntax">))) </span><span class="identifier-syntax">recurse</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">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IMPERATIVE_NT</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">summarise</span><span class="plain-syntax">) &amp;&amp; (</span><a href="2-pn.html#SP5" class="function-link"><span class="function-syntax">Node::is</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">IMPERATIVE_NT</span><span class="plain-syntax">))) </span><span class="identifier-syntax">recurse</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">endif</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">recurse</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="2-pn.html#SP17" class="function-link"><span class="function-syntax">Node::log_subtree_recursively</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">,</span>

View file

@ -636,7 +636,7 @@ work, have node type <span class="extract"><span class="extract-syntax">SENTENCE
Anything we cannot place into categories (b) or (c) below will go here.
</li><li>(b) "Sentences making up rules". These are sequences of sentences in which
a preamble (ending with a colon, or in certain cases a comma) of node type
<span class="extract"><span class="extract-syntax">RULE_NT</span></span> is followed by a sequence of phrases (ending with semicolons until
<span class="extract"><span class="extract-syntax">IMPERATIVE_NT</span></span> is followed by a sequence of phrases (ending with semicolons until
the last, which ends with a full stop or paragraph break), each of node type
<span class="extract"><span class="extract-syntax">INVOCATION_LIST_NT</span></span>. For instance, the following produces three nodes:
</li></ul>
@ -745,7 +745,7 @@ which divides rule from preamble:
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-snt.html#SP6_9">&#167;6.9</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP6_9_2_1" class="paragraph-anchor"></a><b>&#167;6.9.2.1. </b>In such sentences a comma is read as if it were a colon. (The text up to the
comma will then be given a <span class="extract"><span class="extract-syntax">RULE_NT</span></span> node and the text beyond the comma
comma will then be given a <span class="extract"><span class="extract-syntax">IMPERATIVE_NT</span></span> node and the text beyond the comma
will make a <span class="extract"><span class="extract-syntax">INVOCATION_LIST_NT</span></span> node.)
</p>
@ -801,7 +801,7 @@ its terminating colon. For instance:
</blockquote>
<p class="commentary">(which arrives at this routine as three separate "sentences") will produce
nodes with type <span class="extract"><span class="extract-syntax">RULE_NT</span></span>, <span class="extract"><span class="extract-syntax">INVOCATION_LIST_NT</span></span> and <span class="extract"><span class="extract-syntax">INVOCATION_LIST_NT</span></span> respectively.
nodes with type <span class="extract"><span class="extract-syntax">IMPERATIVE_NT</span></span>, <span class="extract"><span class="extract-syntax">INVOCATION_LIST_NT</span></span> and <span class="extract"><span class="extract-syntax">INVOCATION_LIST_NT</span></span> respectively.
</p>
<p class="commentary">This paragraph of code might look as if it should only be used in assertion
@ -814,7 +814,7 @@ officially sanctioned way to make a definition with a complex phrase:
<p>Definition: a supporter is wobbly: if the player is on it, decide yes; decide no.</p>
</blockquote>
<p class="commentary">This produces four nodes: <span class="extract"><span class="extract-syntax">RULE_NT</span></span>, <span class="extract"><span class="extract-syntax">RULE_NT</span></span>, <span class="extract"><span class="extract-syntax">INVOCATION_LIST_NT</span></span> and
<p class="commentary">This produces four nodes: <span class="extract"><span class="extract-syntax">IMPERATIVE_NT</span></span>, <span class="extract"><span class="extract-syntax">IMPERATIVE_NT</span></span>, <span class="extract"><span class="extract-syntax">INVOCATION_LIST_NT</span></span> and
<span class="extract"><span class="extract-syntax">INVOCATION_LIST_NT</span></span> respectively.
</p>

View file

@ -1573,7 +1573,7 @@ are declared.
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-lp.html#SP27_1" class="named-paragraph-link"><span class="named-paragraph">Compile the printing phrase for this and perhaps subsequent LPs</span><span class="named-paragraph-number">27.1</span></a></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">RuleSubtrees::register_recently_lexed_phrases</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ImperativeSubtrees::accept_all</span><span class="plain-syntax">();</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP27_1" class="paragraph-anchor"></a><b>&#167;27.1. </b>These text substitutions correspond exactly neither to the LPs nor to the
@ -1636,7 +1636,7 @@ the LPs under each named possibility.
<span class="plain-syntax"> </span><span class="identifier-syntax">Kinds::Textual::write</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-lp.html#SP28_1" class="named-paragraph-link"><span class="named-paragraph">Define phrases to convert from a packed value to individual parts</span><span class="named-paragraph-number">28.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-lp.html#SP28_2" class="named-paragraph-link"><span class="named-paragraph">Define a phrase to convert from numerical parts to a packed value</span><span class="named-paragraph-number">28.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RuleSubtrees::register_recently_lexed_phrases</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ImperativeSubtrees::accept_all</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">TEMP</span><span class="plain-syntax">)</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -160,19 +160,19 @@ Inform users: it increases output to the debugging log.)
@d NODE_METADATA_SETUP_SYNTAX_CALLBACK SourceText::node_metadata
@e BIBLIOGRAPHIC_NT /* For the initial title sentence */
@e RULE_NT /* "Instead of taking something, ..." */
@e IMPERATIVE_NT /* "Instead of taking something, ..." */
@e INFORM6CODE_NT /* "Include (- ... -) */
@e TABLE_NT /* "Table 1 - Counties of England" */
@e EQUATION_NT /* "Equation 2 - Newton's Second Law" */
@e TRACE_NT /* A sentence consisting of an asterisk and optional quoted text */
@d list_node_type RULE_NT
@d list_node_type IMPERATIVE_NT
@d list_entry_node_type UNKNOWN_NT
=
void SourceText::node_metadata(void) {
NodeType::new(BIBLIOGRAPHIC_NT, I"BIBLIOGRAPHIC_NT", 0, 0, L2_NCAT, 0);
NodeType::new(RULE_NT, I"RULE_NT", 0, INFTY, L2_NCAT, 0);
NodeType::new(IMPERATIVE_NT, I"IMPERATIVE_NT", 0, INFTY, L2_NCAT, 0);
NodeType::new(INFORM6CODE_NT, I"INFORM6CODE_NT", 0, 0, L2_NCAT, 0);
NodeType::new(TABLE_NT, I"TABLE_NT", 0, 0, L2_NCAT, TABBED_NFLAG);
NodeType::new(EQUATION_NT, I"EQUATION_NT", 0, 0, L2_NCAT, 0);

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,12 +1,12 @@
Total memory consumption was 259996K = 254 MB
62.7% was used for 1336660 objects, in 279893 frames in 204 x 800K = 163200K = 159 MB:
62.7% was used for 1336652 objects, in 279885 frames in 204 x 800K = 163200K = 159 MB:
9.7% inter_tree_node_array 36 x 8192 = 294912 objects, 25953408 bytes
5.4% text_stream_array 2583 x 100 = 258300 objects, 14547456 bytes
3.8% parse_node 129371 objects, 10349680 bytes
2.7% verb_conjugation 160 objects, 7425280 bytes
2.6% linked_list 12669 objects, 7094640 bytes
2.6% linked_list 12665 objects, 7092400 bytes
2.5% parse_node_annotation_array 429 x 500 = 214500 objects, 6877728 bytes
2.3% inter_symbol_array 69 x 1024 = 70656 objects, 6219936 bytes
1.2% pcalc_prop_array 24 x 1000 = 24000 objects, 3264768 bytes
@ -101,7 +101,7 @@ Total memory consumption was 259996K = 254 MB
---- booking_list 407 objects, 13024 bytes
---- literal_text 147 objects, 12936 bytes
---- adjective_iname_holder 320 objects, 12800 bytes
---- stopwatch_timer 145 objects, 11600 bytes
---- stopwatch_timer 141 objects, 11280 bytes
---- pathname 262 objects, 10480 bytes
---- filename 208 objects, 8320 bytes
---- equation_node 68 objects, 7616 bytes
@ -233,9 +233,9 @@ Total memory consumption was 259996K = 254 MB
37.2% was used for memory not allocated for objects:
15.7% text stream storage 42064528 bytes in 264521 claims
15.7% text stream storage 42063780 bytes in 264517 claims
3.4% dictionary storage 9278976 bytes in 16372 claims
---- sorting 1024 bytes in 3 claims
---- sorting 992 bytes in 3 claims
2.7% source text 7200000 bytes in 3 claims
4.0% source text details 10800000 bytes in 2 claims
---- linguistic stock array 81920 bytes in 2 claims
@ -249,5 +249,5 @@ Total memory consumption was 259996K = 254 MB
---- emitter array storage 12320 bytes in 8 claims
---- code generation workspace for objects 9200 bytes in 9 claims
20.4% was overhead - 54480472 bytes = 53203K = 51 MB
20.4% was overhead - 54483032 bytes = 53206K = 51 MB

View file

@ -1,11 +1,11 @@
<s-literal> hits 2097/23838 nti 11 constraint (none) extremes [1, infinity)
<s-literal> hits 2097/23838 nti 12 constraint (none) extremes [1, infinity)
English:
(@1)<cardinal-number>=1
(hits 171/171) (matched: '100') constraint CS = {r0} extremes [1, 1]
(@1)minus (@2)<cardinal-number>=1
(hits 0/658) constraint DS = {11} extremes [2, 2]
(hits 0/2126) constraint DS = {12} extremes [2, 2]
(@1)<quoted-text>=1 (@2)( (@3)<response-letter>=2 (@4))
(hits 273/671) (matched: '"[current item from the multiple object list]: [run paragraph on]" ( a )') constraint DS = {11} extremes [4, 4]
(hits 273/850) (matched: '"[current item from the multiple object list]: [run paragraph on]" ( a )') constraint DS = {12} extremes [4, 4]
(@1)<quoted-text>=1
(hits 1564/5543) (matched: 'Represents geographical locations, both indoor
and outdoor, which are not necessarily areas in a building. A player in one
@ -14,12 +14,12 @@
<s-literal-real-number>=1
(hits 11/9911) (matched: 'plus infinity') constraint (none) extremes [1, infinity)
(@1)<s-literal-truth-state>=1
(hits 78/205) (matched: 'false') constraint CS = {31} extremes [1, 1]
(hits 78/827) (matched: 'false') constraint CS = {6} extremes [1, 1]
<s-literal-list>=1
(hits 0/3682) constraint DS = {7} extremes [2, infinity)
(hits 0/3162) constraint DS = {8} extremes [2, infinity)
(@1)unicode <s-unicode-character>=1
(hits 0/2438) constraint DS = {11} extremes [2, infinity)
(hits 0/4633) constraint DS = {12} extremes [2, infinity)
<s-literal-time>=1
(hits 0/1974) constraint DW = {8, 9, 10} extremes [2, 5]
(hits 0/2167) constraint DW = {9, 10, 11} extremes [2, 5]
<s-literal-unit-notation>=1
(hits 0/9822) constraint (none) extremes [1, infinity)

View file

@ -28,8 +28,8 @@ ROOT_NT
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
UNPARSED_NOUN_NT'asking for information'
UNPARSED_NOUN_NT'out of world'
RULE_NT'carry out asking for information' {unit: 4}
RULE_NT'when play begins' {unit: 4}
IMPERATIVE_NT'carry out asking for information' {unit: 4}
IMPERATIVE_NT'when play begins' {unit: 4}
HEADING_NT'section 1 - errands' {heading 5} {under: H5'section 1 - errands'} {unit: 4}
SENTENCE_NT'the current actor is a person which varies' {unit: 4} {classified}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
@ -39,8 +39,8 @@ ROOT_NT
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'current owner' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'current owner' {nonlocal: 'current owner'(var)person}} {created here}
COMMON_NOUN_NT'person which varies' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values variable-pointer'-k} {creation: << kind=people variable-pointer(x) >>} {eval: TEST_VALUE_NT}
RULE_NT'every turn' {unit: 4}
RULE_NT'every turn' {unit: 4}
IMPERATIVE_NT'every turn' {unit: 4}
IMPERATIVE_NT'every turn' {unit: 4}
SENTENCE_NT'a person can be active or passive' {unit: 4} {classified}
VERB_NT'can be' {verb 'be able to be' s/p 3p act IS_TENSE +ve} {special meaning: can-be}
COMMON_NOUN_NT'a person' {refined} {refers: infs'person'} {creation: << kind=person(x) >>} {eval: TEST_VALUE_NT}
@ -56,34 +56,34 @@ ROOT_NT
VERB_NT'are' {verb 'be' 3p p act IS_TENSE +ve}
PROPER_NOUN_NT'character movement rules' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT {kind: rulebook} {rulebook: character movement}} {created here}
COMMON_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: << kind=rulebook(x) >>} {eval: TEST_VALUE_NT}
RULE_NT'the first character movement rule' {unit: 4}
RULE_NT'a character movement rule' {unit: 4}
RULE_NT'a character movement rule' {unit: 4}
RULE_NT'to decide whether movement has not yet occurred' {unit: 4}
RULE_NT'definition' {unit: 4}
RULE_NT'definition' {unit: 4}
IMPERATIVE_NT'the first character movement rule' {unit: 4}
IMPERATIVE_NT'a character movement rule' {unit: 4}
IMPERATIVE_NT'a character movement rule' {unit: 4}
IMPERATIVE_NT'to decide whether movement has not yet occurred' {unit: 4}
IMPERATIVE_NT'definition' {unit: 4}
IMPERATIVE_NT'definition' {unit: 4}
SENTENCE_NT'the shopowner rules is a rulebook' {unit: 4} {classified} {clears pronouns}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'shopowner rules' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT {kind: rulebook} {rulebook: shopowner}} {created here}
COMMON_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: << kind=rulebook(x) >>} {eval: TEST_VALUE_NT}
RULE_NT'a shopowner rule' {unit: 4}
RULE_NT'report someone closing a door when the person asked owns the' {unit: 4}
RULE_NT'report vanessa closing the metal door when the metal door is' {unit: 4}
RULE_NT'a shopowner rule' {unit: 4}
IMPERATIVE_NT'a shopowner rule' {unit: 4}
IMPERATIVE_NT'report someone closing a door when the person asked owns the' {unit: 4}
IMPERATIVE_NT'report vanessa closing the metal door when the metal door is' {unit: 4}
IMPERATIVE_NT'a shopowner rule' {unit: 4}
SENTENCE_NT'filing is an action applying to one thing' {unit: 4} {classified}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
UNPARSED_NOUN_NT'filing'
UNPARSED_NOUN_NT'applying to one thing'
RULE_NT'before someone filing something which is not carried by the ' {unit: 4}
RULE_NT'carry out someone filing' {unit: 4}
RULE_NT'report someone filing' {unit: 4}
IMPERATIVE_NT'before someone filing something which is not carried by the ' {unit: 4}
IMPERATIVE_NT'carry out someone filing' {unit: 4}
IMPERATIVE_NT'report someone filing' {unit: 4}
SENTENCE_NT'the shopper rules is a rulebook' {unit: 4} {classified} {clears pronouns}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'shopper rules' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT {kind: rulebook} {rulebook: shopper}} {created here}
COMMON_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: << kind=rulebook(x) >>} {eval: TEST_VALUE_NT}
RULE_NT'a shopper rule' {unit: 4}
RULE_NT'a shopper rule' {unit: 4}
RULE_NT'definition' {unit: 4}
IMPERATIVE_NT'a shopper rule' {unit: 4}
IMPERATIVE_NT'a shopper rule' {unit: 4}
IMPERATIVE_NT'definition' {unit: 4}
SENTENCE_NT'protection relates a door ( called x ) to a room ( called y ' {unit: 4} {classified}
VERB_NT'relates' {verb 'relate' 3p s act IS_TENSE +ve} {special meaning: new-relation}
UNPARSED_NOUN_NT'protection' {new relation: protection}
@ -111,8 +111,8 @@ ROOT_NT
COMMON_NOUN_NT'artwork' {indefinite 'an' n/m/f nom/acc s} {refined} {creation: << kind=artwork(x) >>} {refers: infs'artwork'} {eval: TEST_VALUE_NT} {created here}
KIND_NT'kind of thing' {refined} {refers: infs'thing'}
COMMON_NOUN_NT'thing' {refined} {refers: infs'thing'} {creation: << kind=thing(x) >>} {eval: TEST_VALUE_NT}
RULE_NT'before printing the name of an artwork' {unit: 4}
RULE_NT'after printing the name of an artwork' {unit: 4}
IMPERATIVE_NT'before printing the name of an artwork' {unit: 4}
IMPERATIVE_NT'after printing the name of an artwork' {unit: 4}
SENTENCE_NT'an artwork can be submitted or reserved' {unit: 4} {classified}
VERB_NT'can be' {verb 'be able to be' s/p 3p act IS_TENSE +ve} {special meaning: can-be}
COMMON_NOUN_NT'an artwork' {refined} {refers: infs'artwork'} {creation: << kind=artwork(x) >>} {eval: TEST_VALUE_NT}
@ -125,49 +125,49 @@ ROOT_NT
COMMON_NOUN_NT'book' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: << kind=book(x) >>} {refers: infs'book'} {eval: TEST_VALUE_NT} {created here}
KIND_NT'kind of artwork' {refined} {refers: infs'artwork'}
COMMON_NOUN_NT'artwork' {refined} {refers: infs'artwork'} {creation: << kind=artwork(x) >>} {eval: TEST_VALUE_NT}
RULE_NT'before someone resolving a book when the person asked is not' {unit: 4}
RULE_NT'carry out someone resolving a book' {unit: 4}
RULE_NT'report someone resolving a book' {unit: 4}
RULE_NT'before listing contents' {unit: 4}
RULE_NT'before grouping together books' {unit: 4}
IMPERATIVE_NT'before someone resolving a book when the person asked is not' {unit: 4}
IMPERATIVE_NT'carry out someone resolving a book' {unit: 4}
IMPERATIVE_NT'report someone resolving a book' {unit: 4}
IMPERATIVE_NT'before listing contents' {unit: 4}
IMPERATIVE_NT'before grouping together books' {unit: 4}
SENTENCE_NT'a stamped envelope is a kind of thing' {unit: 4} {classified} {interpretation of subject: infs'book'}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
COMMON_NOUN_NT'stamped envelope' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: << kind=stamped envelope(x) >>} {refers: infs'stamped envelope'} {eval: TEST_VALUE_NT} {created here}
KIND_NT'kind of thing' {refined} {refers: infs'thing'}
COMMON_NOUN_NT'thing' {refined} {refers: infs'thing'} {creation: << kind=thing(x) >>} {eval: TEST_VALUE_NT}
RULE_NT'before someone resolving a stamped envelope when the person ' {unit: 4}
RULE_NT'carry out someone resolving a stamped envelope' {unit: 4}
RULE_NT'report someone resolving a stamped envelope' {unit: 4}
RULE_NT'instead of someone resolving a stamped envelope when the per' {unit: 4}
IMPERATIVE_NT'before someone resolving a stamped envelope when the person ' {unit: 4}
IMPERATIVE_NT'carry out someone resolving a stamped envelope' {unit: 4}
IMPERATIVE_NT'report someone resolving a stamped envelope' {unit: 4}
IMPERATIVE_NT'instead of someone resolving a stamped envelope when the per' {unit: 4}
SENTENCE_NT'a dvd is a kind of artwork' {unit: 4} {classified} {interpretation of subject: infs'stamped envelope'}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
COMMON_NOUN_NT'dvd' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: << kind=dvd(x) >>} {refers: infs'dvd'} {eval: TEST_VALUE_NT} {created here}
KIND_NT'kind of artwork' {refined} {refers: infs'artwork'}
COMMON_NOUN_NT'artwork' {refined} {refers: infs'artwork'} {creation: << kind=artwork(x) >>} {eval: TEST_VALUE_NT}
RULE_NT'before someone resolving a dvd when the person asked is not ' {unit: 4}
RULE_NT'carry out someone resolving a dvd' {unit: 4}
RULE_NT'report someone resolving a dvd' {unit: 4}
RULE_NT'instead of someone resolving a dvd when the person asked car' {unit: 4}
RULE_NT'before listing contents' {unit: 4}
RULE_NT'before grouping together dvds' {unit: 4}
IMPERATIVE_NT'before someone resolving a dvd when the person asked is not ' {unit: 4}
IMPERATIVE_NT'carry out someone resolving a dvd' {unit: 4}
IMPERATIVE_NT'report someone resolving a dvd' {unit: 4}
IMPERATIVE_NT'instead of someone resolving a dvd when the person asked car' {unit: 4}
IMPERATIVE_NT'before listing contents' {unit: 4}
IMPERATIVE_NT'before grouping together dvds' {unit: 4}
SENTENCE_NT'approaching is an action applying to one thing' {unit: 4} {classified}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
UNPARSED_NOUN_NT'approaching'
UNPARSED_NOUN_NT'applying to one thing'
RULE_NT'carry out someone approaching' {unit: 4}
IMPERATIVE_NT'carry out someone approaching' {unit: 4}
SENTENCE_NT'a coupon is a kind of thing' {unit: 4} {classified} {interpretation of subject: infs'dvd'}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
COMMON_NOUN_NT'coupon' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: << kind=coupon(x) >>} {refers: infs'coupon'} {eval: TEST_VALUE_NT} {created here}
KIND_NT'kind of thing' {refined} {refers: infs'thing'}
COMMON_NOUN_NT'thing' {refined} {refers: infs'thing'} {creation: << kind=thing(x) >>} {eval: TEST_VALUE_NT}
RULE_NT'carry out someone resolving a coupon' {unit: 4}
IMPERATIVE_NT'carry out someone resolving a coupon' {unit: 4}
SENTENCE_NT'the block giving rule is not listed in any rulebook' {unit: 4} {classified}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {rule placement sense: negative} {special meaning: rule-listed-in}
UNPARSED_NOUN_NT'the block giving rule'
UNPARSED_NOUN_NT'in any rulebook'
RULE_NT'check giving something to someone ( this is the block player' {unit: 4}
RULE_NT'before someone resolving a coupon when the person asked is n' {unit: 4}
RULE_NT'after someone giving a coupon to vanessa' {unit: 4}
IMPERATIVE_NT'check giving something to someone ( this is the block player' {unit: 4}
IMPERATIVE_NT'before someone resolving a coupon when the person asked is n' {unit: 4}
IMPERATIVE_NT'after someone giving a coupon to vanessa' {unit: 4}
SENTENCE_NT'infection color is a kind of value' {unit: 4} {classified} {interpretation of subject: infs'coupon'}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
COMMON_NOUN_NT'infection color' {refined} {creation: << kind=infection color(x) >>} {refers: infs'object'-k} {eval: TEST_VALUE_NT} {created here}
@ -227,7 +227,7 @@ ROOT_NT
AND_NT',' {refined}
PROPER_NOUN_NT'saffron silk' {refined} {refers: infs'saffron silk'} {eval: CONSTANT_NT'saffron silk' {kind: infection color} {instance: I86'saffron silk'[infection color]} {enumeration: 25}} {created here}
PROPER_NOUN_NT'cookie dough cream' {refined} {refers: infs'cookie dough cream'} {eval: CONSTANT_NT'cookie dough cream' {kind: infection color} {instance: I87'cookie dough cream'[infection color]} {enumeration: 26}} {created here}
RULE_NT'to say list of flavors' {unit: 4}
IMPERATIVE_NT'to say list of flavors' {unit: 4}
SENTENCE_NT'understand "ask vanessa for [flavored ice cream]" as buying ' {unit: 4} {classified}
VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
UNPARSED_NOUN_NT'"ask vanessa for [flavored ice cream]"'
@ -240,8 +240,8 @@ ROOT_NT
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
UNPARSED_NOUN_NT'buying the flavor'
UNPARSED_NOUN_NT'applying to one infection color'
RULE_NT'check buying the flavor' {unit: 4}
RULE_NT'carry out buying the flavor' {unit: 4}
IMPERATIVE_NT'check buying the flavor' {unit: 4}
IMPERATIVE_NT'carry out buying the flavor' {unit: 4}
SENTENCE_NT'understand "ice cream" or "cream" or "ice" or "sherbet" or "' {unit: 4} {classified}
VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
UNPARSED_NOUN_NT'"ice cream" or "cream" or "ice" or "sherbet" or "sorbet"'
@ -275,12 +275,12 @@ ROOT_NT
VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
UNPARSED_NOUN_NT'the infection color property'
UNPARSED_NOUN_NT'referring to an ice cream cone'
RULE_NT'carry out someone resolving an ice cream cone' {unit: 4}
RULE_NT'instead of someone eating a fresh ice cream cone' {unit: 4}
RULE_NT'report someone eating an ice cream cone' {unit: 4}
RULE_NT'before printing the name of an ice cream cone' {unit: 4}
IMPERATIVE_NT'carry out someone resolving an ice cream cone' {unit: 4}
IMPERATIVE_NT'instead of someone eating a fresh ice cream cone' {unit: 4}
IMPERATIVE_NT'report someone eating an ice cream cone' {unit: 4}
IMPERATIVE_NT'before printing the name of an ice cream cone' {unit: 4}
HEADING_NT'section 2 - infection rules' {heading 5} {under: H5'section 2 - infection rules'} {unit: 4}
RULE_NT'this is the infection rule' {unit: 4}
IMPERATIVE_NT'this is the infection rule' {unit: 4}
SENTENCE_NT'a person can be infected or clean' {unit: 4} {classified}
VERB_NT'can be' {verb 'be able to be' s/p 3p act IS_TENSE +ve} {special meaning: can-be}
COMMON_NOUN_NT'a person' {refined} {refers: infs'person'} {creation: << kind=person(x) >>} {eval: TEST_VALUE_NT}
@ -293,11 +293,11 @@ ROOT_NT
COMMON_NOUN_NT'person' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'person'} {creation: << kind=person(x) >>} {eval: TEST_VALUE_NT}
ALLOWED_NT'has' {refined}
UNPARSED_NOUN_NT'infection color' {indefinite 'an' n/m/f nom/acc s} {refined}
RULE_NT'every turn' {unit: 4}
RULE_NT'definition' {unit: 4}
RULE_NT'definition' {unit: 4}
RULE_NT'when play begins' {unit: 4}
RULE_NT'every turn' {unit: 4}
IMPERATIVE_NT'every turn' {unit: 4}
IMPERATIVE_NT'definition' {unit: 4}
IMPERATIVE_NT'definition' {unit: 4}
IMPERATIVE_NT'when play begins' {unit: 4}
IMPERATIVE_NT'every turn' {unit: 4}
SENTENCE_NT'understand "sneeze on [something]" as sneezing on' {unit: 4} {classified}
VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
UNPARSED_NOUN_NT'"sneeze on [something]"'
@ -306,11 +306,11 @@ ROOT_NT
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
UNPARSED_NOUN_NT'sneezing on'
UNPARSED_NOUN_NT'applying to one thing'
RULE_NT'check sneezing on' {unit: 4}
RULE_NT'carry out sneezing on' {unit: 4}
RULE_NT'carry out someone sneezing on' {unit: 4}
RULE_NT'report sneezing on' {unit: 4}
RULE_NT'report someone sneezing on' {unit: 4}
IMPERATIVE_NT'check sneezing on' {unit: 4}
IMPERATIVE_NT'carry out sneezing on' {unit: 4}
IMPERATIVE_NT'carry out someone sneezing on' {unit: 4}
IMPERATIVE_NT'report sneezing on' {unit: 4}
IMPERATIVE_NT'report someone sneezing on' {unit: 4}
SENTENCE_NT'understand "inject [someone] with [something]" as injecting ' {unit: 4} {classified}
VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
UNPARSED_NOUN_NT'"inject [someone] with [something]"'
@ -331,10 +331,10 @@ ROOT_NT
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
UNPARSED_NOUN_NT'injecting it with'
UNPARSED_NOUN_NT'applying to two things'
RULE_NT'check injecting it with' {unit: 4}
RULE_NT'carry out injecting it with' {unit: 4}
RULE_NT'after injecting the player with something' {unit: 4}
RULE_NT'report injecting it with' {unit: 4}
IMPERATIVE_NT'check injecting it with' {unit: 4}
IMPERATIVE_NT'carry out injecting it with' {unit: 4}
IMPERATIVE_NT'after injecting the player with something' {unit: 4}
IMPERATIVE_NT'report injecting it with' {unit: 4}
HEADING_NT'section 3 - geography' {heading 5} {under: H5'section 3 - geography'} {unit: 4}
INCLUSION_NT'include locksmith by emily short' {unit: 4}
HEADING_NT'version 12 of locksmith by emily short begins here' {heading 0} {under: H0'version 12 of locksmith by emily short begins here'} {includes: Locksmith by Emily Short v12 } {unit: 4}
@ -359,9 +359,9 @@ ROOT_NT
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
UNPARSED_NOUN_NT'going toward'
UNPARSED_NOUN_NT'applying to one thing'
RULE_NT'check going toward' {unit: 4}
RULE_NT'carry out going toward' {unit: 4}
RULE_NT'instead of waiting when the destination of the player is not' {unit: 4}
IMPERATIVE_NT'check going toward' {unit: 4}
IMPERATIVE_NT'carry out going toward' {unit: 4}
IMPERATIVE_NT'instead of waiting when the destination of the player is not' {unit: 4}
SENTENCE_NT'understand "stop" or "cease" as stopping' {unit: 4} {classified}
VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
UNPARSED_NOUN_NT'"stop" or "cease"'
@ -370,11 +370,11 @@ ROOT_NT
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
UNPARSED_NOUN_NT'stopping'
UNPARSED_NOUN_NT'applying to nothing'
RULE_NT'carry out stopping' {unit: 4}
RULE_NT'report stopping' {unit: 4}
RULE_NT'after going to an air-conditioned room' {unit: 4}
RULE_NT'after going from an air-conditioned room' {unit: 4}
RULE_NT'instead of listening to an air-conditioned room' {unit: 4}
IMPERATIVE_NT'carry out stopping' {unit: 4}
IMPERATIVE_NT'report stopping' {unit: 4}
IMPERATIVE_NT'after going to an air-conditioned room' {unit: 4}
IMPERATIVE_NT'after going from an air-conditioned room' {unit: 4}
IMPERATIVE_NT'instead of listening to an air-conditioned room' {unit: 4}
SENTENCE_NT'the alfred cralle pool hall is a room' {unit: 4} {classified} {interpretation of subject: infs'person'}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'alfred cralle pool hall' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'alfred cralle pool hall'} {eval: CONSTANT_NT'alfred cralle pool hall' {kind: object} {instance: I88'alfred cralle pool hall'} {enumeration: 0}} {created here}
@ -416,7 +416,7 @@ ROOT_NT
PROPER_NOUN_NT'felt door' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'felt door'} {eval: CONSTANT_NT'felt door' {kind: door} {instance: I90'felt door'} {enumeration: 0}}
PROPER_NOUN_NT'description' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'description'=text}}
PROPER_NOUN_NT'"It has a prominent lock, designed for an old-fashioned key.' {refined} {eval: CONSTANT_NT'"It has a prominent lock, designed for an old-fashioned key.' {kind: text}}
RULE_NT'after locking a door with something in the presence of an ot' {unit: 4}
IMPERATIVE_NT'after locking a door with something in the presence of an ot' {unit: 4}
SENTENCE_NT'nancy johnson memorial square is west of the felt door' {unit: 4} {classified} {interpretation of subject: infs'key to the city'}
VERB_NT'is west of' {verb 'be' 3p s act IS_TENSE +ve} {prep1: west of}
PROPER_NOUN_NT'nancy johnson memorial square' {refined} {refers: infs'nancy johnson memorial square'} {eval: CONSTANT_NT'nancy johnson memorial square' {kind: object} {instance: I92'nancy johnson memorial square'} {enumeration: 0}} {created here}
@ -478,8 +478,8 @@ ROOT_NT
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'slot' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'slot'} {eval: CONSTANT_NT'slot' {kind: object} {instance: I97'slot'} {enumeration: 0}}
COMMON_NOUN_NT'container' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'container'} {creation: << kind=container(x) >>} {eval: TEST_VALUE_NT}
RULE_NT'carry out inserting something into the slot' {unit: 4}
RULE_NT'report inserting something into the slot' {unit: 4}
IMPERATIVE_NT'carry out inserting something into the slot' {unit: 4}
IMPERATIVE_NT'report inserting something into the slot' {unit: 4}
SENTENCE_NT'hamwi street is northeast of an iron gate' {unit: 4} {classified} {interpretation of subject: infs'slot'}
VERB_NT'is northeast of' {verb 'be' 3p s act IS_TENSE +ve} {prep1: northeast of}
PROPER_NOUN_NT'hamwi street' {refined} {refers: infs'hamwi street'} {eval: CONSTANT_NT'hamwi street' {kind: object} {instance: I98'hamwi street'} {enumeration: 0}} {created here}
@ -503,7 +503,7 @@ ROOT_NT
AND_NT'and' {refined}
ADJECTIVE_NT'lockable' {refined} {predicate: lockable} {creation: << lockable(x) ^ lockable(x) >>}
ADJECTIVE_NT'unlocked' {refined} {predicate: unlocked} {creation: << unlocked(x) ^ unlocked(x) >>}
RULE_NT'before printing the name of the iron gate while not opening ' {unit: 4}
IMPERATIVE_NT'before printing the name of the iron gate while not opening ' {unit: 4}
SENTENCE_NT'cold comfort ice cream is north of a metal door' {unit: 4} {classified} {interpretation of subject: infs'iron gate'}
VERB_NT'is north of' {verb 'be' 3p s act IS_TENSE +ve} {prep1: north of}
PROPER_NOUN_NT'cold comfort ice cream' {refined} {refers: infs'cold comfort ice cream'} {eval: CONSTANT_NT'cold comfort ice cream' {kind: object} {instance: I100'cold comfort ice cream'} {enumeration: 0}} {created here}
@ -609,8 +609,8 @@ ROOT_NT
VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
UNPARSED_NOUN_NT'"glass"'
UNPARSED_NOUN_NT'the box'
RULE_NT'instead of attacking the closed emergency box' {unit: 4}
RULE_NT'instead of attacking the open emergency box' {unit: 4}
IMPERATIVE_NT'instead of attacking the closed emergency box' {unit: 4}
IMPERATIVE_NT'instead of attacking the open emergency box' {unit: 4}
SENTENCE_NT'the syringe is in the emergency box' {unit: 4} {classified} {interpretation of subject: infs'emergency box'}
VERB_NT'is in' {verb 'be' 3p s act IS_TENSE +ve} {prep1: in}
PROPER_NOUN_NT'syringe' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'syringe'} {eval: CONSTANT_NT'syringe' {kind: object} {instance: I109'syringe'} {enumeration: 0}} {created here}
@ -713,9 +713,9 @@ ROOT_NT
SENTENCE_NT'use full-length room descriptions' {unit: 4} {classified}
VERB_NT'use' {verb 'use' 3p p act IS_TENSE +ve} {special meaning: use}
UNPARSED_NOUN_NT'full-length room descriptions'
RULE_NT'after looking in an outdoors room' {unit: 4}
RULE_NT'definition' {unit: 4}
RULE_NT'before exiting when the player is in an indoors room' {unit: 4}
IMPERATIVE_NT'after looking in an outdoors room' {unit: 4}
IMPERATIVE_NT'definition' {unit: 4}
IMPERATIVE_NT'before exiting when the player is in an indoors room' {unit: 4}
SENTENCE_NT'blank is a room' {unit: 4} {classified} {interpretation of subject: infs'key to the city'}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'blank' {refined} {refers: infs'blank'} {eval: CONSTANT_NT'blank' {kind: object} {instance: I113'blank'} {enumeration: 0}} {created here}
@ -941,15 +941,15 @@ ROOT_NT
PROPER_NOUN_NT'ned' {refined} {refers: infs'ned'} {eval: CONSTANT_NT'ned' {kind: man} {instance: I166'ned'} {enumeration: 0}}
RELATIONSHIP_NT'owns' {meaning: ownership-r} {refined}
PROPER_NOUN_NT'movie rental' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'movie rental store'} {eval: CONSTANT_NT'movie rental store' {kind: object} {instance: I104'movie rental store'} {enumeration: 0}}
RULE_NT'after printing the name of someone ( called target ) while l' {unit: 4}
IMPERATIVE_NT'after printing the name of someone ( called target ) while l' {unit: 4}
SENTENCE_NT'the description of a person is usually "[The noun] [if the n' {unit: 4} {classified} {interpretation of subject: infs'ned'}
VERB_NT'is usually' {certainty:likely} {verb 'be' 3p s act IS_TENSE +ve}
X_OF_Y_NT'description of a person' {definite 'the' n/m/f s/p nom/acc} {refined}
COMMON_NOUN_NT'person' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'person'} {creation: << kind=person(x) >>} {eval: TEST_VALUE_NT}
PROPER_NOUN_NT'description' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'description'=text}}
PROPER_NOUN_NT'"[The noun] [if the noun is clean]looks healthy[otherwise]is' {refined} {eval: CONSTANT_NT'"[The noun] [if the noun is clean]looks healthy[otherwise]is' {kind: text}}
RULE_NT'after examining another person who is carrying something' {unit: 4}
RULE_NT'when play begins' {unit: 4}
IMPERATIVE_NT'after examining another person who is carrying something' {unit: 4}
IMPERATIVE_NT'when play begins' {unit: 4}
HEADING_NT'section 5 - conversation' {heading 5} {under: H5'section 5 - conversation'} {unit: 4}
SENTENCE_NT'a person has a table name called conversation' {unit: 4} {classified}
VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
@ -958,8 +958,8 @@ ROOT_NT
PROPERTYCALLED_NT'called'
UNPARSED_NOUN_NT'table name' {indefinite 'a' n/m/f nom/acc s}
UNPARSED_NOUN_NT'conversation'
RULE_NT'instead of asking someone about something' {unit: 4}
RULE_NT'instead of telling someone about something' {unit: 4}
IMPERATIVE_NT'instead of asking someone about something' {unit: 4}
IMPERATIVE_NT'instead of telling someone about something' {unit: 4}
SENTENCE_NT'understand "recap" or "recall" or "review" as recalling conv' {unit: 4} {classified}
VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}
UNPARSED_NOUN_NT'"recap" or "recall" or "review"'
@ -968,7 +968,7 @@ ROOT_NT
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
UNPARSED_NOUN_NT'recalling conversations'
UNPARSED_NOUN_NT'applying to nothing'
RULE_NT'carry out recalling conversations' {unit: 4}
IMPERATIVE_NT'carry out recalling conversations' {unit: 4}
SENTENCE_NT'the conversation of a person is usually table of general chi' {unit: 4} {classified} {interpretation of subject: infs'person'}
VERB_NT'is usually' {certainty:likely} {verb 'be' 3p s act IS_TENSE +ve}
X_OF_Y_NT'conversation of a person' {definite 'the' n/m/f s/p nom/acc} {refined}
@ -983,7 +983,7 @@ ROOT_NT
PROPER_NOUN_NT'conversation' {refined} {eval: CONSTANT_NT {kind: table names valued property} {property: 'conversation'=table name}}
PROPER_NOUN_NT'table of vanessa chatter' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'table of vanessa chatter' {kind: table name} {table: table_data}{meaning: {table of vanessa chatter = TABLE_MC}}}
TABLE_NT'table of vanessa chatter topic reply summary turn stamp char' {unit: 4}
RULE_NT'after reading a command' {unit: 4}
IMPERATIVE_NT'after reading a command' {unit: 4}
HEADING_NT'section 6 - movement description' {heading 5} {under: H5'section 6 - movement description'} {unit: 4}
SENTENCE_NT'a person has some text called walk style' {unit: 4} {classified}
VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
@ -1030,8 +1030,8 @@ ROOT_NT
PROPER_NOUN_NT'"sashay"' {refined} {eval: CONSTANT_NT'"sashay"' {kind: text}}
TABLE_NT'table of visible exits character second third heading chosen' {unit: 4}
TABLE_NT'table of visible entrances character second third heading ch' {unit: 4}
RULE_NT'to clear ( current table - a table name )' {unit: 4}
RULE_NT'to tidy departures of ( current table - a table name )' {unit: 4}
IMPERATIVE_NT'to clear ( current table - a table name )' {unit: 4}
IMPERATIVE_NT'to tidy departures of ( current table - a table name )' {unit: 4}
SENTENCE_NT'a door has a person called last opener' {unit: 4} {classified} {interpretation of subject: infs'person'}
VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}
COMMON_NOUN_NT'door' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'door'} {creation: << kind=door(x) >>} {eval: TEST_VALUE_NT}
@ -1039,21 +1039,21 @@ ROOT_NT
PROPERTYCALLED_NT'called'
UNPARSED_NOUN_NT'person' {indefinite 'a' n/m/f nom/acc s}
UNPARSED_NOUN_NT'last opener'
RULE_NT'report someone opening a door' {unit: 4}
RULE_NT'report someone going through a door ( called route )' {unit: 4}
IMPERATIVE_NT'report someone opening a door' {unit: 4}
IMPERATIVE_NT'report someone going through a door ( called route )' {unit: 4}
SENTENCE_NT'the last thing named is a thing that varies' {unit: 4} {classified} {interpretation of subject: infs'door'}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'last thing named' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'last thing named' {nonlocal: 'last thing named'(var)thing}} {created here}
COMMON_NOUN_NT'thing that varies' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values variable-pointer'-k} {creation: << kind=things variable-pointer(x) >>} {eval: TEST_VALUE_NT}
RULE_NT'before printing the name of something ( called target ) whic' {unit: 4}
RULE_NT'report someone going a direction' {unit: 4}
RULE_NT'this is the movement reporting rule' {unit: 4}
RULE_NT'to generate descriptions from ( current table - a table name' {unit: 4}
IMPERATIVE_NT'before printing the name of something ( called target ) whic' {unit: 4}
IMPERATIVE_NT'report someone going a direction' {unit: 4}
IMPERATIVE_NT'this is the movement reporting rule' {unit: 4}
IMPERATIVE_NT'to generate descriptions from ( current table - a table name' {unit: 4}
SENTENCE_NT'the last person named is a person that varies' {unit: 4} {classified} {interpretation of subject: infs'door'}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'last person named' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'last person named' {nonlocal: 'last person named'(var)person}} {created here}
COMMON_NOUN_NT'person that varies' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values variable-pointer'-k} {creation: << kind=people variable-pointer(x) >>} {eval: TEST_VALUE_NT}
RULE_NT'before printing the name of a person ( called target )' {unit: 4}
IMPERATIVE_NT'before printing the name of a person ( called target )' {unit: 4}
SENTENCE_NT'group size is a number that varies' {unit: 4} {classified} {interpretation of subject: infs'door'}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'group size' {refined} {eval: NONLOCAL_VARIABLE_NT'group size' {nonlocal: 'group size'(var)number}} {created here}
@ -1062,19 +1062,19 @@ ROOT_NT
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'group size' {refined} {eval: NONLOCAL_VARIABLE_NT'group size' {nonlocal: 'group size'(var)number}{meaning: {group size = VARIABLE_MC}}}
PROPER_NOUN_NT'1' {refined} {eval: CONSTANT_NT'1' {kind: number} {explicit literal} {number: 1}}
RULE_NT'to clear marked people' {unit: 4}
RULE_NT'before listing nondescript items' {unit: 4}
RULE_NT'to describe patients' {unit: 4}
RULE_NT'to say ( named character - a man ) as pronoun' {unit: 4}
RULE_NT'to say ( named character - a woman ) as pronoun' {unit: 4}
RULE_NT'to say looks as though dipped in for ( index - a number )' {unit: 4}
IMPERATIVE_NT'to clear marked people' {unit: 4}
IMPERATIVE_NT'before listing nondescript items' {unit: 4}
IMPERATIVE_NT'to describe patients' {unit: 4}
IMPERATIVE_NT'to say ( named character - a man ) as pronoun' {unit: 4}
IMPERATIVE_NT'to say ( named character - a woman ) as pronoun' {unit: 4}
IMPERATIVE_NT'to say looks as though dipped in for ( index - a number )' {unit: 4}
TABLE_NT'table of dipping phrases dipping "looks as though dipped in"' {unit: 4}
SENTENCE_NT'a door is usually scenery' {unit: 4} {classified} {interpretation of subject: infs'door'}
VERB_NT'is usually' {certainty:likely} {verb 'be' 3p s act IS_TENSE +ve}
COMMON_NOUN_NT'door' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'door'} {creation: << kind=door(x) >>} {eval: TEST_VALUE_NT}
ADJECTIVE_NT'scenery' {refined} {predicate: scenery} {creation: << scenery(x) ^ scenery(x) >>}
RULE_NT'to make delimiter ( index - a number ) of ( count - a number' {unit: 4}
RULE_NT'to say optional comma' {unit: 4}
IMPERATIVE_NT'to make delimiter ( index - a number ) of ( count - a number' {unit: 4}
IMPERATIVE_NT'to say optional comma' {unit: 4}
SENTENCE_NT'test me with go to cold comfort / z / z / z / z / ask vaness' {unit: 4} {classified}
VERB_NT'test' {verb 'test' 3p p act IS_TENSE +ve} {prep2: with} {special meaning: test-with}
UNPARSED_NOUN_NT'me'

View file

@ -1,27 +1,26 @@
100.0% in inform7 run
66.9% in compilation to Inter
25.4% in //Phrases::Manager::compile_first_block//
8.9% in //Phrases::Manager::compile_as_needed//
6.9% in //Strings::compile_responses//
6.1% in //InferenceSubjects::emit_all//
3.5% in //MajorNodes::pre_pass//
66.2% in compilation to Inter
25.6% in //ImperativeDefinitions::compile_first_block//
8.4% in //ImperativeDefinitions::compile_as_needed//
7.1% in //Strings::compile_responses//
6.2% in //InferenceSubjects::emit_all//
3.8% in //MajorNodes::pre_pass//
3.3% in //MajorNodes::pass_1//
2.2% in //Phrases::Manager::RulePrintingRule_routine//
1.8% in //Phrases::Manager::rulebooks_array//
1.1% in //RTVerbs::ConjugateVerb//
0.9% in //Phrases::Manager::traverse//
0.5% in //World::stage_V//
2.0% in //RTRules::RulePrintingRule_routine//
1.8% in //RTRules::rulebooks_array_array//
1.6% in //ImperativeDefinitions::find_phrases_and_rules//
0.9% in //RTVerbs::ConjugateVerb//
0.3% in //MajorNodes::pass_2//
0.3% in //Phrases::Manager::compile_rulebooks//
0.3% in //Phrases::Manager::parse_rule_parameters//
0.3% in //RTRelations::compile_defined_relations//
0.3% in //RTRules::compile_rulebooks//
0.3% in //World::stage_V//
0.1% in //RTCommandGrammars::compile_all//
0.1% in //RTKinds::compile_data_type_support_routines//
0.1% in //Task::make_built_in_kind_constructors//
4.0% not specifically accounted for
30.6% in running Inter pipeline
3.3% not specifically accounted for
31.5% in running Inter pipeline
10.4% in inter step 2/12: link
9.9% in step preparation
9.7% in inter step 2/12: link
7.1% in inter step 12/12: generate inform6 -> auto.inf
7.3% in inter step 12/12: generate inform6 -> auto.inf
0.3% in inter step 9/12: make-identifiers-unique
0.1% in inter step 10/12: reconcile-verbs
0.1% in inter step 11/12: eliminate-redundant-labels
@ -30,5 +29,5 @@
0.1% in inter step 7/12: resolve-external-symbols
0.1% in inter step 8/12: inspect-plugs
2.4% not specifically accounted for
2.0% in supervisor
1.8% in supervisor
0.4% not specifically accounted for

View file

@ -43,7 +43,7 @@ A full printout of the syntax tree (see //syntax: What This Module Does//)
is a roughly 20,000-line text file, and again is too long to quote in full.
This is a summary, showing just the portion of tree from the main source text,
that is, with the content of extensions excluded, and with the content of
|RULE_NT| also cut. It still makes for a lengthy read:
|IMPERATIVE_NT| also cut. It still makes for a lengthy read:
= (undisplayed text from Figures/syntax-summary.txt)

View file

@ -1,62 +1,75 @@
[RuleSubtrees::] Rule Subtrees.
[ImperativeSubtrees::] Imperative Subtrees.
To tidy up invocation nodes into a list of children under the relevant rule
node, and so turn each rule definition into a single subtree.
To tidy up blocks of rule and phrase definition in the syntax tree.
@ Initially, the invocations (parsed as just |UNKNOWN_NT|) defining a
rule (|RULE_NT|) are simply listed after it in the parse tree, but we
want them to become its children, and we give them the node type
|INVOCATION_LIST_NT|.
This function is used whenever new material is added. Whenever it finds a
childless |RULE_NT| followed by a sequence of |UNKNOWN_NT| nodes, it
joins these in sequence as children of the |RULE_NT|. Since it always
acts so as to leave a non-zero number of children, and since it acts only
on childless nodes, it cannot ever act on the same node twice.
@ Blocks of imperative code in Inform 7 source text enter the syntax tree
at |IMPERATIVE_NT| nodes: some define phrases, some define rules. Those nodes
are initially followed by a run of |UNKNOWN_NT| nodes for the actual code.
The process of "acceptance" turns such definitions into a subtree, as
follows:
= (text)
IMPERATIVE_NT 'every turn' IMPERATIVE_NT 'every turn
UNKNOWN_NT 'say "Hello!"' --> INVOCATION_LIST_NT 'say "Hello!"'
UNKNOWN_NT 'now the guard is alert' INVOCATION_LIST_NT 'now the guard is alert'
=
//ImperativeSubtrees::accept// needs to be called on every |IMPERATIVE_NT| node in order
for this to work; note that it does nothing further, but also causes no harm,
if called multiple times on the same node. //ImperativeSubtrees::accept_all// can
therefore safely be used to sweep up any |IMPERATIVE_NT| nodes not already processed.
=
void RuleSubtrees::register_recently_lexed_phrases(void) {
void ImperativeSubtrees::accept_all(void) {
if (problem_count > 0) return; /* for then the tree is perhaps broken anyway */
SyntaxTree::traverse(Task::syntax_tree(), RuleSubtrees::demote_command_nodes);
SyntaxTree::traverse(Task::syntax_tree(), ImperativeSubtrees::accept);
}
void RuleSubtrees::demote_command_nodes(parse_node *p) {
if ((Node::get_type(p) == RULE_NT) && (p->down == NULL)) {
void ImperativeSubtrees::accept(parse_node *p) {
if ((Node::get_type(p) == IMPERATIVE_NT) && (p->down == NULL)) {
parse_node *end_def = p;
while ((end_def->next) && (Node::get_type(end_def->next) == UNKNOWN_NT))
end_def = end_def->next;
if (p == end_def) return; /* |RULE_NT| not followed by any |UNKNOWN_NT|s */
if (p == end_def) return; /* |IMPERATIVE_NT| not followed by any |UNKNOWN_NT|s */
/* splice so that |p->next| to |end_def| become the children of |p|: */
p->down = p->next;
p->next = end_def->next;
end_def->next = NULL;
for (parse_node *inv_p = p->down; inv_p; inv_p = inv_p->next)
Node::set_type(inv_p, INVOCATION_LIST_NT);
RuleSubtrees::parse_routine_structure(p);
@<Parse the structure of the code block@>;
}
}
@h Parsing Routine Structure.
There are now two possible syntaxes to express the structural makeup of a
routine. Traditional I7 syntax for blocks is to place them within begin/end
markers: the "begin" occurring at the end of the conditional or loop header,
and the "end if", "end while", etc., as a phrase of its own at the end of
the block. Newer I7 syntax (March 2008) is to use Python-style colons and
indentation. Both are allowed, but not in the same routine.
@ After acceptance, and therefore exactly once, the structure of the code in
the definition is parsed and checked for sanity.
This routine opens with the routine's parse tree consisting of a simple
linked list of code-point nodes, one for each phrase. We must work out
which syntax is used, decipher it, and turn the list into a proper tree
structure in a single unified format.
Though it is now a historical relic, Inform has two different syntaxes for
blocks of code: "colon syntax", introduced in March 2008, which uses Python-like
colons and indentation to show structural subdivision; and "begin/end syntax",
which uses explicit marker phrases like "end if" and "end while". The compiler
continues to support both though they cannot be mixed in a single |IMPERATIVE_NT|
subtree.
How much simpler this would all be if we could abolish the old format, but
it's kept for the benefit of partially sighted users, who find tabbed
indentation difficult to manage with screen-readers.
The old syntax is retained not for compatibility with old code -- very little
remains from the pre-2008 era which has not been modernised -- but because
some partially sighted users find tabbed indentation difficult to manage
with screen-readers.
Here, then, we must work out which syntax is used, decipher it, and turn the
list into a proper tree structure in a single unified format. We will also
try to find and report as many problems as we can which are due to code blocks
being improperly opened or closed, because punctuation errors in rules are
one of the biggest sources of beginners' difficulties with Inform, and we want
to catch and report these problems early.
This means looking out for control structures such as "if" and "while": see
//supervisor: Control Structures// for where these are defined.
=
void RuleSubtrees::parse_routine_structure(parse_node *routine_node) {
@<Parse the structure of the code block@> =
int initial_problem_count = problem_count;
parse_node *imperative_node = p;
parse_node *uses_colon_syntax = NULL;
parse_node *uses_begin_end_syntax = NULL;
parse_node *mispunctuates_begin_end_syntax = NULL;
@ -93,11 +106,10 @@ void RuleSubtrees::parse_routine_structure(parse_node *routine_node) {
@<(j) Insert code block nodes so that nodes needing to be parsed are childless@>;
@<(k) Insert instead marker nodes@>;
@<(l) Break up say phrases@>;
}
@<(a.1) See which block syntax is used by conditionals and loops@> =
parse_node *p;
for (p = routine_node->down; p; p = p->next) {
for (p = imperative_node->down; p; p = p->next) {
control_structure_phrase *csp =
ControlStructures::detect(Node::get_text(p));
if (csp) {
@ -136,53 +148,49 @@ void RuleSubtrees::parse_routine_structure(parse_node *routine_node) {
@<(a.2) Report problems if the two syntaxes are mixed up with each other@> =
if ((uses_colon_syntax) && (mispunctuates_begin_end_syntax)) {
current_sentence = routine_node;
current_sentence = imperative_node;
Problems::quote_source(1, current_sentence);
Problems::quote_source(2, mispunctuates_begin_end_syntax);
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_BadOldSyntax));
Problems::issue_problem_segment(
"The rule or phrase definition %1 seems to use indentation and "
"colons to group phrases together into 'if', 'repeat' or 'while' "
"blocks. That's fine, but then this phrase seems to be missing "
"some punctuation - %2. Perhaps a colon is missing?");
"The rule or phrase definition %1 seems to use indentation and colons to group "
"phrases together into 'if', 'repeat' or 'while' blocks. That's fine, but then "
"this phrase seems to be missing some punctuation - %2. Perhaps a colon is missing?");
Problems::issue_problem_end();
return;
}
if ((uses_colon_syntax) && (uses_begin_end_syntax)) {
current_sentence = routine_node;
current_sentence = imperative_node;
Problems::quote_source(1, current_sentence);
Problems::quote_source(2, uses_colon_syntax);
Problems::quote_source(3, uses_begin_end_syntax);
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_BothBlockSyntaxes));
Problems::issue_problem_segment(
"The rule or phrase definition %1 seems to use both ways of grouping "
"phrases together into 'if', 'repeat' and 'while' blocks at once. "
"Inform allows two alternative forms, but they cannot be mixed in "
"the same definition. %POne way is to end the 'if', 'repeat' or "
"'while' phrases with a 'begin', and then to match that with an "
"'end if' or similar. ('Otherwise' or 'otherwise if' clauses are "
"phrases like any other, and end with semicolons in this case.) "
"The rule or phrase definition %1 seems to use both ways of grouping phrases "
"together into 'if', 'repeat' and 'while' blocks at once. Inform allows two "
"alternative forms, but they cannot be mixed in the same definition. %P"
"One way is to end the 'if', 'repeat' or 'while' phrases with a 'begin', and "
"then to match that with an 'end if' or similar. ('Otherwise' or 'otherwise if' "
"clauses are phrases like any other, and end with semicolons in this case.) "
"You use this begin/end form here, for instance - %3. %P"
"The other way is to end with a colon ':' and then indent the "
"subsequent phrases underneath, using tabs. (Note that any "
"'otherwise' or 'otherwise if' clauses also have to end with "
"colons in this case.) You use this indented form here - %2.");
"The other way is to end with a colon ':' and then indent the subsequent phrases "
"underneath, using tabs. (Note that any 'otherwise' or 'otherwise if' clauses "
"also have to end with colons in this case.) You use this indented form here - %2.");
Problems::issue_problem_end();
return;
}
if ((requires_colon_syntax) && (uses_begin_end_syntax)) {
current_sentence = routine_node;
current_sentence = imperative_node;
Problems::quote_source(1, current_sentence);
Problems::quote_source(2, requires_colon_syntax);
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_NotInOldSyntax));
Problems::issue_problem_segment(
"The construction %2, in the rule or phrase definition %1, "
"is only allowed if the rule is written in the 'new' format, "
"that is, with the phrases written one to a line with "
"indentation showing how they are grouped together, and "
"with colons indicating the start of such a group.");
"The construction %2, in the rule or phrase definition %1, is only allowed if the "
"rule is written in the 'new' format, that is, with the phrases written one to a "
"line with indentation showing how they are grouped together, and with colons "
"indicating the start of such a group.");
Problems::issue_problem_end();
return;
}
@ -192,10 +200,10 @@ indentation of a phrase tells us where it belongs in the structure, so
we mark up the tree with that information.
@<(b.1) Annotate the parse tree with indentation levels@> =
Annotations::write_int(routine_node, indentation_level_ANNOT,
Lexer::indentation_level(Wordings::first_wn(Node::get_text(routine_node))));
Annotations::write_int(imperative_node, indentation_level_ANNOT,
Lexer::indentation_level(Wordings::first_wn(Node::get_text(imperative_node))));
parse_node *p;
for (p = routine_node->down; p; p = p->next) {
for (p = imperative_node->down; p; p = p->next) {
int I = Lexer::indentation_level(Wordings::first_wn(Node::get_text(p)));
Annotations::write_int(p, indentation_level_ANNOT, I);
}
@ -207,7 +215,7 @@ subordinate phrases (such as "otherwise") because we know their wonding
more certainly, and similarly for "end X" phrases.
@<(b.2) Annotate the parse tree with control structure usage@> =
for (parse_node *p = routine_node->down; p; p = p->next) {
for (parse_node *p = imperative_node->down; p; p = p->next) {
control_structure_phrase *csp;
csp = ControlStructures::detect(Node::get_text(p));
if (csp) {
@ -237,7 +245,7 @@ Such a line occupies a single node in its routine's parse tree, and we need
to break this up.
@<(c) Expand comma notation for blocks@> =
for (parse_node *p = routine_node->down; p; p = p->next)
for (parse_node *p = imperative_node->down; p; p = p->next)
if (Node::get_control_structure_used(p) == NULL) {
control_structure_phrase *csp;
csp = ControlStructures::detect(Node::get_text(p));
@ -261,7 +269,7 @@ to break this up.
Annotations::read_int(p, indentation_level_ANNOT) + 1);
Node::set_text(then_node, ACW);
parse_node *last_node_of_if_construction = then_node, *rest_of_routine = p->next;
parse_node *last_node_of_if_construction = then_node, *rest_of_defn = p->next;
/* Attach the "then" node after the "if" node: */
p->next = then_node;
@ -269,29 +277,29 @@ to break this up.
@<Deal with an immediately following otherwise node, if there is one@>;
if (uses_colon_syntax == FALSE) {
last_node_of_if_construction->next = RuleSubtrees::end_node(p);
last_node_of_if_construction->next->next = rest_of_routine;
last_node_of_if_construction->next = ImperativeSubtrees::end_node(p);
last_node_of_if_construction->next->next = rest_of_defn;
} else {
last_node_of_if_construction->next = rest_of_routine;
last_node_of_if_construction->next = rest_of_defn;
}
@<Deal with an immediately following otherwise node, if there is one@> =
if (rest_of_routine)
if (rest_of_defn)
if ((uses_colon_syntax == FALSE) ||
(Annotations::read_int(p, indentation_level_ANNOT) ==
Annotations::read_int(rest_of_routine, indentation_level_ANNOT))) {
if (Node::get_control_structure_used(rest_of_routine) == otherwise_CSP)
Annotations::read_int(rest_of_defn, indentation_level_ANNOT))) {
if (Node::get_control_structure_used(rest_of_defn) == otherwise_CSP)
@<Deal with an immediately following otherwise@>
else if (ControlStructures::abbreviated_otherwise(Node::get_text(rest_of_routine)))
else if (ControlStructures::abbreviated_otherwise(Node::get_text(rest_of_defn)))
@<Deal with an abbreviated otherwise node@>;
}
@ We string a plain "otherwise" node onto the "if" construction.
@<Deal with an immediately following otherwise@> =
then_node->next = rest_of_routine;
then_node->next = rest_of_defn;
last_node_of_if_construction = last_node_of_if_construction->next;
rest_of_routine = rest_of_routine->next;
rest_of_defn = rest_of_defn->next;
@ An abbreviated otherwise clause looks like this:
@ -305,20 +313,20 @@ and we want to split this, too, into distinct nodes.
Annotations::write_int(otherwise_node, indentation_level_ANNOT,
Annotations::read_int(p, indentation_level_ANNOT));
Node::set_text(otherwise_node,
Wordings::one_word(Wordings::first_wn(Node::get_text(rest_of_routine)))); /* extract just the word "otherwise" */
Wordings::one_word(Wordings::first_wn(Node::get_text(rest_of_defn)))); /* extract just the word "otherwise" */
Node::set_control_structure_used(otherwise_node, otherwise_CSP);
then_node->next = otherwise_node;
otherwise_node->next = rest_of_routine;
otherwise_node->next = rest_of_defn;
Node::set_text(rest_of_routine,
Wordings::trim_first_word(Node::get_text(rest_of_routine))); /* to remove the "otherwise" */
Node::set_text(rest_of_defn,
Wordings::trim_first_word(Node::get_text(rest_of_defn))); /* to remove the "otherwise" */
Annotations::write_int(rest_of_routine, indentation_level_ANNOT,
Annotations::read_int(rest_of_routine, indentation_level_ANNOT) + 1);
Annotations::write_int(rest_of_defn, indentation_level_ANNOT,
Annotations::read_int(rest_of_defn, indentation_level_ANNOT) + 1);
last_node_of_if_construction = rest_of_routine;
rest_of_routine = rest_of_routine->next;
last_node_of_if_construction = rest_of_defn;
rest_of_defn = rest_of_defn->next;
@ If the old-style syntax is used, there are explicit "end if", "end repeat"
and "end while" nodes in the list already. But if the Pythonesque syntax is
@ -339,10 +347,10 @@ report more or less helpfully.
int blstack_stage[GROSS_AMOUNT_OF_INDENTATION+1];
int blo_sp = 0, suppress_further_problems = FALSE;
if (Annotations::read_int(routine_node, indentation_level_ANNOT) != 0)
if (Annotations::read_int(imperative_node, indentation_level_ANNOT) != 0)
@<Issue problem message for failing to start flush on the left margin@>;
for (prev = NULL, p = routine_node->down, k=1; p; prev = p, p = p->next, k++) {
for (prev = NULL, p = imperative_node->down, k=1; p; prev = p, p = p->next, k++) {
control_structure_phrase *csp = Node::get_control_structure_used(p);
@<Determine actual indentation of this phrase@>;
@<Compare actual indentation to what we expect from structure so far@>;
@ -359,7 +367,7 @@ report more or less helpfully.
@ Controversially:
@<Issue problem message for failing to start flush on the left margin@> =
current_sentence = routine_node;
current_sentence = imperative_node;
Problems::quote_source_eliding_begin(1, current_sentence);
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_NonflushRule));
Problems::issue_problem_segment(
@ -458,7 +466,8 @@ colon syntax, then it is followed by a word which is the colon: thus if |p|
reads "if x is 2" then the word following the "2" will be ":".
@<Insert begin marker and increase expected indentation if a block begins here@> =
if ((csp) && (csp->subordinate_to == NULL) && (Annotations::read_int(p, colon_block_command_ANNOT))) {
if ((csp) && (csp->subordinate_to == NULL) &&
(Annotations::read_int(p, colon_block_command_ANNOT))) {
expected_indent++;
if (csp->indent_subblocks) expected_indent++;
blstack_construct[blo_sp] = csp;
@ -508,7 +517,7 @@ above it: here we insert such a marker at a place where the source text
indentation implicitly requires it.
@<Insert end marker to match the opening of the block phrase@> =
parse_node *implicit_end = RuleSubtrees::end_node(opening);
parse_node *implicit_end = ImperativeSubtrees::end_node(opening);
implicit_end->next = prev->next; prev->next = implicit_end;
prev = implicit_end;
@ -522,20 +531,20 @@ indentation implicitly requires it.
@<Issue problem message for misaligned indentation@> =
if (suppress_further_problems == FALSE) {
LOG("$T\n", routine_node);
current_sentence = routine_node;
LOG("$T\n", imperative_node);
current_sentence = imperative_node;
Problems::quote_source_eliding_begin(1, current_sentence);
Problems::quote_source_eliding_begin(2, first_misaligned_phrase);
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_MisalignedIndentation));
StandardProblems::handmade_problem(Task::syntax_tree(),
_p_(PM_MisalignedIndentation));
Problems::issue_problem_segment(
"The phrase or rule definition %1 is written using the 'colon "
"and indentation' syntax for its 'if's, 'repeat's and 'while's, "
"where blocks of phrases grouped together are indented one "
"tab step inward from the 'if ...:' or similar phrase to which "
"they belong. But the tabs here seem to be misaligned, and I can't "
"determine the structure. The first phrase going awry in the "
"definition seems to be %2, in case that helps. %PThis sometimes "
"happens even when the code looks about right, to the eye, if rows "
"The phrase or rule definition %1 is written using the 'colon and indentation' "
"syntax for its 'if's, 'repeat's and 'while's, where blocks of phrases grouped "
"together are indented one tab step inward from the 'if ...:' or similar phrase "
"to which they belong. But the tabs here seem to be misaligned, and I can't "
"determine the structure. The first phrase going awry in the definition seems "
"to be %2, in case that helps. %P"
"This sometimes happens even when the code looks about right, to the eye, if rows "
"of spaces have been used to indent phrases instead of tabs.");
Problems::Using::diagnose_further();
Problems::issue_problem_end();
@ -551,29 +560,28 @@ indentation implicitly requires it.
@<Issue problem message for an excess of indentation@> =
if (suppress_further_problems == FALSE) {
current_sentence = routine_node;
current_sentence = imperative_node;
Problems::quote_source_eliding_begin(1, current_sentence);
Problems::quote_source_eliding_begin(2, first_overindented_phrase);
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_TooMuchIndentation));
Problems::issue_problem_segment(
"The phrase or rule definition %1 is written using tab indentations "
"to show how its phrases are to be grouped together. But the level "
"of indentation goes far too deep, reaching more than 25 tab stops "
"from the left margin.");
"The phrase or rule definition %1 is written using tab indentations to show how "
"its phrases are to be grouped together. But the level of indentation goes far "
"too deep, reaching more than 25 tab stops from the left margin.");
Problems::issue_problem_end();
}
@<Issue problem message for run-ons within phrase definition@> =
if (suppress_further_problems == FALSE) {
current_sentence = routine_node;
current_sentence = imperative_node;
Problems::quote_source_eliding_begin(1, current_sentence);
Problems::quote_source_eliding_begin(2, run_on_at);
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_RunOnsInTabbedRoutine));
StandardProblems::handmade_problem(Task::syntax_tree(),
_p_(PM_RunOnsInTabbedRoutine));
Problems::issue_problem_segment(
"The phrase or rule definition %1 is written using the 'colon "
"and indentation' syntax for its 'if's, 'repeat's and 'while's, "
"but that's only allowed if each phrase in the definition "
"occurs on its own line. So phrases like %2, which follow "
"The phrase or rule definition %1 is written using the 'colon and indentation' "
"syntax for its 'if's, 'repeat's and 'while's, but that's only allowed if each "
"phrase in the definition occurs on its own line. So phrases like %2, which follow "
"directly on from the previous phrase, aren't allowed.");
Problems::issue_problem_end();
}
@ -584,34 +592,33 @@ think of a sensible use.
@<Issue problem for an empty block@> =
if (suppress_further_problems == FALSE) {
LOG("$T\n", routine_node);
current_sentence = routine_node;
LOG("$T\n", imperative_node);
current_sentence = imperative_node;
Problems::quote_source_eliding_begin(1, current_sentence);
Problems::quote_source_eliding_begin(2, prev);
Problems::quote_source_eliding_begin(3, p);
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_EmptyIndentedBlock));
Problems::issue_problem_segment(
"The phrase or rule definition %1 is written using the 'colon "
"and indentation' syntax for its 'if's, 'repeat's and 'while's, "
"where blocks of phrases grouped together are indented one "
"tab step inward from the 'if ...:' or similar phrase to which "
"they belong. But the phrase %2, which ought to begin a block, "
"is immediately followed by %3 at the same or a lower indentation, "
"so the block seems to be empty - this must mean there has been "
"a mistake in indenting the phrases.");
"The phrase or rule definition %1 is written using the 'colon and indentation' "
"syntax for its 'if's, 'repeat's and 'while's, where blocks of phrases grouped "
"together are indented one tab step inward from the 'if ...:' or similar phrase "
"to which they belong. But the phrase %2, which ought to begin a block, is "
"immediately followed by %3 at the same or a lower indentation, so the block "
"seems to be empty - this must mean there has been a mistake in indenting the "
"phrases.");
Problems::issue_problem_end();
}
@<Issue problem for non-case in a switch@> =
if (suppress_further_problems == FALSE) {
current_sentence = routine_node;
current_sentence = imperative_node;
Problems::quote_source_eliding_begin(1, current_sentence);
Problems::quote_source_eliding_begin(2, p);
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_NonCaseInIf));
Problems::issue_problem_segment(
"In the phrase or rule definition %1, the phrase %2 came as a "
"surprise since it was not a case in an 'if X is...' but was "
"instead some other miscellaneous instruction.");
"In the phrase or rule definition %1, the phrase %2 came as a surprise since "
"it was not a case in an 'if X is...' but was instead some other miscellaneous "
"instruction.");
Problems::issue_problem_end();
}
@ -619,22 +626,19 @@ think of a sensible use.
if ((indent_misalign == FALSE) && (suppress_further_problems == FALSE)) {
current_sentence = p;
if (csp->subordinate_to == if_CSP) {
LOG("$T\n", routine_node);
LOG("$T\n", imperative_node);
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_MisalignedOtherwise),
"this doesn't match a corresponding 'if'",
"as it must. An 'otherwise' must be vertically underneath the "
"'if' to which it corresponds, at the same indentation, and "
"if the 'otherwise' uses a colon to begin a block then the "
"'if' must do the same.");
"as it must. An 'otherwise' must be vertically underneath the 'if' to which "
"it corresponds, at the same indentation, and if the 'otherwise' uses a colon "
"to begin a block then the 'if' must do the same.");
}
if (csp->subordinate_to == switch_CSP)
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_MisalignedCase),
"this seems to be misplaced since it is not a case within an "
"'if X is...'",
"as it must be. Each case must be placed one tab stop in from "
"the 'if X is...' to which it belongs, and the instructions "
"for what to do in that case should be one tab stop further in "
"still.");
"this seems to be misplaced since it is not a case within an 'if X is...'",
"as it must be. Each case must be placed one tab stop in from the 'if X "
"is...' to which it belongs, and the instructions for what to do in that "
"case should be one tab stop further in still.");
}
@<Issue problem for an intermediate phrase out of sequence@> =
@ -643,15 +647,13 @@ think of a sensible use.
if ((csp == default_case_CSP) || (csp == case_CSP))
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_DefaultCaseNotLast),
"'otherwise' must be the last clause if an 'if ... is:'",
"and in particular it has to come after all the '-- V:' "
"case values supplied.");
"and in particular it has to come after all the '-- V:' case values supplied.");
else
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_MisarrangedOtherwise),
"this seems to be misplaced since it is out of sequence within its 'if'",
"with an 'otherwise if...' coming after the more general 'otherwise' "
"rather than before. (Note that an 'otherwise' or 'otherwise if' must "
"be vertically underneath the 'if' to which it corresponds, at the "
"same indentation.");
"with an 'otherwise if...' coming after the more general 'otherwise' rather "
"than before. (Note that an 'otherwise' or 'otherwise if' must be vertically "
"underneath the 'if' to which it corresponds, at the same indentation.");
}
@ And after all that work, the routine's parse tree still consists only of a
@ -659,10 +661,10 @@ linked list of nodes; but at least it now contains the same pattern of nodes
whichever syntax is used. We finally make a meaningful tree out of it.
@<(e) Structure the parse tree to match the use of control structures@> =
parse_node *routine_list = routine_node->down;
parse_node *routine_list = imperative_node->down;
parse_node *top_level = Node::new(CODE_BLOCK_NT);
routine_node->down = top_level;
imperative_node->down = top_level;
parse_node *attach_owners[MAX_BLOCK_NESTING+1];
parse_node *attach_points[MAX_BLOCK_NESTING+1];
@ -749,13 +751,13 @@ where we look for such mistakes.
@<(f) Police the structure of the parse tree@> =
int n = problem_count;
RuleSubtrees::police_code_block(routine_node->down, NULL);
if (problem_count > n) LOG("Local parse tree: $T\n", routine_node);
ImperativeSubtrees::police_code_block(imperative_node->down, NULL);
if (problem_count > n) LOG("Local parse tree: $T\n", imperative_node);
@ Which recursively uses the following:
=
void RuleSubtrees::police_code_block(parse_node *block, control_structure_phrase *context) {
void ImperativeSubtrees::police_code_block(parse_node *block, control_structure_phrase *context) {
for (parse_node *p = block->down, *prev_p = NULL; p; prev_p = p, p = p->next) {
current_sentence = p;
@ -785,7 +787,7 @@ void RuleSubtrees::police_code_block(parse_node *block, control_structure_phrase
}
}
if (p->down) RuleSubtrees::police_code_block(p, csp);
if (p->down) ImperativeSubtrees::police_code_block(p, csp);
}
}
@ -798,12 +800,11 @@ of old-format source text, and for refuseniks.
@<Issue problem for end without begin@> =
StandardProblems::sentence_problem_with_note(Task::syntax_tree(), _p_(PM_EndWithoutBegin),
"this is an 'end' with no matching 'begin'",
"which should not happen: every phrase like 'if ... begin;' "
"should eventually be followed by its bookend 'end if'. "
"It makes no sense to have an 'end ...' on its own.",
"Perhaps the problem is actually that you opened several "
"such begin... end 'blocks' and accidentally closed them "
"once too many? This is very easily done.");
"which should not happen: every phrase like 'if ... begin;' should eventually be "
"followed by its bookend 'end if'. It makes no sense to have an 'end ...' on its "
"own.",
"Perhaps the problem is actually that you opened several such begin... end "
"'blocks' and accidentally closed them once too many? This is very easily done.");
@<Issue problem for wrong sort of end@> =
Problems::quote_source(1, current_sentence);
@ -817,11 +818,10 @@ of old-format source text, and for refuseniks.
@<Issue problem for begin without end@> =
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_BeginWithoutEnd),
"the definition of the phrase ended with no matching 'end' for "
"this 'begin'",
"bearing in mind that every begin must have a matching end, and "
"that the one most recently begun must be the one first to end. For "
"instance, 'if ... begin' must have a matching 'end if'.");
"the definition of the phrase ended with no matching 'end' for this 'begin'",
"bearing in mind that every begin must have a matching end, and that the one "
"most recently begun must be the one first to end. For instance, 'if ... begin' "
"must have a matching 'end if'.");
@<Choose a problem for a loose clause@> =
if (csp == otherwise_CSP)
@ -830,12 +830,11 @@ of old-format source text, and for refuseniks.
"which must be wrong.");
else if (csp == otherwise_if_CSP)
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_OtherwiseIfMisplaced),
"the 'otherwise if' clause here seems not to be occurring inside "
"a large 'if'",
"and seems to be freestanding instead. (Though 'otherwise ...' can "
"usually be used after simple one-line 'if's to provide an alternative "
"course of action, 'otherwise if...' is a different matter, and is "
"used to divide up larger-scale instructions.)");
"the 'otherwise if' clause here seems not to be occurring inside a large 'if'",
"and seems to be freestanding instead. (Though 'otherwise ...' can usually "
"be used after simple one-line 'if's to provide an alternative course of action, "
"'otherwise if...' is a different matter, and is used to divide up larger-scale "
"instructions.)");
else
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(BelievedImpossible),
"this clause can't occur outside of a control phrase",
@ -847,8 +846,8 @@ of old-format source text, and for refuseniks.
Problems::quote_wide_text(2, context->keyword);
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_OtherwiseInNonIf));
Problems::issue_problem_segment(
"The %1 here did not make sense inside a "
"'%2' structure: it's provided for 'if' (or 'unless').");
"The %1 here did not make sense inside a '%2' structure: it's provided for 'if' "
"(or 'unless').");
Problems::issue_problem_end();
} else
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(BelievedImpossible),
@ -867,16 +866,15 @@ of old-format source text, and for refuseniks.
}
if (doubled)
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_DoubleOtherwise),
"that makes two unconditional 'otherwise' or 'else' clauses "
"for this 'if'",
"which is forbidden since 'otherwise' is meant to be a single "
"(optional) catch-all clause at the end.");
"that makes two unconditional 'otherwise' or 'else' clauses for this 'if'",
"which is forbidden since 'otherwise' is meant to be a single (optional) "
"catch-all clause at the end.");
else if (oi)
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_OtherwiseIfAfterOtherwise),
"this seems to be misplaced since it is out of sequence within its 'if'",
"with an 'otherwise if...' coming after the more general 'otherwise' "
"rather than before. (If there's an 'otherwise' clause, it has to be "
"the last clause of the 'if'.)");
"with an 'otherwise if...' coming after the more general 'otherwise' rather "
"than before. (If there's an 'otherwise' clause, it has to be the last clause "
"of the 'if'.)");
else
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(BelievedImpossible),
"'otherwise' must be the last clause",
@ -897,8 +895,8 @@ can now become "otherwise: if whatever: ...".
@<(g) Optimise out the otherwise if nodes@> =
int n = problem_count;
RuleSubtrees::purge_otherwise_if(routine_node->down);
if (problem_count > n) LOG("Local parse tree: $T\n", routine_node);
ImperativeSubtrees::purge_otherwise_if(imperative_node->down);
if (problem_count > n) LOG("Local parse tree: $T\n", imperative_node);
@ We made a similar manoeuvre above, but for one-line "otherwise do something"
phrases following one-line "if", not for the wider case of "otherwise if". We
@ -906,7 +904,7 @@ didn't handle this back then because to do so would have made it impossible
to issue good problem messages for failures to use "otherwise if" correctly.
=
void RuleSubtrees::purge_otherwise_if(parse_node *block) {
void ImperativeSubtrees::purge_otherwise_if(parse_node *block) {
for (parse_node *p = block->down, *prev_p = NULL; p; prev_p = p, p = p->next) {
if (Node::get_control_structure_used(p) == otherwise_if_CSP) {
parse_node *former_contents = p->down;
@ -933,7 +931,7 @@ void RuleSubtrees::purge_otherwise_if(parse_node *block) {
/* any further "otherwise if" or "otherwise" nodes after p follow */
p->down->next = former_successors;
}
if (p->down) RuleSubtrees::purge_otherwise_if(p);
if (p->down) ImperativeSubtrees::purge_otherwise_if(p);
}
}
@ -943,15 +941,15 @@ but now that the structure is known to be correct they serve no further purpose.
We remove them.
@<(h) Remove any end markers as no longer necessary@> =
RuleSubtrees::purge_end_markers(routine_node->down);
ImperativeSubtrees::purge_end_markers(imperative_node->down);
@ =
void RuleSubtrees::purge_end_markers(parse_node *block) {
void ImperativeSubtrees::purge_end_markers(parse_node *block) {
for (parse_node *p = block->down, *prev_p = NULL; p; prev_p = p, p = p->next) {
if (Node::get_end_control_structure_used(p)) {
if (prev_p) prev_p->next = p->next; else block->down = p->next;
}
if (p->down) RuleSubtrees::purge_end_markers(p);
if (p->down) ImperativeSubtrees::purge_end_markers(p);
}
}
@ -959,15 +957,15 @@ void RuleSubtrees::purge_end_markers(parse_node *block) {
can now be removed, too.
@<(i) Remove any begin markers as no longer necessary@> =
RuleSubtrees::purge_begin_markers(routine_node->down);
ImperativeSubtrees::purge_begin_markers(imperative_node->down);
@ =
void RuleSubtrees::purge_begin_markers(parse_node *block) {
void ImperativeSubtrees::purge_begin_markers(parse_node *block) {
for (parse_node *p = block->down, *prev_p = NULL; p; prev_p = p, p = p->next) {
if (Node::get_control_structure_used(p))
if (<phrase-beginning-block>(Node::get_text(p)))
Node::set_text(p, GET_RW(<phrase-beginning-block>, 1));
if (p->down) RuleSubtrees::purge_begin_markers(p);
if (p->down) ImperativeSubtrees::purge_begin_markers(p);
}
}
@ -979,10 +977,10 @@ code block nodes to mark these phrases, and transfer the control structure
annotations to them.
@<(j) Insert code block nodes so that nodes needing to be parsed are childless@> =
RuleSubtrees::insert_cb_nodes(routine_node->down);
ImperativeSubtrees::insert_cb_nodes(imperative_node->down);
@ =
void RuleSubtrees::insert_cb_nodes(parse_node *block) {
void ImperativeSubtrees::insert_cb_nodes(parse_node *block) {
for (parse_node *p = block->down, *prev_p = NULL; p; prev_p = p, p = p->next) {
if (ControlStructures::opens_block(Node::get_control_structure_used(p))) {
parse_node *blank_cb_node = Node::new(CODE_BLOCK_NT);
@ -996,17 +994,17 @@ void RuleSubtrees::insert_cb_nodes(parse_node *block) {
if (prev_p) prev_p->next = blank_cb_node; else block->down = blank_cb_node;
p = blank_cb_node;
}
if (p->down) RuleSubtrees::insert_cb_nodes(p);
if (p->down) ImperativeSubtrees::insert_cb_nodes(p);
}
}
@ Now:
@<(k) Insert instead marker nodes@> =
RuleSubtrees::read_instead_markers(routine_node->down);
ImperativeSubtrees::read_instead_markers(imperative_node->down);
@ =
void RuleSubtrees::read_instead_markers(parse_node *block) {
void ImperativeSubtrees::read_instead_markers(parse_node *block) {
for (parse_node *p = block->down, *prev_p = NULL; p; prev_p = p, p = p->next) {
if (<instead-keyword>(Node::get_text(p))) {
Node::set_text(p, GET_RW(<instead-keyword>, 1));
@ -1015,17 +1013,17 @@ void RuleSubtrees::read_instead_markers(parse_node *block) {
instead_node->next = p->next;
p->next = instead_node;
}
if (p->down) RuleSubtrees::read_instead_markers(p);
if (p->down) ImperativeSubtrees::read_instead_markers(p);
}
}
@ Now:
@<(l) Break up say phrases@> =
RuleSubtrees::break_up_says(routine_node->down);
ImperativeSubtrees::break_up_says(imperative_node->down);
@ =
void RuleSubtrees::break_up_says(parse_node *block) {
void ImperativeSubtrees::break_up_says(parse_node *block) {
for (parse_node *p = block->down, *prev_p = NULL; p; prev_p = p, p = p->next) {
int sf = NO_SIGF;
wording W = Node::get_text(p);
@ -1043,7 +1041,7 @@ void RuleSubtrees::break_up_says(parse_node *block) {
if (prev_p) prev_p->next = blank_cb_node; else block->down = blank_cb_node;
current_sentence = p;
RuleSubtrees::unroll_says(blank_cb_node, W, 0);
ImperativeSubtrees::unroll_says(blank_cb_node, W, 0);
p = blank_cb_node;
break;
}
@ -1055,11 +1053,11 @@ void RuleSubtrees::break_up_says(parse_node *block) {
break;
}
}
if (p->down) RuleSubtrees::break_up_says(p);
if (p->down) ImperativeSubtrees::break_up_says(p);
}
}
void RuleSubtrees::unroll_says(parse_node *cb_node, wording W, int depth) {
void ImperativeSubtrees::unroll_says(parse_node *cb_node, wording W, int depth) {
while (<phrase-with-comma-notation>(W)) {
wording AW = GET_RW(<phrase-with-comma-notation>, 1);
wording BW = GET_RW(<phrase-with-comma-notation>, 2);
@ -1071,13 +1069,15 @@ void RuleSubtrees::unroll_says(parse_node *cb_node, wording W, int depth) {
}
@<Bite off a say term@> =
if ((Wordings::length(W) > 1) || (Wide::cmp(Lexer::word_text(Wordings::first_wn(W)), L"\"\"") != 0)) {
if ((Wordings::length(W) == 1) && (Vocabulary::test_flags(Wordings::first_wn(W), TEXTWITHSUBS_MC)) && (depth == 0)) {
if ((Wordings::length(W) > 1) ||
(Wide::cmp(Lexer::word_text(Wordings::first_wn(W)), L"\"\"") != 0)) {
if ((Wordings::length(W) == 1) &&
(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);
if (<verify-expanded-text-substitution>(A))
RuleSubtrees::unroll_says(cb_node, A, depth+1);
ImperativeSubtrees::unroll_says(cb_node, A, depth+1);
} else {
parse_node *say_term_node = Node::new(INVOCATION_LIST_SAY_NT);
Node::set_text(say_term_node, W);
@ -1108,10 +1108,9 @@ void RuleSubtrees::unroll_says(parse_node *cb_node, wording W, int depth) {
Strings::TextSubstitutions::it_is_not_worth_adding();
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_TSWithComma),
"a substitution contains a comma ','",
"which is against the rules, because 'say' is a special phrase in "
"which the comma divides items in a list of things to say, and so it "
"loses its ordinary meanings. Because of this, no text substitution "
"can contain a comma. "
"which is against the rules, because 'say' is a special phrase in which the comma "
"divides items in a list of things to say, and so it loses its ordinary meanings. "
"Because of this, no text substitution can contain a comma. "
"(If you're trying to use a value produced by a phrase with a phrase "
"option - say 'the best route from A to B, using even locked doors' - "
"you'll need to put this in a 'let' variable first and then say that, "
@ -1125,16 +1124,15 @@ void RuleSubtrees::unroll_says(parse_node *cb_node, wording W, int depth) {
(p[k+5] == 'o') && (p[k+6] == 'd') && (p[k+7] == 'e') && (p[k+8] == ' ')) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_NestedUSubstitution),
"the text here contains one substitution '[...]' inside another",
"which is not allowed. Actually, it looks as if you might have got "
"into this by typing an exotic character as part of the name of a "
"text substitution - those get rewritten automatically as '[unicode N]' "
"for the appropriate Unicode character code number N. Either way - "
"this isn't allowed.");
"which is not allowed. Actually, it looks as if you might have got into this "
"by typing an exotic character as part of the name of a text substitution - "
"those get rewritten automatically as '[unicode N]' for the appropriate Unicode "
"character code number N. Either way - this isn't allowed.");
} else {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_NestedSubstitution),
"the text here contains one substitution '[...]' inside another",
"which is not allowed. (If you just wanted a literal open and closed "
"square bracket, use '[bracket]' and '[close bracket]'.)");
"which is not allowed. (If you just wanted a literal open and closed square "
"bracket, use '[bracket]' and '[close bracket]'.)");
}
Strings::TextSubstitutions::it_is_worth_adding();
return;
@ -1144,43 +1142,42 @@ void RuleSubtrees::unroll_says(parse_node *cb_node, wording W, int depth) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_UnclosedSubstitution),
"the text here uses an open square bracket '[', which opens a substitution "
"in the text, but doesn't close it again",
"so that the result is malformed. (If you just wanted a literal open "
"square bracket, use '[bracket]'.)");
"so that the result is malformed. (If you just wanted a literal open square "
"bracket, use '[bracket]'.)");
Strings::TextSubstitutions::it_is_worth_adding();
return;
@<Issue problem message for unopened substitution@> =
Strings::TextSubstitutions::it_is_not_worth_adding();
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_UnopenedSubstitution),
"the text here uses a close square bracket ']', which closes a substitution "
"in the text, but never actually opened it",
"with a matching '['. (If you just wanted a literal close square bracket, "
"use '[close bracket]'.)");
"the text here uses a close square bracket ']', which closes a substitution in the "
"text, but never actually opened it",
"with a matching '['. (If you just wanted a literal close square bracket, use "
"'[close bracket]'.)");
Strings::TextSubstitutions::it_is_worth_adding();
return;
@ Something devious happens when production (b) of <s-say-phrase> is matched.
Double-quoted text is literal if it contains no square brackets, but is
expanded if it includes text substitutions in squares. When (b) matches,
Inform expands a text such as
@ 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:
>> "Look, [the noun] said."
into:
becomes:
>> "Look, ", the noun, " said."
and then re-parses the result with the following nonterminal; note that we
make sure commas are used correctly before handing back to <s-say-phrase>
to parse the list.
This is then re-parsed with the following nonterminal; note that we report any
problem with misuse of commas -- really, of square brackets -- before handing back
to <s-say-phrase> to parse the list.
=
<verify-expanded-text-substitution> ::=
*** . *** | ==> @<Issue PM_TSWithPunctuation problem@>; ==> { fail }
, *** | ==> @<Issue PM_EmptySubstitution problem@>; ==> { fail }
*** , | ==> @<Issue PM_EmptySubstitution problem@>; ==> { fail }
*** , , *** | ==> @<Issue PM_EmptySubstitution problem@>; ==> { fail }
...
*** . *** | ==> @<Issue PM_TSWithPunctuation problem@>; ==> { fail };
, *** | ==> @<Issue PM_EmptySubstitution problem@>; ==> { fail };
*** , | ==> @<Issue PM_EmptySubstitution problem@>; ==> { fail };
*** , , *** | ==> @<Issue PM_EmptySubstitution problem@>; ==> { fail };
... ==> { -, - }
@ So now just the problem messages:
@ -1200,11 +1197,10 @@ to parse the list.
"which is not allowed. To say nothing - well, say nothing.");
Strings::TextSubstitutions::it_is_worth_adding();
@ That just leaves one utility routine, for manufacturing end nodes which
match a given begin node.
@ The following manufactures end nodes to match a given begin node.
=
parse_node *RuleSubtrees::end_node(parse_node *opening) {
parse_node *ImperativeSubtrees::end_node(parse_node *opening) {
parse_node *implicit_end = Node::new(INVOCATION_LIST_NT);
Node::set_end_control_structure_used(implicit_end,
Node::get_control_structure_used(opening));

View file

@ -116,7 +116,7 @@ organisation, and are not directly functional in themselves.
case ENDHERE_NT: Anaphora::new_discussion();
global_pass_state.near_start_of_extension = 0; break;
case RULE_NT: @<Pass through a RULE node@>; break;
case IMPERATIVE_NT: @<Pass through an IMPERATIVE node@>; break;
case SENTENCE_NT: @<Pass through a SENTENCE node@>; break;
case TRACE_NT: @<Pass through a TRACE node@>; break;
@ -141,15 +141,15 @@ organisation, and are not directly functional in themselves.
internal_error("passed through major node of unexpected type");
}
@ This is a little convoluted. The //linguistics// module turns sentences in
rule form into a |RULE_NT| node followed by subsequent |INVOCATION_NT| nodes,
and the first call here makes them into a neat subtree. After that, we look
out for adjectives defined by phrases, and for phrases with names, since
both will affect how we read sentences in passes 1 and 2.
@ This is a little convoluted: see //Imperative Subtrees// for how
"acceptance" tidies up the nodes in the syntax tree corresponding to a block
of imperative code. After that, we look out for adjectives defined by phrases,
and for phrases with names, since both will affect how we read sentences in
passes 1 and 2.
@<Pass through a RULE node@> =
@<Pass through an IMPERATIVE node@> =
if (global_pass_state.pass == 0) {
SyntaxTree::traverse_run(p, RuleSubtrees::demote_command_nodes, RULE_NT);
SyntaxTree::traverse_run(p, ImperativeSubtrees::accept, IMPERATIVE_NT);
Phrases::Adjectives::look_for_headers(p);
Phrases::Usage::predeclare_name_in(p);
}

View file

@ -17,6 +17,7 @@ Chapter 2: Declarations
Anaphoric References
Classifying Sentences
Property Sentences
Imperative Subtrees
Chapter 3: Requests
"Sentences, often imperative, which have special meanings."

View file

@ -166,11 +166,7 @@ so on. Those absolute basics are made here.
Task::advance_stage_to(PHRASES_CSEQ, I"Phrases and rules",
3, debugging, sequence_timer);
BENCH(LiteralPatterns::define_named_phrases)
BENCH(Phrases::Manager::traverse)
BENCH(Phrases::Manager::register_meanings)
BENCH(Phrases::Manager::parse_rule_parameters)
BENCH(Phrases::Manager::add_rules_to_rulebooks)
BENCH(Phrases::Manager::parse_rule_placements)
BENCH(ImperativeDefinitions::find_phrases_and_rules)
BENCH(Equations::traverse_to_stock)
BENCH(Tables::traverse_to_stock)
BENCH(RTProperties::annotate_attributes)
@ -199,14 +195,14 @@ so on. Those absolute basics are made here.
BENCH(Tables::complete)
BENCH(RTTables::compile)
BENCH(RTEquations::compile_identifiers)
BENCH(Phrases::Manager::compile_first_block)
BENCH(Phrases::Manager::compile_rulebooks)
BENCH(Phrases::Manager::rulebooks_array)
BENCH(ImperativeDefinitions::compile_first_block)
BENCH(RTRules::compile_rulebooks)
BENCH(RTRules::rulebooks_array_array)
BENCH(RTRules::rulebook_var_creators)
BENCH(RTActivities::activity_var_creators)
BENCH(RTRelations::IterateRelations)
BENCH(Phrases::Manager::RulebookNames_array)
BENCH(Phrases::Manager::RulePrintingRule_routine)
BENCH(RTRules::RulebookNames_array)
BENCH(RTRules::RulePrintingRule_routine)
BENCH(RTVerbs::ConjugateVerb)
BENCH(RTAdjectives::agreements)
if (debugging) {
@ -219,12 +215,12 @@ so on. Those absolute basics are made here.
BENCH(Lists::check)
BENCH(ConstantLists::compile)
BENCH(Phrases::invoke_to_begin)
BENCH(Phrases::Manager::compile_as_needed)
BENCH(ImperativeDefinitions::compile_as_needed)
BENCH(Strings::compile_responses)
BENCH(Lists::check)
BENCH(ConstantLists::compile)
BENCH(RTRelations::compile_defined_relations)
BENCH(Phrases::Manager::compile_as_needed)
BENCH(ImperativeDefinitions::compile_as_needed)
BENCH(Strings::TextSubstitutions::allow_no_further_text_subs)
@<Generate inter, part 4@> =

View file

@ -16,7 +16,7 @@ declarations and assertion sentences.
//linguistics: Diagrams// and below. These are clauses in sentences.
(*) Code nodes, category |CODE_NCAT|, are defined only below. They occur only
inside imperative code (i.e. rules and phrase definitions), in subtrees headed
by a level-2 |RULE_NT| node, and they organise what is to be compiled.
by a level-2 |IMPERATIVE_NT| node, and they organise what is to be compiled.
(*) Specification nodes represent values or descriptions of values, and are
defined only below. These occur frequently in the parse tree as children of
code nodes, but can also be used in detached form as a way to represent, say,
@ -154,7 +154,7 @@ also makes it easier for us to manipulate the results.
NodeType::new(TEST_PHRASE_OPTION_NT, I"TEST_PHRASE_OPTION_NT", 0, 0, COND_NCAT, 0);
NodeType::new(TEST_VALUE_NT, I"TEST_VALUE_NT", 1, 1, COND_NCAT, 0);
@ Level 4 structural nodes can only be children of |RULE_NT| nodes (level 2)
@ Level 4 structural nodes can only be children of |IMPERATIVE_NT| nodes (level 2)
or of each other, and their children are otherwise specifications.
Specification nodes can only have each other as children.
@ -344,7 +344,7 @@ void CoreSyntax::grant_L2_permissions(void) {
Annotations::allow_for_category(L2_NCAT, clears_pronouns_ANNOT);
Annotations::allow_for_category(L2_NCAT, interpretation_of_subject_ANNOT);
Annotations::allow_for_category(L2_NCAT, verb_problem_issued_ANNOT);
Annotations::allow(RULE_NT, indentation_level_ANNOT);
Annotations::allow(IMPERATIVE_NT, indentation_level_ANNOT);
Annotations::allow(SENTENCE_NT, implicit_in_creation_of_ANNOT);
Annotations::allow(SENTENCE_NT, implicitness_count_ANNOT);
Annotations::allow(SENTENCE_NT, you_can_ignore_ANNOT);

View file

@ -311,7 +311,7 @@ ends merrily" and "when the Banquet Entertainment ends merrily".
sc->allocation_id, end);
Feeds::feed_text_expanding_strings(i6_code);
Sentences::make_node(Task::syntax_tree(), Feeds::end(id), '.');
RuleSubtrees::register_recently_lexed_phrases();
ImperativeSubtrees::accept_all();
DISCARD_TEXT(i6_code)
@h Anchors.

View file

@ -109,6 +109,7 @@ void RuleBookings::make_automatic_placements(void) {
internal_error("Inter-defined rules cannot be automatically placed");
}
}
RTRules::compile_NUMBER_RULEBOOKS_CREATED();
}
@h Specificity of bookings.

View file

@ -1,179 +1,21 @@
[Phrases::Manager::] Construction Sequence.
[ImperativeDefinitions::] Construction Sequence.
To deal with all the |.i6t| interpreted commands which bring
about the compilation of phrases, and to ensure that they are used in
the correct order.
Managing the timing of dealing with defined phrases and rules.
@h A day in the life.
Suppose we compare the run of Inform to a single day. At dawn the program
starts up. In the morning it finds out the names of all the constant values
defined in the source text: names like "Mrs Blenkinsop", "hatstand", and
so on. By noon it has also found out the wording used for phrases, such as
"award prize (N - a number) to (gardener - a woman)". This means that in
the afternoon it knows every name it ever will, and so it can work through
the definitions of phrases like "award prize...". In the evening, it does
some book-keeping, and at nightfall it shuts down.
We will use the story of our single day throughout this section on timing,
because everything has to happen in just the right order.
@d DAWN_PHT 0
@d EARLY_MORNING_PHT 1
@d LATE_MORNING_PHT 2
@d PRE_NOON_PHT 3
@d EARLY_AFTERNOON_PHT 4
@d MID_AFTERNOON_PHT 5
@d LATE_AFTERNOON_PHT 6
@d EVENING_PHT 7
@
=
int phrase_time_now = DAWN_PHT;
void Phrases::Manager::advance_phrase_time_to(int advance_to) {
if (advance_to < phrase_time_now) {
LOG("Advance from %d to %d\n", phrase_time_now, advance_to);
internal_error(
"The necessary phrase construction events are out of sequence");
}
phrase_time_now = advance_to;
}
@h Early morning.
We run through the phrase preambles to look for named rules like this:
>> Instead of pushing the red button (this is the fire alarm rule): ...
This looking-for-names is done by parsing the preamble text to a PHUD in
what is called "coarse mode", which can only get an approximate idea at
best: at this stage the "Instead" rulebook and the "red button" don't
exist, so most of the words here are meaningless. The PHUD which coarse
mode parsing produces is far too sketchy to use, and is thrown away.
But at least it does pick out the name "fire alarm rule", and Inform
creates an empty "rule" structure called this, registering this as the
name of a new constant.
@h Mid-morning.
This is when Inform is making its main traverses through assertions.
Something very useful is happening, but it's happening somewhere else.
Assertions such as
>> Instead is a rulebook.
are being read, and rulebooks are therefore being created.
@h Late morning.
With the assertions read, all the values have their names, and that means
we can go back to phrases like:
>> Instead of pushing the red button (this is the fire alarm rule): ...
and read them properly. So Inform now runs through the preambles again and
parses them for a second time to PHUDs, but this time in "fine mode" rather
than "coarse mode", and this time the result is not thrown away. If the
phrase is a "To..." phrase declaration, then the PHUD is pretty sketchy and
we parse more substantial PHTD and PHOD structures to accompany it. But if
it is a rule, the PHUD contains a great deal of useful information, and we
accompany it with essentially blank PHTD and PHOD structures. Either way, we
end up with a triplet of PHUD, PHTD and PHOD, and these are combined into a
new |phrase| structure. The PHSF structure is initially created as a
function of the PHTD: for example, if the phrase reads
>> To award (points - a number): ...
then the PHTD notes that "points" is the name of a parameter whose kind is
to be "number". The stack frame, PHSF, deduces that "points" will be a
local variable of kind "number" within the phrase when it's running.
Lastly, a blank PHRCD structure is created, filling out the set of five
substructures.
As they are created, the "To..." phrases are insertion-sorted into a list of
phrases in logical precedence order. This can be done now because it relies
only on the kinds listed in the PHTD, all of which have existed since
mid-morning.
For reasons discussed below, rules are not yet sorted. But the names created
in mid-morning, such as "fire alarm rule", are associated with their
phrases, and they are marked for what's called "automatic placement". For
example, the fire alarm rule will automatically be placed into the Instead
rulebook, because its preamble begins "Instead". The reason rules are only
marked to be placed later is that placement has to occur in logical
precedence order, but rules are harder to sort than phrases. They have to be
sorted by their PHRCDs, not their PHTDs, and a PHRCD cannot even be parsed
until afternoon because the conditions for a rule often mention phrases --
for instance, "Instead of waiting when in darkness", making use of an "in
darkness" phrase. So for now we just make a mental note to do automatic
placement later on.
=
void Phrases::Manager::traverse(void) {
Phrases::Manager::advance_phrase_time_to(LATE_MORNING_PHT);
void ImperativeDefinitions::find_phrases_and_rules(void) {
int initial_problem_count = problem_count;
int progress_target = 0, progress_made = 0;
SyntaxTree::traverse_intp(Task::syntax_tree(), Phrases::Manager::visit_to_count, &progress_target);
SyntaxTree::traverse_intp_intp(Task::syntax_tree(), Phrases::Manager::visit_to_create, &progress_target, &progress_made);
}
void Phrases::Manager::visit_to_count(parse_node *p, int *progress_target) {
(*progress_target)++;
}
void Phrases::Manager::visit_to_create(parse_node *p, int *progress_target, int *progress_made) {
(*progress_made)++;
if ((*progress_made) % 10 == 0)
ProgressBar::update(3,
((float) (*progress_made))/((float) (*progress_target)));
if (Node::get_type(p) == RULE_NT) {
Phrases::create_from_preamble(p);
}
}
@h Just before noon.
It is now nearly noon, and things appear to be a little untidy. Why
are the "To..." phrases not yet registered with the excerpt parser?
The answer is that we needed to wait until all of the "To..." phrases
had been created as structures before we could safely proceed. The first
phrase couldn't be registered until we knew the complete logical order
of them all. Well: at last, we do know that, and can make the registration.
Phrases are the very last things to get their names in Inform (well, not
counting local variables, whose names only exist fleetingly).
=
void Phrases::Manager::register_meanings(void) {
Phrases::Manager::advance_phrase_time_to(PRE_NOON_PHT);
SyntaxTree::traverse_intp(Task::syntax_tree(), ImperativeDefinitions::visit_to_count,
&progress_target);
SyntaxTree::traverse_intp_intp(Task::syntax_tree(), ImperativeDefinitions::visit_to_create,
&progress_target, &progress_made);
if (initial_problem_count < problem_count) return;
Routines::ToPhrases::register_all();
}
@h Noon.
When the final phrase is registered, the hour chimes. From this point
onwards, there's no longer any text which can't be parsed because some
of the names don't exist yet: everything exists.
@h Early afternoon.
In the afternoon, we begin by binding up the rulebooks. First, we go through
the phrases destined to be rules, and for each we translate the PHUD (which
contains mainly textual representations of the usage information, e.g.
"taking something (called the thingummy) which is in a lighted room during
Scene Two when the marble slab is open") to a PHRCD (which contains fully
parsed Inform data structures, e.g., an action pattern and a pointer to a
|scene| structure). As noted above, this often means parsing conditions
which involve phrases, and that's why we're doing it in the afternoon.
During this PHUD-to-PHRCD parsing process, we make sure that the relevant
phrase's PHSF is the current stack frame, because it's here that the names
of any callings (e.g. "thingummy") are created as local variables to be
valid throughout the phrase.
Once we're done with this, the PHUD will never be used again.
Note that the PHRCDs have to be parsed in source text appearance order (the
order which |LOOP_OVER| follows) so that the back reference "doing it" can
correctly refer to the most recently mentioned action.
=
void Phrases::Manager::parse_rule_parameters(void) {
Phrases::Manager::advance_phrase_time_to(EARLY_AFTERNOON_PHT);
if (initial_problem_count < problem_count) return;
phrase *ph;
LOOP_OVER(ph, phrase) {
@ -183,34 +25,27 @@ void Phrases::Manager::parse_rule_parameters(void) {
Phrases::Usage::to_runtime_context_data(&(ph->usage_data));
Frames::remove_current();
}
}
if (initial_problem_count < problem_count) return;
@ We can finally make the automatic placements of rules into rulebooks: so
our "fire alarm rule" will at last be placed in the "Instead" rulebook. The
PHRCDs are used to make sure it appears in the right position.
=
void Phrases::Manager::add_rules_to_rulebooks(void) {
Phrases::Manager::advance_phrase_time_to(EARLY_AFTERNOON_PHT);
RuleBookings::make_automatic_placements();
inter_name *iname = Hierarchy::find(NUMBER_RULEBOOKS_CREATED_HL);
Emit::named_numeric_constant(iname, (inter_ti) NUMBER_CREATED(rulebook));
Hierarchy::make_available(Emit::tree(), iname);
if (initial_problem_count < problem_count) return;
SyntaxTree::traverse(Task::syntax_tree(), ImperativeDefinitions::visit_to_parse_placements);
}
@ It might seem as if the rulebooks are now complete, but this is not true,
because we still have to take care of manual placements like:
void ImperativeDefinitions::visit_to_count(parse_node *p, int *progress_target) {
(*progress_target)++;
}
>> The fire alarm rule is listed in the safety procedures rulebook.
void ImperativeDefinitions::visit_to_create(parse_node *p, int *progress_target, int *progress_made) {
(*progress_made)++;
if ((*progress_made) % 10 == 0)
ProgressBar::update(3,
((float) (*progress_made))/((float) (*progress_target)));
This is where we get on with that, traversing the parse tree for sentences
of this general sort. Rules can also be unlisted, or constrained to happen
only conditionally, or substituted by other rules.
=
void Phrases::Manager::parse_rule_placements(void) {
Phrases::Manager::advance_phrase_time_to(EARLY_AFTERNOON_PHT);
SyntaxTree::traverse(Task::syntax_tree(), Phrases::Manager::visit_to_parse_placements);
if (Node::get_type(p) == IMPERATIVE_NT) {
Phrases::create_from_preamble(p);
}
}
@
@ -218,29 +53,24 @@ void Phrases::Manager::parse_rule_placements(void) {
@e TRAVERSE_FOR_RULE_FILING_SMFT
=
void Phrases::Manager::visit_to_parse_placements(parse_node *p) {
void ImperativeDefinitions::visit_to_parse_placements(parse_node *p) {
if ((Node::get_type(p) == SENTENCE_NT) &&
(p->down) &&
(Node::get_type(p->down) == VERB_NT)) {
prevailing_mood =
Annotations::read_int(p->down, verbal_certainty_ANNOT);
prevailing_mood = Annotations::read_int(p->down, verbal_certainty_ANNOT);
MajorNodes::try_special_meaning(TRAVERSE_FOR_RULE_FILING_SMFT, p->down);
}
}
@h Mid-afternoon.
It is now mid-afternoon, and the rulebooks are complete. It is time to
compile the I6 routines which will provide the run-time definitions of all
these phrases. This will be a long task, and much of it will be left until
the evening. But we do get rid of some easy cases now: the rules and
adjective definitions.
@ The rulebooks are now complete and final. It is time to
compile the Inter code which will provide the run-time definitions of all
these phrases. This will be a long task, and we can only do most of it now,
because more phrases will appear later.
=
int total_phrases_to_compile = 0;
int total_phrases_compiled = 0;
void Phrases::Manager::compile_first_block(void) {
Phrases::Manager::advance_phrase_time_to(MID_AFTERNOON_PHT);
void ImperativeDefinitions::compile_first_block(void) {
@<Count up the scale of the task@>;
@<Compile definitions of rules in rulebooks@>;
@<Compile definitions of rules left out of rulebooks@>;
@ -357,56 +187,7 @@ points", say). This is where we do it:
Problems::issue_problem_end();
}
@h Late Afternoon.
Rules are pretty well sorted out now, but we still need to compile some I6
to show how they fit together. These miscellaneous function calls can happen
in any order, so long as they all occur in the late afternoon.
First, rules set to go off at a particular time need to have their timings
noted down:
=
void Phrases::Manager::TimedEventsTable(void) {
Phrases::Manager::advance_phrase_time_to(LATE_AFTERNOON_PHT);
Phrases::Timed::TimedEventsTable();
}
void Phrases::Manager::TimedEventTimesTable(void) {
Phrases::Manager::advance_phrase_time_to(LATE_AFTERNOON_PHT);
Phrases::Timed::TimedEventTimesTable();
}
@ Second, the rulebooks need to be compiled into I6 arrays:
=
void Phrases::Manager::rulebooks_array(void) {
Phrases::Manager::advance_phrase_time_to(LATE_AFTERNOON_PHT);
RTRules::rulebooks_array_array();
}
void Phrases::Manager::compile_rulebooks(void) {
Phrases::Manager::advance_phrase_time_to(LATE_AFTERNOON_PHT);
RTRules::compile_rulebooks();
}
void Phrases::Manager::RulebookNames_array(void) {
Phrases::Manager::advance_phrase_time_to(LATE_AFTERNOON_PHT);
RTRules::RulebookNames_array();
}
@ And finally, just as the sun slips below the horizon, we compile the code
which prints out values of the kind "rule" at run-time -- for example, taking
the address of the routine which our example rule was compiled to and then
printing out "fire alarm rule".
=
void Phrases::Manager::RulePrintingRule_routine(void) {
Phrases::Manager::advance_phrase_time_to(LATE_AFTERNOON_PHT);
RTRules::RulePrintingRule_routine();
}
@h Evening.
The twilight gathers, but our work is far from done. Recall that we have
@ The twilight gathers, but our work is far from done. Recall that we have
accumulated compilation requests for "To..." phrases, but haven't actually
acted on them yet.
@ -435,12 +216,10 @@ phrases alone: we must compile phrases, then things arising from them, then
phrases arising from those, then things arising from the phrases arising
from those, and so on, until we're done. The process is therefore structured
as a set of "coroutines" which each carry out as much as they can and then
hand over to the others to generate more work. (Indeed, the routine below
can be called multiple times in the course of the evening.)
hand over to the others to generate more work.
=
void Phrases::Manager::compile_as_needed(void) {
Phrases::Manager::advance_phrase_time_to(EVENING_PHT);
void ImperativeDefinitions::compile_as_needed(void) {
rule *R;
LOOP_OVER(R, rule)
RTRules::compile_definition(R,

View file

@ -41,7 +41,7 @@ code below.
=
typedef struct phrase {
struct parse_node *declaration_node; /* |RULE_NT| node where declared */
struct parse_node *declaration_node; /* |IMPERATIVE_NT| node where declared */
int inline_wn; /* word number of inline I6 definition, or |-1| if not inline */
struct inter_schema *inter_head_defn; /* inline definition translated to inter, if possible */
struct inter_schema *inter_tail_defn; /* inline definition translated to inter, if possible */
@ -50,7 +50,6 @@ typedef struct phrase {
struct wording ph_documentation_symbol; /* cross-reference with documentation */
struct compilation_unit *owning_module;
struct package_request *requests_package;
// struct package_request *rule_package;
struct ph_type_data type_data;
struct ph_usage_data usage_data;
@ -83,8 +82,8 @@ invocation which is given as verbatim I6.
=
void Phrases::create_from_preamble(parse_node *p) {
if ((p == NULL) || (Node::get_type(p) != RULE_NT))
internal_error("a phrase preamble should be at a RULE_NT node");
if ((p == NULL) || (Node::get_type(p) != IMPERATIVE_NT))
internal_error("a phrase preamble should be at a IMPERATIVE_NT node");
int inline_wn = -1; /* the word number of an inline I6 definition if any */
int mor = DONT_KNOW_MOR; /* and its manner of return */
wording OW = EMPTY_WORDING; /* the text of the phrase options, if any */

View file

@ -28,7 +28,7 @@ void Routines::Compile::routine(phrase *ph,
rule *R) {
if ((ph->declaration_node == NULL) ||
(Node::get_type(ph->declaration_node) != RULE_NT) ||
(Node::get_type(ph->declaration_node) != IMPERATIVE_NT) ||
(Wordings::empty(Node::get_text(ph->declaration_node))))
internal_error("tried to compile phrase with bad ROUTINE node");
LOGIF(PHRASE_COMPILATION, "Compiling phrase:\n$T", ph->declaration_node);

View file

@ -26,7 +26,6 @@ with specific changes in the world) have their preambles parsed and their
premisses worked out, and are then collected together into rulebooks, before
being compiled as a great mass of Inform 6 routines and arrays."
Introduction to Phrases
Rule Subtrees
Construction Sequence
Phrases
Phrase Usage
@ -37,7 +36,6 @@ being compiled as a great mass of Inform 6 routines and arrays."
Phrases as Values
To Phrases
Timed Phrases
Phrasebook Index
Chapter 4: Compilation Context
"Preparing a context at run-time in which code can be executed."

View file

@ -23,6 +23,7 @@ Chapter 2: Indexing
Inferences
Rules
Activities
Phrasebook Index
Chapter 3: Indexing for Plugins
Figures

View file

@ -138,7 +138,7 @@ can't normally be unravelled at compile time.
Grading::make_superlative(mdef->headword, Task::language_of_syntax());
@<Feed the preamble for the superlative phrase into the lexer@>;
@<Feed the body of the superlative phrase into the lexer@>;
RuleSubtrees::register_recently_lexed_phrases();
ImperativeSubtrees::accept_all();
@<Feed the preamble for the superlative phrase into the lexer@> =
TEMPORARY_TEXT(TEMP)

View file

@ -96,7 +96,7 @@ the doubled use of colons is unfortunate.)
=
void Phrases::Adjectives::look_for_headers(parse_node *p) {
if (Node::get_type(p) == RULE_NT)
if (Node::get_type(p) == IMPERATIVE_NT)
if (<definition-header>(Node::get_text(p))) {
compilation_unit *cm = CompilationUnits::current();
CompilationUnits::set_current(p);
@ -125,7 +125,7 @@ is defined by routine or not.
@<Futz with the parse tree, trying right not down@> =
if ((p->next == NULL) ||
(Node::get_type(p->next) != RULE_NT)) {
(Node::get_type(p->next) != IMPERATIVE_NT)) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(BelievedImpossible),
"don't leave me in suspense",
"write a definition after 'Definition:'!");

View file

@ -619,6 +619,15 @@ action_name *RTRules::br_required_action(booking *br) {
@
=
void RTRules::compile_NUMBER_RULEBOOKS_CREATED(void) {
inter_name *iname = Hierarchy::find(NUMBER_RULEBOOKS_CREATED_HL);
Emit::named_numeric_constant(iname, (inter_ti) NUMBER_CREATED(rulebook));
Hierarchy::make_available(Emit::tree(), iname);
}
@
=
typedef struct rulebook_compilation_data {
struct inter_name *stv_creator_iname;

View file

@ -326,14 +326,14 @@ a request for a new text substitution to be compiled later...
Produce::up(Emit::tree());
}
parse_node *ts_code_block = Node::new(RULE_NT);
parse_node *ts_code_block = Node::new(IMPERATIVE_NT);
Node::set_unit(ts_code_block, ts->belongs_to_module);
compilation_unit *cm = CompilationUnits::current();
CompilationUnits::set_current_to(ts->belongs_to_module);
ts_code_block->down = Node::new(INVOCATION_LIST_NT);
Node::set_text(ts_code_block->down, ts->unsubstituted_text);
Annotations::write_int(ts_code_block->down, from_text_substitution_ANNOT, TRUE);
RuleSubtrees::parse_routine_structure(ts_code_block);
ts_code_block->next = Node::new(UNKNOWN_NT);
Node::set_text(ts_code_block->next, ts->unsubstituted_text);
Annotations::write_int(ts_code_block->next, from_text_substitution_ANNOT, TRUE);
ImperativeSubtrees::accept(ts_code_block);
Routines::Compile::code_block_outer(0, ts_code_block->down);

View file

@ -1280,7 +1280,7 @@ void LiteralPatterns::define_named_phrases(void) {
@<Compile the printing phrase for this and perhaps subsequent LPs@>;
}
}
RuleSubtrees::register_recently_lexed_phrases();
ImperativeSubtrees::accept_all();
}
@ These text substitutions correspond exactly neither to the LPs nor to the
@ -1333,7 +1333,7 @@ void LiteralPatterns::define_packing_phrases(literal_pattern *lp, kind *K) {
Kinds::Textual::write(TEMP, K);
@<Define phrases to convert from a packed value to individual parts@>;
@<Define a phrase to convert from numerical parts to a packed value@>;
RuleSubtrees::register_recently_lexed_phrases();
ImperativeSubtrees::accept_all();
DISCARD_TEXT(TEMP)
}

View file

@ -292,8 +292,8 @@ void Node::log_subtree_recursively(OUTPUT_STREAM, parse_node *pn, int num,
if (pn->down) {
LOG_INDENT;
int recurse = TRUE;
#ifdef RULE_NT
if ((summarise) && (Node::is(pn, RULE_NT))) recurse = FALSE;
#ifdef IMPERATIVE_NT
if ((summarise) && (Node::is(pn, IMPERATIVE_NT))) recurse = FALSE;
#endif
if (recurse)
Node::log_subtree_recursively(OUT,

View file

@ -459,7 +459,7 @@ Anything we cannot place into categories (b) or (c) below will go here.
(b) "Sentences making up rules". These are sequences of sentences in which
a preamble (ending with a colon, or in certain cases a comma) of node type
|RULE_NT| is followed by a sequence of phrases (ending with semicolons until
|IMPERATIVE_NT| is followed by a sequence of phrases (ending with semicolons until
the last, which ends with a full stop or paragraph break), each of node type
|INVOCATION_LIST_NT|. For instance, the following produces three nodes:
@ -549,7 +549,7 @@ The following is used to detect "or" in such lists.
@<Look for a comma and split the sentence at it, unless in serial list@>;
@ In such sentences a comma is read as if it were a colon. (The text up to the
comma will then be given a |RULE_NT| node and the text beyond the comma
comma will then be given a |IMPERATIVE_NT| node and the text beyond the comma
will make a |INVOCATION_LIST_NT| node.)
@<Look for a comma and split the sentence at it, unless in serial list@> =
@ -588,7 +588,7 @@ its terminating colon. For instance:
>> To look upwards: say "Look out!"; something else.
(which arrives at this routine as three separate "sentences") will produce
nodes with type |RULE_NT|, |INVOCATION_LIST_NT| and |INVOCATION_LIST_NT| respectively.
nodes with type |IMPERATIVE_NT|, |INVOCATION_LIST_NT| and |INVOCATION_LIST_NT| respectively.
This paragraph of code might look as if it should only be used in assertion
mode, not in rule mode, because how can a rule preamble legally occur in
@ -597,7 +597,7 @@ officially sanctioned way to make a definition with a complex phrase:
>> Definition: a supporter is wobbly: if the player is on it, decide yes; decide no.
This produces four nodes: |RULE_NT|, |RULE_NT|, |INVOCATION_LIST_NT| and
This produces four nodes: |IMPERATIVE_NT|, |IMPERATIVE_NT|, |INVOCATION_LIST_NT| and
|INVOCATION_LIST_NT| respectively.
The other arises somewhat less officially when people treat phrases as