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:
parent
3869e103ba
commit
919fd9bc3e
|
@ -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
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Prerelease: alpha.1
|
||||
Build Date: 23 March 2021
|
||||
Build Number: 6R59
|
||||
Build Date: 24 March 2021
|
||||
Build Number: 6R60
|
||||
|
|
|
@ -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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ptmn.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-am.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ar.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -228,7 +228,7 @@ production of <has-property-name>.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-ps.html#SP5">§5</a> (twice).</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-cs.html">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-cs.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3_1_1" class="paragraph-anchor"></a><b>§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>§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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-bv.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-is.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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>§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>§4. </b>These structures are combined in the following packet of data attached to
|
||||
each inference subject:
|
||||
</p>
|
||||
|
|
|
@ -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>§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>
|
||||
|
|
|
@ -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>§3. </b>These are convenient during parsing.
|
||||
</p>
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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">§2</a>.</li></ul>
|
||||
|
|
|
@ -104,7 +104,7 @@ declarations and assertion sentences.
|
|||
</li></ul>
|
||||
<li>● 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>● 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">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§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>§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>
|
||||
|
|
|
@ -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">-></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">§15</a>.</li></ul>
|
||||
|
|
|
@ -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">§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">§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">-></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>§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,
|
||||
|
|
|
@ -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">§1. A day in the life</a></li><li><a href="3-cs.html#SP2">§2. Early morning</a></li><li><a href="3-cs.html#SP3">§3. Mid-morning</a></li><li><a href="3-cs.html#SP4">§4. Late morning</a></li><li><a href="3-cs.html#SP5">§5. Just before noon</a></li><li><a href="3-cs.html#SP6">§6. Noon</a></li><li><a href="3-cs.html#SP7">§7. Early afternoon</a></li><li><a href="3-cs.html#SP11">§11. Mid-afternoon</a></li><li><a href="3-cs.html#SP12">§12. Late Afternoon</a></li><li><a href="3-cs.html#SP15">§15. Evening</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§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">§4</a>, <a href="3-cs.html#SP5">§5</a>, <a href="3-cs.html#SP7">§7</a>, <a href="3-cs.html#SP8">§8</a>, <a href="3-cs.html#SP9">§9</a>, <a href="3-cs.html#SP11">§11</a>, <a href="3-cs.html#SP12">§12</a>, <a href="3-cs.html#SP13">§13</a>, <a href="3-cs.html#SP14">§14</a>, <a href="3-cs.html#SP15">§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"> < </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>§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>§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>§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 —
|
||||
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>§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">, &</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">, &</span><span class="identifier-syntax">progress_target</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">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>§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"> &</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"> &</span><span class="identifier-syntax">progress_target</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">initial_problem_count</span><span class="plain-syntax"> < </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>§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>§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"> < </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">(&(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></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>§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"> < </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"> < </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>§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>§10. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§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">§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">§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">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</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">-></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">-></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">-></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">-></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>§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>§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>§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>§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">-></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">§11</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11_2" class="paragraph-anchor"></a><b>§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">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3_2" class="paragraph-anchor"></a><b>§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"> &</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">§11</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11_3" class="paragraph-anchor"></a><b>§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">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3_3" class="paragraph-anchor"></a><b>§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"> &</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">§11</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11_4" class="paragraph-anchor"></a><b>§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">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3_4" class="paragraph-anchor"></a><b>§3.4. </b>This doesn't compile all adjective definitions, only the ones which supply
|
||||
a whole multi-step phrase to define them — 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">§11</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11_5" class="paragraph-anchor"></a><b>§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">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3_5" class="paragraph-anchor"></a><b>§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">§11</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11_6" class="paragraph-anchor"></a><b>§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">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3_6" class="paragraph-anchor"></a><b>§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">§11</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11_7" class="paragraph-anchor"></a><b>§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">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3_7" class="paragraph-anchor"></a><b>§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">§11</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§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>§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>§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 — 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>§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">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-itp.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">§6</a><br/>Phrasebook Index - <a href="3-pi.html#SP1_3">§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">§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">-></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">"<i>if</i> "</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">§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">§5.3</a><br/>Phrases as Values - <a href="3-pav.html#SP4">§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">§5.3</a><br/>Phrases as Values - <a href="3-pav.html#SP4">§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">§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">§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">-></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"><to-return-data></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"><to-return-data></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 — 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">§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">§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"><<operation>></span><span class="plain-syntax"> = -1; </span><span class="function-syntax"><<assignment>></span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="function-syntax"><<deprecated>></span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="function-syntax"><<run-on>></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"><phrase-preamble></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"><<r>></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"><say-preamble></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">§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">§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">-></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">-></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">§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">§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">§21</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-ptd.html">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-ptd.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-act.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -314,7 +314,7 @@ made above.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-pav.html#SP8">§8</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-po.html">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-po.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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>§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">§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">§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">-></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">§11.6</a>, <a href="3-cs.html#SP11_7">§11.7</a><br/>Phrase Usage - <a href="3-pu.html#SP9_2_1">§9.2.1</a><br/>To Phrases - <a href="3-tph.html#SP3">§3</a>, <a href="3-tph.html#SP6_1">§6.1</a>, <a href="3-tph.html#SP7">§7</a><br/>Phrasebook Index - <a href="3-pi.html#SP1">§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">§3.6</a>, <a href="3-cs.html#SP3_7">§3.7</a><br/>Phrase Usage - <a href="3-pu.html#SP9_2_1">§9.2.1</a><br/>To Phrases - <a href="3-tph.html#SP3">§3</a>, <a href="3-tph.html#SP6_1">§6.1</a>, <a href="3-tph.html#SP7">§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">-></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">-></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">§11.4</a><br/>To Phrases - <a href="3-tph.html#SP8">§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">§3.4</a><br/>To Phrases - <a href="3-tph.html#SP8">§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">-></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">(&(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-cs.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-dptd.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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>§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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-pu.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">-></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">§12</a><br/>Construction Sequence - <a href="3-cs.html#SP11_6">§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">§12</a><br/>Construction Sequence - <a href="3-cs.html#SP3_6">§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">-></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">-></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">§13</a><br/>Construction Sequence - <a href="3-cs.html#SP11_5">§11.5</a><br/>Phrases - <a href="3-phr.html#SP5_5">§5.5</a><br/>Describing Phrase Type Data - <a href="3-dptd.html#SP6_5">§6.5</a><br/>Phrases as Values - <a href="3-pav.html#SP4">§4</a><br/>Parse Invocations - <a href="6-pi.html#SP3">§3</a><br/>Compile Phrases - <a href="6-cp.html#SP2_2">§2.2</a><br/>Compile Solutions to Equations - <a href="6-cste.html#SP4">§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">§13</a><br/>Construction Sequence - <a href="3-cs.html#SP3_5">§3.5</a><br/>Phrases - <a href="3-phr.html#SP5_5">§5.5</a><br/>Describing Phrase Type Data - <a href="3-dptd.html#SP6_5">§6.5</a><br/>Phrases as Values - <a href="3-pav.html#SP4">§4</a><br/>Parse Invocations - <a href="6-pi.html#SP3">§3</a><br/>Compile Phrases - <a href="6-cp.html#SP2_2">§2.2</a><br/>Compile Solutions to Equations - <a href="6-cste.html#SP4">§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"><phtd-></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">§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">§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"><phtd-></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">-></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">§6.6</a><br/>Phrasebook Index - <a href="3-pi.html#SP1_3">§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">§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">-></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">-></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">§11.7</a><br/>To Phrases - <a href="3-tph.html#SP7">§7</a><br/>Compile Invocations - <a href="6-ci.html#SP2_1_1_1">§2.1.1.1</a>, <a href="6-ci.html#SP3_1">§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">§3.7</a><br/>To Phrases - <a href="3-tph.html#SP7">§7</a><br/>Compile Invocations - <a href="6-ci.html#SP2_1_1_1">§2.1.1.1</a>, <a href="6-ci.html#SP3_1">§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">-></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">§11.6</a><br/>Compile Invocations Inline - <a href="6-cii.html#SP3_5_7">§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">§3.6</a><br/>Compile Invocations Inline - <a href="6-cii.html#SP3_5_7">§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">-></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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-prcd.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">§11.4</a><br/>Phrases - <a href="3-phr.html#SP5">§5</a>, <a href="3-phr.html#SP11">§11</a><br/>Phrasebook Index - <a href="3-pi.html#SP1">§1</a><br/>Compile Phrases - <a href="6-cp.html#SP4_3_3">§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">§3.4</a><br/>Phrases - <a href="3-phr.html#SP5">§5</a>, <a href="3-phr.html#SP11">§11</a><br/>Compile Phrases - <a href="6-cp.html#SP4_3_3">§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">-></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">-></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">§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">§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">-></span><span class="element-syntax">constant_phrase_holder</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">phud</span><span class="plain-syntax">-></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">) &&</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">-></span><span class="element-syntax">constant_phrase_holder</span><span class="plain-syntax">-></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>§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">§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">§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">-></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">§24</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-phr.html">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-phr.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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>§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">§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">§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">§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">§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">(&(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></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">§6</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-tph.html">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-tph.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">§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">§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">-></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">§7</a><br/>Construction Sequence - <a href="3-cs.html#SP11_5">§11.5</a><br/>Phrases - <a href="3-phr.html#SP12">§12</a><br/>Phrases as Values - <a href="3-pav.html#SP6">§6</a><br/>Compile Invocations As Calls - <a href="6-ciac.html#SP1">§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">§7</a><br/>Construction Sequence - <a href="3-cs.html#SP3_5">§3.5</a><br/>Phrases - <a href="3-phr.html#SP12">§12</a><br/>Phrases as Values - <a href="3-pav.html#SP6">§6</a><br/>Compile Invocations As Calls - <a href="6-ciac.html#SP1">§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">§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">§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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-pav.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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>§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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-tp.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">§5</a><br/>Construction Sequence - <a href="3-cs.html#SP7">§7</a><br/>Phrase Runtime Context Data - <a href="3-prcd.html#SP8">§8</a><br/>Compile Phrases - <a href="6-cp.html#SP2_2">§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">§5</a><br/>Construction Sequence - <a href="3-cs.html#SP1">§1</a><br/>Phrase Runtime Context Data - <a href="3-prcd.html#SP8">§8</a><br/>Compile Phrases - <a href="6-cp.html#SP2_2">§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">§5</a><br/>Construction Sequence - <a href="3-cs.html#SP7">§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">§5</a><br/>Construction Sequence - <a href="3-cs.html#SP1">§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>
|
||||
|
|
|
@ -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>§2. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
|
|
@ -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">§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">§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>
|
||||
|
|
|
@ -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">-></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">-></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">-></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">-></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">-></span><span class="element-syntax">declaration_node</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-rls.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">§1</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ins.html">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ins.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">§12</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ifs.html">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ifs.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ki.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">§7.11.2</a>, <a href="2-li.html#SP8">§8</a><br/>Index Physical World - <a href="2-ipw.html#SP3_5">§3.5</a>, <a href="2-ipw.html#SP3_8">§3.8</a>, <a href="2-ipw.html#SP4">§4</a><br/>Kinds Index - <a href="2-ki.html#SP6">§6</a><br/>Index Extensions - <a href="2-ie.html#SP1">§1</a><br/>Instances - <a href="2-ins.html#SP5">§5</a><br/>Adjectives - <a href="2-adj.html#SP1">§1</a><br/>Variables - <a href="2-vrb.html#SP3">§3</a><br/>Inferences - <a href="2-inf.html#SP3">§3</a><br/>Rules - <a href="2-rls.html#SP2_5">§2.5</a>, <a href="2-rls.html#SP2_7">§2.7</a>, <a href="2-rls.html#SP7_1">§7.1</a>, <a href="2-rls.html#SP9">§9</a><br/>Activities - <a href="2-act.html#SP2">§2</a><br/>Figures - <a href="3-fgr.html#SP1">§1</a><br/>Sound Effects - <a href="3-se.html#SP1">§1</a><br/>External Files - <a href="3-ef.html#SP1">§1</a><br/>Spatial - <a href="3-spt.html#SP4">§4</a><br/>Scenes - <a href="3-scn.html#SP1_5_1_1">§1.5.1.1</a>, <a href="3-scn.html#SP1_5_1_4_2">§1.5.1.4.2</a>, <a href="3-scn.html#SP1_5_1_4_3">§1.5.1.4.3</a><br/>Actions - <a href="3-act.html#SP1">§1</a><br/>Commands Index - <a href="3-ci.html#SP6">§6</a>, <a href="3-ci.html#SP7">§7</a>, <a href="3-ci.html#SP10">§10</a>, <a href="3-ci.html#SP11">§11</a><br/>Spatial Map - <a href="4-sm.html#SP44">§44</a><br/>HTML Map - <a href="4-hm.html#SP12">§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">§7.11.2</a>, <a href="2-li.html#SP8">§8</a><br/>Index Physical World - <a href="2-ipw.html#SP3_5">§3.5</a>, <a href="2-ipw.html#SP3_8">§3.8</a>, <a href="2-ipw.html#SP4">§4</a><br/>Kinds Index - <a href="2-ki.html#SP6">§6</a><br/>Index Extensions - <a href="2-ie.html#SP1">§1</a><br/>Instances - <a href="2-ins.html#SP5">§5</a><br/>Adjectives - <a href="2-adj.html#SP1">§1</a><br/>Variables - <a href="2-vrb.html#SP3">§3</a><br/>Inferences - <a href="2-inf.html#SP3">§3</a><br/>Rules - <a href="2-rls.html#SP2_5">§2.5</a>, <a href="2-rls.html#SP2_7">§2.7</a>, <a href="2-rls.html#SP7_1">§7.1</a>, <a href="2-rls.html#SP9">§9</a><br/>Activities - <a href="2-act.html#SP2">§2</a><br/>Phrasebook Index - <a href="2-pi.html#SP1_3">§1.3</a><br/>Figures - <a href="3-fgr.html#SP1">§1</a><br/>Sound Effects - <a href="3-se.html#SP1">§1</a><br/>External Files - <a href="3-ef.html#SP1">§1</a><br/>Spatial - <a href="3-spt.html#SP4">§4</a><br/>Scenes - <a href="3-scn.html#SP1_5_1_1">§1.5.1.1</a>, <a href="3-scn.html#SP1_5_1_4_2">§1.5.1.4.2</a>, <a href="3-scn.html#SP1_5_1_4_3">§1.5.1.4.3</a><br/>Actions - <a href="3-act.html#SP1">§1</a><br/>Commands Index - <a href="3-ci.html#SP6">§6</a>, <a href="3-ci.html#SP7">§7</a>, <a href="3-ci.html#SP10">§10</a>, <a href="3-ci.html#SP11">§11</a><br/>Spatial Map - <a href="4-sm.html#SP44">§44</a><br/>HTML Map - <a href="4-hm.html#SP12">§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">§7.11.2</a><br/>Kinds Index - <a href="2-ki.html#SP4">§4</a><br/>Scenes - <a href="3-scn.html#SP2_2">§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">§7.11.2</a><br/>Kinds Index - <a href="2-ki.html#SP4">§4</a><br/>Phrasebook Index - <a href="2-pi.html#SP1_2">§1.2</a><br/>Scenes - <a href="3-scn.html#SP2_2">§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">"&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">§8</a><br/>Kinds Index - <a href="2-ki.html#SP1_7">§1.7</a><br/>Scenes - <a href="3-scn.html#SP1_5_1_1">§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">§8</a><br/>Kinds Index - <a href="2-ki.html#SP1_7">§1.7</a><br/>Phrasebook Index - <a href="2-pi.html#SP1_2">§1.2</a><br/>Scenes - <a href="3-scn.html#SP1_5_1_1">§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>§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">§16</a><br/>Index Physical World - <a href="2-ipw.html#SP3">§3</a>, <a href="2-ipw.html#SP4">§4</a><br/>Rules - <a href="2-rls.html#SP7">§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">§16</a><br/>Index Physical World - <a href="2-ipw.html#SP3">§3</a>, <a href="2-ipw.html#SP4">§4</a><br/>Rules - <a href="2-rls.html#SP7">§7</a><br/>Phrasebook Index - <a href="2-pi.html#SP1_3">§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">"&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">§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">"&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">§16</a><br/>Index Physical World - <a href="2-ipw.html#SP3">§3</a>, <a href="2-ipw.html#SP4">§4</a><br/>Rules - <a href="2-rls.html#SP7">§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">§16</a><br/>Index Physical World - <a href="2-ipw.html#SP3">§3</a>, <a href="2-ipw.html#SP4">§4</a><br/>Rules - <a href="2-rls.html#SP7">§7</a><br/>Phrasebook Index - <a href="2-pi.html#SP1_3">§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">§16</a><br/>Index Physical World - <a href="2-ipw.html#SP3">§3</a>, <a href="2-ipw.html#SP4">§4</a><br/>Rules - <a href="2-rls.html#SP7">§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">§16</a><br/>Index Physical World - <a href="2-ipw.html#SP3">§3</a>, <a href="2-ipw.html#SP4">§4</a><br/>Rules - <a href="2-rls.html#SP7">§7</a><br/>Phrasebook Index - <a href="2-pi.html#SP1_3">§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">§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">§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">§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">§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>§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">§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">§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">§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>§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">§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">§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>§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">§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">§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>§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">§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">§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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-im.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">§4</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ie.html">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ie.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-prp.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ih.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-li.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">§6</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ipw.html">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ipw.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-dr.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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>§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">§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"><=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"> <= </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">(&(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></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">(&(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></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">-></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">§1</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pi.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2" class="paragraph-anchor"></a><b>§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">) && (</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">-></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">-></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">"<b>"</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">-></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">-></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">"</b>"</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">§1</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pi.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_1" class="paragraph-anchor"></a><b>§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"><heading-with-parenthesis></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"><heading-with-parenthesis></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">§1.2</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pi.html#SP1_2">§1.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2" class="paragraph-anchor"></a><b>§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"><heading-name-hyphenated></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">§1.2</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pi.html#SP1_2">§1.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_3" class="paragraph-anchor"></a><b>§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">) && (</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">) && (</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">-></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">, &(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></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">(&(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></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">-></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">-></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">-></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">, &(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></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">(&(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></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">-></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">-></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">-></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">, &(</span><span class="identifier-syntax">run_begin</span><span class="plain-syntax">-></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">-></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">, &(</span><span class="identifier-syntax">run_begin</span><span class="plain-syntax">-></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">§1</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pi.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§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">§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">§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">-></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">-></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">-></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">-></span><span class="element-syntax">ph_documentation_symbol</span><span class="plain-syntax">, </span><span class="identifier-syntax">p2</span><span class="plain-syntax">-></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">-></span><span class="identifier-syntax">ph_documentation_symbol</span><span class="plain-syntax">, </span><span class="identifier-syntax">p2</span><span class="plain-syntax">-></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">§2.2</a><br/>Actions - <a href="3-act.html#SP1">§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"><heading-name-hyphenated></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"><<r>></span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) && (</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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-act.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
|
@ -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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-vrb.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-inf.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-adj.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">"<b>"</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>
|
||||
|
|
|
@ -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">❮</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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-pi.html">❮</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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 -> 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 -> 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>§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>§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"><s-literal> hits 2097/23662 nti 12 constraint (none) extremes [1, infinity)</span>
|
||||
<span class="plain-syntax"><s-literal> hits 1130/20872 nti 12 constraint (none) extremes [1, infinity)</span>
|
||||
<span class="plain-syntax"> English:</span>
|
||||
<span class="plain-syntax"> (@1)<cardinal-number>=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)<cardinal-number>=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)<quoted-text>=1 (@2)( (@3)<response-letter>=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)<quoted-text>=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"> <s-literal-real-number>=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)<s-literal-truth-state>=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"> <s-literal-list>=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 <s-unicode-character>=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"> <s-literal-time>=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"> <s-literal-unit-notation>=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: << kind=people variable-pointer(x) >>} {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: << kind=person(x) >>} {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: << kind=rulebook(x) >>} {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: << kind=rulebook(x) >>} {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: << kind=rulebook(x) >>} {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: << kind=artwork(x) >>} {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: << kind=thing(x) >>} {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: << kind=artwork(x) >>} {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: << kind=book(x) >>} {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: << kind=artwork(x) >>} {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: << kind=stamped envelope(x) >>} {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: << kind=thing(x) >>} {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: << kind=dvd(x) >>} {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: << kind=artwork(x) >>} {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: << kind=coupon(x) >>} {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: << kind=thing(x) >>} {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: << kind=infection color(x) >>} {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: << kind=person(x) >>} {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: << kind=person(x) >>} {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: << kind=container(x) >>} {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: << lockable(x) ^ lockable(x) >>}</span>
|
||||
<span class="plain-syntax"> ADJECTIVE_NT'unlocked' {refined} {predicate: unlocked} {creation: << unlocked(x) ^ unlocked(x) >>}</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: << kind=person(x) >>} {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: << kind=door(x) >>} {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: << kind=things variable-pointer(x) >>} {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: << kind=people variable-pointer(x) >>} {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: << kind=door(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
<span class="plain-syntax"> ADJECTIVE_NT'scenery' {refined} {predicate: scenery} {creation: << scenery(x) ^ scenery(x) >>}</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
|
@ -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">-></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">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3_3_1" class="paragraph-anchor"></a><b>§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
|
@ -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"><definition-header></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">-></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">-></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">-></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>
|
||||
|
|
|
@ -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">§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">§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">§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">§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>§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>§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>§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>§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">§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">§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">-></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">-></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">-></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">-></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">-></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>§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>§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">§11</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. </b></p>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-rls.html#SP12">§12</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. </b></p>
|
||||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><notable-rulebook-outcomes></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>§13. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§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>
|
||||
|
|
|
@ -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">§15</a>, <a href="4-rsfk.html#SP27_6_1">§27.6.1</a>, <a href="4-rsfk.html#SP27_6_2">§27.6.2</a>, <a href="4-rsfk.html#SP27_6_3">§27.6.3</a>, <a href="4-rsfk.html#SP27_6_4">§27.6.4</a>, <a href="4-rsfk.html#SP27_6_5">§27.6.5</a>, <a href="4-rsfk.html#SP27_6_6">§27.6.6</a><br/>Rules - <a href="4-rls.html#SP13">§13</a><br/>Showme Command - <a href="5-sc.html#SP4_1">§4.1</a>, <a href="5-sc.html#SP4_1_1">§4.1.1</a>, <a href="5-sc.html#SP4_1_1_1">§4.1.1.1</a><br/>Scenes - <a href="5-scn.html#SP5_1">§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">§15</a>, <a href="4-rsfk.html#SP27_6_1">§27.6.1</a>, <a href="4-rsfk.html#SP27_6_2">§27.6.2</a>, <a href="4-rsfk.html#SP27_6_3">§27.6.3</a>, <a href="4-rsfk.html#SP27_6_4">§27.6.4</a>, <a href="4-rsfk.html#SP27_6_5">§27.6.5</a>, <a href="4-rsfk.html#SP27_6_6">§27.6.6</a><br/>Rules - <a href="4-rls.html#SP14">§14</a><br/>Showme Command - <a href="5-sc.html#SP4_1">§4.1</a>, <a href="5-sc.html#SP4_1_1">§4.1.1</a>, <a href="5-sc.html#SP4_1_1_1">§4.1.1.1</a><br/>Scenes - <a href="5-scn.html#SP5_1">§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>
|
||||
|
|
|
@ -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">§3.1</a><br/>Text Literals - <a href="4-tl.html#SP13_2">§13.2</a><br/>Text Substitutions - <a href="4-ts.html#SP11">§11</a><br/>Responses - <a href="4-rsp.html#SP5_1">§5.1</a>, <a href="4-rsp.html#SP5_2">§5.2</a>, <a href="4-rsp.html#SP6_2">§6.2</a><br/>Rules - <a href="4-rls.html#SP3_1">§3.1</a>, <a href="4-rls.html#SP5">§5</a>, <a href="4-rls.html#SP7">§7</a>, <a href="4-rls.html#SP8_1_1">§8.1.1</a>, <a href="4-rls.html#SP11_1">§11.1</a>, <a href="4-rls.html#SP13">§13</a><br/>Equations Support - <a href="4-es.html#SP1">§1</a><br/>Test Scripts - <a href="4-ts2.html#SP3">§3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">§4</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1_1">§1.1</a>, <a href="4-uoart.html#SP1_2">§1.2</a><br/>Variables - <a href="4-vrb.html#SP5_1">§5.1</a><br/>Measurements - <a href="4-msr.html#SP1">§1</a><br/>Adjectives - <a href="4-adj.html#SP3_2">§3.2</a>, <a href="4-adj.html#SP5">§5</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP19_3">§19.3</a>, <a href="4-rsfk.html#SP27_1">§27.1</a>, <a href="4-rsfk.html#SP27_2">§27.2</a>, <a href="4-rsfk.html#SP27_3">§27.3</a>, <a href="4-rsfk.html#SP27_4">§27.4</a>, <a href="4-rsfk.html#SP27_5">§27.5</a>, <a href="4-rsfk.html#SP27_6_1">§27.6.1</a>, <a href="4-rsfk.html#SP27_6_2">§27.6.2</a>, <a href="4-rsfk.html#SP27_6_3">§27.6.3</a>, <a href="4-rsfk.html#SP27_6_4">§27.6.4</a>, <a href="4-rsfk.html#SP27_6_5">§27.6.5</a>, <a href="4-rsfk.html#SP27_6_6">§27.6.6</a>, <a href="4-rsfk.html#SP28">§28</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">§1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4_1">§4.1</a>, <a href="4-vart.html#SP4_2">§4.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP4">§4</a>, <a href="4-rart.html#SP4_2">§4.2</a>, <a href="4-rart.html#SP6">§6</a>, <a href="4-rart.html#SP18_1">§18.1</a>, <a href="4-rart.html#SP18_2">§18.2</a>, <a href="4-rart.html#SP18_3">§18.3</a>, <a href="4-rart.html#SP18_4">§18.4</a>, <a href="4-rart.html#SP18_5">§18.5</a>, <a href="4-rart.html#SP18_6">§18.6</a>, <a href="4-rart.html#SP19">§19</a>, <a href="4-rart.html#SP23">§23</a><br/>Literal Patterns at Run Time - <a href="4-lpart.html#SP2">§2</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP2">§2</a>, <a href="4-rsft.html#SP5">§5</a><br/>Naming - <a href="5-nmn.html#SP2">§2</a><br/>Backdrops - <a href="5-bck.html#SP2_1">§2.1</a>, <a href="5-bck.html#SP2_2">§2.2</a><br/>Regions - <a href="5-rgn.html#SP2">§2</a><br/>The Map - <a href="5-tm.html#SP4">§4</a><br/>Showme Command - <a href="5-sc.html#SP2">§2</a><br/>Scenes - <a href="5-scn.html#SP2">§2</a>, <a href="5-scn.html#SP6">§6</a><br/>Actions - <a href="5-act.html#SP2">§2</a><br/>Looping Over Scope - <a href="5-los.html#SP2_1">§2.1</a><br/>Named Action Patterns - <a href="5-nap.html#SP1">§1</a><br/>Command Grammars - <a href="5-cg.html#SP7">§7</a><br/>Command Grammar Lines - <a href="5-cgl.html#SP2">§2</a>, <a href="5-cgl.html#SP8">§8</a><br/>Noun Filter Tokens - <a href="5-nft.html#SP2">§2</a><br/>Tokens Parsing Values - <a href="5-tpv.html#SP1">§1</a><br/>General Parsing Routines - <a href="5-gpr.html#SP5">§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">§3.1</a><br/>Text Literals - <a href="4-tl.html#SP13_2">§13.2</a><br/>Text Substitutions - <a href="4-ts.html#SP11">§11</a><br/>Responses - <a href="4-rsp.html#SP5_1">§5.1</a>, <a href="4-rsp.html#SP5_2">§5.2</a>, <a href="4-rsp.html#SP6_2">§6.2</a><br/>Rules - <a href="4-rls.html#SP3_1">§3.1</a>, <a href="4-rls.html#SP5">§5</a>, <a href="4-rls.html#SP7">§7</a>, <a href="4-rls.html#SP8_1_1">§8.1.1</a>, <a href="4-rls.html#SP12_1">§12.1</a>, <a href="4-rls.html#SP14">§14</a><br/>Equations Support - <a href="4-es.html#SP1">§1</a><br/>Test Scripts - <a href="4-ts2.html#SP3">§3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">§4</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1_1">§1.1</a>, <a href="4-uoart.html#SP1_2">§1.2</a><br/>Variables - <a href="4-vrb.html#SP5_1">§5.1</a><br/>Measurements - <a href="4-msr.html#SP1">§1</a><br/>Adjectives - <a href="4-adj.html#SP3_2">§3.2</a>, <a href="4-adj.html#SP5">§5</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP19_3">§19.3</a>, <a href="4-rsfk.html#SP27_1">§27.1</a>, <a href="4-rsfk.html#SP27_2">§27.2</a>, <a href="4-rsfk.html#SP27_3">§27.3</a>, <a href="4-rsfk.html#SP27_4">§27.4</a>, <a href="4-rsfk.html#SP27_5">§27.5</a>, <a href="4-rsfk.html#SP27_6_1">§27.6.1</a>, <a href="4-rsfk.html#SP27_6_2">§27.6.2</a>, <a href="4-rsfk.html#SP27_6_3">§27.6.3</a>, <a href="4-rsfk.html#SP27_6_4">§27.6.4</a>, <a href="4-rsfk.html#SP27_6_5">§27.6.5</a>, <a href="4-rsfk.html#SP27_6_6">§27.6.6</a>, <a href="4-rsfk.html#SP28">§28</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">§1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4_1">§4.1</a>, <a href="4-vart.html#SP4_2">§4.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP4">§4</a>, <a href="4-rart.html#SP4_2">§4.2</a>, <a href="4-rart.html#SP6">§6</a>, <a href="4-rart.html#SP18_1">§18.1</a>, <a href="4-rart.html#SP18_2">§18.2</a>, <a href="4-rart.html#SP18_3">§18.3</a>, <a href="4-rart.html#SP18_4">§18.4</a>, <a href="4-rart.html#SP18_5">§18.5</a>, <a href="4-rart.html#SP18_6">§18.6</a>, <a href="4-rart.html#SP19">§19</a>, <a href="4-rart.html#SP23">§23</a><br/>Literal Patterns at Run Time - <a href="4-lpart.html#SP2">§2</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP2">§2</a>, <a href="4-rsft.html#SP5">§5</a><br/>Naming - <a href="5-nmn.html#SP2">§2</a><br/>Backdrops - <a href="5-bck.html#SP2_1">§2.1</a>, <a href="5-bck.html#SP2_2">§2.2</a><br/>Regions - <a href="5-rgn.html#SP2">§2</a><br/>The Map - <a href="5-tm.html#SP4">§4</a><br/>Showme Command - <a href="5-sc.html#SP2">§2</a><br/>Scenes - <a href="5-scn.html#SP2">§2</a>, <a href="5-scn.html#SP6">§6</a><br/>Actions - <a href="5-act.html#SP2">§2</a><br/>Looping Over Scope - <a href="5-los.html#SP2_1">§2.1</a><br/>Named Action Patterns - <a href="5-nap.html#SP1">§1</a><br/>Command Grammars - <a href="5-cg.html#SP7">§7</a><br/>Command Grammar Lines - <a href="5-cgl.html#SP2">§2</a>, <a href="5-cgl.html#SP8">§8</a><br/>Noun Filter Tokens - <a href="5-nft.html#SP2">§2</a><br/>Tokens Parsing Values - <a href="5-tpv.html#SP1">§1</a><br/>General Parsing Routines - <a href="5-gpr.html#SP5">§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">§3.1</a><br/>Text Literals - <a href="4-tl.html#SP13_2">§13.2</a><br/>Text Substitutions - <a href="4-ts.html#SP11">§11</a><br/>Responses - <a href="4-rsp.html#SP5_1">§5.1</a>, <a href="4-rsp.html#SP5_2">§5.2</a>, <a href="4-rsp.html#SP6_2">§6.2</a><br/>Rules - <a href="4-rls.html#SP3_1">§3.1</a>, <a href="4-rls.html#SP5">§5</a>, <a href="4-rls.html#SP7">§7</a>, <a href="4-rls.html#SP8_1_5">§8.1.5</a>, <a href="4-rls.html#SP11_1">§11.1</a>, <a href="4-rls.html#SP13">§13</a><br/>Equations Support - <a href="4-es.html#SP1">§1</a><br/>Test Scripts - <a href="4-ts2.html#SP3">§3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">§4</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1_1">§1.1</a>, <a href="4-uoart.html#SP1_2">§1.2</a><br/>Variables - <a href="4-vrb.html#SP5_1">§5.1</a><br/>Measurements - <a href="4-msr.html#SP1">§1</a><br/>Adjectives - <a href="4-adj.html#SP3_2">§3.2</a>, <a href="4-adj.html#SP5">§5</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP19_3">§19.3</a>, <a href="4-rsfk.html#SP27_1">§27.1</a>, <a href="4-rsfk.html#SP27_2">§27.2</a>, <a href="4-rsfk.html#SP27_3">§27.3</a>, <a href="4-rsfk.html#SP27_4">§27.4</a>, <a href="4-rsfk.html#SP27_5">§27.5</a>, <a href="4-rsfk.html#SP27_6_1">§27.6.1</a>, <a href="4-rsfk.html#SP27_6_2">§27.6.2</a>, <a href="4-rsfk.html#SP27_6_3">§27.6.3</a>, <a href="4-rsfk.html#SP27_6_4">§27.6.4</a>, <a href="4-rsfk.html#SP27_6_5">§27.6.5</a>, <a href="4-rsfk.html#SP27_6_6">§27.6.6</a>, <a href="4-rsfk.html#SP28">§28</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">§1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4_1">§4.1</a>, <a href="4-vart.html#SP4_2">§4.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP4">§4</a>, <a href="4-rart.html#SP4_2">§4.2</a>, <a href="4-rart.html#SP6">§6</a>, <a href="4-rart.html#SP18_1">§18.1</a>, <a href="4-rart.html#SP18_2">§18.2</a>, <a href="4-rart.html#SP18_3">§18.3</a>, <a href="4-rart.html#SP18_4">§18.4</a>, <a href="4-rart.html#SP18_5">§18.5</a>, <a href="4-rart.html#SP18_6">§18.6</a>, <a href="4-rart.html#SP19">§19</a>, <a href="4-rart.html#SP23">§23</a><br/>Literal Patterns at Run Time - <a href="4-lpart.html#SP2">§2</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP2">§2</a>, <a href="4-rsft.html#SP5">§5</a><br/>Naming - <a href="5-nmn.html#SP2">§2</a><br/>Backdrops - <a href="5-bck.html#SP2_1">§2.1</a>, <a href="5-bck.html#SP2_2">§2.2</a><br/>Regions - <a href="5-rgn.html#SP2">§2</a><br/>The Map - <a href="5-tm.html#SP4">§4</a><br/>Showme Command - <a href="5-sc.html#SP2">§2</a><br/>Scenes - <a href="5-scn.html#SP2">§2</a>, <a href="5-scn.html#SP6">§6</a><br/>Actions - <a href="5-act.html#SP2">§2</a><br/>Looping Over Scope - <a href="5-los.html#SP2_1">§2.1</a><br/>Named Action Patterns - <a href="5-nap.html#SP1">§1</a><br/>Command Grammars - <a href="5-cg.html#SP7">§7</a><br/>Command Grammar Lines - <a href="5-cgl.html#SP2">§2</a>, <a href="5-cgl.html#SP8">§8</a><br/>Noun Filter Tokens - <a href="5-nft.html#SP2">§2</a><br/>Tokens Parsing Values - <a href="5-tpv.html#SP1">§1</a><br/>General Parsing Routines - <a href="5-gpr.html#SP4">§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">§3.1</a><br/>Text Literals - <a href="4-tl.html#SP13_2">§13.2</a><br/>Text Substitutions - <a href="4-ts.html#SP11">§11</a><br/>Responses - <a href="4-rsp.html#SP5_1">§5.1</a>, <a href="4-rsp.html#SP5_2">§5.2</a>, <a href="4-rsp.html#SP6_2">§6.2</a><br/>Rules - <a href="4-rls.html#SP3_1">§3.1</a>, <a href="4-rls.html#SP5">§5</a>, <a href="4-rls.html#SP7">§7</a>, <a href="4-rls.html#SP8_1_5">§8.1.5</a>, <a href="4-rls.html#SP12_1">§12.1</a>, <a href="4-rls.html#SP14">§14</a><br/>Equations Support - <a href="4-es.html#SP1">§1</a><br/>Test Scripts - <a href="4-ts2.html#SP3">§3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">§4</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1_1">§1.1</a>, <a href="4-uoart.html#SP1_2">§1.2</a><br/>Variables - <a href="4-vrb.html#SP5_1">§5.1</a><br/>Measurements - <a href="4-msr.html#SP1">§1</a><br/>Adjectives - <a href="4-adj.html#SP3_2">§3.2</a>, <a href="4-adj.html#SP5">§5</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP19_3">§19.3</a>, <a href="4-rsfk.html#SP27_1">§27.1</a>, <a href="4-rsfk.html#SP27_2">§27.2</a>, <a href="4-rsfk.html#SP27_3">§27.3</a>, <a href="4-rsfk.html#SP27_4">§27.4</a>, <a href="4-rsfk.html#SP27_5">§27.5</a>, <a href="4-rsfk.html#SP27_6_1">§27.6.1</a>, <a href="4-rsfk.html#SP27_6_2">§27.6.2</a>, <a href="4-rsfk.html#SP27_6_3">§27.6.3</a>, <a href="4-rsfk.html#SP27_6_4">§27.6.4</a>, <a href="4-rsfk.html#SP27_6_5">§27.6.5</a>, <a href="4-rsfk.html#SP27_6_6">§27.6.6</a>, <a href="4-rsfk.html#SP28">§28</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">§1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4_1">§4.1</a>, <a href="4-vart.html#SP4_2">§4.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP4">§4</a>, <a href="4-rart.html#SP4_2">§4.2</a>, <a href="4-rart.html#SP6">§6</a>, <a href="4-rart.html#SP18_1">§18.1</a>, <a href="4-rart.html#SP18_2">§18.2</a>, <a href="4-rart.html#SP18_3">§18.3</a>, <a href="4-rart.html#SP18_4">§18.4</a>, <a href="4-rart.html#SP18_5">§18.5</a>, <a href="4-rart.html#SP18_6">§18.6</a>, <a href="4-rart.html#SP19">§19</a>, <a href="4-rart.html#SP23">§23</a><br/>Literal Patterns at Run Time - <a href="4-lpart.html#SP2">§2</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP2">§2</a>, <a href="4-rsft.html#SP5">§5</a><br/>Naming - <a href="5-nmn.html#SP2">§2</a><br/>Backdrops - <a href="5-bck.html#SP2_1">§2.1</a>, <a href="5-bck.html#SP2_2">§2.2</a><br/>Regions - <a href="5-rgn.html#SP2">§2</a><br/>The Map - <a href="5-tm.html#SP4">§4</a><br/>Showme Command - <a href="5-sc.html#SP2">§2</a><br/>Scenes - <a href="5-scn.html#SP2">§2</a>, <a href="5-scn.html#SP6">§6</a><br/>Actions - <a href="5-act.html#SP2">§2</a><br/>Looping Over Scope - <a href="5-los.html#SP2_1">§2.1</a><br/>Named Action Patterns - <a href="5-nap.html#SP1">§1</a><br/>Command Grammars - <a href="5-cg.html#SP7">§7</a><br/>Command Grammar Lines - <a href="5-cgl.html#SP2">§2</a>, <a href="5-cgl.html#SP8">§8</a><br/>Noun Filter Tokens - <a href="5-nft.html#SP2">§2</a><br/>Tokens Parsing Values - <a href="5-tpv.html#SP1">§1</a><br/>General Parsing Routines - <a href="5-gpr.html#SP4">§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>
|
||||
|
|
|
@ -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">-></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">-></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">-></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">-></span><span class="element-syntax">down</span><span class="plain-syntax">, </span><span class="identifier-syntax">ts</span><span class="plain-syntax">-></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">-></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">-></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">-></span><span class="identifier-syntax">next</span><span class="plain-syntax">, </span><span class="identifier-syntax">ts</span><span class="plain-syntax">-></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">-></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">-></span><span class="element-syntax">down</span><span class="plain-syntax">);</span>
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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">-></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">) && (</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">) && (</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>
|
||||
|
|
|
@ -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">§6.9</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_9_2_1" class="paragraph-anchor"></a><b>§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>
|
||||
|
||||
|
|
|
@ -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>§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>
|
||||
|
|
|
@ -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
|
@ -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
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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));
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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."
|
||||
|
|
|
@ -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@> =
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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."
|
||||
|
|
|
@ -23,6 +23,7 @@ Chapter 2: Indexing
|
|||
Inferences
|
||||
Rules
|
||||
Activities
|
||||
Phrasebook Index
|
||||
|
||||
Chapter 3: Indexing for Plugins
|
||||
Figures
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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:'!");
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue