1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-07-08 10:04:21 +03:00

Isolated going support

This commit is contained in:
Graham Nelson 2021-03-04 13:44:16 +00:00
parent d8f428e863
commit 2963bf11f0
31 changed files with 869 additions and 686 deletions

View file

@ -227,7 +227,7 @@ scenes &mdash; to express which, the <a href="3-scn.html#SP10" class="internal">
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Instances::get_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_instance</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Instances::get_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_instance</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>
</pre> </pre>
<ul class="endnotetexts"><li>The structure scene is private to this section.</li><li>The structure scene_end is private to this section.</li><li>The structure scene_connector is accessed in 2/ri, 3/tm, 3/ts, 4/ap, 4/av, 4/apc, 5/tfg, 5/gl and here.</li></ul> <ul class="endnotetexts"><li>The structure scene is private to this section.</li><li>The structure scene_end is private to this section.</li><li>The structure scene_connector is accessed in 2/ri, 3/tm, 3/ts, 4/ap, 4/av, 4/ap2, 4/apc, 5/tfg, 5/gl and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>&#167;11. </b>A plugin called <span class="extract"><span class="extract-syntax">xyzzy</span></span> generally has a hunk of subject data called <span class="extract"><span class="extract-syntax">xyzzy_data</span></span>, <p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>&#167;11. </b>A plugin called <span class="extract"><span class="extract-syntax">xyzzy</span></span> generally has a hunk of subject data called <span class="extract"><span class="extract-syntax">xyzzy_data</span></span>,
so we would normally have a structure called <span class="extract"><span class="extract-syntax">scenes_data</span></span>, but in fact that so we would normally have a structure called <span class="extract"><span class="extract-syntax">scenes_data</span></span>, but in fact that
structure is just going to be <a href="3-scn.html#SP10" class="internal">scene</a>. So: structure is just going to be <a href="3-scn.html#SP10" class="internal">scene</a>. So:

View file

@ -685,15 +685,15 @@ deduction is made:
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Map::check_going</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">Map::check_going</span></span>:<br/><a href="3-tm.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax">,</span> <span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Map::check_going</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">Map::check_going</span></span>:<br/><a href="3-tm.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</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">by</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">through</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pushing</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">by</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">through</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pushing</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-ap2.html#SP5" class="function-link"><span class="function-syntax">ActionPatterns::check_going</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="string-syntax">"from"</span><span class="plain-syntax">,</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-gng.html#SP3" class="function-link"><span class="function-syntax">Going::check_going</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="string-syntax">"from"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">K_room</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_region</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">K_room</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_region</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-ap2.html#SP5" class="function-link"><span class="function-syntax">ActionPatterns::check_going</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="string-syntax">"to"</span><span class="plain-syntax">,</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-gng.html#SP3" class="function-link"><span class="function-syntax">Going::check_going</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="string-syntax">"to"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">K_room</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_region</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">K_room</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_region</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-ap2.html#SP5" class="function-link"><span class="function-syntax">ActionPatterns::check_going</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">by</span><span class="plain-syntax">, </span><span class="string-syntax">"by"</span><span class="plain-syntax">,</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-gng.html#SP3" class="function-link"><span class="function-syntax">Going::check_going</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">by</span><span class="plain-syntax">, </span><span class="string-syntax">"by"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">K_thing</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">K_thing</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-ap2.html#SP5" class="function-link"><span class="function-syntax">ActionPatterns::check_going</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">through</span><span class="plain-syntax">, </span><span class="string-syntax">"through"</span><span class="plain-syntax">,</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-gng.html#SP3" class="function-link"><span class="function-syntax">Going::check_going</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">through</span><span class="plain-syntax">, </span><span class="string-syntax">"through"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">K_door</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">K_door</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-ap2.html#SP5" class="function-link"><span class="function-syntax">ActionPatterns::check_going</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pushing</span><span class="plain-syntax">, </span><span class="string-syntax">"with"</span><span class="plain-syntax">,</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-gng.html#SP3" class="function-link"><span class="function-syntax">Going::check_going</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pushing</span><span class="plain-syntax">, </span><span class="string-syntax">"with"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">K_thing</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">K_thing</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</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">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>

View file

@ -214,7 +214,7 @@ have to correspond to names referenced in <a href="../WorldModelKit/index.html"
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
</pre> </pre>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-anaa.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresscurrent">act</li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-as.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="4-anaa.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresscurrent">act</li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-as.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->
</main> </main>

View file

@ -147,7 +147,7 @@ function togglePopup(material_id) {
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
</pre> </pre>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-ap.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresscurrent">anaa</li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-act.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="4-ap.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresscurrent">anaa</li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-act.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->
</main> </main>

View file

@ -339,7 +339,7 @@ used in sorting algorithms.
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::compare_specificity</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">ActionNameLists::compare_specificity</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl1</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl2</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::compare_specificity</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">ActionNameLists::compare_specificity</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl1</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">anl2</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">count1</span><span class="plain-syntax">, </span><span class="identifier-syntax">count2</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">count1</span><span class="plain-syntax">, </span><span class="identifier-syntax">count2</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">count1</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP11" class="function-link"><span class="function-syntax">ActionNameLists::count_actions_covered</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">anl1</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">count1</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP11" class="function-link"><span class="function-syntax">ActionNameLists::count_actions_covered</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">anl1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">count2</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP11" class="function-link"><span class="function-syntax">ActionNameLists::count_actions_covered</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">anl2</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">count2</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP11" class="function-link"><span class="function-syntax">ActionNameLists::count_actions_covered</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">anl2</span><span class="plain-syntax">);</span>
@ -905,7 +905,7 @@ the trial entry for future trials.
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP24_1_3">&#167;24.1.3</a> (three times).</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP24_1_3">&#167;24.1.3</a> (three times).</li></ul>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-ann.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresscurrent">anl</li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-ap2.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="4-ann.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresscurrent">anl</li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-ap2.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->
</main> </main>

View file

@ -318,7 +318,7 @@ number of words.
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
</pre> </pre>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-av.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresscurrent">ann</li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-anl.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="4-av.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresscurrent">ann</li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-anl.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->
</main> </main>

View file

@ -523,7 +523,7 @@ to nothing".
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
</pre> </pre>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-ts.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresscurrent">ap</li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-anaa.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="3-ts.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresscurrent">ap</li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-anaa.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->
</main> </main>

View file

@ -20,20 +20,6 @@ function togglePopup(material_id) {
</script> </script>
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css"> <link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
<script>
MathJax = {
tex: {
inlineMath: '$', '$'], ['\\(', '\\)'
},
svg: {
fontCache: 'global'
}
};
</script>
<script type="text/javascript" id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js">
</script>
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css"> <link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head> </head>
@ -86,8 +72,6 @@ MathJax = {
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">if</a></li><li><a href="index.html#4">Chapter 4: Actions</a></li><li><b>Action Patterns</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">if</a></li><li><a href="index.html#4">Chapter 4: Actions</a></li><li><b>Action Patterns</b></li></ul></div>
<p class="purpose">An action pattern is a description which may match many actions or none. The text "doing something" matches every action, while "throwing something at a door in a dark room" is seldom matched.</p> <p class="purpose">An action pattern is a description which may match many actions or none. The text "doing something" matches every action, while "throwing something at a door in a dark room" is seldom matched.</p>
<ul class="toc"><li><a href="4-ap2.html#SP6">&#167;6. Action pattern specificity</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>Action patterns are essentially a conjunction of specifications &mdash; the <p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>Action patterns are essentially a conjunction of specifications &mdash; the
action must be this, and the noun must be that, and... While action must be this, and the noun must be that, and... While
they allow disjunction in the choice of action, all of that code is a they allow disjunction in the choice of action, all of that code is a
@ -163,29 +147,7 @@ STV clauses; (2) get this right:
<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">ActionPatterns::log</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">ActionPatterns::log</span></span>:<br/>IF Module - <a href="1-im.html#SP2">&#167;2</a>, <a href="1-im.html#SP2_3">&#167;2.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::log</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">ActionPatterns::log</span></span>:<br/>IF Module - <a href="1-im.html#SP2">&#167;2</a>, <a href="1-im.html#SP2_3">&#167;2.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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">ap</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" [Null]"</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="4-ap2.html#SP4" class="function-link"><span class="function-syntax">ActionPatterns::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">DL</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">valid</span><span class="plain-syntax"> != </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" [Invalid]"</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">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" [Valid]"</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">" Action: "</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">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">action_list</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"unspecified"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="4-anl.html#SP17" class="function-link"><span class="function-syntax">ActionNameLists::log_briefly</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">action_list</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" Noun: $P"</span><span class="plain-syntax">, </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_second</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" Second: $P"</span><span class="plain-syntax">, </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_second</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" From: $P"</span><span class="plain-syntax">, </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" To: $P"</span><span class="plain-syntax">, </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_BY_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" By: $P"</span><span class="plain-syntax">, </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_BY_AP_CLAUSE</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_THROUGH_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" Through: $P"</span><span class="plain-syntax">, </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_THROUGH_AP_CLAUSE</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">PUSHING_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" Pushing: $P"</span><span class="plain-syntax">, </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">PUSHING_AP_CLAUSE</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" Room: $P"</span><span class="plain-syntax">, </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">PARAMETRIC_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" Parameter: $P"</span><span class="plain-syntax">, </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">PARAMETRIC_AP_CLAUSE</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_presence</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" Presence: $P"</span><span class="plain-syntax">, </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_presence</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::going_nowhere</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" Nowhere "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::going_somewhere</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" Somewhere "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">WHEN_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" When: $P "</span><span class="plain-syntax">, </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">WHEN_AP_CLAUSE</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">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">duration</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" Duration: $t "</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">duration</span><span class="plain-syntax">);</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">"\n"</span><span class="plain-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">ActionPatterns::write</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">ActionPatterns::write</span></span>:<br/>Actions-Only Nodes and Annotations - <a href="4-anaa.html#SP3">&#167;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">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::write</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">ActionPatterns::write</span></span>:<br/>Actions-Only Nodes and Annotations - <a href="4-anaa.html#SP3">&#167;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">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
@ -195,19 +157,7 @@ STV clauses; (2) get this right:
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;action: "</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;action: "</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">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">action_list</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"unspecified"</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">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">action_list</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"unspecified"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="4-anl.html#SP17" class="function-link"><span class="function-syntax">ActionNameLists::log_briefly</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">action_list</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="4-anl.html#SP17" class="function-link"><span class="function-syntax">ActionNameLists::log_briefly</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">action_list</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" noun: %P"</span><span class="plain-syntax">, </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">));</span> <span class="plain-syntax"> </span><a href="4-apc.html#SP4" class="function-link"><span class="function-syntax">APClauses::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_second</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" second: %P"</span><span class="plain-syntax">, </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_second</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" from: %P"</span><span class="plain-syntax">, </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" to: %P"</span><span class="plain-syntax">, </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_BY_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" by: %P"</span><span class="plain-syntax">, </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_BY_AP_CLAUSE</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_THROUGH_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" through: %P"</span><span class="plain-syntax">, </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_THROUGH_AP_CLAUSE</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">PUSHING_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" pushing: %P"</span><span class="plain-syntax">, </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">PUSHING_AP_CLAUSE</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" room: %P"</span><span class="plain-syntax">, </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">PARAMETRIC_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" parameter: %P"</span><span class="plain-syntax">, </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">PARAMETRIC_AP_CLAUSE</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_presence</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" presence: %P"</span><span class="plain-syntax">, </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_presence</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::going_nowhere</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" Nowhere "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::going_somewhere</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" Somewhere "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">WHEN_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" when: %P"</span><span class="plain-syntax">, </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">WHEN_AP_CLAUSE</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">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">duration</span><span class="plain-syntax">) { </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" duration: "</span><span class="plain-syntax">); </span><span class="identifier-syntax">Occurrence::log</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">duration</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">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">duration</span><span class="plain-syntax">) { </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" duration: "</span><span class="plain-syntax">); </span><span class="identifier-syntax">Occurrence::log</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">duration</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">"&gt;"</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&gt;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
@ -219,7 +169,7 @@ STV clauses; (2) get this right:
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">sap</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">sap</span><span class="plain-syntax">;</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">ActionPatterns::is_named</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">ActionPatterns::is_named</span></span>:<br/><a href="4-ap2.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::is_named</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">ActionPatterns::is_named</span></span>:<br/><a href="4-ap2.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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">ap</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">ap</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">anl_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">item</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP10" class="function-link"><span class="function-syntax">ActionNameLists::first_item</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">action_list</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">anl_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">item</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP10" class="function-link"><span class="function-syntax">ActionNameLists::first_item</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">action_list</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">item</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">item</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">nap_listed</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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">item</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">item</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">nap_listed</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>
@ -272,12 +222,12 @@ STV clauses; (2) get this right:
<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">ActionPatterns::is_overspecific</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::is_overspecific</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">WHEN_AP_CLAUSE</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">TRUE</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">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ap_clauses</span><span class="plain-syntax">):</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">; </span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</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">TRUE</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_ID</span><span class="plain-syntax"> != </span><span class="constant-syntax">NOUN_AP_CLAUSE</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_presence</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</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">TRUE</span><span class="plain-syntax">;</span> <span class="plain-syntax"> (</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_ID</span><span class="plain-syntax"> != </span><span class="constant-syntax">SECOND_AP_CLAUSE</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP4" class="function-link"><span class="function-syntax">APClauses::has_stv_clauses</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</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="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_ID</span><span class="plain-syntax"> != </span><span class="constant-syntax">ACTOR_AP_CLAUSE</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::going_nowhere</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_spec</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::going_somewhere</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</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">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::has_any_actor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</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">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::has_any_actor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">duration</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">duration</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><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
@ -319,93 +269,58 @@ an action.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">UNKNOWN_NT</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">UNKNOWN_NT</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</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">ActionPatterns::check_going</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">ActionPatterns::check_going</span></span>:<br/>The Map - <a href="3-tm.html#SP30">&#167;30</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">keyword</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">ka</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kb</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">spec</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">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Rvalues::is_nothing_object_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Specifications::is_description_like</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">oref</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::object_exactly_described_if_any</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">oref</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">ka</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">oref</span><span class="plain-syntax">, </span><span class="identifier-syntax">ka</span><span class="plain-syntax">)) ||</span>
<span class="plain-syntax"> ((</span><span class="identifier-syntax">kb</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">oref</span><span class="plain-syntax">, </span><span class="identifier-syntax">kb</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="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_object</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">oref</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">keyword</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_kind</span><span class="plain-syntax">(4, </span><span class="identifier-syntax">ka</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_kind</span><span class="plain-syntax">(5, </span><span class="identifier-syntax">Instances::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">oref</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">kb</span><span class="plain-syntax">) </span><span class="identifier-syntax">Problems::quote_kind</span><span class="plain-syntax">(6, </span><span class="identifier-syntax">kb</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_GoingWrongKind</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">kb</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="string-syntax">"In the sentence %1, %2 seems to be intended as something the "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"player might be going %3, but this has the wrong kind: %5 "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"rather than %4 or %6."</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">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="string-syntax">"In the sentence %1, %2 seems to be intended as something the player "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"might be going %3, but this has the wrong kind: %5 rather than %4."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="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="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">keyword</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_GoingWithoutObject</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="string-syntax">"In the sentence %1, '%2' seems to be intended as something the player "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"might be going %3, but it doesn't make sense in that context."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre> </pre>
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>&#167;6. Action pattern specificity. </b>The following is one of Inform's standardised comparison routines, which <p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>&#167;6. </b>And an anticlimactic little routine for putting objects
takes a pair of objects A, B and returns 1 if A makes a more specific into action patterns in the noun or second noun position.
description than B, 0 if they seem equally specific, or \(-1\) if B makes a
more specific description than A. This is transitive, and intended to be
used in sorting algorithms.
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::ap_count_rooms</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::put_action_object_into_ap</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">ActionPatterns::put_action_object_into_ap</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP21_5_4">&#167;21.5.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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="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">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="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="identifier-syntax">c</span><span class="plain-syntax"> += </span><span class="constant-syntax">2</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">any_flag</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><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">c</span><span class="plain-syntax"> += </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax">&lt;action-operand&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">c</span><span class="plain-syntax"> += </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax">&lt;&lt;r&gt;&gt;</span><span class="plain-syntax">) </span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;rp&gt;&gt;</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">c</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">any_flag</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_thing</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">spec</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::new_UNKNOWN</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">K_understanding</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">Rvalues::is_CONSTANT_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_text</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_understanding</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">spec</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">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">ACTION_PATTERN_PARSING</span><span class="plain-syntax">, </span><span class="string-syntax">"PAOIA (clause %d) %W = $P\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">any_flag</span><span class="plain-syntax">) </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_opt</span></a><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">), </span><span class="constant-syntax">DO_NOT_VALIDATE_APCOPT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::clear_opt</span></a><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">), </span><span class="constant-syntax">DO_NOT_VALIDATE_APCOPT</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. </b></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">ActionPatterns::refers_to_past</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">duration</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> <span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::ap_count_going</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::convert_to_present_tense</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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="identifier-syntax">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">duration</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">PUSHING_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">c</span><span class="plain-syntax"> += </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_BY_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">c</span><span class="plain-syntax"> += </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_THROUGH_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">c</span><span class="plain-syntax"> += </span><span class="constant-syntax">2</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">c</span><span class="plain-syntax">;</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">ActionPatterns::count_aspects</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::pta_acceptable</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
<span class="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="identifier-syntax">instance</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">ap</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="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">spec</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">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">PUSHING_AP_CLAUSE</span><span class="plain-syntax">)) ||</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Specifications::is_description</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_BY_AP_CLAUSE</span><span class="plain-syntax">)) ||</span> <span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::object_exactly_described_if_any</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_THROUGH_AP_CLAUSE</span><span class="plain-syntax">)))</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">) </span><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="identifier-syntax">c</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><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) ||</span> <span class="plain-syntax">}</span>
<span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">)) ||</span>
<span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</span><span class="plain-syntax">)))</span> <span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::makes_callings</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c</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">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ap_clauses</span><span class="plain-syntax">; </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">; </span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</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">Descriptions::makes_callings</span><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_spec</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_second</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</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><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_actor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</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="identifier-syntax">c</span><span class="plain-syntax">++;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_presence</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="identifier-syntax">c</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">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">duration</span><span class="plain-syntax">) || (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">WHEN_AP_CLAUSE</span><span class="plain-syntax">))) </span><span class="identifier-syntax">c</span><span class="plain-syntax">++;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">PARAMETRIC_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">c</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">c</span><span class="plain-syntax">;</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">ActionPatterns::compare_specificity</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::compare_specificity</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap2</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">rv</span><span class="plain-syntax">, </span><span class="identifier-syntax">suspend_usual_from_and_room</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">rct1</span><span class="plain-syntax">, </span><span class="identifier-syntax">rct2</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">ap1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ap1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ap2</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="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">ap1</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ap2</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="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">ap1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ap2</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="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">ap1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ap2</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="constant-syntax">0</span><span class="plain-syntax">;</span>
@ -416,82 +331,7 @@ used in sorting algorithms.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">valid</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">valid</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"> -1;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">valid</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">valid</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"> -1;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">valid</span><span class="plain-syntax"> != </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">valid</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="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">ap1</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">valid</span><span class="plain-syntax"> != </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">valid</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="constant-syntax">1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.1 - Object To Which Rule Applies"</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">rv</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP5" class="function-link"><span class="function-syntax">APClauses::compare_specificity</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">PARAMETRIC_AP_CLAUSE</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">PARAMETRIC_AP_CLAUSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.2.1 - Action/Where/Going In Exotic Ways"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rct1</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::ap_count_going</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">); </span><span class="identifier-syntax">rct2</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::ap_count_going</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</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">rct1</span><span class="plain-syntax"> &gt; </span><span class="identifier-syntax">rct2</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rct1</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">rct2</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">PUSHING_AP_CLAUSE</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">PUSHING_AP_CLAUSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_BY_AP_CLAUSE</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_BY_AP_CLAUSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_THROUGH_AP_CLAUSE</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_THROUGH_AP_CLAUSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.2.2 - Action/Where/Room Where Action Takes Place"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rct1</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::ap_count_rooms</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">); </span><span class="identifier-syntax">rct2</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::ap_count_rooms</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</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">rct1</span><span class="plain-syntax"> &gt; </span><span class="identifier-syntax">rct2</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rct1</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">rct2</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">)) &amp;&amp; (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> &amp;&amp; (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">)) &amp;&amp; (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</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">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">suspend_usual_from_and_room</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">)) &amp;&amp; (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> &amp;&amp; (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">)) &amp;&amp; (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</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">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">suspend_usual_from_and_room</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">suspend_usual_from_and_room</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">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</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">suspend_usual_from_and_room</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">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.2.3 - Action/Where/In The Presence Of"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_presence</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_presence</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.2.4 - Action/Where/Other Optional Clauses"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP4" class="function-link"><span class="function-syntax">APClauses::compare_specificity_of_apoc_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</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">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.3.1 - Action/What/Second Thing Acted On"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_second</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_second</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.3.2 - Action/What/Thing Acted On"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.3.3 - Action/What/Actor Performing Action"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_actor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_actor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</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">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.4.1 - Action/How/What Happens"</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.4.1 - Action/How/What Happens"</span><span class="plain-syntax">;</span>
@ -515,78 +355,12 @@ used in sorting algorithms.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-ap2.html#SP4" class="function-link"><span class="function-syntax">ActionPatterns::is_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp; (</span><a href="4-ap2.html#SP4" class="function-link"><span class="function-syntax">ActionPatterns::is_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">)))</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-ap2.html#SP4" class="function-link"><span class="function-syntax">ActionPatterns::is_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp; (</span><a href="4-ap2.html#SP4" class="function-link"><span class="function-syntax">ActionPatterns::is_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
</pre> </pre>
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. </b>And an anticlimactic little routine for putting objects
into action patterns in the noun or second noun position.
</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">ActionPatterns::put_action_object_into_ap</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">ActionPatterns::put_action_object_into_ap</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP21_5_4">&#167;21.5.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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="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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">any_flag</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="function-syntax">&lt;action-operand&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax">&lt;&lt;r&gt;&gt;</span><span class="plain-syntax">) </span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;rp&gt;&gt;</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">any_flag</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_thing</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">spec</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::new_UNKNOWN</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">K_understanding</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">Rvalues::is_CONSTANT_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_text</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_understanding</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">spec</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">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">ACTION_PATTERN_PARSING</span><span class="plain-syntax">, </span><span class="string-syntax">"PAOIA (clause %d) %W = $P\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">any_flag</span><span class="plain-syntax">) </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_opt</span></a><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">), </span><span class="constant-syntax">DO_NOT_VALIDATE_APCOPT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::clear_opt</span></a><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">), </span><span class="constant-syntax">DO_NOT_VALIDATE_APCOPT</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>&#167;8. </b></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">ActionPatterns::refers_to_past</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">duration</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>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::convert_to_present_tense</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">duration</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="function-syntax">ActionPatterns::pta_acceptable</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</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">spec</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">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Specifications::is_description</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::object_exactly_described_if_any</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</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>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::makes_callings</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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">Descriptions::makes_callings</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Descriptions::makes_callings</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_second</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Descriptions::makes_callings</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_actor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Descriptions::makes_callings</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Descriptions::makes_callings</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">PARAMETRIC_AP_CLAUSE</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Descriptions::makes_callings</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_presence</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</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>
</pre>
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>&#167;9. </b></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">ActionPatterns::is_an_action_variable</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nlv</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">spec</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">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">Lvalues::get_storage_form</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) != </span><span class="identifier-syntax">NONLOCAL_VARIABLE_NT</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="identifier-syntax">nlv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_constant_nonlocal_variable</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">nlv</span><span class="plain-syntax"> == </span><span class="identifier-syntax">I6_noun_VAR</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">nlv</span><span class="plain-syntax"> == </span><span class="identifier-syntax">I6_second_VAR</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">nlv</span><span class="plain-syntax"> == </span><span class="identifier-syntax">I6_actor_VAR</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>
</pre>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-anl.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresscurrent">ap2</li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-apc.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="4-anl.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresscurrent">ap2</li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-apc.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->
</main> </main>

View file

@ -20,6 +20,20 @@ function togglePopup(material_id) {
</script> </script>
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css"> <link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
<script>
MathJax = {
tex: {
inlineMath: '$', '$'], ['\\(', '\\)'
},
svg: {
fontCache: 'global'
}
};
</script>
<script type="text/javascript" id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js">
</script>
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css"> <link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head> </head>
@ -72,6 +86,8 @@ function togglePopup(material_id) {
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">if</a></li><li><a href="index.html#4">Chapter 4: Actions</a></li><li><b>Action Pattern Clauses</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">if</a></li><li><a href="index.html#4">Chapter 4: Actions</a></li><li><b>Action Pattern Clauses</b></li></ul></div>
<p class="purpose">Pattern-matches on individual nouns in an action are called clauses.</p> <p class="purpose">Pattern-matches on individual nouns in an action are called clauses.</p>
<ul class="toc"><li><a href="4-apc.html#SP5">&#167;5. Action pattern specificity</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b></p> <p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b></p>
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">PARAMETRIC_AP_CLAUSE</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span> <pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">PARAMETRIC_AP_CLAUSE</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span>
@ -83,12 +99,6 @@ function togglePopup(material_id) {
<span class="definition-keyword">enum</span> <span class="constant-syntax">WHEN_AP_CLAUSE</span> <span class="definition-keyword">enum</span> <span class="constant-syntax">WHEN_AP_CLAUSE</span>
</pre> </pre>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="definition-keyword">enum</span> <span class="constant-syntax">GOING_FROM_AP_CLAUSE</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">GOING_TO_AP_CLAUSE</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">GOING_THROUGH_AP_CLAUSE</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">GOING_BY_AP_CLAUSE</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">PUSHING_AP_CLAUSE</span>
<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">ap_clause</span><span class="plain-syntax"> {</span> <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">ap_clause</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">clause_ID</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">clause_ID</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">stacked_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stv_to_match</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">stacked_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stv_to_match</span><span class="plain-syntax">;</span>
@ -98,7 +108,7 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span> <span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax">;</span> <span class="plain-syntax">} </span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax">;</span>
</pre> </pre>
<ul class="endnotetexts"><li>The structure ap_clause is accessed in 2/ri, 3/tm, 3/scn, 3/ts, 4/ap, 4/av, 5/tfg, 5/gl and here.</li></ul> <ul class="endnotetexts"><li>The structure ap_clause is accessed in 2/ri, 3/tm, 3/scn, 3/ts, 4/ap, 4/av, 4/ap2, 4/gng, 5/tfg, 5/gl and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>The clause options are a bitmap. Some are meaningful only for one or two <p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>The clause options are a bitmap. Some are meaningful only for one or two
clauses. clauses.
</p> </p>
@ -117,17 +127,17 @@ clauses.
<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">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="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::set_opt</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">APClauses::set_opt</span></span>:<br/><a href="4-apc.html#SP4">&#167;4</a><br/>Action Patterns - <a href="4-ap2.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">opt</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::set_opt</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">APClauses::set_opt</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP6">&#167;6</a><br/>Going - <a href="4-gng.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">opt</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">apoc</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">"no such apoc"</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">apoc</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">"no such apoc"</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">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_options</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">opt</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_options</span><span class="plain-syntax"> += </span><span class="identifier-syntax">opt</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">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_options</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">opt</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_options</span><span class="plain-syntax"> += </span><span class="identifier-syntax">opt</span><span class="plain-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">APClauses::clear_opt</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">APClauses::clear_opt</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">opt</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::clear_opt</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">APClauses::clear_opt</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">opt</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">apoc</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">"no such apoc"</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">apoc</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">"no such apoc"</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">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_options</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">opt</span><span class="plain-syntax">) </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_options</span><span class="plain-syntax"> -= </span><span class="identifier-syntax">opt</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">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_options</span><span class="plain-syntax"> &amp; </span><span class="identifier-syntax">opt</span><span class="plain-syntax">) </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_options</span><span class="plain-syntax"> -= </span><span class="identifier-syntax">opt</span><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="function-syntax">APClauses::get_actor</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">APClauses::get_actor</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">&#167;4</a>, <a href="4-ap2.html#SP5">&#167;5</a>, <a href="4-ap2.html#SP6">&#167;6</a>, <a href="4-ap2.html#SP8">&#167;8</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_1">&#167;21.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span> <span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">APClauses::get_actor</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">APClauses::get_actor</span></span>:<br/><a href="4-apc.html#SP5">&#167;5</a><br/>Action Patterns - <a href="4-ap2.html#SP4">&#167;4</a>, <a href="4-ap2.html#SP5">&#167;5</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_1">&#167;21.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">ACTOR_AP_CLAUSE</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-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">ACTOR_AP_CLAUSE</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
@ -135,7 +145,7 @@ clauses.
<span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">ACTOR_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">ACTOR_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><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="function-syntax">APClauses::get_noun</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">APClauses::get_noun</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">&#167;4</a>, <a href="4-ap2.html#SP6">&#167;6</a>, <a href="4-ap2.html#SP8">&#167;8</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_1">&#167;21.1</a>, <a href="4-pap.html#SP21_5">&#167;21.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span> <span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">APClauses::get_noun</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">APClauses::get_noun</span></span>:<br/><a href="4-apc.html#SP5">&#167;5</a><br/>Action Patterns - <a href="4-ap2.html#SP4">&#167;4</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_1">&#167;21.1</a>, <a href="4-pap.html#SP21_5">&#167;21.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">NOUN_AP_CLAUSE</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-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">NOUN_AP_CLAUSE</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
@ -143,7 +153,7 @@ clauses.
<span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">NOUN_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">NOUN_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><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="function-syntax">APClauses::get_second</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">APClauses::get_second</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">&#167;4</a>, <a href="4-ap2.html#SP6">&#167;6</a>, <a href="4-ap2.html#SP8">&#167;8</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_1">&#167;21.1</a>, <a href="4-pap.html#SP21_5">&#167;21.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span> <span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">APClauses::get_second</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">APClauses::get_second</span></span>:<br/><a href="4-apc.html#SP5">&#167;5</a><br/>Action Patterns - <a href="4-ap2.html#SP4">&#167;4</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_1">&#167;21.1</a>, <a href="4-pap.html#SP21_5">&#167;21.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">SECOND_AP_CLAUSE</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-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">SECOND_AP_CLAUSE</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
@ -151,7 +161,7 @@ clauses.
<span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">SECOND_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">SECOND_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><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="function-syntax">APClauses::get_presence</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">APClauses::get_presence</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">&#167;4</a>, <a href="4-ap2.html#SP6">&#167;6</a>, <a href="4-ap2.html#SP8">&#167;8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span> <span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">APClauses::get_presence</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">APClauses::get_presence</span></span>:<br/><a href="4-apc.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">IN_THE_PRESENCE_OF_AP_CLAUSE</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-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">IN_THE_PRESENCE_OF_AP_CLAUSE</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
@ -159,7 +169,7 @@ clauses.
<span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">IN_THE_PRESENCE_OF_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">IN_THE_PRESENCE_OF_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><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="function-syntax">APClauses::get_room</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">APClauses::get_room</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">&#167;4</a>, <a href="4-ap2.html#SP6">&#167;6</a>, <a href="4-ap2.html#SP8">&#167;8</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_5">&#167;21.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span> <span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">APClauses::get_room</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">APClauses::get_room</span></span>:<br/><a href="4-apc.html#SP5">&#167;5</a><br/>Going - <a href="4-gng.html#SP2">&#167;2</a>, <a href="4-gng.html#SP3">&#167;3</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_5">&#167;21.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">IN_AP_CLAUSE</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-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">IN_AP_CLAUSE</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
@ -175,12 +185,12 @@ clauses.
<span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">Descriptions::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_room</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">));</span> <span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">Descriptions::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_room</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::going_nowhere</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">APClauses::going_nowhere</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">&#167;4</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_5">&#167;21.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::going_nowhere</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">APClauses::going_nowhere</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP21_5">&#167;21.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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">Rvalues::is_nothing_object_constant</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Rvalues::is_nothing_object_constant</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</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><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="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::going_somewhere</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">APClauses::going_somewhere</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">&#167;4</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_5">&#167;21.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::going_somewhere</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">APClauses::going_somewhere</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP21_5">&#167;21.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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">val</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</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">val</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</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">Descriptions::is_kind_like</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">)) &amp;&amp; (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">Descriptions::explicit_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">), </span><span class="identifier-syntax">K_room</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">Descriptions::is_kind_like</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">)) &amp;&amp; (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">Descriptions::explicit_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">), </span><span class="identifier-syntax">K_room</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">TRUE</span><span class="plain-syntax">;</span>
@ -214,12 +224,12 @@ clauses.
<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">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="plain-syntax">}</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">APClauses::get_val</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">APClauses::get_val</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">&#167;4</a>, <a href="4-ap2.html#SP6">&#167;6</a>, <a href="4-ap2.html#SP8">&#167;8</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_1">&#167;21.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">APClauses::get_val</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">APClauses::get_val</span></span>:<br/><a href="4-apc.html#SP5">&#167;5</a><br/>Action Patterns - <a href="4-ap2.html#SP7">&#167;7</a><br/>Going - <a href="4-gng.html#SP2">&#167;2</a>, <a href="4-gng.html#SP3">&#167;3</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_1">&#167;21.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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="plain-syntax"> </span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</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">apoc</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_spec</span><span class="plain-syntax">):</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> (</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_spec</span><span class="plain-syntax">):</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::set_val</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">APClauses::set_val</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP7">&#167;7</a><br/>Parse Action Patterns - <a href="4-pap.html#SP1">&#167;1</a>, <a href="4-pap.html#SP14">&#167;14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::set_val</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">APClauses::set_val</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP6">&#167;6</a><br/>Parse Action Patterns - <a href="4-pap.html#SP1">&#167;1</a>, <a href="4-pap.html#SP14">&#167;14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">val</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">val</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">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</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">apoc</span><span class="plain-syntax">) </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">val</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">) </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">val</span><span class="plain-syntax">;</span>
@ -234,7 +244,7 @@ clauses.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">) </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_spec</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP5" class="function-link"><span class="function-syntax">ActionPatterns::nullify_nonspecific_references</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_spec</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">) </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_spec</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP5" class="function-link"><span class="function-syntax">ActionPatterns::nullify_nonspecific_references</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
<span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="function-syntax">APClauses::clause</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">APClauses::clause</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP7">&#167;7</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_5_5">&#167;21.5.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="function-syntax">APClauses::clause</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">APClauses::clause</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP6">&#167;6</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_5_5">&#167;21.5.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::find_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</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">return</span><span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::find_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</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>
@ -287,29 +297,20 @@ clauses.
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">oid</span><span class="plain-syntax"> = </span><span class="identifier-syntax">StackedVariables::get_owner_id</span><span class="plain-syntax">(</span><span class="identifier-syntax">stv</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">oid</span><span class="plain-syntax"> = </span><span class="identifier-syntax">StackedVariables::get_owner_id</span><span class="plain-syntax">(</span><span class="identifier-syntax">stv</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">off</span><span class="plain-syntax"> = </span><span class="identifier-syntax">StackedVariables::get_offset</span><span class="plain-syntax">(</span><span class="identifier-syntax">stv</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">off</span><span class="plain-syntax"> = </span><span class="identifier-syntax">StackedVariables::get_offset</span><span class="plain-syntax">(</span><span class="identifier-syntax">stv</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">1000</span><span class="plain-syntax">*</span><span class="identifier-syntax">oid</span><span class="plain-syntax"> + </span><span class="identifier-syntax">off</span><span class="plain-syntax">, </span><span class="identifier-syntax">ar</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="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="constant-syntax">1000</span><span class="plain-syntax">*</span><span class="identifier-syntax">oid</span><span class="plain-syntax"> + </span><span class="identifier-syntax">off</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">oid</span><span class="plain-syntax"> == </span><span class="constant-syntax">20007</span><span class="plain-syntax"> /* </span><span class="identifier-syntax">i</span><span class="plain-syntax">.</span><span class="identifier-syntax">e</span><span class="plain-syntax">., </span><span class="identifier-syntax">going</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">D</span><span class="plain-syntax"> = </span><a href="4-gng.html#SP2" class="function-link"><span class="function-syntax">Going::divert</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">stv</span><span class="plain-syntax">); </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">D</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">D</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">off</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">: </span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">; </span><span class="identifier-syntax">ar</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">: </span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</span><span class="plain-syntax">; </span><span class="identifier-syntax">ar</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax">: </span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="constant-syntax">GOING_THROUGH_AP_CLAUSE</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax">: </span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="constant-syntax">GOING_BY_AP_CLAUSE</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span><span class="plain-syntax">: </span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="constant-syntax">PUSHING_AP_CLAUSE</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::ensure_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::ensure_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">stv_to_match</span><span class="plain-syntax"> = </span><span class="identifier-syntax">stv</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">stv_to_match</span><span class="plain-syntax"> = </span><span class="identifier-syntax">stv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">clause_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">clause_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">spec</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ar</span><span class="plain-syntax">) </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_opt</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="constant-syntax">ALLOW_REGION_AS_ROOM_APCOPT</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="4-gng.html#SP2" class="function-link"><span class="function-syntax">Going::new_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">);</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">APClauses::has_stv_clauses</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">APClauses::has_stv_clauses</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::has_stv_clauses</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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">ap</span><span class="plain-syntax">) &amp;&amp; (</span><a href="4-apc.html#SP4" class="function-link"><span class="function-syntax">APClauses::nudge_to_stv_apoc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ap_clauses</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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) &amp;&amp; (</span><a href="4-apc.html#SP4" class="function-link"><span class="function-syntax">APClauses::nudge_to_stv_apoc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ap_clauses</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><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="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::compare_specificity_of_apoc_list</span><button class="popup" onclick="togglePopup('usagePopup29')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup29">Usage of <span class="code-font"><span class="function-syntax">APClauses::compare_specificity_of_apoc_list</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::compare_specificity_of_apoc_list</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">APClauses::compare_specificity_of_apoc_list</span></span>:<br/><a href="4-apc.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap2</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">rct1</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP4" class="function-link"><span class="function-syntax">APClauses::ap_count_optional_clauses</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</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">rct1</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP4" class="function-link"><span class="function-syntax">APClauses::ap_count_optional_clauses</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</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">rct2</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP4" class="function-link"><span class="function-syntax">APClauses::ap_count_optional_clauses</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</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">rct2</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP4" class="function-link"><span class="function-syntax">APClauses::ap_count_optional_clauses</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">);</span>
@ -348,16 +349,105 @@ clauses.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">apoc</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">apoc</span><span class="plain-syntax">;</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">APClauses::validate</span><button class="popup" onclick="togglePopup('usagePopup30')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup30">Usage of <span class="code-font"><span class="function-syntax">APClauses::validate</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP21_5_5">&#167;21.5.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</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">int</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::validate</span><button class="popup" onclick="togglePopup('usagePopup29')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup29">Usage of <span class="code-font"><span class="function-syntax">APClauses::validate</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP21_5_5">&#167;21.5.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">) &amp;&amp;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::opt</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="constant-syntax">DO_NOT_VALIDATE_APCOPT</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp;</span> <span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::opt</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="constant-syntax">DO_NOT_VALIDATE_APCOPT</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Dash::validate_parameter</span><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</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">Dash::validate_parameter</span><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</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">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">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">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">TRUE</span><span class="plain-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">APClauses::write</span><button class="popup" onclick="togglePopup('usagePopup30')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup30">Usage of <span class="code-font"><span class="function-syntax">APClauses::write</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ap_clauses</span><span class="plain-syntax">):</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">; </span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_ID</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PARAMETRIC_AP_CLAUSE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"parameter"</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">ACTOR_AP_CLAUSE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"actor"</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">NOUN_AP_CLAUSE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"noun"</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">SECOND_AP_CLAUSE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"second"</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">IN_AP_CLAUSE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"in"</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">IN_THE_PRESENCE_OF_AP_CLAUSE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"in-presence"</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">WHEN_AP_CLAUSE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"when"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><a href="4-gng.html#SP2" class="function-link"><span class="function-syntax">Going::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_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">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">stv_to_match</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">"{"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">NonlocalVariables::write</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">StackedVariables::get_variable</span><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">stv_to_match</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">"}"</span><span class="plain-syntax">);</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">": %P"</span><span class="plain-syntax">, </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::opt</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="constant-syntax">ALLOW_REGION_AS_ROOM_APCOPT</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"[allow-region]"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::opt</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="constant-syntax">DO_NOT_VALIDATE_APCOPT</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"[no-validate]"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::opt</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="constant-syntax">ACTOR_IS_NOT_PLAYER_APCOPT</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"[not-player]"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::opt</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="constant-syntax">REQUEST_APCOPT</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"[request]"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>&#167;5. Action pattern specificity. </b>The following is one of Inform's standardised comparison routines, which
takes a pair of objects A, B and returns 1 if A makes a more specific
description than B, 0 if they seem equally specific, or \(-1\) if B makes a
more specific description than A. This is transitive, and intended to be
used in sorting algorithms.
</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">APClauses::count_aspects</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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">ap</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="constant-syntax">0</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><a href="4-gng.html#SP3" class="function-link"><span class="function-syntax">Going::count_aspects</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) ||</span>
<span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_second</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) ||</span>
<span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_actor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">++;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_presence</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="identifier-syntax">c</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">ap</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">duration</span><span class="plain-syntax">) || (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">WHEN_AP_CLAUSE</span><span class="plain-syntax">))) </span><span class="identifier-syntax">c</span><span class="plain-syntax">++;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">PARAMETRIC_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">c</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">c</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">APClauses::compare_specificity</span><button class="popup" onclick="togglePopup('usagePopup31')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup31">Usage of <span class="code-font"><span class="function-syntax">APClauses::compare_specificity</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP7">&#167;7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.1 - Object To Which Rule Applies"</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">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">PARAMETRIC_AP_CLAUSE</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">PARAMETRIC_AP_CLAUSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</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">claim</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">rv</span><span class="plain-syntax"> = </span><a href="4-gng.html#SP2" class="function-link"><span class="function-syntax">Going::compare_specificity</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">claim</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">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</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">claim</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">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.2.2 - Action/Where/Room Where Action Takes Place"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.2.3 - Action/Where/In The Presence Of"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_presence</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_presence</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP4" class="function-link"><span class="function-syntax">APClauses::compare_specificity_of_apoc_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</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">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.3.1 - Action/What/Second Thing Acted On"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_second</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_second</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.3.2 - Action/What/Thing Acted On"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.3.3 - Action/What/Actor Performing Action"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_actor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_actor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre> </pre>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-ap2.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresscurrent">apc</li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-pap.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="4-ap2.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresscurrent">apc</li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-gng.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->
</main> </main>

View file

@ -356,7 +356,7 @@ clear from the implementation in <a href="../runtime-module/5-act.html" class="i
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
</pre> </pre>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-act.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresscurrent">as</li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-av.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="4-act.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresscurrent">as</li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-av.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->
</main> </main>

View file

@ -302,7 +302,7 @@ action patterns. For example, the Standard Rules define:
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
</pre> </pre>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-as.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresscurrent">av</li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-ann.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="4-as.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresscurrent">av</li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-ann.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->
</main> </main>

250
docs/if-module/4-gng.html Normal file
View file

@ -0,0 +1,250 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Going</title>
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
<meta name="viewport" content="width=device-width initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
<script>
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
</script>
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body class="commentary-font">
<nav role="navigation">
<h1><a href="../index.html">
<img src="../docs-assets/Inform.png" height=72">
</a></h1>
<ul><li><a href="../compiler.html">compiler tools</a></li>
<li><a href="../other.html">other tools</a></li>
<li><a href="../extensions.html">extensions and kits</a></li>
<li><a href="../units.html">unit test tools</a></li>
</ul><h2>Compiler Webs</h2><ul>
<li><a href="../inbuild/index.html">inbuild</a></li>
<li><a href="../inform7/index.html">inform7</a></li>
<li><a href="../inter/index.html">inter</a></li>
</ul><h2>Inbuild Modules</h2><ul>
<li><a href="../supervisor-module/index.html">supervisor</a></li>
</ul><h2>Inform7 Modules</h2><ul>
<li><a href="../core-module/index.html">core</a></li>
<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="../imperative-module/index.html">imperative</a></li>
<li><a href="../runtime-module/index.html">runtime</a></li>
<li><a href="index.html"><span class="selectedlink">if</span></a></li>
<li><a href="../multimedia-module/index.html">multimedia</a></li>
<li><a href="../index-module/index.html">index</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>
<li><a href="../codegen-module/index.html">codegen</a></li>
</ul><h2>Services</h2><ul>
<li><a href="../arch-module/index.html">arch</a></li>
<li><a href="../calculus-module/index.html">calculus</a></li>
<li><a href="../html-module/index.html">html</a></li>
<li><a href="../inflections-module/index.html">inflections</a></li>
<li><a href="../kinds-module/index.html">kinds</a></li>
<li><a href="../linguistics-module/index.html">linguistics</a></li>
<li><a href="../problems-module/index.html">problems</a></li>
<li><a href="../syntax-module/index.html">syntax</a></li>
<li><a href="../words-module/index.html">words</a></li>
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'Going' 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">if</a></li><li><a href="index.html#4">Chapter 4: Actions</a></li><li><b>Going</b></li></ul></div>
<p class="purpose">Inform provides a little extra support for the "going" action.</p>
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>There are five clauses with non-standard effects:
</p>
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">GOING_FROM_AP_CLAUSE</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">GOING_TO_AP_CLAUSE</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">GOING_THROUGH_AP_CLAUSE</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">GOING_BY_AP_CLAUSE</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">PUSHING_AP_CLAUSE</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Going::compare_specificity</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">Going::compare_specificity</span></span>:<br/>Action Pattern Clauses - <a href="4-apc.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">claim</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> *</span><span class="identifier-syntax">claim</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="identifier-syntax">suspend_usual_from_and_room</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">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.2.4 - Action/Where/Other Optional Clauses"</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">rct1</span><span class="plain-syntax"> = </span><a href="4-gng.html#SP3" class="function-link"><span class="function-syntax">Going::count_other</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">), </span><span class="identifier-syntax">rct2</span><span class="plain-syntax"> = </span><a href="4-gng.html#SP3" class="function-link"><span class="function-syntax">Going::count_other</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</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">rct1</span><span class="plain-syntax"> &gt; </span><span class="identifier-syntax">rct2</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rct1</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">rct2</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">PUSHING_AP_CLAUSE</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">PUSHING_AP_CLAUSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_BY_AP_CLAUSE</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_BY_AP_CLAUSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_THROUGH_AP_CLAUSE</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_THROUGH_AP_CLAUSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.2.2 - Action/Where/Room Where Action Takes Place"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rct1</span><span class="plain-syntax"> = </span><a href="4-gng.html#SP3" class="function-link"><span class="function-syntax">Going::count_rooms</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">); </span><span class="identifier-syntax">rct2</span><span class="plain-syntax"> = </span><a href="4-gng.html#SP3" class="function-link"><span class="function-syntax">Going::count_rooms</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</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">rct1</span><span class="plain-syntax"> &gt; </span><span class="identifier-syntax">rct2</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rct1</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">rct2</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">)) &amp;&amp; (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> &amp;&amp; (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">)) &amp;&amp; (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</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">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">suspend_usual_from_and_room</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">)) &amp;&amp; (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> &amp;&amp; (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">)) &amp;&amp; (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</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">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">suspend_usual_from_and_room</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">suspend_usual_from_and_room</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">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</span><span class="plain-syntax">), </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Going::write</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">Going::write</span></span>:<br/>Action Pattern Clauses - <a href="4-apc.html#SP4">&#167;4</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">C</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">C</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">GOING_FROM_AP_CLAUSE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"going-from"</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">GOING_TO_AP_CLAUSE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"going-to"</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">GOING_THROUGH_AP_CLAUSE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"going-through"</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">GOING_BY_AP_CLAUSE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"going-by"</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">PUSHING_AP_CLAUSE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"pushing"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Going::divert</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">Going::divert</span></span>:<br/>Action Pattern Clauses - <a href="4-apc.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">stacked_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stv</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">oid</span><span class="plain-syntax"> = </span><span class="identifier-syntax">StackedVariables::get_owner_id</span><span class="plain-syntax">(</span><span class="identifier-syntax">stv</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">off</span><span class="plain-syntax"> = </span><span class="identifier-syntax">StackedVariables::get_offset</span><span class="plain-syntax">(</span><span class="identifier-syntax">stv</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">oid</span><span class="plain-syntax"> == </span><span class="constant-syntax">20007</span><span class="plain-syntax"> /* </span><span class="identifier-syntax">i</span><span class="plain-syntax">.</span><span class="identifier-syntax">e</span><span class="plain-syntax">., </span><span class="identifier-syntax">going</span><span class="plain-syntax"> */ ) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">off</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">: </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">: </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax">: </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">GOING_THROUGH_AP_CLAUSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax">: </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">GOING_BY_AP_CLAUSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span><span class="plain-syntax">: </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">PUSHING_AP_CLAUSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Going::new_clause</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">Going::new_clause</span></span>:<br/>Action Pattern Clauses - <a href="4-apc.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</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">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_ID</span><span class="plain-syntax"> == </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">clause_ID</span><span class="plain-syntax"> == </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_opt</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="constant-syntax">ALLOW_REGION_AS_ROOM_APCOPT</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b></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">Going::check_going</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">Going::check_going</span></span>:<br/>The Map - <a href="3-tm.html#SP30">&#167;30</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">keyword</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">ka</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kb</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">spec</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">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Rvalues::is_nothing_object_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Specifications::is_description_like</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">oref</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::object_exactly_described_if_any</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">oref</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">ka</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">oref</span><span class="plain-syntax">, </span><span class="identifier-syntax">ka</span><span class="plain-syntax">)) ||</span>
<span class="plain-syntax"> ((</span><span class="identifier-syntax">kb</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">oref</span><span class="plain-syntax">, </span><span class="identifier-syntax">kb</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="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_object</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">oref</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">keyword</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_kind</span><span class="plain-syntax">(4, </span><span class="identifier-syntax">ka</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_kind</span><span class="plain-syntax">(5, </span><span class="identifier-syntax">Instances::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">oref</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">kb</span><span class="plain-syntax">) </span><span class="identifier-syntax">Problems::quote_kind</span><span class="plain-syntax">(6, </span><span class="identifier-syntax">kb</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_GoingWrongKind</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">kb</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="string-syntax">"In the sentence %1, %2 seems to be intended as something the "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"player might be going %3, but this has the wrong kind: %5 "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"rather than %4 or %6."</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">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="string-syntax">"In the sentence %1, %2 seems to be intended as something the player "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"might be going %3, but this has the wrong kind: %5 rather than %4."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="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="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_text</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">keyword</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_GoingWithoutObject</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="string-syntax">"In the sentence %1, '%2' seems to be intended as something the player "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"might be going %3, but it doesn't make sense in that context."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="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">Going::count_rooms</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">Going::count_rooms</span></span>:<br/><a href="4-gng.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="identifier-syntax">c</span><span class="plain-syntax"> += </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">c</span><span class="plain-syntax"> += </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">c</span><span class="plain-syntax"> += </span><span class="constant-syntax">2</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">c</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">Going::count_other</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">Going::count_other</span></span>:<br/><a href="4-gng.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">PUSHING_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">c</span><span class="plain-syntax"> += </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_BY_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">c</span><span class="plain-syntax"> += </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_THROUGH_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">c</span><span class="plain-syntax"> += </span><span class="constant-syntax">2</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">c</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">Going::count_aspects</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">Going::count_aspects</span></span>:<br/>Action Pattern Clauses - <a href="4-apc.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</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="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">PUSHING_AP_CLAUSE</span><span class="plain-syntax">)) ||</span>
<span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_BY_AP_CLAUSE</span><span class="plain-syntax">)) ||</span>
<span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_THROUGH_AP_CLAUSE</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">++;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) ||</span>
<span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_FROM_AP_CLAUSE</span><span class="plain-syntax">)) ||</span>
<span class="plain-syntax"> (</span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::get_val</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="constant-syntax">GOING_TO_AP_CLAUSE</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c</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">c</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-apc.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresscurrent">gng</li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-pap.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>
</body>
</html>

View file

@ -151,7 +151,7 @@ if and only if it appears in one of the patterns in the list:
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
</pre> </pre>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-pap.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresscurrent">nap</li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="5-pp.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="4-pap.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresssection"><a href="4-pap.html">pap</a></li><li class="progresscurrent">nap</li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="5-pp.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->
</main> </main>

View file

@ -838,7 +838,7 @@ description.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-anl.html#SP11" class="function-link"><span class="function-syntax">ActionNameLists::action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) == </span><span class="identifier-syntax">going_action</span><span class="plain-syntax">) &amp;&amp; (</span><span class="function-syntax">&lt;going-action-irregular-operand&gt;</span><span class="plain-syntax">(</span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">)))) {</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-anl.html#SP11" class="function-link"><span class="function-syntax">ActionNameLists::action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) == </span><span class="identifier-syntax">going_action</span><span class="plain-syntax">) &amp;&amp; (</span><span class="function-syntax">&lt;going-action-irregular-operand&gt;</span><span class="plain-syntax">(</span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</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="function-syntax">&lt;&lt;r&gt;&gt;</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::go_nowhere</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax">&lt;&lt;r&gt;&gt;</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::go_nowhere</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::go_somewhere</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::go_somewhere</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="4-ap2.html#SP7" class="function-link"><span class="function-syntax">ActionPatterns::put_action_object_into_ap</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><span class="constant-syntax">NOUN_AP_CLAUSE</span><span class="plain-syntax">, </span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</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">else</span><span class="plain-syntax"> </span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::put_action_object_into_ap</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><span class="constant-syntax">NOUN_AP_CLAUSE</span><span class="plain-syntax">, </span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</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">Wordings::nonempty</span><span class="plain-syntax">(</span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">))) {</span>
@ -850,12 +850,12 @@ description.
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">));</span> <span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_second</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_second</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span> <span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><a href="4-ap2.html#SP7" class="function-link"><span class="function-syntax">ActionPatterns::put_action_object_into_ap</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><span class="constant-syntax">SECOND_AP_CLAUSE</span><span class="plain-syntax">, </span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">));</span> <span class="plain-syntax"> </span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::put_action_object_into_ap</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><span class="constant-syntax">SECOND_AP_CLAUSE</span><span class="plain-syntax">, </span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::par</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::in_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</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><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::in_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><a href="4-ap2.html#SP7" class="function-link"><span class="function-syntax">ActionPatterns::put_action_object_into_ap</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><span class="constant-syntax">IN_AP_CLAUSE</span><span class="plain-syntax">,</span> <span class="plain-syntax"> </span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::put_action_object_into_ap</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><span class="constant-syntax">IN_AP_CLAUSE</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::in_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">));</span> <span class="plain-syntax"> </span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::in_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">));</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP21_5">&#167;21.5</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP21_5">&#167;21.5</a>.</li></ul>
@ -989,7 +989,7 @@ the case when the first action name in the list is <span class="extract"><span c
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP21">&#167;21</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP21">&#167;21</a>.</li></ul>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-apc.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresscurrent">pap</li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-nap.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="4-gng.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-anaa.html">anaa</a></li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-as.html">as</a></li><li class="progresssection"><a href="4-av.html">av</a></li><li class="progresssection"><a href="4-ann.html">ann</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap2.html">ap2</a></li><li class="progresssection"><a href="4-apc.html">apc</a></li><li class="progresssection"><a href="4-gng.html">gng</a></li><li class="progresscurrent">pap</li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="4-nap.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->
</main> </main>

View file

@ -108,7 +108,7 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">understanding_reference</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">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">understanding_reference</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">understanding_reference</span><span class="plain-syntax">;</span> <span class="plain-syntax">} </span><span class="reserved-syntax">understanding_reference</span><span class="plain-syntax">;</span>
</pre> </pre>
<ul class="endnotetexts"><li>The structure understanding_item is accessed in 2/ri, 3/tm, 3/scn, 3/ts, 4/ap, 4/av, 4/apc, 5/gl and here.</li><li>The structure understanding_reference is accessed in 2/ri, 3/tm, 3/scn, 3/ts, 4/ap, 4/av, 4/apc, 5/gl and here.</li></ul> <ul class="endnotetexts"><li>The structure understanding_item is accessed in 2/ri, 3/tm, 3/scn, 3/ts, 4/ap, 4/av, 4/ap2, 4/apc, 5/gl and here.</li><li>The structure understanding_reference is accessed in 2/ri, 3/tm, 3/scn, 3/ts, 4/ap, 4/av, 4/ap2, 4/apc, 5/gl and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b>New grammar arrives in the system in two ways: primarily by means of explicit <p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b>New grammar arrives in the system in two ways: primarily by means of explicit
Understand sentences in the source text, but also secondarily in the form Understand sentences in the source text, but also secondarily in the form
of table entries or other values used to match against snippets. For example: of table entries or other values used to match against snippets. For example:

View file

@ -233,6 +233,11 @@
<spon class="sectiontitle">Action Pattern Clauses</span></a> - <spon class="sectiontitle">Action Pattern Clauses</span></a> -
<span class="sectionpurpose">Pattern-matches on individual nouns in an action are called clauses.</span></p> <span class="sectionpurpose">Pattern-matches on individual nouns in an action are called clauses.</span></p>
</li> </li>
<li>
<p class="sectionentry"><a href="4-gng.html">
<spon class="sectiontitle">Going</span></a> -
<span class="sectionpurpose">Inform provides a little extra support for the "going" action.</span></p>
</li>
<li> <li>
<p class="sectionentry"><a href="4-pap.html"> <p class="sectionentry"><a href="4-pap.html">
<spon class="sectiontitle">Parse Action Patterns</span></a> - <spon class="sectiontitle">Parse Action Patterns</span></a> -

View file

@ -322,8 +322,8 @@ all of them fail to decide, we return 0.
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"I - Number of aspects constrained"</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"I - Number of aspects constrained"</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">rct1</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">rct2</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">rct1</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">rct2</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">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span> <span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rct1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ActionPatterns::count_aspects</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">rct1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">APClauses::count_aspects</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rct2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ActionPatterns::count_aspects</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">rct2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">APClauses::count_aspects</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</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">sc1</span><span class="plain-syntax">) </span><span class="identifier-syntax">rct1</span><span class="plain-syntax">++; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sc2</span><span class="plain-syntax">) </span><span class="identifier-syntax">rct2</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">sc1</span><span class="plain-syntax">) </span><span class="identifier-syntax">rct1</span><span class="plain-syntax">++; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sc2</span><span class="plain-syntax">) </span><span class="identifier-syntax">rct2</span><span class="plain-syntax">++;</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">AL1W</span><span class="plain-syntax">)) </span><span class="identifier-syntax">rct1</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">AL2W</span><span class="plain-syntax">)) </span><span class="identifier-syntax">rct2</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">AL1W</span><span class="plain-syntax">)) </span><span class="identifier-syntax">rct1</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">AL2W</span><span class="plain-syntax">)) </span><span class="identifier-syntax">rct2</span><span class="plain-syntax">++;</span>

View file

@ -284,7 +284,7 @@ we have to re-establish \(R(x, y)\) before we can proceed.
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span> <span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="function-syntax">&lt;pl-&gt;</span><span class="identifier-syntax">arity</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">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="function-syntax">&lt;pl-&gt;</span><span class="identifier-syntax">arity</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">operand</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Terms::constant_underlying</span><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">terms</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">]));</span> <span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">operand</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Terms::constant_underlying</span><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">pl</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">terms</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">ActionPatterns::is_an_action_variable</span><span class="plain-syntax">(</span><span class="identifier-syntax">operand</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">RTActions::is_an_action_variable</span><span class="plain-syntax">(</span><span class="identifier-syntax">operand</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="plain-syntax"> }</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span> <span class="plain-syntax"> #</span><span class="identifier-syntax">endif</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>

View file

@ -487,6 +487,20 @@ infrastructure, and we access it with a single call.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">neg</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">neg</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="plain-syntax">}</span>
</pre> </pre>
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>&#167;5. </b></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">RTActions::is_an_action_variable</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nlv</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">spec</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">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">Lvalues::get_storage_form</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) != </span><span class="identifier-syntax">NONLOCAL_VARIABLE_NT</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="identifier-syntax">nlv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_constant_nonlocal_variable</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">nlv</span><span class="plain-syntax"> == </span><span class="identifier-syntax">I6_noun_VAR</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">nlv</span><span class="plain-syntax"> == </span><span class="identifier-syntax">I6_second_VAR</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">nlv</span><span class="plain-syntax"> == </span><span class="identifier-syntax">I6_actor_VAR</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>
</pre>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="5-scn.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresscurrent">act</li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progressnext"><a href="5-los.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="5-scn.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progresssection"><a href="5-sc.html">sc</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresssection"><a href="5-scn.html">scn</a></li><li class="progresscurrent">act</li><li class="progresssection"><a href="5-los.html">los</a></li><li class="progresssection"><a href="5-nap.html">nap</a></li><li class="progresssection"><a href="5-ap.html">ap</a></li><li class="progressnext"><a href="5-los.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->

View file

@ -9222,7 +9222,7 @@ ROOT_NT
INVOCATION_NT'silently try the actor trying inserting the transferred item' {phrase invoked: call} INVOCATION_NT'silently try the actor trying inserting the transferred item' {phrase invoked: call}
RVALUE_CONTEXT_NT'actor trying inserting the transferred item into the current' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'actor trying inserting the transferred item into the current' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'actor trying inserting the transferred item into the current' {kind: action} {action pattern: <action: inserting it into noun: LOCAL_VARIABLE_NT'the transferred item' {local: LV<unallocated> object} second: LOCAL_VARIABLE_NT'the current working sack' {local: LV"current working sack"-player's holdall player's holdall}>} CONSTANT_NT'actor trying inserting the transferred item into the current' {kind: action} {action pattern: <action: inserting it intoactor: NONLOCAL_VARIABLE_NT'actor' {nonlocal: 'actor'(var)person}noun: LOCAL_VARIABLE_NT'the transferred item' {local: LV<unallocated> object}second: LOCAL_VARIABLE_NT'the current working sack' {local: LV"current working sack"-player's holdall player's holdall}>}
CODE_BLOCK_NT {control structure: IF} CODE_BLOCK_NT {control structure: IF}
INVOCATION_LIST_NT'if the transferred item is not in the current working sack' {colon_block_command} {indent: 4} INVOCATION_LIST_NT'if the transferred item is not in the current working sack' {colon_block_command} {indent: 4}
INVOCATION_NT'if the transferred item is not in the current working sack' {phrase invoked: call} INVOCATION_NT'if the transferred item is not in the current working sack' {phrase invoked: call}
@ -9570,7 +9570,7 @@ ROOT_NT
INVOCATION_NT'silently try the actor trying taking off the noun' {phrase invoked: call} INVOCATION_NT'silently try the actor trying taking off the noun' {phrase invoked: call}
RVALUE_CONTEXT_NT'actor trying taking off the noun' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'actor trying taking off the noun' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'actor trying taking off the noun' {kind: action} {action pattern: <action: taking off noun: NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}>} CONSTANT_NT'actor trying taking off the noun' {kind: action} {action pattern: <action: taking offactor: NONLOCAL_VARIABLE_NT'actor' {nonlocal: 'actor'(var)person}noun: NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}>}
CODE_BLOCK_NT {control structure: IF} CODE_BLOCK_NT {control structure: IF}
INVOCATION_LIST_NT'if the actor is wearing the noun' {indent: 2} {colon_block_command} INVOCATION_LIST_NT'if the actor is wearing the noun' {indent: 2} {colon_block_command}
INVOCATION_NT'if the actor is wearing the noun' {phrase invoked: call} INVOCATION_NT'if the actor is wearing the noun' {phrase invoked: call}
@ -9921,7 +9921,7 @@ ROOT_NT
INVOCATION_NT'silently try the actor trying taking off the noun' {phrase invoked: call} INVOCATION_NT'silently try the actor trying taking off the noun' {phrase invoked: call}
RVALUE_CONTEXT_NT'actor trying taking off the noun' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'actor trying taking off the noun' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'actor trying taking off the noun' {kind: action} {action pattern: <action: taking off noun: NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}>} CONSTANT_NT'actor trying taking off the noun' {kind: action} {action pattern: <action: taking offactor: NONLOCAL_VARIABLE_NT'actor' {nonlocal: 'actor'(var)person}noun: NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}>}
CODE_BLOCK_NT {control structure: IF} CODE_BLOCK_NT {control structure: IF}
INVOCATION_LIST_NT'if the actor is wearing the noun' {indent: 2} {colon_block_command} INVOCATION_LIST_NT'if the actor is wearing the noun' {indent: 2} {colon_block_command}
INVOCATION_NT'if the actor is wearing the noun' {phrase invoked: call} INVOCATION_NT'if the actor is wearing the noun' {phrase invoked: call}
@ -10251,7 +10251,7 @@ ROOT_NT
INVOCATION_NT'silently try the actor trying taking off the noun' {phrase invoked: call} INVOCATION_NT'silently try the actor trying taking off the noun' {phrase invoked: call}
RVALUE_CONTEXT_NT'actor trying taking off the noun' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'actor trying taking off the noun' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'actor trying taking off the noun' {kind: action} {action pattern: <action: taking off noun: NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}>} CONSTANT_NT'actor trying taking off the noun' {kind: action} {action pattern: <action: taking offactor: NONLOCAL_VARIABLE_NT'actor' {nonlocal: 'actor'(var)person}noun: NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}>}
CODE_BLOCK_NT {control structure: IF} CODE_BLOCK_NT {control structure: IF}
INVOCATION_LIST_NT'if the actor is wearing the noun' {indent: 2} {colon_block_command} INVOCATION_LIST_NT'if the actor is wearing the noun' {indent: 2} {colon_block_command}
INVOCATION_NT'if the actor is wearing the noun' {phrase invoked: call} INVOCATION_NT'if the actor is wearing the noun' {phrase invoked: call}
@ -10429,7 +10429,7 @@ ROOT_NT
INVOCATION_NT'try the actor trying taking off the noun' {phrase invoked: call} INVOCATION_NT'try the actor trying taking off the noun' {phrase invoked: call}
RVALUE_CONTEXT_NT'actor trying taking off the noun' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'actor trying taking off the noun' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'actor trying taking off the noun' {kind: action} {action pattern: <action: taking off noun: NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}>} CONSTANT_NT'actor trying taking off the noun' {kind: action} {action pattern: <action: taking offactor: NONLOCAL_VARIABLE_NT'actor' {nonlocal: 'actor'(var)person}noun: NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}>}
CODE_BLOCK_NT {control structure: IF} CODE_BLOCK_NT {control structure: IF}
INVOCATION_LIST_NT'if the actor is wearing the noun' {indent: 2} {colon_block_command} INVOCATION_LIST_NT'if the actor is wearing the noun' {indent: 2} {colon_block_command}
INVOCATION_NT'if the actor is wearing the noun' {phrase invoked: call} INVOCATION_NT'if the actor is wearing the noun' {phrase invoked: call}
@ -10692,7 +10692,7 @@ ROOT_NT
INVOCATION_NT'silently try the actor exiting' {phrase invoked: call} INVOCATION_NT'silently try the actor exiting' {phrase invoked: call}
RVALUE_CONTEXT_NT'actor exiting' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'actor exiting' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'actor exiting' {kind: action} {action pattern: <action: exiting>} CONSTANT_NT'actor exiting' {kind: action} {action pattern: <action: exitingactor: NONLOCAL_VARIABLE_NT'actor' {nonlocal: 'actor'(var)person}>}
RULE_NT'check an actor going ( this is the can't travel in what's no' {unit: 2} RULE_NT'check an actor going ( this is the can't travel in what's no' {unit: 2}
CODE_BLOCK_NT CODE_BLOCK_NT
INVOCATION_LIST_NT'let nonvehicle be the holder of the actor' {indent: 1} INVOCATION_LIST_NT'let nonvehicle be the holder of the actor' {indent: 1}
@ -10817,7 +10817,7 @@ ROOT_NT
INVOCATION_NT'silently try the actor opening the door gone through' {phrase invoked: call} INVOCATION_NT'silently try the actor opening the door gone through' {phrase invoked: call}
RVALUE_CONTEXT_NT'actor opening the door gone through' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'actor opening the door gone through' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'actor opening the door gone through' {kind: action} {action pattern: <action: opening noun: NONLOCAL_VARIABLE_NT'the door gone through' {nonlocal: 'door gone through'(var)object}>} CONSTANT_NT'actor opening the door gone through' {kind: action} {action pattern: <action: openingactor: NONLOCAL_VARIABLE_NT'actor' {nonlocal: 'actor'(var)person}noun: NONLOCAL_VARIABLE_NT'the door gone through' {nonlocal: 'door gone through'(var)object}>}
CODE_BLOCK_NT {control structure: IF} CODE_BLOCK_NT {control structure: IF}
INVOCATION_LIST_NT'if the door gone through is open' {indent: 2} {colon_block_command} INVOCATION_LIST_NT'if the door gone through is open' {indent: 2} {colon_block_command}
INVOCATION_NT'if the door gone through is open' {phrase invoked: call} INVOCATION_NT'if the door gone through is open' {phrase invoked: call}
@ -11867,7 +11867,7 @@ ROOT_NT
INVOCATION_NT'silently try the actor trying exiting' {phrase invoked: call} INVOCATION_NT'silently try the actor trying exiting' {phrase invoked: call}
RVALUE_CONTEXT_NT'actor trying exiting' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'actor trying exiting' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'actor trying exiting' {kind: action} {action pattern: <action: exiting>} CONSTANT_NT'actor trying exiting' {kind: action} {action pattern: <action: exitingactor: NONLOCAL_VARIABLE_NT'actor' {nonlocal: 'actor'(var)person}>}
CODE_BLOCK_NT {control structure: IF} CODE_BLOCK_NT {control structure: IF}
INVOCATION_LIST_NT'if the holder of the actor is the current home' {indent: 2} {colon_block_command} INVOCATION_LIST_NT'if the holder of the actor is the current home' {indent: 2} {colon_block_command}
INVOCATION_NT'if the holder of the actor is the current home' {phrase invoked: call} INVOCATION_NT'if the holder of the actor is the current home' {phrase invoked: call}
@ -11996,7 +11996,7 @@ ROOT_NT
INVOCATION_NT'silently try the actor trying entering the target' {phrase invoked: call} INVOCATION_NT'silently try the actor trying entering the target' {phrase invoked: call}
RVALUE_CONTEXT_NT'actor trying entering the target' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'actor trying entering the target' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'actor trying entering the target' {kind: action} {action pattern: <action: entering noun: LOCAL_VARIABLE_NT'the target' {local: LV"target"-object object}>} CONSTANT_NT'actor trying entering the target' {kind: action} {action pattern: <action: enteringactor: NONLOCAL_VARIABLE_NT'actor' {nonlocal: 'actor'(var)person}noun: LOCAL_VARIABLE_NT'the target' {local: LV"target"-object object}>}
CODE_BLOCK_NT {control structure: IF} CODE_BLOCK_NT {control structure: IF}
INVOCATION_LIST_NT'if the holder of the actor is not the target' {indent: 3} {colon_block_command} INVOCATION_LIST_NT'if the holder of the actor is not the target' {indent: 3} {colon_block_command}
INVOCATION_NT'if the holder of the actor is not the target' {phrase invoked: call} INVOCATION_NT'if the holder of the actor is not the target' {phrase invoked: call}
@ -14654,7 +14654,7 @@ ROOT_NT
INVOCATION_NT'silently try the actor trying taking off the noun' {phrase invoked: call} INVOCATION_NT'silently try the actor trying taking off the noun' {phrase invoked: call}
RVALUE_CONTEXT_NT'actor trying taking off the noun' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'actor trying taking off the noun' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'actor trying taking off the noun' {kind: action} {action pattern: <action: taking off noun: NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}>} CONSTANT_NT'actor trying taking off the noun' {kind: action} {action pattern: <action: taking offactor: NONLOCAL_VARIABLE_NT'actor' {nonlocal: 'actor'(var)person}noun: NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}>}
CODE_BLOCK_NT {control structure: IF} CODE_BLOCK_NT {control structure: IF}
INVOCATION_LIST_NT'if the actor is wearing the noun' {indent: 2} {colon_block_command} INVOCATION_LIST_NT'if the actor is wearing the noun' {indent: 2} {colon_block_command}
INVOCATION_NT'if the actor is wearing the noun' {phrase invoked: call} INVOCATION_NT'if the actor is wearing the noun' {phrase invoked: call}
@ -14907,7 +14907,7 @@ ROOT_NT
INVOCATION_NT'silently try the actor trying taking off the noun' {phrase invoked: call} INVOCATION_NT'silently try the actor trying taking off the noun' {phrase invoked: call}
RVALUE_CONTEXT_NT'actor trying taking off the noun' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'actor trying taking off the noun' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'actor trying taking off the noun' {kind: action} {action pattern: <action: taking off noun: NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}>} CONSTANT_NT'actor trying taking off the noun' {kind: action} {action pattern: <action: taking offactor: NONLOCAL_VARIABLE_NT'actor' {nonlocal: 'actor'(var)person}noun: NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}>}
CODE_BLOCK_NT {control structure: IF} CODE_BLOCK_NT {control structure: IF}
INVOCATION_LIST_NT'if the actor is wearing the noun' {indent: 2} {colon_block_command} INVOCATION_LIST_NT'if the actor is wearing the noun' {indent: 2} {colon_block_command}
INVOCATION_NT'if the actor is wearing the noun' {phrase invoked: call} INVOCATION_NT'if the actor is wearing the noun' {phrase invoked: call}
@ -18638,7 +18638,7 @@ ROOT_NT
INVOCATION_NT'try the current owner closing the escape' {phrase invoked: call} INVOCATION_NT'try the current owner closing the escape' {phrase invoked: call}
RVALUE_CONTEXT_NT'current owner closing the escape' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'current owner closing the escape' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'current owner closing the escape' {kind: action} {action pattern: <action: closing noun: LOCAL_VARIABLE_NT'the escape' {local: LV"escape"-door door}>} CONSTANT_NT'current owner closing the escape' {kind: action} {action pattern: <action: closingactor: NONLOCAL_VARIABLE_NT'current owner' {nonlocal: 'current owner'(var)person}{meaning: {current owner = VARIABLE_MC}}noun: LOCAL_VARIABLE_NT'the escape' {local: LV"escape"-door door}>}
CODE_BLOCK_NT {control structure: INS} CODE_BLOCK_NT {control structure: INS}
RULE_NT'report someone closing a door when the person asked owns the' {unit: 4} RULE_NT'report someone closing a door when the person asked owns the' {unit: 4}
CODE_BLOCK_NT CODE_BLOCK_NT
@ -18703,7 +18703,7 @@ ROOT_NT
INVOCATION_NT'try the current owner filing the target' {phrase invoked: call} INVOCATION_NT'try the current owner filing the target' {phrase invoked: call}
RVALUE_CONTEXT_NT'current owner filing the target' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'current owner filing the target' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'current owner filing the target' {kind: action} {action pattern: <action: filing noun: LOCAL_VARIABLE_NT'the target' {local: LV"target"-artwork artwork}>} CONSTANT_NT'current owner filing the target' {kind: action} {action pattern: <action: filingactor: NONLOCAL_VARIABLE_NT'current owner' {nonlocal: 'current owner'(var)person}{meaning: {current owner = VARIABLE_MC}}noun: LOCAL_VARIABLE_NT'the target' {local: LV"target"-artwork artwork}>}
SENTENCE_NT'filing is an action applying to one thing' {unit: 4} {classified} 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} VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}
UNPARSED_NOUN_NT'filing' UNPARSED_NOUN_NT'filing'
@ -18714,7 +18714,7 @@ ROOT_NT
INVOCATION_NT'try the person asked taking the noun' {phrase invoked: call} INVOCATION_NT'try the person asked taking the noun' {phrase invoked: call}
RVALUE_CONTEXT_NT'person asked taking the noun' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'person asked taking the noun' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'person asked taking the noun' {kind: action} {action pattern: <action: taking noun: NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}>} CONSTANT_NT'person asked taking the noun' {kind: action} {action pattern: <action: takingactor: NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}noun: NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}>}
CODE_BLOCK_NT {control structure: INS} CODE_BLOCK_NT {control structure: INS}
RULE_NT'carry out someone filing' {unit: 4} RULE_NT'carry out someone filing' {unit: 4}
CODE_BLOCK_NT CODE_BLOCK_NT
@ -18793,7 +18793,7 @@ ROOT_NT
INVOCATION_NT'try the current actor resolving the problem' {phrase invoked: call} INVOCATION_NT'try the current actor resolving the problem' {phrase invoked: call}
RVALUE_CONTEXT_NT'current actor resolving the problem' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'current actor resolving the problem' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'current actor resolving the problem' {kind: action} {action pattern: <action: resolving noun: LOCAL_VARIABLE_NT'the problem' {local: LV"problem"-thing thing}>} CONSTANT_NT'current actor resolving the problem' {kind: action} {action pattern: <action: resolvingactor: NONLOCAL_VARIABLE_NT'current actor' {nonlocal: 'current actor'(var)person}{meaning: {current actor = VARIABLE_MC}}noun: LOCAL_VARIABLE_NT'the problem' {local: LV"problem"-thing thing}>}
CODE_BLOCK_NT {control structure: INS} CODE_BLOCK_NT {control structure: INS}
RULE_NT'a shopper rule' {unit: 4} RULE_NT'a shopper rule' {unit: 4}
CODE_BLOCK_NT CODE_BLOCK_NT
@ -18811,7 +18811,7 @@ ROOT_NT
INVOCATION_NT'try the current actor approaching the pool hall' {phrase invoked: call} INVOCATION_NT'try the current actor approaching the pool hall' {phrase invoked: call}
RVALUE_CONTEXT_NT'current actor approaching the pool hall' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'current actor approaching the pool hall' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'current actor approaching the pool hall' {kind: action} {action pattern: <action: approaching noun: CONSTANT_NT'the pool hall' {kind: room} {instance: I88'alfred cralle pool hall'} {enumeration: 0}>} CONSTANT_NT'current actor approaching the pool hall' {kind: action} {action pattern: <action: approachingactor: NONLOCAL_VARIABLE_NT'current actor' {nonlocal: 'current actor'(var)person}{meaning: {current actor = VARIABLE_MC}}noun: CONSTANT_NT'the pool hall' {kind: room} {instance: I88'alfred cralle pool hall'} {enumeration: 0}>}
CODE_BLOCK_NT'otherwise' {colon_block_command} {indent: 1} {control structure: O} CODE_BLOCK_NT'otherwise' {colon_block_command} {indent: 1} {control structure: O}
INVOCATION_LIST_NT'let way be a random direction' {indent: 2} INVOCATION_LIST_NT'let way be a random direction' {indent: 2}
INVOCATION_NT'let way be a random direction' {phrase invoked: call} INVOCATION_NT'let way be a random direction' {phrase invoked: call}
@ -18830,7 +18830,7 @@ ROOT_NT
INVOCATION_NT'try the current actor going the way' {phrase invoked: call} INVOCATION_NT'try the current actor going the way' {phrase invoked: call}
RVALUE_CONTEXT_NT'current actor going the way' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'current actor going the way' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'current actor going the way' {kind: action} {action pattern: <action: going noun: LOCAL_VARIABLE_NT'the way' {local: LV<unallocated> direction}>} CONSTANT_NT'current actor going the way' {kind: action} {action pattern: <action: goingactor: NONLOCAL_VARIABLE_NT'current actor' {nonlocal: 'current actor'(var)person}{meaning: {current actor = VARIABLE_MC}}noun: LOCAL_VARIABLE_NT'the way' {local: LV<unallocated> direction}>}
RULE_NT'definition' {unit: 4} RULE_NT'definition' {unit: 4}
CODE_BLOCK_NT CODE_BLOCK_NT
CODE_BLOCK_NT {control structure: IF} CODE_BLOCK_NT {control structure: IF}
@ -18922,7 +18922,7 @@ ROOT_NT
INVOCATION_NT'try the person asked approaching the public library' {phrase invoked: call} INVOCATION_NT'try the person asked approaching the public library' {phrase invoked: call}
RVALUE_CONTEXT_NT'person asked approaching the public library' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'person asked approaching the public library' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'person asked approaching the public library' {kind: action} {action pattern: <action: approaching noun: CONSTANT_NT'the public library' {kind: room} {instance: I110'public library'} {enumeration: 0}>} CONSTANT_NT'person asked approaching the public library' {kind: action} {action pattern: <action: approachingactor: NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}noun: CONSTANT_NT'the public library' {kind: room} {instance: I110'public library'} {enumeration: 0}>}
CODE_BLOCK_NT {control structure: INS} CODE_BLOCK_NT {control structure: INS}
RULE_NT'carry out someone resolving a book' {unit: 4} RULE_NT'carry out someone resolving a book' {unit: 4}
CODE_BLOCK_NT CODE_BLOCK_NT
@ -18985,7 +18985,7 @@ ROOT_NT
INVOCATION_NT'try the person asked approaching the post office' {phrase invoked: call} INVOCATION_NT'try the person asked approaching the post office' {phrase invoked: call}
RVALUE_CONTEXT_NT'person asked approaching the post office' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'person asked approaching the post office' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'person asked approaching the post office' {kind: action} {action pattern: <action: approaching noun: CONSTANT_NT'the post office' {kind: room} {instance: I96'post office'} {enumeration: 0}>} CONSTANT_NT'person asked approaching the post office' {kind: action} {action pattern: <action: approachingactor: NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}noun: CONSTANT_NT'the post office' {kind: room} {instance: I96'post office'} {enumeration: 0}>}
CODE_BLOCK_NT {control structure: INS} CODE_BLOCK_NT {control structure: INS}
RULE_NT'carry out someone resolving a stamped envelope' {unit: 4} RULE_NT'carry out someone resolving a stamped envelope' {unit: 4}
CODE_BLOCK_NT CODE_BLOCK_NT
@ -19068,7 +19068,7 @@ ROOT_NT
INVOCATION_NT'try the person asked approaching the rental store' {phrase invoked: call} INVOCATION_NT'try the person asked approaching the rental store' {phrase invoked: call}
RVALUE_CONTEXT_NT'person asked approaching the rental store' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'person asked approaching the rental store' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'person asked approaching the rental store' {kind: action} {action pattern: <action: approaching noun: CONSTANT_NT'the rental store' {kind: room} {instance: I104'movie rental store'} {enumeration: 0}>} CONSTANT_NT'person asked approaching the rental store' {kind: action} {action pattern: <action: approachingactor: NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}noun: CONSTANT_NT'the rental store' {kind: room} {instance: I104'movie rental store'} {enumeration: 0}>}
CODE_BLOCK_NT {control structure: INS} CODE_BLOCK_NT {control structure: INS}
RULE_NT'carry out someone resolving a dvd' {unit: 4} RULE_NT'carry out someone resolving a dvd' {unit: 4}
CODE_BLOCK_NT CODE_BLOCK_NT
@ -19194,7 +19194,7 @@ ROOT_NT
INVOCATION_NT'try the person asked going the way' {phrase invoked: call} INVOCATION_NT'try the person asked going the way' {phrase invoked: call}
RVALUE_CONTEXT_NT'person asked going the way' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'person asked going the way' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'person asked going the way' {kind: action} {action pattern: <action: going noun: LOCAL_VARIABLE_NT'the way' {local: LV"way"-object object}>} CONSTANT_NT'person asked going the way' {kind: action} {action pattern: <action: goingactor: NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}noun: LOCAL_VARIABLE_NT'the way' {local: LV"way"-object object}>}
CODE_BLOCK_NT'otherwise' {results_from_splitting} {control structure: O} CODE_BLOCK_NT'otherwise' {results_from_splitting} {control structure: O}
INVOCATION_LIST_NT'stop the action' {indent: 1} INVOCATION_LIST_NT'stop the action' {indent: 1}
INVOCATION_NT'stop the action' {phrase invoked: call} INVOCATION_NT'stop the action' {phrase invoked: call}
@ -19209,7 +19209,7 @@ ROOT_NT
INVOCATION_NT'try the person asked giving the noun to vanessa' {phrase invoked: call} INVOCATION_NT'try the person asked giving the noun to vanessa' {phrase invoked: call}
RVALUE_CONTEXT_NT'person asked giving the noun to vanessa' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'person asked giving the noun to vanessa' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'person asked giving the noun to vanessa' {kind: action} {action pattern: <action: giving it to noun: NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}} second: CONSTANT_NT'vanessa' {kind: woman} {instance: I129'vanessa'} {enumeration: 0}>} CONSTANT_NT'person asked giving the noun to vanessa' {kind: action} {action pattern: <action: giving it toactor: NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}noun: NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}second: CONSTANT_NT'vanessa' {kind: woman} {instance: I129'vanessa'} {enumeration: 0}>}
SENTENCE_NT'the block giving rule is not listed in any rulebook' {unit: 4} {classified} 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} 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'the block giving rule'
@ -19227,7 +19227,7 @@ ROOT_NT
INVOCATION_NT'try the person asked approaching cold comfort' {phrase invoked: call} INVOCATION_NT'try the person asked approaching cold comfort' {phrase invoked: call}
RVALUE_CONTEXT_NT'person asked approaching cold comfort' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'person asked approaching cold comfort' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'person asked approaching cold comfort' {kind: action} {action pattern: <action: approaching noun: CONSTANT_NT'cold comfort' {kind: room} {instance: I100'cold comfort ice cream'} {enumeration: 0}>} CONSTANT_NT'person asked approaching cold comfort' {kind: action} {action pattern: <action: approachingactor: NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}noun: CONSTANT_NT'cold comfort' {kind: room} {instance: I100'cold comfort ice cream'} {enumeration: 0}>}
CODE_BLOCK_NT {control structure: INS} CODE_BLOCK_NT {control structure: INS}
RULE_NT'after someone giving a coupon to vanessa' {unit: 4} RULE_NT'after someone giving a coupon to vanessa' {unit: 4}
CODE_BLOCK_NT CODE_BLOCK_NT
@ -19495,7 +19495,7 @@ ROOT_NT
INVOCATION_NT'try the person asked eating the noun' {phrase invoked: call} INVOCATION_NT'try the person asked eating the noun' {phrase invoked: call}
RVALUE_CONTEXT_NT'person asked eating the noun' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'person asked eating the noun' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'person asked eating the noun' {kind: action} {action pattern: <action: eating noun: NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}>} CONSTANT_NT'person asked eating the noun' {kind: action} {action pattern: <action: eatingactor: NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}noun: NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}>}
CODE_BLOCK_NT {control structure: INS} CODE_BLOCK_NT {control structure: INS}
RULE_NT'instead of someone eating a fresh ice cream cone' {unit: 4} RULE_NT'instead of someone eating a fresh ice cream cone' {unit: 4}
CODE_BLOCK_NT CODE_BLOCK_NT
@ -19633,7 +19633,7 @@ ROOT_NT
INVOCATION_NT'try typhoid mary sneezing on the random bystander' {phrase invoked: call} INVOCATION_NT'try typhoid mary sneezing on the random bystander' {phrase invoked: call}
RVALUE_CONTEXT_NT'typhoid mary sneezing on the random bystander' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'typhoid mary sneezing on the random bystander' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'typhoid mary sneezing on the random bystander' {kind: action} {action pattern: <action: sneezing on noun: LOCAL_VARIABLE_NT'the random bystander' {local: LV"random bystander"-person person}>} CONSTANT_NT'typhoid mary sneezing on the random bystander' {kind: action} {action pattern: <action: sneezing onactor: LOCAL_VARIABLE_NT'typhoid mary' {local: LV"typhoid mary"-person person}noun: LOCAL_VARIABLE_NT'the random bystander' {local: LV"random bystander"-person person}>}
SENTENCE_NT'a person can be infected or clean' {unit: 4} {classified} 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} 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} COMMON_NOUN_NT'a person' {refined} {refers: infs'person'} {creation: << kind=person(x) >>} {eval: TEST_VALUE_NT}
@ -20113,7 +20113,7 @@ ROOT_NT
INVOCATION_NT'try the person asked trying opening the blocking door' {phrase invoked: call} INVOCATION_NT'try the person asked trying opening the blocking door' {phrase invoked: call}
RVALUE_CONTEXT_NT'person asked trying opening the blocking door' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'person asked trying opening the blocking door' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'person asked trying opening the blocking door' {kind: action} {action pattern: <action: opening noun: LOCAL_VARIABLE_NT'the blocking door' {local: LV"blocking door"-door door}>} CONSTANT_NT'person asked trying opening the blocking door' {kind: action} {action pattern: <action: openingactor: NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}noun: LOCAL_VARIABLE_NT'the blocking door' {local: LV"blocking door"-door door}>}
CODE_BLOCK_NT {control structure: IF} CODE_BLOCK_NT {control structure: IF}
INVOCATION_LIST_NT'if the blocking door is closed' {colon_block_command} INVOCATION_LIST_NT'if the blocking door is closed' {colon_block_command}
INVOCATION_NT'if the blocking door is closed' {phrase invoked: call} INVOCATION_NT'if the blocking door is closed' {phrase invoked: call}
@ -20130,7 +20130,7 @@ ROOT_NT
INVOCATION_NT'try the person asked trying closing the door ajar' {phrase invoked: call} INVOCATION_NT'try the person asked trying closing the door ajar' {phrase invoked: call}
RVALUE_CONTEXT_NT'person asked trying closing the door ajar' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'person asked trying closing the door ajar' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'person asked trying closing the door ajar' {kind: action} {action pattern: <action: closing noun: LOCAL_VARIABLE_NT'the door ajar' {local: LV"door ajar"-thing thing}>} CONSTANT_NT'person asked trying closing the door ajar' {kind: action} {action pattern: <action: closingactor: NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}noun: LOCAL_VARIABLE_NT'the door ajar' {local: LV"door ajar"-thing thing}>}
CODE_BLOCK_NT {control structure: IF} CODE_BLOCK_NT {control structure: IF}
INVOCATION_LIST_NT'if the door ajar is open' {colon_block_command} INVOCATION_LIST_NT'if the door ajar is open' {colon_block_command}
INVOCATION_NT'if the door ajar is open' {phrase invoked: call} INVOCATION_NT'if the door ajar is open' {phrase invoked: call}
@ -20147,7 +20147,7 @@ ROOT_NT
INVOCATION_NT'try the person asked trying closing the door ajar' {phrase invoked: call} INVOCATION_NT'try the person asked trying closing the door ajar' {phrase invoked: call}
RVALUE_CONTEXT_NT'person asked trying closing the door ajar' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'person asked trying closing the door ajar' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'person asked trying closing the door ajar' {kind: action} {action pattern: <action: closing noun: LOCAL_VARIABLE_NT'the door ajar' {local: LV"door ajar"-thing thing}>} CONSTANT_NT'person asked trying closing the door ajar' {kind: action} {action pattern: <action: closingactor: NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}noun: LOCAL_VARIABLE_NT'the door ajar' {local: LV"door ajar"-thing thing}>}
CODE_BLOCK_NT {control structure: IF} CODE_BLOCK_NT {control structure: IF}
INVOCATION_LIST_NT'if the door ajar is open' {colon_block_command} INVOCATION_LIST_NT'if the door ajar is open' {colon_block_command}
INVOCATION_NT'if the door ajar is open' {phrase invoked: call} INVOCATION_NT'if the door ajar is open' {phrase invoked: call}
@ -20164,7 +20164,7 @@ ROOT_NT
INVOCATION_NT'try the person asked trying unlocking keylessly the sealed c' {phrase invoked: call} INVOCATION_NT'try the person asked trying unlocking keylessly the sealed c' {phrase invoked: call}
RVALUE_CONTEXT_NT'person asked trying unlocking keylessly the sealed chest' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'person asked trying unlocking keylessly the sealed chest' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'person asked trying unlocking keylessly the sealed chest' {kind: action} {action pattern: <action: unlocking keylessly noun: LOCAL_VARIABLE_NT'the sealed chest' {local: LV"sealed chest"-thing thing}>} CONSTANT_NT'person asked trying unlocking keylessly the sealed chest' {kind: action} {action pattern: <action: unlocking keylesslyactor: NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}noun: LOCAL_VARIABLE_NT'the sealed chest' {local: LV"sealed chest"-thing thing}>}
CODE_BLOCK_NT {control structure: IF} CODE_BLOCK_NT {control structure: IF}
INVOCATION_LIST_NT'if the sealed chest is locked' {colon_block_command} INVOCATION_LIST_NT'if the sealed chest is locked' {colon_block_command}
INVOCATION_NT'if the sealed chest is locked' {phrase invoked: call} INVOCATION_NT'if the sealed chest is locked' {phrase invoked: call}
@ -20421,7 +20421,7 @@ ROOT_NT
INVOCATION_NT'try the person asked unlocking the noun with the key unlocke' {phrase invoked: call} INVOCATION_NT'try the person asked unlocking the noun with the key unlocke' {phrase invoked: call}
RVALUE_CONTEXT_NT'person asked unlocking the noun with the key unlocked with' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'person asked unlocking the noun with the key unlocked with' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'person asked unlocking the noun with the key unlocked with' {kind: action} {action pattern: <action: unlocking it with noun: NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}} second: NONLOCAL_VARIABLE_NT'the key unlocked with' {nonlocal: 'key unlocked with'(var)object}>} CONSTANT_NT'person asked unlocking the noun with the key unlocked with' {kind: action} {action pattern: <action: unlocking it withactor: NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}noun: NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}second: NONLOCAL_VARIABLE_NT'the key unlocked with' {nonlocal: 'key unlocked with'(var)object}>}
HEADING_NT'part 3 - locking' {heading 3} {under: H3'part 3 - locking'} {unit: 4} HEADING_NT'part 3 - locking' {heading 3} {under: H3'part 3 - locking'} {unit: 4}
HEADING_NT'section 1 - regular locking' {heading 5} {under: H5'section 1 - regular locking'} {unit: 4} HEADING_NT'section 1 - regular locking' {heading 5} {under: H5'section 1 - regular locking'} {unit: 4}
SENTENCE_NT'understand the command lock as something new' {unit: 4} {classified} SENTENCE_NT'understand the command lock as something new' {unit: 4} {classified}
@ -20540,7 +20540,7 @@ ROOT_NT
INVOCATION_NT'try the person asked locking the noun with the key locked wi' {phrase invoked: call} INVOCATION_NT'try the person asked locking the noun with the key locked wi' {phrase invoked: call}
RVALUE_CONTEXT_NT'person asked locking the noun with the key locked with' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'person asked locking the noun with the key locked with' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'person asked locking the noun with the key locked with' {kind: action} {action pattern: <action: locking it with noun: NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}} second: NONLOCAL_VARIABLE_NT'the key locked with' {nonlocal: 'key locked with'(var)object}>} CONSTANT_NT'person asked locking the noun with the key locked with' {kind: action} {action pattern: <action: locking it withactor: NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}noun: NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}second: NONLOCAL_VARIABLE_NT'the key locked with' {nonlocal: 'key locked with'(var)object}>}
HEADING_NT'volume 3 - the passkey kind , needed only if you want keys t' {heading 1} {under: H1'volume 3 - the passkey kind , needed only if you want keys to name themselves'} {unit: 4} HEADING_NT'volume 3 - the passkey kind , needed only if you want keys t' {heading 1} {under: H1'volume 3 - the passkey kind , needed only if you want keys to name themselves'} {unit: 4}
SENTENCE_NT'a passkey is a kind of thing' {unit: 4} {classified} SENTENCE_NT'a passkey is a kind of thing' {unit: 4} {classified}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
@ -20707,7 +20707,7 @@ ROOT_NT
INVOCATION_NT'try the person asked trying taking the noun' {phrase invoked: call} INVOCATION_NT'try the person asked trying taking the noun' {phrase invoked: call}
RVALUE_CONTEXT_NT'person asked trying taking the noun' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'person asked trying taking the noun' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'person asked trying taking the noun' {kind: action} {action pattern: <action: taking noun: NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}>} CONSTANT_NT'person asked trying taking the noun' {kind: action} {action pattern: <action: takingactor: NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}noun: NONLOCAL_VARIABLE_NT'the noun' {nonlocal: 'noun'(var)object}{meaning: {noun = VARIABLE_MC}}>}
CODE_BLOCK_NT'otherwise' {colon_block_command} {indent: 1} {control structure: O} CODE_BLOCK_NT'otherwise' {colon_block_command} {indent: 1} {control structure: O}
INVOCATION_LIST_NT'carry out the implicitly taking activity with the noun' {indent: 2} INVOCATION_LIST_NT'carry out the implicitly taking activity with the noun' {indent: 2}
INVOCATION_NT'carry out the implicitly taking activity with the noun' {phrase invoked: call} {kind variable declarations: K=object} INVOCATION_NT'carry out the implicitly taking activity with the noun' {phrase invoked: call} {kind variable declarations: K=object}
@ -20745,7 +20745,7 @@ ROOT_NT
INVOCATION_NT'try the person asked trying taking the second noun' {phrase invoked: call} INVOCATION_NT'try the person asked trying taking the second noun' {phrase invoked: call}
RVALUE_CONTEXT_NT'person asked trying taking the second noun' {token check to do: <null-parse-node> RVALUE_CONTEXT_NT'person asked trying taking the second noun' {token check to do: <null-parse-node>
} {token to be parsed against: TEST_VALUE_NT'action'} {required: action} } {token to be parsed against: TEST_VALUE_NT'action'} {required: action}
CONSTANT_NT'person asked trying taking the second noun' {kind: action} {action pattern: <action: taking noun: NONLOCAL_VARIABLE_NT'the second noun' {nonlocal: 'second noun'(var)object}{meaning: {second noun = VARIABLE_MC}}>} CONSTANT_NT'person asked trying taking the second noun' {kind: action} {action pattern: <action: takingactor: NONLOCAL_VARIABLE_NT'person asked' {nonlocal: 'person asked'(var)object}{meaning: {person asked = VARIABLE_MC}}noun: NONLOCAL_VARIABLE_NT'the second noun' {nonlocal: 'second noun'(var)object}{meaning: {second noun = VARIABLE_MC}}>}
CODE_BLOCK_NT'otherwise' {colon_block_command} {indent: 1} {control structure: O} CODE_BLOCK_NT'otherwise' {colon_block_command} {indent: 1} {control structure: O}
INVOCATION_LIST_NT'carry out the implicitly taking activity with the second nou' {indent: 2} INVOCATION_LIST_NT'carry out the implicitly taking activity with the second nou' {indent: 2}
INVOCATION_NT'carry out the implicitly taking activity with the second nou' {phrase invoked: call} {kind variable declarations: K=object} INVOCATION_NT'carry out the implicitly taking activity with the second nou' {phrase invoked: call} {kind variable declarations: K=object}

View file

@ -1,4 +1,4 @@
Total memory consumption was 257776K = 252 MB Total memory consumption was 257775K = 252 MB
62.3% was used for 1339794 objects, in 278618 frames in 201 x 800K = 160800K = 157 MB: 62.3% was used for 1339794 objects, in 278618 frames in 201 x 800K = 160800K = 157 MB:
@ -15,7 +15,7 @@ Total memory consumption was 257776K = 252 MB
0.7% inter_schema_token 13492 objects, 1942848 bytes 0.7% inter_schema_token 13492 objects, 1942848 bytes
0.6% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes 0.6% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes
0.5% match_trie_array 10 x 1000 = 10000 objects, 1360320 bytes 0.5% match_trie_array 10 x 1000 = 10000 objects, 1360320 bytes
0.4% phrase 940 objects, 1060320 bytes 0.3% phrase 940 objects, 1052800 bytes
0.3% inter_name_array 21 x 1000 = 21000 objects, 1008672 bytes 0.3% inter_name_array 21 x 1000 = 21000 objects, 1008672 bytes
0.3% adjective_meaning 202 objects, 1000304 bytes 0.3% adjective_meaning 202 objects, 1000304 bytes
0.3% excerpt_meaning 3098 objects, 966576 bytes 0.3% excerpt_meaning 3098 objects, 966576 bytes
@ -73,11 +73,11 @@ Total memory consumption was 257776K = 252 MB
---- activity_list_array 1 x 1000 objects, 40032 bytes ---- activity_list_array 1 x 1000 objects, 40032 bytes
---- response_message 407 objects, 35816 bytes ---- response_message 407 objects, 35816 bytes
---- production_list 618 objects, 34608 bytes ---- production_list 618 objects, 34608 bytes
---- action_pattern_array 6 x 100 = 600 objects, 33792 bytes
---- regions_data 670 objects, 32160 bytes ---- regions_data 670 objects, 32160 bytes
---- HTML_tag_array 1 x 1000 objects, 32032 bytes ---- HTML_tag_array 1 x 1000 objects, 32032 bytes
---- property_permission 96 objects, 30720 bytes ---- property_permission 96 objects, 30720 bytes
---- verb_sense 403 objects, 29016 bytes ---- verb_sense 403 objects, 29016 bytes
---- action_pattern_array 6 x 100 = 600 objects, 28992 bytes
---- stacked_variable_owner_array 6 x 100 = 600 objects, 28992 bytes ---- stacked_variable_owner_array 6 x 100 = 600 objects, 28992 bytes
---- heading 198 objects, 28512 bytes ---- heading 198 objects, 28512 bytes
---- counting_data 670 objects, 26800 bytes ---- counting_data 670 objects, 26800 bytes
@ -229,7 +229,7 @@ Total memory consumption was 257776K = 252 MB
37.6% was used for memory not allocated for objects: 37.6% was used for memory not allocated for objects:
16.0% text stream storage 42248732 bytes in 265817 claims 16.0% text stream storage 42247848 bytes in 265814 claims
3.5% dictionary storage 9278976 bytes in 16372 claims 3.5% dictionary storage 9278976 bytes in 16372 claims
---- sorting 1056 bytes in 3 claims ---- sorting 1056 bytes in 3 claims
2.7% source text 7200000 bytes in 3 claims 2.7% source text 7200000 bytes in 3 claims
@ -245,5 +245,5 @@ Total memory consumption was 257776K = 252 MB
---- emitter array storage 12320 bytes in 8 claims ---- emitter array storage 12320 bytes in 8 claims
---- code generation workspace for objects 9200 bytes in 9 claims ---- code generation workspace for objects 9200 bytes in 9 claims
19.7% was overhead - 52169072 bytes = 50946K = 49 MB 19.7% was overhead - 52181392 bytes = 50958K = 49 MB

View file

@ -1,15 +1,15 @@
100.0% in inform7 run 100.0% in inform7 run
67.1% in compilation to Inter 67.0% in compilation to Inter
26.0% in //Phrases::Manager::compile_first_block// 25.8% in //Phrases::Manager::compile_first_block//
8.3% in //Phrases::Manager::compile_as_needed// 8.5% in //Phrases::Manager::compile_as_needed//
7.0% in //Strings::compile_responses// 7.0% in //Strings::compile_responses//
6.2% in //InferenceSubjects::emit_all// 6.0% in //InferenceSubjects::emit_all//
4.1% in //MajorNodes::pre_pass// 4.4% in //MajorNodes::pre_pass//
3.3% in //MajorNodes::pass_1// 3.3% in //MajorNodes::pass_1//
2.0% in //Phrases::Manager::RulePrintingRule_routine// 2.0% in //Phrases::Manager::RulePrintingRule_routine//
1.8% in //Phrases::Manager::rulebooks_array// 1.8% in //Phrases::Manager::rulebooks_array//
1.0% in //RTVerbs::ConjugateVerb// 0.9% in //RTVerbs::ConjugateVerb//
0.8% in //Phrases::Manager::traverse// 0.7% in //Phrases::Manager::traverse//
0.5% in //Phrases::Manager::parse_rule_parameters// 0.5% in //Phrases::Manager::parse_rule_parameters//
0.5% in //World::stage_V// 0.5% in //World::stage_V//
0.3% in //MajorNodes::pass_2// 0.3% in //MajorNodes::pass_2//
@ -19,19 +19,18 @@
0.1% in //RTKinds::compile_data_type_support_routines// 0.1% in //RTKinds::compile_data_type_support_routines//
0.1% in //Task::make_built_in_kind_constructors// 0.1% in //Task::make_built_in_kind_constructors//
0.1% in //World::stages_II_and_III// 0.1% in //World::stages_II_and_III//
3.6% not specifically accounted for 3.3% not specifically accounted for
30.5% in running Inter pipeline 30.4% in running Inter pipeline
10.7% in step preparation 10.1% in step preparation
9.7% in inter step 2/12: link 9.7% in inter step 2/12: link
7.2% in inter step 12/12: generate inform6 -> auto.inf 7.0% in inter step 12/12: generate inform6 -> auto.inf
0.3% in inter step 9/12: make-identifiers-unique 0.3% in inter step 9/12: make-identifiers-unique
0.1% in inter step 10/12: reconcile-verbs 0.1% in inter step 10/12: reconcile-verbs
0.1% in inter step 11/12: eliminate-redundant-labels 0.1% in inter step 11/12: eliminate-redundant-labels
0.1% in inter step 4/12: parse-linked-matter
0.1% in inter step 5/12: resolve-conditional-compilation 0.1% in inter step 5/12: resolve-conditional-compilation
0.1% in inter step 6/12: assimilate 0.1% in inter step 6/12: assimilate
0.1% in inter step 7/12: resolve-external-symbols 0.1% in inter step 7/12: resolve-external-symbols
0.1% in inter step 8/12: inspect-plugs 0.1% in inter step 8/12: inspect-plugs
1.4% not specifically accounted for 2.0% not specifically accounted for
2.0% in supervisor 2.0% in supervisor
0.4% not specifically accounted for 0.4% not specifically accounted for

View file

@ -23,3 +23,5 @@ PM_ActionVarUnknownKOV
PM_BadMatchingSyntax PM_BadMatchingSyntax
PM_ActionVarAnd PM_ActionVarAnd
PM_MatchedAsTooLong PM_MatchedAsTooLong
PM_PastActionCalled
PM_PTAPMakesCallings

View file

@ -552,15 +552,15 @@ int Map::act_on_special_NPs(parse_node *p) {
= =
int Map::check_going(parse_node *from, parse_node *to, int Map::check_going(parse_node *from, parse_node *to,
parse_node *by, parse_node *through, parse_node *pushing) { parse_node *by, parse_node *through, parse_node *pushing) {
if (ActionPatterns::check_going(from, "from", if (Going::check_going(from, "from",
K_room, K_region) == FALSE) return FALSE; K_room, K_region) == FALSE) return FALSE;
if (ActionPatterns::check_going(to, "to", if (Going::check_going(to, "to",
K_room, K_region) == FALSE) return FALSE; K_room, K_region) == FALSE) return FALSE;
if (ActionPatterns::check_going(by, "by", if (Going::check_going(by, "by",
K_thing, NULL) == FALSE) return FALSE; K_thing, NULL) == FALSE) return FALSE;
if (ActionPatterns::check_going(through, "through", if (Going::check_going(through, "through",
K_door, NULL) == FALSE) return FALSE; K_door, NULL) == FALSE) return FALSE;
if (ActionPatterns::check_going(pushing, "with", if (Going::check_going(pushing, "with",
K_thing, NULL) == FALSE) return FALSE; K_thing, NULL) == FALSE) return FALSE;
return TRUE; return TRUE;
} }

View file

@ -12,12 +12,6 @@ Pattern-matches on individual nouns in an action are called clauses.
@e IN_THE_PRESENCE_OF_AP_CLAUSE @e IN_THE_PRESENCE_OF_AP_CLAUSE
@e WHEN_AP_CLAUSE @e WHEN_AP_CLAUSE
@e GOING_FROM_AP_CLAUSE
@e GOING_TO_AP_CLAUSE
@e GOING_THROUGH_AP_CLAUSE
@e GOING_BY_AP_CLAUSE
@e PUSHING_AP_CLAUSE
= =
typedef struct ap_clause { typedef struct ap_clause {
int clause_ID; int clause_ID;
@ -207,21 +201,12 @@ void APClauses::ap_add_optional_clause(action_pattern *ap, stacked_variable *stv
int oid = StackedVariables::get_owner_id(stv); int oid = StackedVariables::get_owner_id(stv);
int off = StackedVariables::get_offset(stv); int off = StackedVariables::get_offset(stv);
int C = 1000*oid + off, ar = FALSE; int C = 1000*oid + off;
if (oid == 20007 /* i.e., going */ ) { int D = Going::divert(ap, stv); if (D >= 0) C = D;
switch (off) {
case 0: C = GOING_FROM_AP_CLAUSE; ar = TRUE; break;
case 1: C = GOING_TO_AP_CLAUSE; ar = TRUE; break;
case 2: C = GOING_THROUGH_AP_CLAUSE; break;
case 3: C = GOING_BY_AP_CLAUSE; break;
case 4: C = PUSHING_AP_CLAUSE; break;
}
}
ap_clause *apoc = APClauses::ensure_clause(ap, C); ap_clause *apoc = APClauses::ensure_clause(ap, C);
apoc->stv_to_match = stv; apoc->stv_to_match = stv;
apoc->clause_spec = spec; apoc->clause_spec = spec;
if (ar) APClauses::set_opt(apoc, ALLOW_REGION_AS_ROOM_APCOPT); Going::new_clause(ap, apoc);
} }
int APClauses::has_stv_clauses(action_pattern *ap) { int APClauses::has_stv_clauses(action_pattern *ap) {
@ -275,3 +260,92 @@ int APClauses::validate(ap_clause *apoc, kind *K) {
return FALSE; return FALSE;
return TRUE; return TRUE;
} }
void APClauses::write(OUTPUT_STREAM, action_pattern *ap) {
for (ap_clause *apoc = (ap)?(ap->ap_clauses):NULL; apoc; apoc = apoc->next) {
switch (apoc->clause_ID) {
case PARAMETRIC_AP_CLAUSE: WRITE("parameter"); break;
case ACTOR_AP_CLAUSE: WRITE("actor"); break;
case NOUN_AP_CLAUSE: WRITE("noun"); break;
case SECOND_AP_CLAUSE: WRITE("second"); break;
case IN_AP_CLAUSE: WRITE("in"); break;
case IN_THE_PRESENCE_OF_AP_CLAUSE: WRITE("in-presence"); break;
case WHEN_AP_CLAUSE: WRITE("when"); break;
}
Going::write(OUT, apoc->clause_ID);
if (apoc->stv_to_match) {
WRITE("{");
NonlocalVariables::write(OUT,
StackedVariables::get_variable(apoc->stv_to_match));
WRITE("}");
}
WRITE(": %P", apoc->clause_spec);
if (APClauses::opt(apoc, ALLOW_REGION_AS_ROOM_APCOPT)) WRITE("[allow-region]");
if (APClauses::opt(apoc, DO_NOT_VALIDATE_APCOPT)) WRITE("[no-validate]");
if (APClauses::opt(apoc, ACTOR_IS_NOT_PLAYER_APCOPT)) WRITE("[not-player]");
if (APClauses::opt(apoc, REQUEST_APCOPT)) WRITE("[request]");
}
}
@h Action pattern specificity.
The following is one of Inform's standardised comparison routines, which
takes a pair of objects A, B and returns 1 if A makes a more specific
description than B, 0 if they seem equally specific, or $-1$ if B makes a
more specific description than A. This is transitive, and intended to be
used in sorting algorithms.
=
int APClauses::count_aspects(action_pattern *ap) {
if (ap == NULL) return 0;
int c = Going::count_aspects(ap);
if ((APClauses::get_noun(ap)) ||
(APClauses::get_second(ap)) ||
(APClauses::get_actor(ap)))
c++;
if (APClauses::get_presence(ap)) c++;
if ((ap->duration) || (APClauses::get_val(ap, WHEN_AP_CLAUSE))) c++;
if (APClauses::get_val(ap, PARAMETRIC_AP_CLAUSE)) c++;
return c;
}
int APClauses::compare_specificity(action_pattern *ap1, action_pattern *ap2) {
c_s_stage_law = I"III.1 - Object To Which Rule Applies";
int rv = Specifications::compare_specificity(APClauses::get_val(ap1, PARAMETRIC_AP_CLAUSE), APClauses::get_val(ap2, PARAMETRIC_AP_CLAUSE), NULL);
if (rv != 0) return rv;
int claim = FALSE;
rv = Going::compare_specificity(ap1, ap2, &claim);
if (rv != 0) return rv;
if (claim == FALSE) {
c_s_stage_law = I"III.2.2 - Action/Where/Room Where Action Takes Place";
rv = Specifications::compare_specificity(APClauses::get_room(ap1), APClauses::get_room(ap2), NULL);
if (rv != 0) return rv;
}
c_s_stage_law = I"III.2.3 - Action/Where/In The Presence Of";
rv = Specifications::compare_specificity(APClauses::get_presence(ap1), APClauses::get_presence(ap2), NULL);
if (rv != 0) return rv;
rv = APClauses::compare_specificity_of_apoc_list(ap1, ap2);
if (rv != 0) return rv;
c_s_stage_law = I"III.3.1 - Action/What/Second Thing Acted On";
rv = Specifications::compare_specificity(APClauses::get_second(ap1), APClauses::get_second(ap2), NULL);
if (rv != 0) return rv;
c_s_stage_law = I"III.3.2 - Action/What/Thing Acted On";
rv = Specifications::compare_specificity(APClauses::get_noun(ap1), APClauses::get_noun(ap2), NULL);
if (rv != 0) return rv;
c_s_stage_law = I"III.3.3 - Action/What/Actor Performing Action";
rv = Specifications::compare_specificity(APClauses::get_actor(ap1), APClauses::get_actor(ap2), NULL);
if (rv != 0) return rv;
return 0;
}

View file

@ -70,29 +70,7 @@ action_pattern ActionPatterns::new(void) {
} }
void ActionPatterns::log(action_pattern *ap) { void ActionPatterns::log(action_pattern *ap) {
if (ap == NULL) LOG(" [Null]"); ActionPatterns::write(DL, ap);
else {
if (ap->valid != TRUE) LOG(" [Invalid]");
else LOG(" [Valid]");
LOG(" Action: ");
if (ap->action_list == NULL) LOG("unspecified");
else ActionNameLists::log_briefly(ap->action_list);
if (APClauses::get_noun(ap)) LOG(" Noun: $P", APClauses::get_noun(ap));
if (APClauses::get_second(ap)) LOG(" Second: $P", APClauses::get_second(ap));
if (APClauses::get_val(ap, GOING_FROM_AP_CLAUSE)) LOG(" From: $P", APClauses::get_val(ap, GOING_FROM_AP_CLAUSE));
if (APClauses::get_val(ap, GOING_TO_AP_CLAUSE)) LOG(" To: $P", APClauses::get_val(ap, GOING_TO_AP_CLAUSE));
if (APClauses::get_val(ap, GOING_BY_AP_CLAUSE)) LOG(" By: $P", APClauses::get_val(ap, GOING_BY_AP_CLAUSE));
if (APClauses::get_val(ap, GOING_THROUGH_AP_CLAUSE)) LOG(" Through: $P", APClauses::get_val(ap, GOING_THROUGH_AP_CLAUSE));
if (APClauses::get_val(ap, PUSHING_AP_CLAUSE)) LOG(" Pushing: $P", APClauses::get_val(ap, PUSHING_AP_CLAUSE));
if (APClauses::get_room(ap)) LOG(" Room: $P", APClauses::get_room(ap));
if (APClauses::get_val(ap, PARAMETRIC_AP_CLAUSE)) LOG(" Parameter: $P", APClauses::get_val(ap, PARAMETRIC_AP_CLAUSE));
if (APClauses::get_presence(ap)) LOG(" Presence: $P", APClauses::get_presence(ap));
if (APClauses::going_nowhere(ap)) LOG(" Nowhere ");
if (APClauses::going_somewhere(ap)) LOG(" Somewhere ");
if (APClauses::get_val(ap, WHEN_AP_CLAUSE)) LOG(" When: $P ", APClauses::get_val(ap, WHEN_AP_CLAUSE));
if (ap->duration) LOG(" Duration: $t ", ap->duration);
}
LOG("\n");
} }
void ActionPatterns::write(OUTPUT_STREAM, action_pattern *ap) { void ActionPatterns::write(OUTPUT_STREAM, action_pattern *ap) {
@ -102,19 +80,7 @@ void ActionPatterns::write(OUTPUT_STREAM, action_pattern *ap) {
WRITE("<action: "); WRITE("<action: ");
if (ap->action_list == NULL) WRITE("unspecified"); if (ap->action_list == NULL) WRITE("unspecified");
else ActionNameLists::log_briefly(ap->action_list); else ActionNameLists::log_briefly(ap->action_list);
if (APClauses::get_noun(ap)) WRITE(" noun: %P", APClauses::get_noun(ap)); APClauses::write(OUT, ap);
if (APClauses::get_second(ap)) WRITE(" second: %P", APClauses::get_second(ap));
if (APClauses::get_val(ap, GOING_FROM_AP_CLAUSE)) WRITE(" from: %P", APClauses::get_val(ap, GOING_FROM_AP_CLAUSE));
if (APClauses::get_val(ap, GOING_TO_AP_CLAUSE)) WRITE(" to: %P", APClauses::get_val(ap, GOING_TO_AP_CLAUSE));
if (APClauses::get_val(ap, GOING_BY_AP_CLAUSE)) WRITE(" by: %P", APClauses::get_val(ap, GOING_BY_AP_CLAUSE));
if (APClauses::get_val(ap, GOING_THROUGH_AP_CLAUSE)) WRITE(" through: %P", APClauses::get_val(ap, GOING_THROUGH_AP_CLAUSE));
if (APClauses::get_val(ap, PUSHING_AP_CLAUSE)) WRITE(" pushing: %P", APClauses::get_val(ap, PUSHING_AP_CLAUSE));
if (APClauses::get_room(ap)) WRITE(" room: %P", APClauses::get_room(ap));
if (APClauses::get_val(ap, PARAMETRIC_AP_CLAUSE)) WRITE(" parameter: %P", APClauses::get_val(ap, PARAMETRIC_AP_CLAUSE));
if (APClauses::get_presence(ap)) WRITE(" presence: %P", APClauses::get_presence(ap));
if (APClauses::going_nowhere(ap)) WRITE(" Nowhere ");
if (APClauses::going_somewhere(ap)) WRITE(" Somewhere ");
if (APClauses::get_val(ap, WHEN_AP_CLAUSE)) WRITE(" when: %P", APClauses::get_val(ap, WHEN_AP_CLAUSE));
if (ap->duration) { WRITE(" duration: "); Occurrence::log(OUT, ap->duration); } if (ap->duration) { WRITE(" duration: "); Occurrence::log(OUT, ap->duration); }
WRITE(">"); WRITE(">");
} }
@ -179,12 +145,12 @@ int ActionPatterns::ap_clause_is_unspecific(parse_node *spec) {
} }
int ActionPatterns::is_overspecific(action_pattern *ap) { int ActionPatterns::is_overspecific(action_pattern *ap) {
if (APClauses::get_val(ap, WHEN_AP_CLAUSE) != NULL) return TRUE; for (ap_clause *apoc = (ap)?(ap->ap_clauses):NULL; apoc; apoc = apoc->next)
if (APClauses::get_room(ap) != NULL) return TRUE; if ((apoc->clause_ID != NOUN_AP_CLAUSE) &&
if (APClauses::get_presence(ap) != NULL) return TRUE; (apoc->clause_ID != SECOND_AP_CLAUSE) &&
if (APClauses::has_stv_clauses(ap)) return TRUE; (apoc->clause_ID != ACTOR_AP_CLAUSE))
if (APClauses::going_nowhere(ap)) return TRUE; if (apoc->clause_spec)
if (APClauses::going_somewhere(ap)) return TRUE; return TRUE;
if (APClauses::has_any_actor(ap)) return TRUE; if (APClauses::has_any_actor(ap)) return TRUE;
if (ap->duration) return TRUE; if (ap->duration) return TRUE;
return FALSE; return FALSE;
@ -226,204 +192,6 @@ parse_node *ActionPatterns::nullify_nonspecific_references(parse_node *spec) {
return spec; return spec;
} }
int ActionPatterns::check_going(parse_node *spec, char *keyword,
kind *ka, kind *kb) {
if (spec == NULL) return TRUE;
if (Rvalues::is_nothing_object_constant(spec)) return TRUE;
if (Specifications::is_description_like(spec)) {
instance *oref = Specifications::object_exactly_described_if_any(spec);
if ((oref == NULL) || (ka == NULL) || (Instances::of_kind(oref, ka)) ||
((kb) && (Instances::of_kind(oref, kb)))) return TRUE;
Problems::quote_source(1, current_sentence);
Problems::quote_object(2, oref);
Problems::quote_text(3, keyword);
Problems::quote_kind(4, ka);
Problems::quote_kind(5, Instances::to_kind(oref));
if (kb) Problems::quote_kind(6, kb);
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_GoingWrongKind));
if (kb)
Problems::issue_problem_segment(
"In the sentence %1, %2 seems to be intended as something the "
"player might be going %3, but this has the wrong kind: %5 "
"rather than %4 or %6.");
else
Problems::issue_problem_segment(
"In the sentence %1, %2 seems to be intended as something the player "
"might be going %3, but this has the wrong kind: %5 rather than %4.");
Problems::issue_problem_end();
return TRUE;
}
Problems::quote_source(1, current_sentence);
Problems::quote_wording(2, Node::get_text(spec));
Problems::quote_text(3, keyword);
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_GoingWithoutObject));
Problems::issue_problem_segment(
"In the sentence %1, '%2' seems to be intended as something the player "
"might be going %3, but it doesn't make sense in that context.");
Problems::issue_problem_end();
return FALSE;
}
@h Action pattern specificity.
The following is one of Inform's standardised comparison routines, which
takes a pair of objects A, B and returns 1 if A makes a more specific
description than B, 0 if they seem equally specific, or $-1$ if B makes a
more specific description than A. This is transitive, and intended to be
used in sorting algorithms.
=
int ActionPatterns::ap_count_rooms(action_pattern *ap) {
int c = 0;
if (APClauses::get_room(ap)) c += 2;
if (APClauses::get_val(ap, GOING_FROM_AP_CLAUSE)) c += 2;
if (APClauses::get_val(ap, GOING_TO_AP_CLAUSE)) c += 2;
return c;
}
int ActionPatterns::ap_count_going(action_pattern *ap) {
int c = 0;
if (APClauses::get_val(ap, PUSHING_AP_CLAUSE)) c += 2;
if (APClauses::get_val(ap, GOING_BY_AP_CLAUSE)) c += 2;
if (APClauses::get_val(ap, GOING_THROUGH_AP_CLAUSE)) c += 2;
return c;
}
int ActionPatterns::count_aspects(action_pattern *ap) {
int c = 0;
if (ap == NULL) return 0;
if ((APClauses::get_val(ap, PUSHING_AP_CLAUSE)) ||
(APClauses::get_val(ap, GOING_BY_AP_CLAUSE)) ||
(APClauses::get_val(ap, GOING_THROUGH_AP_CLAUSE)))
c++;
if ((APClauses::get_room(ap)) ||
(APClauses::get_val(ap, GOING_FROM_AP_CLAUSE)) ||
(APClauses::get_val(ap, GOING_TO_AP_CLAUSE)))
c++;
if ((APClauses::get_noun(ap)) ||
(APClauses::get_second(ap)) ||
(APClauses::get_actor(ap)))
c++;
if (APClauses::get_presence(ap)) c++;
if ((ap->duration) || (APClauses::get_val(ap, WHEN_AP_CLAUSE))) c++;
if (APClauses::get_val(ap, PARAMETRIC_AP_CLAUSE)) c++;
return c;
}
int ActionPatterns::compare_specificity(action_pattern *ap1, action_pattern *ap2) {
int rv, suspend_usual_from_and_room = FALSE, rct1, rct2;
if ((ap1 == NULL) && (ap2)) return -1;
if ((ap1) && (ap2 == NULL)) return 1;
if ((ap1 == NULL) && (ap2 == NULL)) return 0;
LOGIF(SPECIFICITIES,
"Comparing specificity of action patterns:\n(1) $A(2) $A\n", ap1, ap2);
if ((ap1->valid == FALSE) && (ap2->valid != FALSE)) return -1;
if ((ap1->valid != FALSE) && (ap2->valid == FALSE)) return 1;
c_s_stage_law = I"III.1 - Object To Which Rule Applies";
rv = Specifications::compare_specificity(APClauses::get_val(ap1, PARAMETRIC_AP_CLAUSE), APClauses::get_val(ap2, PARAMETRIC_AP_CLAUSE), NULL);
if (rv != 0) return rv;
c_s_stage_law = I"III.2.1 - Action/Where/Going In Exotic Ways";
rct1 = ActionPatterns::ap_count_going(ap1); rct2 = ActionPatterns::ap_count_going(ap2);
if (rct1 > rct2) return 1;
if (rct1 < rct2) return -1;
rv = Specifications::compare_specificity(APClauses::get_val(ap1, PUSHING_AP_CLAUSE), APClauses::get_val(ap2, PUSHING_AP_CLAUSE), NULL);
if (rv != 0) return rv;
rv = Specifications::compare_specificity(APClauses::get_val(ap1, GOING_BY_AP_CLAUSE), APClauses::get_val(ap2, GOING_BY_AP_CLAUSE), NULL);
if (rv != 0) return rv;
rv = Specifications::compare_specificity(APClauses::get_val(ap1, GOING_THROUGH_AP_CLAUSE), APClauses::get_val(ap2, GOING_THROUGH_AP_CLAUSE), NULL);
if (rv != 0) return rv;
c_s_stage_law = I"III.2.2 - Action/Where/Room Where Action Takes Place";
rct1 = ActionPatterns::ap_count_rooms(ap1); rct2 = ActionPatterns::ap_count_rooms(ap2);
if (rct1 > rct2) return 1;
if (rct1 < rct2) return -1;
if ((APClauses::get_val(ap1, GOING_FROM_AP_CLAUSE)) && (APClauses::get_room(ap1) == NULL)
&& (APClauses::get_room(ap2)) && (APClauses::get_val(ap2, GOING_FROM_AP_CLAUSE) == NULL)) {
rv = Specifications::compare_specificity(APClauses::get_val(ap1, GOING_FROM_AP_CLAUSE), APClauses::get_room(ap2), NULL);
if (rv != 0) return rv;
suspend_usual_from_and_room = TRUE;
}
if ((APClauses::get_val(ap2, GOING_FROM_AP_CLAUSE)) && (APClauses::get_room(ap2) == NULL)
&& (APClauses::get_room(ap1)) && (APClauses::get_val(ap1, GOING_FROM_AP_CLAUSE) == NULL)) {
rv = Specifications::compare_specificity(APClauses::get_room(ap1), APClauses::get_val(ap2, GOING_FROM_AP_CLAUSE), NULL);
if (rv != 0) return rv;
suspend_usual_from_and_room = TRUE;
}
if (suspend_usual_from_and_room == FALSE) {
rv = Specifications::compare_specificity(APClauses::get_val(ap1, GOING_FROM_AP_CLAUSE), APClauses::get_val(ap2, GOING_FROM_AP_CLAUSE), NULL);
if (rv != 0) return rv;
}
if (suspend_usual_from_and_room == FALSE) {
rv = Specifications::compare_specificity(APClauses::get_room(ap1), APClauses::get_room(ap2), NULL);
if (rv != 0) return rv;
}
rv = Specifications::compare_specificity(APClauses::get_val(ap1, GOING_TO_AP_CLAUSE), APClauses::get_val(ap2, GOING_TO_AP_CLAUSE), NULL);
if (rv != 0) return rv;
c_s_stage_law = I"III.2.3 - Action/Where/In The Presence Of";
rv = Specifications::compare_specificity(APClauses::get_presence(ap1), APClauses::get_presence(ap2), NULL);
if (rv != 0) return rv;
c_s_stage_law = I"III.2.4 - Action/Where/Other Optional Clauses";
rv = APClauses::compare_specificity_of_apoc_list(ap1, ap2);
if (rv != 0) return rv;
c_s_stage_law = I"III.3.1 - Action/What/Second Thing Acted On";
rv = Specifications::compare_specificity(APClauses::get_second(ap1), APClauses::get_second(ap2), NULL);
if (rv != 0) return rv;
c_s_stage_law = I"III.3.2 - Action/What/Thing Acted On";
rv = Specifications::compare_specificity(APClauses::get_noun(ap1), APClauses::get_noun(ap2), NULL);
if (rv != 0) return rv;
c_s_stage_law = I"III.3.3 - Action/What/Actor Performing Action";
rv = Specifications::compare_specificity(APClauses::get_actor(ap1), APClauses::get_actor(ap2), NULL);
if (rv != 0) return rv;
c_s_stage_law = I"III.4.1 - Action/How/What Happens";
rv = ActionNameLists::compare_specificity(ap1->action_list, ap2->action_list);
if (rv != 0) return rv;
c_s_stage_law = I"III.5.1 - Action/When/Duration";
rv = Occurrence::compare_specificity(ap1->duration, ap2->duration);
if (rv != 0) return rv;
c_s_stage_law = I"III.5.2 - Action/When/Circumstances";
rv = Conditions::compare_specificity_of_CONDITIONs(APClauses::get_val(ap1, WHEN_AP_CLAUSE), APClauses::get_val(ap2, WHEN_AP_CLAUSE));
if (rv != 0) return rv;
c_s_stage_law = I"III.6.1 - Action/Name/Is This Named";
if ((ActionPatterns::is_named(ap1)) && (ActionPatterns::is_named(ap2) == FALSE))
return 1;
if ((ActionPatterns::is_named(ap1) == FALSE) && (ActionPatterns::is_named(ap2)))
return -1;
return 0;
}
@ And an anticlimactic little routine for putting objects @ And an anticlimactic little routine for putting objects
into action patterns in the noun or second noun position. into action patterns in the noun or second noun position.
@ -465,23 +233,47 @@ int ActionPatterns::pta_acceptable(parse_node *spec) {
} }
int ActionPatterns::makes_callings(action_pattern *ap) { int ActionPatterns::makes_callings(action_pattern *ap) {
if (Descriptions::makes_callings(APClauses::get_noun(ap))) return TRUE; for (ap_clause *apoc = ap->ap_clauses; apoc; apoc = apoc->next)
if (Descriptions::makes_callings(APClauses::get_second(ap))) return TRUE; if (Descriptions::makes_callings(apoc->clause_spec))
if (Descriptions::makes_callings(APClauses::get_actor(ap))) return TRUE; return TRUE;
if (Descriptions::makes_callings(APClauses::get_room(ap))) return TRUE;
if (Descriptions::makes_callings(APClauses::get_val(ap, PARAMETRIC_AP_CLAUSE))) return TRUE;
if (Descriptions::makes_callings(APClauses::get_presence(ap))) return TRUE;
return FALSE; return FALSE;
} }
@ = int ActionPatterns::compare_specificity(action_pattern *ap1, action_pattern *ap2) {
int ActionPatterns::is_an_action_variable(parse_node *spec) { if ((ap1 == NULL) && (ap2)) return -1;
nonlocal_variable *nlv; if ((ap1) && (ap2 == NULL)) return 1;
if (spec == NULL) return FALSE; if ((ap1 == NULL) && (ap2 == NULL)) return 0;
if (Lvalues::get_storage_form(spec) != NONLOCAL_VARIABLE_NT) return FALSE;
nlv = Node::get_constant_nonlocal_variable(spec); LOGIF(SPECIFICITIES,
if (nlv == I6_noun_VAR) return TRUE; "Comparing specificity of action patterns:\n(1) $A(2) $A\n", ap1, ap2);
if (nlv == I6_second_VAR) return TRUE;
if (nlv == I6_actor_VAR) return TRUE; if ((ap1->valid == FALSE) && (ap2->valid != FALSE)) return -1;
return FALSE; if ((ap1->valid != FALSE) && (ap2->valid == FALSE)) return 1;
int rv = APClauses::compare_specificity(ap1, ap2);
if (rv != 0) return rv;
c_s_stage_law = I"III.4.1 - Action/How/What Happens";
rv = ActionNameLists::compare_specificity(ap1->action_list, ap2->action_list);
if (rv != 0) return rv;
c_s_stage_law = I"III.5.1 - Action/When/Duration";
rv = Occurrence::compare_specificity(ap1->duration, ap2->duration);
if (rv != 0) return rv;
c_s_stage_law = I"III.5.2 - Action/When/Circumstances";
rv = Conditions::compare_specificity_of_CONDITIONs(APClauses::get_val(ap1, WHEN_AP_CLAUSE), APClauses::get_val(ap2, WHEN_AP_CLAUSE));
if (rv != 0) return rv;
c_s_stage_law = I"III.6.1 - Action/Name/Is This Named";
if ((ActionPatterns::is_named(ap1)) && (ActionPatterns::is_named(ap2) == FALSE))
return 1;
if ((ActionPatterns::is_named(ap1) == FALSE) && (ActionPatterns::is_named(ap2)))
return -1;
return 0;
} }

View file

@ -0,0 +1,170 @@
[Going::] Going.
Inform provides a little extra support for the "going" action.
@ There are five clauses with non-standard effects:
@e GOING_FROM_AP_CLAUSE
@e GOING_TO_AP_CLAUSE
@e GOING_THROUGH_AP_CLAUSE
@e GOING_BY_AP_CLAUSE
@e PUSHING_AP_CLAUSE
@
=
int Going::compare_specificity(action_pattern *ap1, action_pattern *ap2, int *claim) {
*claim = TRUE;
int suspend_usual_from_and_room = FALSE;
c_s_stage_law = I"III.2.4 - Action/Where/Other Optional Clauses";
int rct1 = Going::count_other(ap1), rct2 = Going::count_other(ap2);
if (rct1 > rct2) return 1;
if (rct1 < rct2) return -1;
int rv = Specifications::compare_specificity(APClauses::get_val(ap1, PUSHING_AP_CLAUSE), APClauses::get_val(ap2, PUSHING_AP_CLAUSE), NULL);
if (rv != 0) return rv;
rv = Specifications::compare_specificity(APClauses::get_val(ap1, GOING_BY_AP_CLAUSE), APClauses::get_val(ap2, GOING_BY_AP_CLAUSE), NULL);
if (rv != 0) return rv;
rv = Specifications::compare_specificity(APClauses::get_val(ap1, GOING_THROUGH_AP_CLAUSE), APClauses::get_val(ap2, GOING_THROUGH_AP_CLAUSE), NULL);
if (rv != 0) return rv;
c_s_stage_law = I"III.2.2 - Action/Where/Room Where Action Takes Place";
rct1 = Going::count_rooms(ap1); rct2 = Going::count_rooms(ap2);
if (rct1 > rct2) return 1;
if (rct1 < rct2) return -1;
if ((APClauses::get_val(ap1, GOING_FROM_AP_CLAUSE)) && (APClauses::get_room(ap1) == NULL)
&& (APClauses::get_room(ap2)) && (APClauses::get_val(ap2, GOING_FROM_AP_CLAUSE) == NULL)) {
rv = Specifications::compare_specificity(APClauses::get_val(ap1, GOING_FROM_AP_CLAUSE), APClauses::get_room(ap2), NULL);
if (rv != 0) return rv;
suspend_usual_from_and_room = TRUE;
}
if ((APClauses::get_val(ap2, GOING_FROM_AP_CLAUSE)) && (APClauses::get_room(ap2) == NULL)
&& (APClauses::get_room(ap1)) && (APClauses::get_val(ap1, GOING_FROM_AP_CLAUSE) == NULL)) {
rv = Specifications::compare_specificity(APClauses::get_room(ap1), APClauses::get_val(ap2, GOING_FROM_AP_CLAUSE), NULL);
if (rv != 0) return rv;
suspend_usual_from_and_room = TRUE;
}
if (suspend_usual_from_and_room == FALSE) {
rv = Specifications::compare_specificity(APClauses::get_val(ap1, GOING_FROM_AP_CLAUSE), APClauses::get_val(ap2, GOING_FROM_AP_CLAUSE), NULL);
if (rv != 0) return rv;
rv = Specifications::compare_specificity(APClauses::get_room(ap1), APClauses::get_room(ap2), NULL);
if (rv != 0) return rv;
}
rv = Specifications::compare_specificity(APClauses::get_val(ap1, GOING_TO_AP_CLAUSE), APClauses::get_val(ap2, GOING_TO_AP_CLAUSE), NULL);
if (rv != 0) return rv;
return 0;
}
void Going::write(OUTPUT_STREAM, int C) {
switch (C) {
case GOING_FROM_AP_CLAUSE: WRITE("going-from"); break;
case GOING_TO_AP_CLAUSE: WRITE("going-to"); break;
case GOING_THROUGH_AP_CLAUSE: WRITE("going-through"); break;
case GOING_BY_AP_CLAUSE: WRITE("going-by"); break;
case PUSHING_AP_CLAUSE: WRITE("pushing"); break;
}
}
int Going::divert(action_pattern *ap, stacked_variable *stv) {
int oid = StackedVariables::get_owner_id(stv);
int off = StackedVariables::get_offset(stv);
if (oid == 20007 /* i.e., going */ ) {
switch (off) {
case 0: return GOING_FROM_AP_CLAUSE;
case 1: return GOING_TO_AP_CLAUSE;
case 2: return GOING_THROUGH_AP_CLAUSE;
case 3: return GOING_BY_AP_CLAUSE;
case 4: return PUSHING_AP_CLAUSE;
}
}
return -1;
}
void Going::new_clause(action_pattern *ap, ap_clause *apoc) {
if ((apoc->clause_ID == GOING_FROM_AP_CLAUSE) ||
(apoc->clause_ID == GOING_TO_AP_CLAUSE))
APClauses::set_opt(apoc, ALLOW_REGION_AS_ROOM_APCOPT);
}
@
=
int Going::check_going(parse_node *spec, char *keyword,
kind *ka, kind *kb) {
if (spec == NULL) return TRUE;
if (Rvalues::is_nothing_object_constant(spec)) return TRUE;
if (Specifications::is_description_like(spec)) {
instance *oref = Specifications::object_exactly_described_if_any(spec);
if ((oref == NULL) || (ka == NULL) || (Instances::of_kind(oref, ka)) ||
((kb) && (Instances::of_kind(oref, kb)))) return TRUE;
Problems::quote_source(1, current_sentence);
Problems::quote_object(2, oref);
Problems::quote_text(3, keyword);
Problems::quote_kind(4, ka);
Problems::quote_kind(5, Instances::to_kind(oref));
if (kb) Problems::quote_kind(6, kb);
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_GoingWrongKind));
if (kb)
Problems::issue_problem_segment(
"In the sentence %1, %2 seems to be intended as something the "
"player might be going %3, but this has the wrong kind: %5 "
"rather than %4 or %6.");
else
Problems::issue_problem_segment(
"In the sentence %1, %2 seems to be intended as something the player "
"might be going %3, but this has the wrong kind: %5 rather than %4.");
Problems::issue_problem_end();
return TRUE;
}
Problems::quote_source(1, current_sentence);
Problems::quote_wording(2, Node::get_text(spec));
Problems::quote_text(3, keyword);
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_GoingWithoutObject));
Problems::issue_problem_segment(
"In the sentence %1, '%2' seems to be intended as something the player "
"might be going %3, but it doesn't make sense in that context.");
Problems::issue_problem_end();
return FALSE;
}
int Going::count_rooms(action_pattern *ap) {
int c = 0;
if (APClauses::get_room(ap)) c += 2;
if (APClauses::get_val(ap, GOING_FROM_AP_CLAUSE)) c += 2;
if (APClauses::get_val(ap, GOING_TO_AP_CLAUSE)) c += 2;
return c;
}
int Going::count_other(action_pattern *ap) {
int c = 0;
if (APClauses::get_val(ap, PUSHING_AP_CLAUSE)) c += 2;
if (APClauses::get_val(ap, GOING_BY_AP_CLAUSE)) c += 2;
if (APClauses::get_val(ap, GOING_THROUGH_AP_CLAUSE)) c += 2;
return c;
}
int Going::count_aspects(action_pattern *ap) {
int c = 0;
if (ap == NULL) return 0;
if ((APClauses::get_val(ap, PUSHING_AP_CLAUSE)) ||
(APClauses::get_val(ap, GOING_BY_AP_CLAUSE)) ||
(APClauses::get_val(ap, GOING_THROUGH_AP_CLAUSE)))
c++;
if ((APClauses::get_room(ap)) ||
(APClauses::get_val(ap, GOING_FROM_AP_CLAUSE)) ||
(APClauses::get_val(ap, GOING_TO_AP_CLAUSE)))
c++;
return c;
}

View file

@ -46,6 +46,7 @@ Chapter 4: Actions
Action Name Lists Action Name Lists
Action Patterns Action Patterns
Action Pattern Clauses Action Pattern Clauses
Going
Parse Action Patterns Parse Action Patterns
Named Action Patterns Named Action Patterns

View file

@ -215,8 +215,8 @@ int Phrases::Context::compare_specificity(ph_runtime_context_data *rcd1,
c_s_stage_law = I"I - Number of aspects constrained"; c_s_stage_law = I"I - Number of aspects constrained";
int rct1 = 0, rct2 = 0; int rct1 = 0, rct2 = 0;
#ifdef IF_MODULE #ifdef IF_MODULE
rct1 = ActionPatterns::count_aspects(ap1); rct1 = APClauses::count_aspects(ap1);
rct2 = ActionPatterns::count_aspects(ap2); rct2 = APClauses::count_aspects(ap2);
if (sc1) rct1++; if (sc2) rct2++; if (sc1) rct1++; if (sc2) rct2++;
#endif #endif
if (Wordings::nonempty(AL1W)) rct1++; if (Wordings::nonempty(AL2W)) rct2++; if (Wordings::nonempty(AL1W)) rct1++; if (Wordings::nonempty(AL2W)) rct2++;

View file

@ -165,7 +165,7 @@ int Atoms::Compile::atom_involves_action_variables(pcalc_prop *pl) {
#ifdef IF_MODULE #ifdef IF_MODULE
for (int i=0; i<pl->arity; i++) { for (int i=0; i<pl->arity; i++) {
parse_node *operand = Terms::constant_underlying(&(pl->terms[i])); parse_node *operand = Terms::constant_underlying(&(pl->terms[i]));
if (ActionPatterns::is_an_action_variable(operand)) return TRUE; if (RTActions::is_an_action_variable(operand)) return TRUE;
} }
#endif #endif
return FALSE; return FALSE;

View file

@ -407,3 +407,15 @@ void RTActions::emit_anl(action_name_list *head) {
if (neg) Produce::up(Emit::tree()); if (neg) Produce::up(Emit::tree());
} }
@ =
int RTActions::is_an_action_variable(parse_node *spec) {
nonlocal_variable *nlv;
if (spec == NULL) return FALSE;
if (Lvalues::get_storage_form(spec) != NONLOCAL_VARIABLE_NT) return FALSE;
nlv = Node::get_constant_nonlocal_variable(spec);
if (nlv == I6_noun_VAR) return TRUE;
if (nlv == I6_second_VAR) return TRUE;
if (nlv == I6_actor_VAR) return TRUE;
return FALSE;
}