mirror of
https://github.com/ganelson/inform.git
synced 2024-07-02 23:14:57 +03:00
Continuing the AP clauses slog
This commit is contained in:
parent
88fb8901a2
commit
163999d37b
|
@ -338,7 +338,7 @@ We begin with <a href="index.html" class="internal">core</a> itself.
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">anl_entry_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">action_pattern_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">action_name_list_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">ap_optional_clause_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">ap_clause_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">scene_connector_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">understanding_item_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">understanding_reference_CLASS</span>
|
||||
|
@ -372,7 +372,7 @@ We begin with <a href="index.html" class="internal">core</a> itself.
|
|||
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="identifier-syntax">anl_entry</span><span class="plain-syntax">, </span><span class="constant-syntax">1000</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="identifier-syntax">action_pattern</span><span class="plain-syntax">, </span><span class="constant-syntax">100</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="identifier-syntax">action_name_list</span><span class="plain-syntax">, </span><span class="constant-syntax">1000</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap_optional_clause</span><span class="plain-syntax">, </span><span class="constant-syntax">400</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap_clause</span><span class="plain-syntax">, </span><span class="constant-syntax">400</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="identifier-syntax">scene_connector</span><span class="plain-syntax">, </span><span class="constant-syntax">1000</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="identifier-syntax">understanding_item</span><span class="plain-syntax">, </span><span class="constant-syntax">100</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS_ALLOCATED_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="identifier-syntax">understanding_reference</span><span class="plain-syntax">, </span><span class="constant-syntax">100</span><span class="plain-syntax">)</span>
|
||||
|
|
|
@ -83,7 +83,7 @@ function togglePopup(material_id) {
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *, </span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::log</span></a><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *, </span><a href="4-ap2.html#SP4" class="function-link"><span class="function-syntax">ActionPatterns::log</span></a><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">grammar_verb</span><span class="plain-syntax"> *, </span><a href="5-gv.html#SP4" class="function-link"><span class="function-syntax">PL::Parsing::Verbs::log</span></a><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">grammar_line</span><span class="plain-syntax"> *, </span><a href="5-gl.html#SP3" class="function-link"><span class="function-syntax">PL::Parsing::Lines::log</span></a><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *, </span><a href="4-anl.html#SP17" class="function-link"><span class="function-syntax">ActionNameLists::log</span></a><span class="plain-syntax">)</span>
|
||||
|
@ -130,7 +130,7 @@ function togglePopup(material_id) {
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'A'</span><span class="plain-syntax">, </span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::log</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'A'</span><span class="plain-syntax">, </span><a href="4-ap2.html#SP4" class="function-link"><span class="function-syntax">ActionPatterns::log</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'G'</span><span class="plain-syntax">, </span><a href="5-gv.html#SP4" class="function-link"><span class="function-syntax">PL::Parsing::Verbs::log</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'g'</span><span class="plain-syntax">, </span><a href="5-gl.html#SP3" class="function-link"><span class="function-syntax">PL::Parsing::Lines::log</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'L'</span><span class="plain-syntax">, </span><a href="4-anl.html#SP17" class="function-link"><span class="function-syntax">ActionNameLists::log</span></a><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -227,7 +227,7 @@ scenes — 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">-></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>
|
||||
</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/ap2, 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/apc, 5/tfg, 5/gl and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§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
|
||||
structure is just going to be <a href="3-scn.html#SP10" class="internal">scene</a>. So:
|
||||
|
|
|
@ -685,15 +685,15 @@ deduction is made:
|
|||
<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">§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="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-ap2.html#SP7" 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-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="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#SP7" 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-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="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#SP7" 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-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="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#SP7" 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-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="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#SP7" 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-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="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>
|
||||
|
|
|
@ -214,7 +214,7 @@ have to correspond to names referenced in <a href="../WorldModelKit/index.html"
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-anaa.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-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-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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-anaa.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -122,7 +122,7 @@ function togglePopup(material_id) {
|
|||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsNodes::write_action_meaning_ANNOT</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">ActionsNodes::write_action_meaning_ANNOT</span></span>:<br/><a href="4-anaa.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_action_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" {action meaning: "</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::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_action_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</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">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_action_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">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>
|
||||
|
@ -133,7 +133,7 @@ function togglePopup(material_id) {
|
|||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionsNodes::write_constant_action_pattern_ANNOT</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">ActionsNodes::write_constant_action_pattern_ANNOT</span></span>:<br/><a href="4-anaa.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_constant_action_pattern</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" {action pattern: "</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::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_constant_action_pattern</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</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">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_constant_action_pattern</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">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>
|
||||
|
@ -147,7 +147,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-ap.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-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-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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-ap.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -142,7 +142,7 @@ list can be marked accordingly:
|
|||
</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">ActionNameLists::suppress_action_testing</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">ActionNameLists::suppress_action_testing</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP6">§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">list</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::suppress_action_testing</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">ActionNameLists::suppress_action_testing</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">§4</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">list</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">list</span><span class="plain-syntax">-></span><span class="identifier-syntax">test_this_in_ap_match</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -296,7 +296,7 @@ are in the list.
|
|||
<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">ActionNameLists::nonempty</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::nonempty</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP6">§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">list</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::nonempty</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::nonempty</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">§4</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">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">list</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">list</span><span class="plain-syntax">-></span><span class="element-syntax">entries</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>
|
||||
|
@ -325,7 +325,7 @@ anything" — a completely unrestricted action.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="identifier-syntax">item</span><span class="plain-syntax">.</span><span class="element-syntax">nap_listed</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">anl_item</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::first_item</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">ActionNameLists::first_item</span></span>:<br/><a href="4-anl.html#SP14">§14</a><br/>Action Patterns - <a href="4-ap2.html#SP6">§6</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_1">§21.1</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">list</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">anl_item</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::first_item</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">ActionNameLists::first_item</span></span>:<br/><a href="4-anl.html#SP14">§14</a><br/>Action Patterns - <a href="4-ap2.html#SP4">§4</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_1">§21.1</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">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">list</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">list</span><span class="plain-syntax">-></span><span class="element-syntax">entries</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> &(</span><span class="identifier-syntax">list</span><span class="plain-syntax">-></span><span class="element-syntax">entries</span><span class="plain-syntax">-></span><span class="element-syntax">item</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -339,7 +339,7 @@ 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">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#SP8">§8</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#SP6">§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="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">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>
|
||||
|
@ -379,7 +379,7 @@ negation) but not "doing something other than looking".
|
|||
</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">ActionNameLists::covers_action</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::covers_action</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP6">§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">list</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::covers_action</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::covers_action</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">§4</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">list</span><span class="plain-syntax">, </span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_ANL</span><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">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><span class="identifier-syntax">entry</span><span class="plain-syntax">-></span><span class="element-syntax">item</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">within</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
@ -474,7 +474,7 @@ the text leading to a list:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::single_positive_action</span><button class="popup" onclick="togglePopup('usagePopup32')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup32">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::single_positive_action</span></span>:<br/><a href="4-anl.html#SP15">§15</a><br/>Action Patterns - <a href="4-ap2.html#SP6">§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">list</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionNameLists::single_positive_action</span><button class="popup" onclick="togglePopup('usagePopup32')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup32">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::single_positive_action</span></span>:<br/><a href="4-anl.html#SP15">§15</a><br/>Action Patterns - <a href="4-ap2.html#SP4">§4</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">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-anl.html#SP9" class="function-link"><span class="function-syntax">ActionNameLists::length</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">list</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-anl.html#SP2" class="function-link"><span class="function-syntax">ActionNameLists::positive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">list</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-anl.html#SP10" class="function-link"><span class="function-syntax">ActionNameLists::first_item</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">list</span><span class="plain-syntax">)-></span><span class="element-syntax">action_listed</span><span class="plain-syntax">;</span>
|
||||
|
@ -553,7 +553,7 @@ is no best action. (For example, in "throwing or removing something".)
|
|||
<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">ActionNameLists::log_briefly</span><button class="popup" onclick="togglePopup('usagePopup35')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup35">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::log_briefly</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP6">§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">list</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionNameLists::log_briefly</span><button class="popup" onclick="togglePopup('usagePopup35')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup35">Usage of <span class="code-font"><span class="function-syntax">ActionNameLists::log_briefly</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">§4</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">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">list</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">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"<null-anl>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
|
@ -905,7 +905,7 @@ the trial entry for future trials.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-anl.html#SP24_1_3">§24.1.3</a> (three times).</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-ann.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-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-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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-ann.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -318,7 +318,7 @@ number of words.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-av.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-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-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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-av.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -523,7 +523,7 @@ to nothing".
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-ts.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-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-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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-ts.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -86,7 +86,7 @@ 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>
|
||||
<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. Here we parse such text into a data structure called an |action_pattern|.</p>
|
||||
|
||||
<ul class="toc"><li><a href="4-ap2.html#SP8">§8. Action pattern specificity</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="4-ap2.html#SP6">§6. Action pattern specificity</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>Action patterns are essentially a conjunction of specifications — the
|
||||
action must be this, and the noun must be that, and... While
|
||||
|
@ -105,19 +105,6 @@ not-really-action APs are used in no other context, and employ the
|
|||
<span class="extract"><span class="extract-syntax">parameter_spec</span></span> field below, ignoring the rest.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">ACTOR_AP_CLAUSE</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">NOUN_AP_CLAUSE</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">SECOND_AP_CLAUSE</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">IN_AP_CLAUSE</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">IN_THE_PRESENCE_OF_AP_CLAUSE</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">WHEN_AP_CLAUSE</span>
|
||||
<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_BY_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">PUSHING_AP_CLAUSE</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">STV_AP_CLAUSE</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">action_pattern</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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_of_pattern</span><span class="plain-syntax">; </span><span class="comment-syntax"> text giving rise to this AP</span>
|
||||
|
@ -126,21 +113,14 @@ not-really-action APs are used in no other context, and employ the
|
|||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">applies_to_any_actor</span><span class="plain-syntax">; </span><span class="comment-syntax"> treat player and other people equally</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">request</span><span class="plain-syntax">; </span><span class="comment-syntax"> a request from the player for someone to do this?</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">actor_spec</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">noun_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">noun_any</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">second_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">second_any</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">room_spec</span><span class="plain-syntax">; </span><span class="comment-syntax"> in...</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">room_any</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">when</span><span class="plain-syntax">; </span><span class="comment-syntax"> when... (any condition here)</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from_spec</span><span class="plain-syntax">; </span><span class="comment-syntax"> for the "going" action only</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to_spec</span><span class="plain-syntax">; </span><span class="comment-syntax"> ditto</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">by_spec</span><span class="plain-syntax">; </span><span class="comment-syntax"> ditto</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">through_spec</span><span class="plain-syntax">; </span><span class="comment-syntax"> ditto</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pushing_spec</span><span class="plain-syntax">; </span><span class="comment-syntax"> ditto</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">nowhere_flag</span><span class="plain-syntax">; </span><span class="comment-syntax"> ditto: a flag for "going nowhere"</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">ap_optional_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap_clauses</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">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap_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">chief_action_owner_id</span><span class="plain-syntax">; </span><span class="comment-syntax"> stacked variable ID number of main action</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">time_period</span><span class="plain-syntax"> *</span><span class="identifier-syntax">duration</span><span class="plain-syntax">; </span><span class="comment-syntax"> to hold "for the third time", etc.</span>
|
||||
|
||||
|
@ -150,36 +130,8 @@ not-really-action APs are used in no other context, and employ the
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">valid</span><span class="plain-syntax">; </span><span class="comment-syntax"> recording success or failure in parsing to an AP</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure action_pattern is accessed in 4/pap and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">ALLOW_REGION_AS_ROOM_APCOPT</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">ap_optional_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">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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">clause_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">clause_options</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">ap_optional_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">ap_optional_clause</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure ap_optional_clause is accessed in 2/ri, 3/tm, 3/scn, 3/ts, 4/ap, 4/av, 5/tfg, 5/gl and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionPatterns::get_presence</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">ActionPatterns::get_presence</span></span>:<br/><a href="4-ap2.html#SP6">§6</a>, <a href="4-ap2.html#SP8">§8</a>, <a href="4-ap2.html#SP10">§10</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">ap_optional_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::find_clause</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">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">apoc</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></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">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::set_presence</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::set_presence</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP16">§16</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="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ap_optional_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::find_clause</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">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="identifier-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>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>When we parse action patterns, we record why they fail, in order to make
|
||||
<ul class="endnotetexts"><li>The structure action_pattern is accessed in 4/apc, 4/pap and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>When we parse action patterns, we record why they fail, in order to make
|
||||
it easier to produce helpful error messages. (We can't simply fire off
|
||||
errors at the time they occur, because text is often parsed in several
|
||||
contexts at once, so just because it fails this one does not mean it is
|
||||
|
@ -198,7 +150,7 @@ wrong.) PAPF stands for "parse action pattern failure".
|
|||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">permit_trying_omission</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="comment-syntax"> allow the keyword 'trying' to be omitted</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">permit_nonconstant_action_parameters</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>NB: Next time this is rewritten - (1) handle in, in the presence of, with
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>NB: Next time this is rewritten - (1) handle in, in the presence of, with
|
||||
STV clauses; (2) get this right:
|
||||
</p>
|
||||
|
||||
|
@ -209,20 +161,16 @@ STV clauses; (2) get this right:
|
|||
say "Where did you want to go?"
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::new</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::new</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP1">§1</a>, <a href="4-pap.html#SP17_1">§17.1</a>, <a href="4-pap.html#SP18">§18</a>, <a href="4-pap.html#SP21">§21</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::new</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">ActionPatterns::new</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP1">§1</a>, <a href="4-pap.html#SP17_1">§17.1</a>, <a href="4-pap.html#SP18">§18</a>, <a href="4-pap.html#SP21">§21</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">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">.</span><span class="element-syntax">text_of_pattern</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</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="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">actor_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="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">noun_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">second_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">room_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="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">noun_any</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">second_any</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">room_any</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">ap</span><span class="plain-syntax">.</span><span class="element-syntax">parameter_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="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">parameter_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</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="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">when</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">ap</span><span class="plain-syntax">.</span><span class="element-syntax">from_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="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">to_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="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">by_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
@ -237,143 +185,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">ap</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">ap_optional_clause</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionPatterns::find_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">ActionPatterns::find_clause</span></span>:<br/><a href="4-ap2.html#SP3">§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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">clause</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">make</span><span 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">ap_optional_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">last</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">ap_optional_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="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">-></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><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_ID</span><span class="plain-syntax"> == </span><span class="identifier-syntax">clause</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="identifier-syntax">last</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">make</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ap_optional_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_apoc</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::apoc_new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">clause</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">last</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">ap_clauses</span><span class="plain-syntax"> = </span><span class="identifier-syntax">new_apoc</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">last</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">new_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">new_apoc</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">make</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"cannot make clause in null AP"</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"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">ap_optional_clause</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionPatterns::find_stv</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="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">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">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">ap_optional_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="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">-></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><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-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="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">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">ap_optional_clause</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionPatterns::apoc_new</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">clause</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="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">ap_optional_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">ap_optional_clause</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="identifier-syntax">clause_ID</span><span class="plain-syntax"> = </span><span class="identifier-syntax">clause</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></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">-></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">-></span><span class="identifier-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="identifier-syntax">clause_options</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">apoc</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::ap_add_optional_clause</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::ap_add_optional_clause</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP21_3">§21.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="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="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stv</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 stacked variable for apoc"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ap_optional_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::apoc_new</span></a><span class="plain-syntax">(</span><span class="constant-syntax">STV_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">stv</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="4-pap.html#SP2" class="function-link"><span class="function-syntax">ParseActionPatterns::verified_action_parameter</span></a><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">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">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">stv_to_match</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">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">stv_to_match</span><span 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="element-syntax">ap_clauses</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">ap</span><span class="plain-syntax">-></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="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ap_optional_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">oapoc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">ap_clauses</span><span class="plain-syntax">, *</span><span class="identifier-syntax">papoc</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">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">oapoc</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">oapoc</span><span class="plain-syntax">-></span><span class="element-syntax">stv_to_match</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">ooff</span><span class="plain-syntax"> = </span><span class="identifier-syntax">StackedVariables::get_offset</span><span class="plain-syntax">(</span><span class="identifier-syntax">oapoc</span><span class="plain-syntax">-></span><span class="element-syntax">stv_to_match</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">off</span><span class="plain-syntax"> < </span><span class="identifier-syntax">ooff</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">oapoc</span><span class="plain-syntax"> == </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">ap_clauses</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">ap_clauses</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></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="plain-syntax"> </span><span class="identifier-syntax">papoc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">papoc</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">papoc</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">papoc</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">break</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">papoc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">oapoc</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">oapoc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">oapoc</span><span class="plain-syntax">-></span><span class="element-syntax">next</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">papoc</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">papoc</span><span class="plain-syntax">-></span><span class="element-syntax">next</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="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="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">from_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_spec</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_options</span><span class="plain-syntax"> |= </span><span class="constant-syntax">ALLOW_REGION_AS_ROOM_APCOPT</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">to_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_spec</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_options</span><span class="plain-syntax"> |= </span><span class="constant-syntax">ALLOW_REGION_AS_ROOM_APCOPT</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">through_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_spec</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">by_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_spec</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">pushing_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_spec</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="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">chief_action_owner_id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">oid</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_optional_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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">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">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">ap_optional_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="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">-></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><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">stv_to_match</span><span 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="element-syntax">chief_action_owner_id</span><span class="plain-syntax"> != </span><span class="constant-syntax">20007</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">StackedVariables::get_offset</span><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">stv_to_match</span><span class="plain-syntax">) >= </span><span class="constant-syntax">5</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::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">) && (</span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::nudge_to_stv_apoc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></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">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::compare_specificity_of_apoc_list</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">ActionPatterns::compare_specificity_of_apoc_list</span></span>:<br/><a href="4-ap2.html#SP8">§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">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-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::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-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::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">if</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="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"> < </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><span class="identifier-syntax">rct1</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">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="element-syntax">chief_action_owner_id</span><span class="plain-syntax"> != </span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">chief_action_owner_id</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">ap_optional_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc1</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::nudge_to_stv_apoc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">ap_clauses</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">apoc2</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::nudge_to_stv_apoc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">ap_clauses</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">apoc1</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">apoc2</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">off1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">StackedVariables::get_offset</span><span class="plain-syntax">(</span><span class="identifier-syntax">apoc1</span><span class="plain-syntax">-></span><span class="element-syntax">stv_to_match</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">off2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">StackedVariables::get_offset</span><span class="plain-syntax">(</span><span class="identifier-syntax">apoc2</span><span class="plain-syntax">-></span><span class="element-syntax">stv_to_match</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">off1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">off2</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><span class="identifier-syntax">apoc1</span><span class="plain-syntax">-></span><span class="element-syntax">clause_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">apoc2</span><span class="plain-syntax">-></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">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">apoc1</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::nudge_to_stv_apoc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc1</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">apoc2</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::nudge_to_stv_apoc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc2</span><span class="plain-syntax">-></span><span class="element-syntax">next</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">off1</span><span class="plain-syntax"> < </span><span class="identifier-syntax">off2</span><span class="plain-syntax">) </span><span class="identifier-syntax">apoc1</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::nudge_to_stv_apoc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc1</span><span class="plain-syntax">-></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><span class="identifier-syntax">off1</span><span class="plain-syntax"> > </span><span class="identifier-syntax">off2</span><span class="plain-syntax">) </span><span class="identifier-syntax">apoc2</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::nudge_to_stv_apoc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc2</span><span class="plain-syntax">-></span><span class="element-syntax">next</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"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">ap_optional_clause</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionPatterns::nudge_to_stv_apoc</span><span class="plain-syntax">(</span><span class="reserved-syntax">ap_optional_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">while</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="element-syntax">stv_to_match</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="element-syntax">next</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::log</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">ActionPatterns::log</span></span>:<br/>IF Module - <a href="1-im.html#SP2">§2</a>, <a href="1-im.html#SP2_3">§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">§2</a>, <a href="1-im.html#SP2_3">§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><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">-></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>
|
||||
|
@ -381,54 +193,54 @@ STV clauses; (2) get this right:
|
|||
<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">-></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">-></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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">noun_spec</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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">noun_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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">second_spec</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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">second_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::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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">from_spec</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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">from_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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">to_spec</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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">to_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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">by_spec</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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">by_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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">through_spec</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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">through_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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">pushing_spec</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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">pushing_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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">room_spec</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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">room_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::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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">parameter_spec</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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">parameter_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-ap2.html#SP3" class="function-link"><span class="function-syntax">ActionPatterns::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-ap2.html#SP3" class="function-link"><span class="function-syntax">ActionPatterns::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::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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">nowhere_flag</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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">when</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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">when</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">-></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">-></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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::write</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">ActionPatterns::write</span></span>:<br/>Actions-Only Nodes and Annotations - <a href="4-anaa.html#SP3">§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">§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="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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<null-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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></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">WRITE</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="plain-syntax"> </span><span class="identifier-syntax">WRITE</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">-></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">-></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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">noun_spec</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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">noun_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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">second_spec</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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">second_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::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><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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">from_spec</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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">from_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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">to_spec</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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">to_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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">by_spec</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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">by_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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">through_spec</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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">through_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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">pushing_spec</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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">pushing_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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">room_spec</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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">room_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::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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">parameter_spec</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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">parameter_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-ap2.html#SP3" class="function-link"><span class="function-syntax">ActionPatterns::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-ap2.html#SP3" class="function-link"><span class="function-syntax">ActionPatterns::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::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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">nowhere_flag</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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">when</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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">when</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">-></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">-></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">">"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionPatterns::ap_store</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">ActionPatterns::ap_store</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP17_1">§17.1</a>, <a href="4-pap.html#SP18">§18</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">action_pattern</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionPatterns::ap_store</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">ActionPatterns::ap_store</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP17_1">§17.1</a>, <a href="4-pap.html#SP18">§18</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">action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">action_pattern</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">sap</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><span class="identifier-syntax">sap</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('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">ActionPatterns::is_named</span></span>:<br/><a href="4-ap2.html#SP8">§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="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">§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="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">-></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">) && (</span><span class="identifier-syntax">item</span><span class="plain-syntax">-></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>
|
||||
|
@ -436,7 +248,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">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::is_valid</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::is_valid</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP18">§18</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_valid</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">ActionPatterns::is_valid</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP18">§18</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="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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">valid</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -446,12 +258,12 @@ 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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">request</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::within_action_context</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">ActionPatterns::within_action_context</span></span>:<br/>Named Action Patterns - <a href="4-nap.html#SP4">§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">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::within_action_context</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">ActionPatterns::within_action_context</span></span>:<br/>Named Action Patterns - <a href="4-nap.html#SP4">§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">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span 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="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><a href="4-anl.html#SP12" class="function-link"><span class="function-syntax">ActionNameLists::covers_action</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">an</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionPatterns::list</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">ActionPatterns::list</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP3">§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">action_name_list</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionPatterns::list</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">ActionPatterns::list</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP3">§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="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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action_list</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -467,15 +279,15 @@ STV clauses; (2) get this right:
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::is_unspecific</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">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::required_action</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">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP4" class="function-link"><span class="function-syntax">ActionPatterns::required_action</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">an</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-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::must_have_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">noun_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-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::must_have_second</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">second_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-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::must_have_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</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">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-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::must_have_second</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</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">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-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::can_have_noun</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</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::ap_clause_is_unspecific</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">noun_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><a href="4-ap2.html#SP4" class="function-link"><span class="function-syntax">ActionPatterns::ap_clause_is_unspecific</span></a><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><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::can_have_second</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</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::ap_clause_is_unspecific</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">second_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><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::ap_clause_is_unspecific</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">actor_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><a href="4-ap2.html#SP4" class="function-link"><span class="function-syntax">ActionPatterns::ap_clause_is_unspecific</span></a><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><a href="4-ap2.html#SP4" class="function-link"><span class="function-syntax">ActionPatterns::ap_clause_is_unspecific</span></a><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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -486,10 +298,10 @@ STV clauses; (2) get this right:
|
|||
<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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">when</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">room_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-ap2.html#SP3" class="function-link"><span class="function-syntax">ActionPatterns::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="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::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="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">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><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="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-apc.html#SP3" 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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">nowhere_flag</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">-></span><span class="element-syntax">applies_to_any_actor</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">-></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>
|
||||
|
@ -501,7 +313,7 @@ STV clauses; (2) get this right:
|
|||
<span class="plain-syntax"> </span><a href="4-anl.html#SP3" class="function-link"><span class="function-syntax">ActionNameLists::suppress_action_testing</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">action_list</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>We are allowed to give names to certain kinds of behaviour by "categorising"
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>We are allowed to give names to certain kinds of behaviour by "categorising"
|
||||
an action.
|
||||
</p>
|
||||
|
||||
|
@ -516,7 +328,7 @@ an action.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">actor_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::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">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_NamedAPWithActor</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"behaviour characterised by named action patterns can only specify the action"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"not the actor: as a result, it cannot include requests to other people to "</span>
|
||||
|
@ -527,13 +339,13 @@ an action.
|
|||
<span class="plain-syntax"> </span><a href="4-nap.html#SP2" class="function-link"><span class="function-syntax">NamedActionPatterns::add</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</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="function-syntax">ActionPatterns::nullify_nonspecific_references</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">ActionPatterns::nullify_nonspecific_references</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP21_1">§21.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">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">ActionPatterns::nullify_nonspecific_references</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">ActionPatterns::nullify_nonspecific_references</span></span>:<br/>Action Pattern Clauses - <a href="4-apc.html#SP3">§3</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_1">§21.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">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">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">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">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">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionPatterns::check_going</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">ActionPatterns::check_going</span></span>:<br/>The Map - <a href="3-tm.html#SP30">§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="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">§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">Specifications::is_description_like</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) {</span>
|
||||
|
@ -570,7 +382,7 @@ an action.
|
|||
<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="SP8" class="paragraph-anchor"></a><b>§8. 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>§6. 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
|
||||
|
@ -580,7 +392,7 @@ used in sorting algorithms.
|
|||
<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="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="element-syntax">room_spec</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_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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">from_spec</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="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">to_spec</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>
|
||||
|
@ -601,17 +413,17 @@ used in sorting algorithms.
|
|||
<span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">by_spec</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">through_spec</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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">room_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::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="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">from_spec</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">to_spec</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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">nowhere_flag</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">noun_spec</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">second_spec</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">actor_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_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-ap2.html#SP3" class="function-link"><span class="function-syntax">ActionPatterns::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">-></span><span class="element-syntax">duration</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">when</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">-></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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">parameter_spec</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>
|
||||
|
@ -636,7 +448,7 @@ used in sorting algorithms.
|
|||
|
||||
<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#SP8" 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#SP8" 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="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"> > </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"> < </span><span class="identifier-syntax">rct2</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
|
||||
|
||||
|
@ -651,20 +463,20 @@ used in sorting algorithms.
|
|||
|
||||
<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#SP8" 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#SP8" 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="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"> > </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"> < </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><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">from_spec</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">room_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="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">room_spec</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">from_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="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">from_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">room_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><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">from_spec</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><span class="identifier-syntax">NULL</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_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">from_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="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">from_spec</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><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">from_spec</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">room_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="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">room_spec</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">from_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="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">room_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">from_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><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">from_spec</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><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">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">from_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="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><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">from_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><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>
|
||||
|
@ -675,7 +487,7 @@ used in sorting algorithms.
|
|||
<span 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><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">room_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">room_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="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>
|
||||
|
||||
|
@ -684,22 +496,22 @@ used in sorting algorithms.
|
|||
|
||||
<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-ap2.html#SP3" class="function-link"><span class="function-syntax">ActionPatterns::get_presence</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">), </span><a href="4-ap2.html#SP3" class="function-link"><span class="function-syntax">ActionPatterns::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="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-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::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="identifier-syntax">rv</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" 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><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">second_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">second_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="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><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">noun_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">noun_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="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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">nowhere_flag</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">nowhere_flag</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>
|
||||
|
@ -707,7 +519,7 @@ used in sorting algorithms.
|
|||
|
||||
<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><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">actor_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">actor_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="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="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>
|
||||
|
@ -722,24 +534,24 @@ used in sorting algorithms.
|
|||
|
||||
<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.5.2 - Action/When/Circumstances"</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">Conditions::compare_specificity_of_CONDITIONs</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">when</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">when</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">Conditions::compare_specificity_of_CONDITIONs</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">WHEN_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">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">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.6.1 - Action/Name/Is This Named"</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#SP6" 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><a href="4-ap2.html#SP6" 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="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#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><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="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="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#SP6" 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">) && (</span><a href="4-ap2.html#SP6" 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">) && (</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"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>And an anticlimactic little routine for putting objects
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§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('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">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">§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">pos</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">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">§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">pos</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"><action-operand></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
|
||||
|
@ -752,13 +564,22 @@ into action patterns in the noun or second noun position.
|
|||
<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 (position %d) %W = $P\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">pos</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><span class="reserved-syntax">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">: </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">noun_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">spec</span><span class="plain-syntax">; </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">noun_any</span><span class="plain-syntax"> = </span><span class="identifier-syntax">any_flag</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">second_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">spec</span><span class="plain-syntax">; </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">second_any</span><span class="plain-syntax"> = </span><span class="identifier-syntax">any_flag</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">room_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">spec</span><span class="plain-syntax">; </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">room_any</span><span class="plain-syntax"> = </span><span class="identifier-syntax">any_flag</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><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">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="constant-syntax">NOUN_AP_CLAUSE</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="constant-syntax">NOUN_AP_CLAUSE</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">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><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">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="constant-syntax">SECOND_AP_CLAUSE</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="constant-syntax">SECOND_AP_CLAUSE</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">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><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_AP_CLAUSE</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="constant-syntax">IN_AP_CLAUSE</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="constant-syntax">IN_AP_CLAUSE</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">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§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>
|
||||
|
@ -780,16 +601,16 @@ into action patterns in the noun or second noun position.
|
|||
<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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">noun_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">Descriptions::makes_callings</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">second_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">Descriptions::makes_callings</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">actor_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">Descriptions::makes_callings</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">room_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">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><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">parameter_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">Descriptions::makes_callings</span><span class="plain-syntax">(</span><a href="4-ap2.html#SP3" class="function-link"><span class="function-syntax">ActionPatterns::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">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="SP11" class="paragraph-anchor"></a><b>§11. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§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>
|
||||
|
@ -804,7 +625,7 @@ into action patterns in the noun or second noun position.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-anl.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-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-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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-anl.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
344
docs/if-module/4-apc.html
Normal file
344
docs/if-module/4-apc.html
Normal file
|
@ -0,0 +1,344 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Action Pattern Clauses</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 'Action Pattern Clauses' 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>Action Pattern Clauses</b></li></ul></div>
|
||||
<p class="purpose">Pattern-matches on individual nouns in an action are called clauses.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b></p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">ACTOR_AP_CLAUSE</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">NOUN_AP_CLAUSE</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">SECOND_AP_CLAUSE</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">IN_AP_CLAUSE</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">IN_THE_PRESENCE_OF_AP_CLAUSE</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">WHEN_AP_CLAUSE</span>
|
||||
<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_BY_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">PUSHING_AP_CLAUSE</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">STV_AP_CLAUSE</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">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">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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">clause_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">clause_options</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">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</span><span class="plain-syntax">;</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>
|
||||
</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>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>The clause options are a bitmap. Some are meaningful only for one or two
|
||||
clauses.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">ALLOW_REGION_AS_ROOM_APCOPT</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">DO_NOT_VALIDATE_APCOPT</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§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">APClauses::opt</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="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">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">-></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="identifier-syntax">TRUE: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">APClauses::set_opt</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">APClauses::set_opt</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP7">§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="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="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="identifier-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">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::clear_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::clear_opt</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP7">§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="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="element-syntax">clause_options</span><span class="plain-syntax"> & </span><span class="identifier-syntax">opt</span><span class="plain-syntax">) </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></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="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">APClauses::get_actor</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::get_actor</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">§4</a>, <a href="4-ap2.html#SP5">§5</a>, <a href="4-ap2.html#SP6">§6</a>, <a href="4-ap2.html#SP8">§8</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_1">§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">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::set_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::set_actor</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP6">§6</a>, <a href="4-pap.html#SP7">§7</a>, <a href="4-pap.html#SP8">§8</a>, <a href="4-pap.html#SP21_1">§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="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="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">APClauses::get_noun</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">APClauses::get_noun</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">§4</a>, <a href="4-ap2.html#SP6">§6</a>, <a href="4-ap2.html#SP8">§8</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_1">§21.1</a>, <a href="4-pap.html#SP21_5">§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">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::set_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::set_noun</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP21_1">§21.1</a>, <a href="4-pap.html#SP21_5">§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="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="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">APClauses::get_second</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">APClauses::get_second</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">§4</a>, <a href="4-ap2.html#SP6">§6</a>, <a href="4-ap2.html#SP8">§8</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_1">§21.1</a>, <a href="4-pap.html#SP21_5">§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">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::set_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::set_second</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP21_1">§21.1</a>, <a href="4-pap.html#SP21_5">§21.5</a>, <a href="4-pap.html#SP21_5_4">§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="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><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="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">APClauses::get_presence</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">APClauses::get_presence</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">§4</a>, <a href="4-ap2.html#SP6">§6</a>, <a href="4-ap2.html#SP8">§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="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">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::set_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::set_presence</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP16">§16</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="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="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">APClauses::get_room</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">APClauses::get_room</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">§4</a>, <a href="4-ap2.html#SP6">§6</a>, <a href="4-ap2.html#SP8">§8</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_5">§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">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::set_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::set_room</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP17_1">§17.1</a>, <a href="4-pap.html#SP21_5">§21.5</a>, <a href="4-pap.html#SP21_5_4">§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="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><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_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="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">APClauses::get_val</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">APClauses::get_val</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">§4</a>, <a href="4-ap2.html#SP6">§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="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">-></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">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::set_val</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">APClauses::set_val</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP7">§7</a><br/>Parse Action Patterns - <a href="4-pap.html#SP14">§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">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">-></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">else</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">-></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="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::nullify_nonspecific</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">APClauses::nullify_nonspecific</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP21_1">§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">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">-></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">-></span><span class="element-syntax">clause_spec</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('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">APClauses::clause</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP7">§7</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_5_5">§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">ap_clause</span><span class="plain-syntax"> *</span><span class="function-syntax">APClauses::ensure_clause</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="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">TRUE</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::find_clause</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="identifier-syntax">clause</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">make</span><span 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">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">last</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">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="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">-></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><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_ID</span><span class="plain-syntax"> == </span><span class="identifier-syntax">clause</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="identifier-syntax">last</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">make</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">new_apoc</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::apoc_new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">clause</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">last</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">ap_clauses</span><span class="plain-syntax"> = </span><span class="identifier-syntax">new_apoc</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">last</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">new_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">new_apoc</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">make</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"cannot make clause in null AP"</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"> </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="function-syntax">APClauses::find_stv</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="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">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">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="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">-></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><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-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="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">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="function-syntax">APClauses::apoc_new</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">clause</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="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">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</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="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="identifier-syntax">clause_ID</span><span class="plain-syntax"> = </span><span class="identifier-syntax">clause</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></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">-></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">-></span><span class="identifier-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="identifier-syntax">clause_options</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">apoc</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::ap_add_optional_clause</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::ap_add_optional_clause</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP21_3">§21.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="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="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stv</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 stacked variable for apoc"</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::apoc_new</span></a><span class="plain-syntax">(</span><span class="constant-syntax">STV_AP_CLAUSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">stv</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="4-pap.html#SP2" class="function-link"><span class="function-syntax">ParseActionPatterns::verified_action_parameter</span></a><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">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">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">stv_to_match</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">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">stv_to_match</span><span 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="element-syntax">ap_clauses</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">ap</span><span class="plain-syntax">-></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="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</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">oapoc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">ap_clauses</span><span class="plain-syntax">, *</span><span class="identifier-syntax">papoc</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">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">oapoc</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">oapoc</span><span class="plain-syntax">-></span><span class="element-syntax">stv_to_match</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">ooff</span><span class="plain-syntax"> = </span><span class="identifier-syntax">StackedVariables::get_offset</span><span class="plain-syntax">(</span><span class="identifier-syntax">oapoc</span><span class="plain-syntax">-></span><span class="element-syntax">stv_to_match</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">off</span><span class="plain-syntax"> < </span><span class="identifier-syntax">ooff</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">oapoc</span><span class="plain-syntax"> == </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">ap_clauses</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">ap_clauses</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></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="plain-syntax"> </span><span class="identifier-syntax">papoc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">papoc</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">papoc</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">papoc</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">break</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">papoc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">oapoc</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">oapoc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">oapoc</span><span class="plain-syntax">-></span><span class="element-syntax">next</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">papoc</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">papoc</span><span class="plain-syntax">-></span><span class="element-syntax">next</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="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="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">from_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></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::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="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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">to_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></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::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="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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">through_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_spec</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">by_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_spec</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">ap</span><span class="plain-syntax">-></span><span class="element-syntax">pushing_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">clause_spec</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="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="element-syntax">chief_action_owner_id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">oid</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::ap_count_optional_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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">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">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="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">-></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><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">stv_to_match</span><span 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="element-syntax">chief_action_owner_id</span><span class="plain-syntax"> != </span><span class="constant-syntax">20007</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">StackedVariables::get_offset</span><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="element-syntax">stv_to_match</span><span class="plain-syntax">) >= </span><span class="constant-syntax">5</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::has_stv_clauses</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">APClauses::has_stv_clauses</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">§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="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><a href="4-apc.html#SP3" 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">-></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">int</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::compare_specificity_of_apoc_list</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">APClauses::compare_specificity_of_apoc_list</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP6">§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="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#SP3" 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#SP3" 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">if</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="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"> < </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><span class="identifier-syntax">rct1</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">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="element-syntax">chief_action_owner_id</span><span class="plain-syntax"> != </span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">chief_action_owner_id</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">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc1</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::nudge_to_stv_apoc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">ap_clauses</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">apoc2</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::nudge_to_stv_apoc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">ap_clauses</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">apoc1</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">apoc2</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">off1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">StackedVariables::get_offset</span><span class="plain-syntax">(</span><span class="identifier-syntax">apoc1</span><span class="plain-syntax">-></span><span class="element-syntax">stv_to_match</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">off2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">StackedVariables::get_offset</span><span class="plain-syntax">(</span><span class="identifier-syntax">apoc2</span><span class="plain-syntax">-></span><span class="element-syntax">stv_to_match</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">off1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">off2</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><span class="identifier-syntax">apoc1</span><span class="plain-syntax">-></span><span class="element-syntax">clause_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">apoc2</span><span class="plain-syntax">-></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">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">apoc1</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::nudge_to_stv_apoc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc1</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">apoc2</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::nudge_to_stv_apoc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc2</span><span class="plain-syntax">-></span><span class="element-syntax">next</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">off1</span><span class="plain-syntax"> < </span><span class="identifier-syntax">off2</span><span class="plain-syntax">) </span><span class="identifier-syntax">apoc1</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::nudge_to_stv_apoc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc1</span><span class="plain-syntax">-></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><span class="identifier-syntax">off1</span><span class="plain-syntax"> > </span><span class="identifier-syntax">off2</span><span class="plain-syntax">) </span><span class="identifier-syntax">apoc2</span><span class="plain-syntax"> = </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::nudge_to_stv_apoc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc2</span><span class="plain-syntax">-></span><span class="element-syntax">next</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"> </span><span class="constant-syntax">0</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::nudge_to_stv_apoc</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">while</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="element-syntax">stv_to_match</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="element-syntax">next</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">APClauses::validate</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">APClauses::validate</span></span>:<br/>Parse Action Patterns - <a href="4-pap.html#SP21_5_5">§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">) &&</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">) &&</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">-></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">TRUE</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-ap2.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -185,22 +185,22 @@ preferred way to do that is to use activities for selecting missing parameters.
|
|||
</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">ActionSemantics::can_have_noun</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">ActionSemantics::can_have_noun</span></span>:<br/><a href="4-as.html#SP7">§7</a><br/>Action Name Names - <a href="4-ann.html#SP13">§13</a><br/>Action Name Lists - <a href="4-anl.html#SP20_2">§20.2</a>, <a href="4-anl.html#SP24_1_3">§24.1.3</a><br/>Action Patterns - <a href="4-ap2.html#SP6">§6</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_5_6">§21.5.6</a>, <a href="4-pap.html#SP21_6">§21.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::can_have_noun</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">ActionSemantics::can_have_noun</span></span>:<br/><a href="4-as.html#SP7">§7</a><br/>Action Name Names - <a href="4-ann.html#SP13">§13</a><br/>Action Name Lists - <a href="4-anl.html#SP20_2">§20.2</a>, <a href="4-anl.html#SP24_1_3">§24.1.3</a><br/>Action Patterns - <a href="4-ap2.html#SP4">§4</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_5_6">§21.5.6</a>, <a href="4-pap.html#SP21_6">§21.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="identifier-syntax">max_parameters</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="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">ActionSemantics::can_have_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">ActionSemantics::can_have_second</span></span>:<br/><a href="4-as.html#SP7">§7</a><br/>Action Patterns - <a href="4-ap2.html#SP6">§6</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_5_6">§21.5.6</a>, <a href="4-pap.html#SP21_6">§21.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::can_have_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">ActionSemantics::can_have_second</span></span>:<br/><a href="4-as.html#SP7">§7</a><br/>Action Patterns - <a href="4-ap2.html#SP4">§4</a><br/>Parse Action Patterns - <a href="4-pap.html#SP21_5_6">§21.5.6</a>, <a href="4-pap.html#SP21_6">§21.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="identifier-syntax">max_parameters</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="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">ActionSemantics::must_have_noun</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">ActionSemantics::must_have_noun</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::must_have_noun</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">ActionSemantics::must_have_noun</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="element-syntax">min_parameters</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="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">ActionSemantics::must_have_second</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">ActionSemantics::must_have_second</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ActionSemantics::must_have_second</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">ActionSemantics::must_have_second</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">action_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">an</span><span class="plain-syntax">-></span><span class="element-syntax">semantics</span><span class="plain-syntax">.</span><span class="element-syntax">min_parameters</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="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>
|
||||
|
@ -356,7 +356,7 @@ clear from the implementation in <a href="../runtime-module/5-act.html" class="i
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-act.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-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-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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-act.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -302,7 +302,7 @@ action patterns. For example, the Standard Rules define:
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-as.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-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-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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-as.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -98,7 +98,7 @@ this category if it matches one of the patterns.
|
|||
</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">NamedActionPatterns::add</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">NamedActionPatterns::add</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP7">§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="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">NamedActionPatterns::add</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">NamedActionPatterns::add</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP5">§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">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">named_action_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nap</span><span class="plain-syntax"> = </span><a href="4-nap.html#SP2" class="function-link"><span class="function-syntax">NamedActionPatterns::by_name</span></a><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">nap</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">nap</span><span class="plain-syntax"> = </span><a href="4-nap.html#SP2" class="function-link"><span class="function-syntax">NamedActionPatterns::new</span></a><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">named_action_pattern_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nape</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">named_action_pattern_entry</span><span class="plain-syntax">);</span>
|
||||
|
@ -145,13 +145,13 @@ if and only if it appears in one of the patterns in the list:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">named_action_pattern_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nape</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">nap</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">nape</span><span class="plain-syntax">, </span><span class="reserved-syntax">named_action_pattern_entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">nap</span><span class="plain-syntax">-></span><span class="element-syntax">patterns</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#SP6" class="function-link"><span class="function-syntax">ActionPatterns::within_action_context</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">nape</span><span class="plain-syntax">-></span><span class="element-syntax">behaviour</span><span class="plain-syntax">, </span><span class="identifier-syntax">an</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::within_action_context</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">nape</span><span class="plain-syntax">-></span><span class="element-syntax">behaviour</span><span class="plain-syntax">, </span><span class="identifier-syntax">an</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-pap.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-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-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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-pap.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -79,7 +79,7 @@ form the usage conditions for rules in object-based rulebooks.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">action_pattern</span><span class="plain-syntax"> </span><span class="function-syntax">ParseActionPatterns::parametric</span><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">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">action_pattern</span><span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::new</span></a><span class="plain-syntax">();</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><a href="4-ap2.html#SP4" class="function-link"><span class="function-syntax">ActionPatterns::new</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">parameter_spec</span><span class="plain-syntax"> = </span><a href="4-pap.html#SP2" class="function-link"><span class="function-syntax">ParseActionPatterns::parameter</span></a><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">ap</span><span class="plain-syntax">.</span><span class="element-syntax">parameter_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">valid</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Dash::validate_parameter</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">parameter_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||
|
@ -95,7 +95,7 @@ form the usage conditions for rules in object-based rulebooks.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</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="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">ParseActionPatterns::verified_action_parameter</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">ParseActionPatterns::verified_action_parameter</span></span>:<br/>Action Patterns - <a href="4-ap2.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">ParseActionPatterns::verified_action_parameter</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">ParseActionPatterns::verified_action_parameter</span></span>:<br/>Action Pattern Clauses - <a href="4-apc.html#SP3">§3</a></span></button><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><a href="4-pap.html#SP2" class="function-link"><span class="function-syntax">ParseActionPatterns::parameter</span></a><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">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="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>
|
||||
|
@ -122,7 +122,7 @@ form the usage conditions for rules in object-based rulebooks.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">s2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">permit_trying_omission</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">permit_trying_omission</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="function-syntax"><action-pattern></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">anl</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::list</span></a><span class="plain-syntax">(</span><span class="function-syntax"><<rp>></span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP4" class="function-link"><span class="function-syntax">ActionPatterns::list</span></a><span class="plain-syntax">(</span><span class="function-syntax"><<rp>></span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">anl</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">anl</span><span class="plain-syntax">-></span><span class="element-syntax">entries</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><<r>></span><span class="plain-syntax"> == </span><span class="constant-syntax">ACTOR_EXPLICITLY_UNIVERSAL</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">anyone</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
|
@ -195,8 +195,8 @@ These are always present tense, and can't be negated.
|
|||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><action-pattern></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">asking</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">try</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_REQUESTED, RP[2] }; action_pattern *ap = *XP; ap->request = TRUE; ap->actor_spec = RP[1];</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_NAMED, RP[2] }; ap = *XP; ap->request = FALSE; ap->actor_spec = RP[1];</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">asking</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">try</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_REQUESTED, RP[2] }; action_pattern *ap = *XP; ap->request = TRUE; APClauses::set_actor(ap, RP[1]);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_NAMED, RP[2] }; ap = *XP; ap->request = FALSE; APClauses::set_actor(ap, RP[1]);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">an</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">actor</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_UNIVERSAL, RP[1] }; ap = *XP; ap->applies_to_any_actor = TRUE;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">an</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">actor</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_UNIVERSAL, RP[1] }; ap = *XP; ap->applies_to_any_actor = TRUE;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_PLAYER, RP[1] };</span>
|
||||
|
@ -211,9 +211,9 @@ four combinations:
|
|||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><we-are-action-pattern></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">are</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">asking</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">try</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_REQUESTED, RP[2] }; action_pattern *ap = *XP; ap->request = TRUE; ap->actor_spec = RP[1];</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">asking</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">try</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_REQUESTED, RP[2] }; ap = *XP; ap->request = TRUE; ap->actor_spec = RP[1];</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_NAMED, RP[2] }; ap = *XP; ap->request = FALSE; ap->actor_spec = RP[1];</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">are</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">asking</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">try</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_REQUESTED, RP[2] }; action_pattern *ap = *XP; ap->request = TRUE; APClauses::set_actor(ap, RP[1]);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">asking</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">try</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_REQUESTED, RP[2] }; ap = *XP; ap->request = TRUE; APClauses::set_actor(ap, RP[1]);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_NAMED, RP[2] }; ap = *XP; ap->request = FALSE; APClauses::set_actor(ap, RP[1]);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">an</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">actor</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_UNIVERSAL, RP[1] }; ap = *XP; ap->applies_to_any_actor = TRUE;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">an</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">actor</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_UNIVERSAL, RP[1] }; ap = *XP; ap->applies_to_any_actor = TRUE;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">are</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_PLAYER, RP[1] };</span>
|
||||
|
@ -222,9 +222,9 @@ four combinations:
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core-actor></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_IMPLICITLY_PLAYER, RP[1] };</span>
|
||||
|
||||
<span class="Preform-function-syntax"><action-pattern-negated></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">are</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">asking</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">try</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_REQUESTED, RP[2] }; action_pattern *ap = *XP; ap->request = TRUE; ap->actor_spec = RP[1];</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">asking</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">try</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_REQUESTED, RP[2] }; ap = *XP; ap->request = TRUE; ap->actor_spec = RP[1];</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_NAMED, RP[2] }; ap = *XP; ap->request = FALSE; ap->actor_spec = RP[1];</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">are</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">asking</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">try</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_REQUESTED, RP[2] }; action_pattern *ap = *XP; ap->request = TRUE; APClauses::set_actor(ap, RP[1]);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">asking</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">try</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_REQUESTED, RP[2] }; ap = *XP; ap->request = TRUE; APClauses::set_actor(ap, RP[1]);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_NAMED, RP[2] }; ap = *XP; ap->request = FALSE; APClauses::set_actor(ap, RP[1]);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">an</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">actor</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_UNIVERSAL, RP[1] }; ap = *XP; ap->applies_to_any_actor = TRUE;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">an</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">actor</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_UNIVERSAL, RP[1] }; ap = *XP; ap->applies_to_any_actor = TRUE;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">are</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">trying</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_PLAYER, RP[1] };</span>
|
||||
|
@ -233,16 +233,16 @@ four combinations:
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core-actor></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_IMPLICITLY_PLAYER, RP[1] };</span>
|
||||
|
||||
<span class="Preform-function-syntax"><action-pattern-past></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">have</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">asked</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">try</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_REQUESTED, RP[2] }; action_pattern *ap = *XP; ap->request = TRUE; ap->actor_spec = RP[1];</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">has</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">tried</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_NAMED, RP[2] }; ap = *XP; ap->request = FALSE; ap->actor_spec = RP[1];</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">have</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">asked</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">try</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_REQUESTED, RP[2] }; action_pattern *ap = *XP; ap->request = TRUE; APClauses::set_actor(ap, RP[1]);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">has</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">tried</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_NAMED, RP[2] }; ap = *XP; ap->request = FALSE; APClauses::set_actor(ap, RP[1]);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">an</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">actor</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">has</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">tried</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_UNIVERSAL, RP[1] }; ap = *XP; ap->applies_to_any_actor = TRUE;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">an</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">actor</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">has</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-past-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_UNIVERSAL, RP[1] }; ap = *XP; ap->applies_to_any_actor = TRUE;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">have</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">tried</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">have</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-past-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_PLAYER, RP[1] };</span>
|
||||
|
||||
<span class="Preform-function-syntax"><action-pattern-past-negated></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">have</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">asked</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">try</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_REQUESTED, RP[2] }; action_pattern *ap = *XP; ap->request = TRUE; ap->actor_spec = RP[1];</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">has</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">tried</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_NAMED, RP[2] }; ap = *XP; ap->request = FALSE; ap->actor_spec = RP[1];</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">have</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">asked</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">to</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">try</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_REQUESTED, RP[2] }; action_pattern *ap = *XP; ap->request = TRUE; APClauses::set_actor(ap, RP[1]);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">has</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">tried</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_NAMED, RP[2] }; ap = *XP; ap->request = FALSE; APClauses::set_actor(ap, RP[1]);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">an</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">actor</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">has</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">tried</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_UNIVERSAL, RP[1] }; ap = *XP; ap->applies_to_any_actor = TRUE;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">an</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">actor</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">has</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-past-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_UNIVERSAL, RP[1] }; ap = *XP; ap->applies_to_any_actor = TRUE;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">we</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">have</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">not</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">tried</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_EXPLICITLY_PLAYER, RP[1] };</span>
|
||||
|
@ -268,7 +268,7 @@ actorless possibility can always be written.
|
|||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><action-pattern-core-actor></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_IMPLICITLY_PLAYER, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><actor-description></span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_NAMED, RP[2] }; action_pattern *ap = *XP; ap->request = FALSE; ap->actor_spec = RP[1];</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><actor-description></span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-pattern-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { ACTOR_NAMED, RP[2] }; action_pattern *ap = *XP; ap->request = FALSE; APClauses::set_actor(ap, RP[1]);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>And this voracious token matches the actor's name as an initial excerpt,
|
||||
|
@ -448,7 +448,7 @@ a condition attached with "when":
|
|||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><ap-common-core></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-common-core-inner></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">when/while</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><condition-in-ap></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { 0, RP[1] }; action_pattern *ap = *XP; ap->when = RP[2]; if (pap_failure_reason == MISC_PAPF) pap_failure_reason = WHENOKAY_PAPF;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-common-core-inner></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">when/while</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><condition-in-ap></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { 0, RP[1] }; action_pattern *ap = *XP; APClauses::set_val(ap, WHEN_AP_CLAUSE, RP[2]); if (pap_failure_reason == MISC_PAPF) pap_failure_reason = WHENOKAY_PAPF;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-common-core-inner></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { 0, RP[1] };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">when/while</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><condition-in-ap></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { 0, NULL }; pap_failure_reason = WHENOKAY_PAPF; return FALSE; </span><span class="Preform-comment-syntax"> used only to diagnose problems</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">when/while</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { 0, NULL }; if (pap_failure_reason != WHENOKAY_PAPF) pap_failure_reason = WHEN_PAPF; return FALSE; </span><span class="Preform-comment-syntax"> used only to diagnose problems</span>
|
||||
|
@ -489,7 +489,7 @@ to enable Inform to set up a stack frame if there isn't one already, and so on.
|
|||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><ap-common-core-inner></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-common-core-inner-inner></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">in</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">the</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">presence</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">of</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { 0, RP[1] }; ActionPatterns::set_presence(RP[1], RP[2]);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-common-core-inner-inner></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">in</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">the</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">presence</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">of</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><action-parameter></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { 0, RP[1] }; APClauses::set_presence(RP[1], RP[2]);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><ap-common-core-inner-inner></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { 0, RP[1] };</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
|
@ -513,10 +513,10 @@ is valid as an AP, but this enables many natural-looking rules to be written
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Dash::validate_parameter</span><span class="plain-syntax">(</span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">K_object</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">fail</span><span class="plain-syntax"> </span><span class="identifier-syntax">production</span><span class="plain-syntax"> }; </span><span class="comment-syntax"> the "room" isn't even an object</span>
|
||||
<span class="plain-syntax"> }</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><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::new</span></a><span class="plain-syntax">();</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><a href="4-ap2.html#SP4" class="function-link"><span class="function-syntax">ActionPatterns::new</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</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">ap</span><span class="plain-syntax">.</span><span class="element-syntax">text_of_pattern</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">ap</span><span class="plain-syntax">.</span><span class="element-syntax">room_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1];</span>
|
||||
<span class="plain-syntax"> ==> { </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::ap_store</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::set_room</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">RP</span><span class="plain-syntax">[1]);</span>
|
||||
<span class="plain-syntax"> ==> { </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><a href="4-ap2.html#SP4" class="function-link"><span class="function-syntax">ActionPatterns::ap_store</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">) };</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP17">§17</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. </b>And that's as far down as we go: to level 6. Most of the complexity is gone
|
||||
|
@ -535,18 +535,18 @@ box" makes no sense since only one is transitive).
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">scanning_anl_only_mode</span><span class="Preform-plain-syntax">) {</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">action_name_list</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">list</span><span class="Preform-plain-syntax"> = </span><a href="4-anl.html#SP19" class="function-link"><span class="Preform-function-syntax">ActionNameLists::parse</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">prevailing_ap_tense</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">NULL</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">list</span><span class="Preform-plain-syntax"> == </span><span class="Preform-identifier-syntax">NULL</span><span class="Preform-plain-syntax">) { ==> { </span><span class="Preform-identifier-syntax">fail</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">nonterminal</span><span class="Preform-plain-syntax"> }; }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">action_pattern</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax"> = </span><a href="4-ap2.html#SP6" class="function-link"><span class="Preform-function-syntax">ActionPatterns::new</span></a><span class="Preform-plain-syntax">(); </span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax">.</span><span class="Preform-element-syntax">valid</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">TRUE</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">action_pattern</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax"> = </span><a href="4-ap2.html#SP4" class="function-link"><span class="Preform-function-syntax">ActionPatterns::new</span></a><span class="Preform-plain-syntax">(); </span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax">.</span><span class="Preform-element-syntax">valid</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">TRUE</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax">.</span><span class="Preform-identifier-syntax">text_of_pattern</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax">.</span><span class="Preform-identifier-syntax">action_list</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">list</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> ==> { -, </span><a href="4-ap2.html#SP6" class="function-link"><span class="Preform-function-syntax">ActionPatterns::ap_store</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax">) };</span>
|
||||
<span class="Preform-plain-syntax"> ==> { -, </span><a href="4-ap2.html#SP4" class="function-link"><span class="Preform-function-syntax">ActionPatterns::ap_store</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax">) };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">return</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">TRUE</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> } </span><span class="Preform-reserved-syntax">else</span><span class="Preform-plain-syntax"> {</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">LOGIF</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">ACTION_PATTERN_PARSING</span><span class="Preform-plain-syntax">, </span><span class="Preform-string-syntax">"Parsing action pattern: %W\n"</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">LOG_INDENT</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">action_pattern</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax"> = </span><a href="4-pap.html#SP21" class="function-link"><span class="Preform-function-syntax">ParseActionPatterns::dash</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">LOG_OUTDENT</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><a href="4-ap2.html#SP6" class="function-link"><span class="Preform-function-syntax">ActionPatterns::is_valid</span></a><span class="Preform-plain-syntax">(&</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax">)) {</span>
|
||||
<span class="Preform-plain-syntax"> ==> { -, </span><a href="4-ap2.html#SP6" class="function-link"><span class="Preform-function-syntax">ActionPatterns::ap_store</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax">) };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><a href="4-ap2.html#SP4" class="function-link"><span class="Preform-function-syntax">ActionPatterns::is_valid</span></a><span class="Preform-plain-syntax">(&</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax">)) {</span>
|
||||
<span class="Preform-plain-syntax"> ==> { -, </span><a href="4-ap2.html#SP4" class="function-link"><span class="Preform-function-syntax">ActionPatterns::ap_store</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax">) };</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">return</span><span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">TRUE</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> }</span>
|
||||
<span class="Preform-plain-syntax"> }</span>
|
||||
|
@ -602,7 +602,7 @@ here — a constant, a description, a table entry, a variable, and so on.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">list</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">tense</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prevailing_ap_tense</span><span class="plain-syntax">;</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><a href="4-ap2.html#SP6" class="function-link"><span class="function-syntax">ActionPatterns::new</span></a><span class="plain-syntax">(); </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</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="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><a href="4-ap2.html#SP4" class="function-link"><span class="function-syntax">ActionPatterns::new</span></a><span class="plain-syntax">(); </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</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="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">text_of_pattern</span><span class="plain-syntax"> = </span><span class="identifier-syntax">W</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP21_3" class="named-paragraph-link"><span class="named-paragraph">PAR - (f) Parse Special Going Clauses</span><span class="named-paragraph-number">21.3</span></a></span><span class="plain-syntax">;</span>
|
||||
|
@ -629,10 +629,10 @@ here — a constant, a description, a table entry, a variable, and so on.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">action_list</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">ap</span><span class="plain-syntax">.</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="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">actor_spec</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP7" class="function-link"><span class="function-syntax">ActionPatterns::nullify_nonspecific_references</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">actor_spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">noun_spec</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP7" class="function-link"><span class="function-syntax">ActionPatterns::nullify_nonspecific_references</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">noun_spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">second_spec</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP7" class="function-link"><span class="function-syntax">ActionPatterns::nullify_nonspecific_references</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">second_spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">room_spec</span><span class="plain-syntax"> = </span><a href="4-ap2.html#SP7" class="function-link"><span class="function-syntax">ActionPatterns::nullify_nonspecific_references</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">room_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_actor</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">ap</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><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><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_noun</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">ap</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><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::set_second</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">ap</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><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::nullify_nonspecific</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PluginCalls::check_going</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">from_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">to_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">by_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">through_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">pushing_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">ch</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">valid</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
@ -679,14 +679,14 @@ away as they are recorded.
|
|||
<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="plain-syntax"> </span><span class="string-syntax">"Special clauses found on <%W>\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::from</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</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">last_stv_specified</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">j</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i</span><span class="plain-syntax">-1;</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::ap_add_optional_clause</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">last_stv_specified</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">k</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">-1));</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::ap_add_optional_clause</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">last_stv_specified</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">k</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">-1));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">k</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i</span><span class="plain-syntax">+1;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">last_stv_specified</span><span class="plain-syntax"> = </span><span class="identifier-syntax">stv</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">last_stv_specified</span><span class="plain-syntax"> != </span><span class="identifier-syntax">NULL</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::ap_add_optional_clause</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">last_stv_specified</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">k</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</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::ap_add_optional_clause</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">last_stv_specified</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">k</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">j</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::up_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
|
@ -743,8 +743,10 @@ crucial word position except for the one matched.
|
|||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-pap.html#SP21_5_5" class="named-paragraph-link"><span class="named-paragraph">Check the validity of this speculative AP</span><span class="named-paragraph-number">21.5.5</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">valid</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">one_was_valid</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) && (</span><a href="4-anl.html#SP13" class="function-link"><span class="function-syntax">ActionNameLists::word_position</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">) == </span><span class="identifier-syntax">first_position</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">one_was_valid</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">ap</span><span class="plain-syntax">.</span><span class="element-syntax">noun_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">noun_spec</span><span class="plain-syntax">; </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">second_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">second_spec</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">room_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">room_spec</span><span class="plain-syntax">; </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">nowhere_flag</span><span class="plain-syntax"> = </span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">nowhere_flag</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_noun</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">ap</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">trial_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::set_second</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">ap</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">trial_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::set_room</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">ap</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">trial_ap</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="element-syntax">nowhere_flag</span><span class="plain-syntax"> = </span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">nowhere_flag</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</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="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">valid</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><a href="4-anl.html#SP5" class="function-link"><span class="function-syntax">ActionNameLists::mark_for_deletion</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">);</span>
|
||||
|
@ -831,12 +833,13 @@ description.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">noun_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">second_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">room_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">nowhere_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="identifier-syntax">trial_ap</span><span class="plain-syntax">.</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="plain-syntax"> </span><a href="4-apc.html#SP3" class="function-link"><span class="function-syntax">APClauses::set_room</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">); </span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">nowhere_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="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">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">) && (</span><span class="function-syntax"><going-action-irregular-operand></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"><<r>></span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">nowhere_flag</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">nowhere_flag</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">else</span><span class="plain-syntax"> </span><a href="4-ap2.html#SP9" class="function-link"><span class="function-syntax">ActionPatterns::put_action_object_into_ap</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><span class="constant-syntax">1</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#SP7" class="function-link"><span class="function-syntax">ActionPatterns::put_action_object_into_ap</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><span class="constant-syntax">1</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="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>
|
||||
|
@ -844,15 +847,16 @@ description.
|
|||
<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">Kinds::eq</span><span class="plain-syntax">(</span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::kind_of_second</span></a><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">K_understanding</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> && (</span><span class="function-syntax"><understanding-action-irregular-operand></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">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">second_spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::from_grammar_verb</span><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">); </span><span class="comment-syntax"> Why no GV here?</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">second_spec</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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::from_grammar_verb</span><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">); </span><span class="comment-syntax"> Why no GV here?</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">(&</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><a href="4-ap2.html#SP9" class="function-link"><span class="function-syntax">ActionPatterns::put_action_object_into_ap</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><span class="constant-syntax">2</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#SP7" class="function-link"><span class="function-syntax">ActionPatterns::put_action_object_into_ap</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><span class="constant-syntax">2</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="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#SP9" class="function-link"><span class="function-syntax">ActionPatterns::put_action_object_into_ap</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><span class="constant-syntax">3</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">(&</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">, </span><span class="constant-syntax">3</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>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP21_5">§21.5</a>.</li></ul>
|
||||
|
@ -867,14 +871,11 @@ description.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">check_s</span><span class="plain-syntax"> = </span><a href="4-as.html#SP5" class="function-link"><span class="function-syntax">ActionSemantics::kind_of_second</span></a><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="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">.</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">noun_any</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">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">noun_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">check_n</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::validate</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">trial_ap</span><span class="plain-syntax">, </span><span class="constant-syntax">NOUN_AP_CLAUSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">check_n</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">trial_ap</span><span class="plain-syntax">.</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">second_any</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">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">second_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">check_s</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::validate</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">trial_ap</span><span class="plain-syntax">, </span><span class="constant-syntax">SECOND_AP_CLAUSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">check_s</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">trial_ap</span><span class="plain-syntax">.</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">room_any</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">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">room_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</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::validate</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">trial_ap</span><span class="plain-syntax">, </span><span class="constant-syntax">IN_AP_CLAUSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">K_object</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">trial_ap</span><span class="plain-syntax">.</span><span class="element-syntax">valid</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP21_5">§21.5</a>.</li></ul>
|
||||
|
@ -989,7 +990,7 @@ the case when the first action name in the list is <span class="extract"><span c
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pap.html#SP21">§21</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-ap2.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-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">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">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-apc.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-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">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -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">understanding_reference</span><span class="plain-syntax">;</span>
|
||||
</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/ap2, 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, 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/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>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§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
|
||||
of table entries or other values used to match against snippets. For example:
|
||||
|
|
|
@ -228,6 +228,11 @@
|
|||
<spon class="sectiontitle">Action Patterns</span></a> -
|
||||
<span class="sectionpurpose">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. Here we parse such text into a data structure called an |action_pattern|.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="4-apc.html">
|
||||
<spon class="sectiontitle">Action Pattern Clauses</span></a> -
|
||||
<span class="sectionpurpose">Pattern-matches on individual nouns in an action are called clauses.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="4-pap.html">
|
||||
<spon class="sectiontitle">Parse Action Patterns</span></a> -
|
||||
|
|
|
@ -78,9 +78,9 @@ function togglePopup(material_id) {
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTActionPatterns::emit_try</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">RTActionPatterns::emit_try</span></span>:<br/>Actions - <a href="5-act.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-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">store_instead</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">spec0</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">noun_spec</span><span class="plain-syntax">; </span><span class="comment-syntax"> the noun</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">second_spec</span><span class="plain-syntax">; </span><span class="comment-syntax"> the second noun</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">actor_spec</span><span class="plain-syntax">; </span><span class="comment-syntax"> the actor</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec0</span><span class="plain-syntax"> = </span><span class="identifier-syntax">APClauses::get_noun</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">); </span><span class="comment-syntax"> the noun</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">APClauses::get_second</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">); </span><span class="comment-syntax"> the second noun</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">APClauses::get_actor</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">); </span><span class="comment-syntax"> the actor</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">) && (</span><span class="identifier-syntax">Rvalues::is_CONSTANT_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec0</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="function-syntax"><subject-pronoun></span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec0</span><span class="plain-syntax">)) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))</span>
|
||||
|
@ -352,28 +352,28 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_action_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an</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">request_bits</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">request</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">noun_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">K_understanding</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Rvalues::is_CONSTANT_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">noun_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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">APClauses::get_noun</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">K_understanding</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Rvalues::is_CONSTANT_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">APClauses::get_noun</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</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">request_bits</span><span class="plain-syntax"> = </span><span class="identifier-syntax">request_bits</span><span class="plain-syntax"> | </span><span class="constant-syntax">16</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">BC</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">literal_text</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lt</span><span class="plain-syntax"> = </span><a href="4-tl.html#SP9" class="function-link"><span class="function-syntax">TextLiterals::compile_literal</span></a><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="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">noun_spec</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">literal_text</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lt</span><span class="plain-syntax"> = </span><a href="4-tl.html#SP9" class="function-link"><span class="function-syntax">TextLiterals::compile_literal</span></a><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="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">APClauses::get_noun</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">lt</span><span class="plain-syntax">-></span><span class="element-syntax">lt_sba_iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">BC</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">Specifications::Compiler::emit</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">noun_spec</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">Specifications::Compiler::emit</span><span class="plain-syntax">(</span><span class="identifier-syntax">APClauses::get_noun</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><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_numeric_entry</span></a><span class="plain-syntax">(0);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<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">second_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">K_understanding</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Rvalues::is_CONSTANT_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">second_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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">APClauses::get_second</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">K_understanding</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Rvalues::is_CONSTANT_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">APClauses::get_second</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</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">request_bits</span><span class="plain-syntax"> = </span><span class="identifier-syntax">request_bits</span><span class="plain-syntax"> | </span><span class="constant-syntax">32</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">literal_text</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lt</span><span class="plain-syntax"> = </span><a href="4-tl.html#SP9" class="function-link"><span class="function-syntax">TextLiterals::compile_literal</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">second_spec</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">literal_text</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lt</span><span class="plain-syntax"> = </span><a href="4-tl.html#SP9" class="function-link"><span class="function-syntax">TextLiterals::compile_literal</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">APClauses::get_second</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">lt</span><span class="plain-syntax">-></span><span class="element-syntax">lt_sba_iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">Specifications::Compiler::emit</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">second_spec</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">Specifications::Compiler::emit</span><span class="plain-syntax">(</span><span class="identifier-syntax">APClauses::get_second</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><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_numeric_entry</span></a><span class="plain-syntax">(0);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<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">actor_spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Specifications::Compiler::emit</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">actor_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">APClauses::get_actor</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">Specifications::Compiler::emit</span><span class="plain-syntax">(</span><span class="identifier-syntax">APClauses::get_actor</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><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><span class="plain-syntax">(</span><a href="4-ins.html#SP1" class="function-link"><span class="function-syntax">RTInstances::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I_yourself</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_numeric_entry</span></a><span class="plain-syntax">((</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">request_bits</span><span class="plain-syntax">);</span>
|
||||
|
@ -428,7 +428,7 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTActionPatterns::compile_pattern_match</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">RTActionPatterns::compile_pattern_match</span></span>:<br/><a href="5-ap.html#SP5">§5</a><br/>Actions - <a href="5-act.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">value_holster</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-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">naming_mode</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">cpm_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">needed</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_CPM_CLAUSES</span><span class="plain-syntax">];</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap_optional_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">needed_apoc</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_CPM_CLAUSES</span><span class="plain-syntax">];</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">needed_apoc</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_CPM_CLAUSES</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_COMPILATION</span><span class="plain-syntax">, </span><span class="string-syntax">"Compiling action pattern:\n $A"</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">duration</span><span class="plain-syntax">) {</span>
|
||||
|
@ -440,11 +440,11 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">naming_mode</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">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">applies_to_any_actor</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">impose</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">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">actor_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><span class="identifier-syntax">APClauses::get_actor</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="plain-syntax"> </span><span class="identifier-syntax">impose</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">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">var</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Lvalues::get_nonlocal_variable_if_any</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">actor_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">var</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Lvalues::get_nonlocal_variable_if_any</span><span class="plain-syntax">(</span><span class="identifier-syntax">APClauses::get_actor</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">var</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">var</span><span class="plain-syntax"> == </span><span class="identifier-syntax">player_VAR</span><span class="plain-syntax">)) </span><span class="identifier-syntax">impose</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">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">actor_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="identifier-syntax">Rvalues::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">APClauses::get_actor</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">I</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">I</span><span class="plain-syntax"> == </span><span class="identifier-syntax">I_yourself</span><span class="plain-syntax">)) </span><span class="identifier-syntax">impose</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">impose</span><span class="plain-syntax">) {</span>
|
||||
|
@ -454,7 +454,7 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">REQUESTER_DOESNT_EXIST_CPMC</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">actor_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">APClauses::get_actor</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">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">ACTOR_MATCHES_CPMC</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">else</span><span class="plain-syntax"> {</span>
|
||||
|
@ -471,11 +471,11 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ActionNameLists::testing</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">action_list</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">ACTION_MATCHES_CPMC</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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">action_list</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">noun_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">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">action_list</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">APClauses::get_noun</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">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">NOUN_EXISTS_CPMC</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">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">NOUN_IS_INP1_CPMC</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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">action_list</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">second_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">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">action_list</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">APClauses::get_second</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">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">SECOND_EXISTS_CPMC</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">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">SECOND_IS_INP1_CPMC</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -486,11 +486,11 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">kind_of_noun</span><span 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">noun_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">APClauses::get_noun</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">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">NOUN_MATCHES_AS_OBJECT_CPMC</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">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">.</span><span class="identifier-syntax">noun_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">APClauses::get_noun</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">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">NOUN_MATCHES_AS_VALUE_CPMC</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>
|
||||
|
@ -499,18 +499,18 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">kind_of_second</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">kind_of_second</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K_object</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">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">kind_of_second</span><span 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">second_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">APClauses::get_second</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">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">SECOND_MATCHES_AS_OBJECT_CPMC</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">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">.</span><span class="identifier-syntax">second_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">APClauses::get_second</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">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">SECOND_MATCHES_AS_VALUE_CPMC</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="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">room_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">APClauses::get_room</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">applies_to_any_actor</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">naming_mode</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">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">actor_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="identifier-syntax">APClauses::get_actor</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="plain-syntax"> </span><span class="identifier-syntax">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">PLAYER_LOCATION_MATCHES_CPMC</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">ACTOR_IN_RIGHT_PLACE_CPMC</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
|
@ -522,7 +522,7 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">PARAMETER_MATCHES_CPMC</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="identifier-syntax">ap_optional_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_clauses</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-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_clauses</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">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">clause_ID</span><span class="plain-syntax"> == </span><span class="identifier-syntax">STV_AP_CLAUSE</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="identifier-syntax">clause_spec</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">OPTIONAL_CLAUSE_CPMC</span><span class="plain-syntax">, </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">);</span>
|
||||
|
@ -544,14 +544,14 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<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">ActionPatterns::get_presence</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">APClauses::get_presence</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="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to_be_present</span><span class="plain-syntax"> =</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">ActionPatterns::get_presence</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">Specifications::object_exactly_described_if_any</span><span class="plain-syntax">(</span><span class="identifier-syntax">APClauses::get_presence</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">to_be_present</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">PRESENCE_OF_MATCHES_CPMC</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">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">PRESENCE_OF_IN_SCOPE_CPMC</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">PC</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Descriptions::get_calling</span><span class="plain-syntax">(</span><span class="identifier-syntax">ActionPatterns::get_presence</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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">PC</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Descriptions::get_calling</span><span class="plain-syntax">(</span><span class="identifier-syntax">APClauses::get_presence</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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">PC</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">LOOP_OVER_SCOPE_WITH_CALLING_CPMC</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
|
@ -559,7 +559,7 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<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">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">when</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">APClauses::get_val</span><span class="plain-syntax">(&</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">WHEN_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">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">SET_SELF_TO_ACTOR_CPMC</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">CPMC_NEEDED</span><span class="plain-syntax">(</span><span class="constant-syntax">WHEN_CONDITION_HOLDS_CPMC</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -685,7 +685,7 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">AND_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">()); </span><span class="identifier-syntax">downs</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap_optional_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">needed_apoc</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">ap_clause</span><span class="plain-syntax"> *</span><span class="identifier-syntax">apoc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">needed_apoc</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">];</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-ap.html#SP6_1_1_1" class="named-paragraph-link"><span class="named-paragraph">Emit CPM condition piece</span><span class="named-paragraph-number">6.1.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -726,7 +726,7 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<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">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_MATCHES_CPMC:</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">I6_actor_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">actor_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">I6_actor_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">APClauses::get_actor</span><span class="plain-syntax">(&</span><span class="identifier-syntax">ap</span><span class="plain-syntax">), </span><span class="identifier-syntax">K_object</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">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">ACTION_MATCHES_CPMC:</span>
|
||||
<span class="plain-syntax"> </span><a href="5-act.html#SP4" class="function-link"><span class="function-syntax">RTActions::emit_anl</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">action_list</span><span class="plain-syntax">);</span>
|
||||
|
@ -752,25 +752,25 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<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">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_MATCHES_AS_OBJECT_CPMC:</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">I6_noun_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">noun_spec</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">I6_noun_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">APClauses::get_noun</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">kind_of_noun</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">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_MATCHES_AS_VALUE_CPMC:</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">VH</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tv.html#SP3" class="function-link"><span class="function-syntax">RTTemporaryVariables::from_iname</span></a><span class="plain-syntax">(</span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PARSED_NUMBER_HL</span><span class="plain-syntax">), </span><span class="identifier-syntax">kind_of_noun</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">noun_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind_of_noun</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">APClauses::get_noun</span><span class="plain-syntax">(&</span><span class="identifier-syntax">ap</span><span class="plain-syntax">), </span><span class="identifier-syntax">kind_of_noun</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">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_MATCHES_AS_OBJECT_CPMC:</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">I6_second_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">second_spec</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">I6_second_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">APClauses::get_second</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">kind_of_second</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">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_MATCHES_AS_VALUE_CPMC:</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">VH</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tv.html#SP3" class="function-link"><span class="function-syntax">RTTemporaryVariables::from_iname</span></a><span class="plain-syntax">(</span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">PARSED_NUMBER_HL</span><span class="plain-syntax">), </span><span class="identifier-syntax">kind_of_second</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">second_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind_of_second</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">APClauses::get_second</span><span class="plain-syntax">(&</span><span class="identifier-syntax">ap</span><span class="plain-syntax">), </span><span class="identifier-syntax">kind_of_second</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">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">PLAYER_LOCATION_MATCHES_CPMC:</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">real_location_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">room_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">real_location_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">APClauses::get_room</span><span class="plain-syntax">(&</span><span class="identifier-syntax">ap</span><span class="plain-syntax">), </span><span class="identifier-syntax">K_object</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">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_IN_RIGHT_PLACE_CPMC:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">STORE_BIP</span><span class="plain-syntax">);</span>
|
||||
|
@ -784,7 +784,7 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<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_LOCATION_MATCHES_CPMC:</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">actor_location_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">room_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</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">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">actor_location_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">APClauses::get_room</span><span class="plain-syntax">(&</span><span class="identifier-syntax">ap</span><span class="plain-syntax">), </span><span class="identifier-syntax">K_object</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">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">PARAMETER_MATCHES_CPMC:</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">saved_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NonlocalVariables::kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">parameter_object_VAR</span><span class="plain-syntax">);</span>
|
||||
|
@ -798,7 +798,7 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<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="identifier-syntax">StackedVariables::get_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="identifier-syntax">stv_to_match</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">VH</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tv.html#SP3" class="function-link"><span class="function-syntax">RTTemporaryVariables::from_existing_variable</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="identifier-syntax">stv_to_match</span><span class="plain-syntax">-></span><span class="identifier-syntax">underlying_var</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="identifier-syntax">clause_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, ((</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="identifier-syntax">clause_options</span><span class="plain-syntax">) & </span><span class="identifier-syntax">ALLOW_REGION_AS_ROOM_APCOPT</span><span class="plain-syntax">)?</span><span class="identifier-syntax">TRUE:FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">apoc</span><span class="plain-syntax">-></span><span class="identifier-syntax">clause_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">APClauses::opt</span><span class="plain-syntax">(</span><span class="identifier-syntax">apoc</span><span class="plain-syntax">, </span><span class="identifier-syntax">ALLOW_REGION_AS_ROOM_APCOPT</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NOWHERE_CPMC:</span>
|
||||
|
@ -841,15 +841,15 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<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">PRESENCE_OF_MATCHES_CPMC:</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">to_be_present</span><span class="plain-syntax"> =</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">ActionPatterns::get_presence</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">Specifications::object_exactly_described_if_any</span><span class="plain-syntax">(</span><span class="identifier-syntax">APClauses::get_presence</span><span class="plain-syntax">(&</span><span class="identifier-syntax">ap</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ap.html#SP4" class="function-link"><span class="function-syntax">RTActionPatterns::compile_pattern_match_clause</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">VH</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tv.html#SP3" class="function-link"><span class="function-syntax">RTTemporaryVariables::from_iname</span></a><span class="plain-syntax">(</span><a href="4-ins.html#SP1" class="function-link"><span class="function-syntax">RTInstances::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to_be_present</span><span class="plain-syntax">), </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ActionPatterns::get_presence</span><span class="plain-syntax">(&</span><span class="identifier-syntax">ap</span><span class="plain-syntax">), </span><span class="identifier-syntax">K_object</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">APClauses::get_presence</span><span class="plain-syntax">(&</span><span class="identifier-syntax">ap</span><span class="plain-syntax">), </span><span class="identifier-syntax">K_object</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">break</span><span class="plain-syntax">;</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">PRESENCE_OF_IN_SCOPE_CPMC:</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">to_be_present</span><span class="plain-syntax"> =</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">ActionPatterns::get_presence</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">Specifications::object_exactly_described_if_any</span><span class="plain-syntax">(</span><span class="identifier-syntax">APClauses::get_presence</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">Produce::inv_call_iname</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TESTSCOPE_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_iname</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="4-ins.html#SP1" class="function-link"><span class="function-syntax">RTInstances::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to_be_present</span><span class="plain-syntax">));</span>
|
||||
|
@ -858,10 +858,10 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_SCOPE_WITH_CALLING_CPMC:</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">loop_over_scope</span><span class="plain-syntax"> *</span><span class="identifier-syntax">los</span><span class="plain-syntax"> = </span><a href="5-los.html#SP2" class="function-link"><span class="function-syntax">LoopingOverScope::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ActionPatterns::get_presence</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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">PC</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Descriptions::get_calling</span><span class="plain-syntax">(</span><span class="identifier-syntax">ActionPatterns::get_presence</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">loop_over_scope</span><span class="plain-syntax"> *</span><span class="identifier-syntax">los</span><span class="plain-syntax"> = </span><a href="5-los.html#SP2" class="function-link"><span class="function-syntax">LoopingOverScope::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">APClauses::get_presence</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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">PC</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Descriptions::get_calling</span><span class="plain-syntax">(</span><span class="identifier-syntax">APClauses::get_presence</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">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::ensure_called_local</span><span class="plain-syntax">(</span><span class="identifier-syntax">PC</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Specifications::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">ActionPatterns::get_presence</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">Specifications::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">APClauses::get_presence</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">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lvar_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::declare_this</span><span class="plain-syntax">(</span><span class="identifier-syntax">lvar</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">8</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">SEQUENTIAL_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
|
@ -887,7 +887,7 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_SCOPE_WITHOUT_CALLING_CPMC:</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">loop_over_scope</span><span class="plain-syntax"> *</span><span class="identifier-syntax">los</span><span class="plain-syntax"> = </span><a href="5-los.html#SP2" class="function-link"><span class="function-syntax">LoopingOverScope::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ActionPatterns::get_presence</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">loop_over_scope</span><span class="plain-syntax"> *</span><span class="identifier-syntax">los</span><span class="plain-syntax"> = </span><a href="5-los.html#SP2" class="function-link"><span class="function-syntax">LoopingOverScope::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">APClauses::get_presence</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">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">SEQUENTIAL_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">STORE_BIP</span><span class="plain-syntax">);</span>
|
||||
|
@ -919,7 +919,7 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<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">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_CONDITION_HOLDS_CPMC:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Specifications::Compiler::emit_as_val</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">.</span><span class="identifier-syntax">when</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Specifications::Compiler::emit_as_val</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">APClauses::get_val</span><span class="plain-syntax">(&</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">WHEN_AP_CLAUSE</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
|
@ -931,10 +931,10 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">bad_form</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">Produce::inv_call_iname</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TESTACTIONBITMAP_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">noun_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><span class="identifier-syntax">APClauses::get_noun</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="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</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><span class="identifier-syntax">Specifications::Compiler::emit_as_val</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">noun_spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Specifications::Compiler::emit_as_val</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">APClauses::get_noun</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">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ActionNameLists::length</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-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">L</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">Produce::val</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) -1);</span>
|
||||
|
@ -947,14 +947,14 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ActionPatterns::pta_acceptable</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">noun_spec</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">bad_form</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">ActionPatterns::pta_acceptable</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">second_spec</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">bad_form</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">ActionPatterns::pta_acceptable</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">-></span><span class="identifier-syntax">actor_spec</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">bad_form</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">-></span><span class="identifier-syntax">room_spec</span><span class="plain-syntax">) </span><span class="identifier-syntax">bad_form</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">ActionPatterns::pta_acceptable</span><span class="plain-syntax">(</span><span class="identifier-syntax">APClauses::get_noun</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">bad_form</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">ActionPatterns::pta_acceptable</span><span class="plain-syntax">(</span><span class="identifier-syntax">APClauses::get_second</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">bad_form</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">ActionPatterns::pta_acceptable</span><span class="plain-syntax">(</span><span class="identifier-syntax">APClauses::get_actor</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">bad_form</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">APClauses::get_room</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="identifier-syntax">bad_form</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">-></span><span class="identifier-syntax">parameter_spec</span><span class="plain-syntax">) </span><span class="identifier-syntax">bad_form</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">ActionPatterns::get_presence</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="identifier-syntax">bad_form</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">-></span><span class="identifier-syntax">when</span><span class="plain-syntax">) </span><span class="identifier-syntax">bad_form</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">ActionPatterns::has_stv_clauses</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="identifier-syntax">bad_form</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">APClauses::get_presence</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="identifier-syntax">bad_form</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">APClauses::get_val</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">WHEN_AP_CLAUSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">bad_form</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">APClauses::has_stv_clauses</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap</span><span class="plain-syntax">)) </span><span class="identifier-syntax">bad_form</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">bad_form</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-ap.html#SP7_1" class="named-paragraph-link"><span class="named-paragraph">Issue too complex PT problem</span><span class="named-paragraph-number">7.1</span></a></span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -688,8 +688,8 @@ result.
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">permit_trying_omission</span><span class="Preform-plain-syntax"> = </span><span class="Preform-identifier-syntax">pto</span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> (</span><span class="Preform-identifier-syntax">r</span><span class="Preform-plain-syntax">) {</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">action_pattern</span><span class="Preform-plain-syntax"> *</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax"> = </span><span class="Preform-function-syntax"><<rp>></span><span class="Preform-plain-syntax">;</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> ((</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax">-></span><span class="Preform-identifier-syntax">actor_spec</span><span class="Preform-plain-syntax">) &&</span>
|
||||
<span class="Preform-plain-syntax"> (</span><a href="2-dsh.html#SP24" class="function-link"><span class="Preform-function-syntax">Dash::validate_parameter</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax">-></span><span class="Preform-identifier-syntax">actor_spec</span><span class="Preform-plain-syntax">, </span><span class="Preform-identifier-syntax">K_person</span><span class="Preform-plain-syntax">) == </span><span class="Preform-identifier-syntax">FALSE</span><span class="Preform-plain-syntax">)) {</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">if</span><span class="Preform-plain-syntax"> ((</span><span class="Preform-identifier-syntax">APClauses::get_actor</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax">)) &&</span>
|
||||
<span class="Preform-plain-syntax"> (</span><a href="2-dsh.html#SP24" class="function-link"><span class="Preform-function-syntax">Dash::validate_parameter</span></a><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">APClauses::get_actor</span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">ap</span><span class="Preform-plain-syntax">), </span><span class="Preform-identifier-syntax">K_person</span><span class="Preform-plain-syntax">) == </span><span class="Preform-identifier-syntax">FALSE</span><span class="Preform-plain-syntax">)) {</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-identifier-syntax">r</span><span class="Preform-plain-syntax"> = </span><span class="Preform-function-syntax"><action-pattern></span><span class="Preform-plain-syntax">(</span><span class="Preform-identifier-syntax">W</span><span class="Preform-plain-syntax">);</span>
|
||||
<span class="Preform-plain-syntax"> }</span>
|
||||
<span class="Preform-plain-syntax"> }</span>
|
||||
|
|
|
@ -1,21 +1,21 @@
|
|||
Total memory consumption was 258576K = 253 MB
|
||||
Total memory consumption was 259376K = 253 MB
|
||||
|
||||
62.4% was used for 1338988 objects, in 278610 frames in 202 x 800K = 161600K = 157 MB:
|
||||
62.6% was used for 1339628 objects, in 278851 frames in 203 x 800K = 162400K = 158 MB:
|
||||
|
||||
9.8% inter_tree_node_array 36 x 8192 = 294912 objects, 25953408 bytes
|
||||
9.7% inter_tree_node_array 36 x 8192 = 294912 objects, 25953408 bytes
|
||||
5.5% text_stream_array 2595 x 100 = 259500 objects, 14615040 bytes
|
||||
3.9% parse_node 129990 objects, 10399200 bytes
|
||||
2.8% verb_conjugation 160 objects, 7425280 bytes
|
||||
3.9% parse_node 130230 objects, 10418400 bytes
|
||||
2.7% verb_conjugation 160 objects, 7425280 bytes
|
||||
2.6% parse_node_annotation_array 431 x 500 = 215500 objects, 6909792 bytes
|
||||
2.4% linked_list 11779 objects, 6596240 bytes
|
||||
2.3% inter_symbol_array 70 x 1024 = 71680 objects, 6310080 bytes
|
||||
1.2% pcalc_prop_array 24 x 1000 = 24000 objects, 3264768 bytes
|
||||
1.2% map_data 670 objects, 3178480 bytes
|
||||
1.1% map_data 670 objects, 3178480 bytes
|
||||
0.9% kind_array 65 x 1000 = 65000 objects, 2602080 bytes
|
||||
0.7% inter_schema_token 13492 objects, 1942848 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.4% phrase 940 objects, 1180640 bytes
|
||||
0.4% phrase 940 objects, 1120480 bytes
|
||||
0.3% inter_name_array 21 x 1000 = 21000 objects, 1008672 bytes
|
||||
0.3% adjective_meaning 202 objects, 1000304 bytes
|
||||
0.3% excerpt_meaning 3098 objects, 966576 bytes
|
||||
|
@ -29,8 +29,8 @@ Total memory consumption was 258576K = 253 MB
|
|||
0.2% dictionary 16372 objects, 785856 bytes
|
||||
0.2% dict_entry_array 232 x 100 = 23200 objects, 749824 bytes
|
||||
0.2% package_request 7954 objects, 699952 bytes
|
||||
0.2% inter_name_generator_array 16 x 1000 = 16000 objects, 640512 bytes
|
||||
0.2% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes
|
||||
0.2% inter_name_generator_array 16 x 1000 = 16000 objects, 640512 bytes
|
||||
0.1% local_variable_array 45 x 100 = 4500 objects, 505440 bytes
|
||||
0.1% verb_usage 1128 objects, 388032 bytes
|
||||
0.1% rule 469 objects, 363944 bytes
|
||||
|
@ -47,7 +47,6 @@ Total memory consumption was 258576K = 253 MB
|
|||
---- index_lexicon_entry 395 objects, 142200 bytes
|
||||
---- nonterminal 758 objects, 139472 bytes
|
||||
---- documentation_ref 1275 objects, 112200 bytes
|
||||
---- action_pattern_array 6 x 100 = 600 objects, 110592 bytes
|
||||
---- inference 1703 objects, 108992 bytes
|
||||
---- hierarchy_location 730 objects, 105120 bytes
|
||||
---- noun_usage 2401 objects, 96040 bytes
|
||||
|
@ -57,6 +56,7 @@ Total memory consumption was 258576K = 253 MB
|
|||
---- kind_variable_declaration 1652 objects, 79296 bytes
|
||||
---- inter_tree 6 objects, 78624 bytes
|
||||
---- inter_schema 1509 objects, 72432 bytes
|
||||
---- action_pattern_array 6 x 100 = 600 objects, 72192 bytes
|
||||
---- rulebook 407 objects, 71632 bytes
|
||||
---- spatial_data 670 objects, 64320 bytes
|
||||
---- kind_macro_definition 9 objects, 62280 bytes
|
||||
|
@ -66,6 +66,7 @@ Total memory consumption was 258576K = 253 MB
|
|||
---- ph_stack_frame_box 577 objects, 55392 bytes
|
||||
---- kind_constructor 77 objects, 54824 bytes
|
||||
---- property_inference_data 1315 objects, 52600 bytes
|
||||
---- ap_clause_array 2 x 400 = 800 objects, 51264 bytes
|
||||
---- text_substitution 436 objects, 48832 bytes
|
||||
---- grammar_line 230 objects, 46000 bytes
|
||||
---- table 7 objects, 45528 bytes
|
||||
|
@ -80,7 +81,6 @@ Total memory consumption was 258576K = 253 MB
|
|||
---- stacked_variable_owner_array 6 x 100 = 600 objects, 28992 bytes
|
||||
---- heading 198 objects, 28512 bytes
|
||||
---- counting_data 670 objects, 26800 bytes
|
||||
---- ap_optional_clause_array 1 x 400 objects, 25632 bytes
|
||||
---- parsing_data 670 objects, 21440 bytes
|
||||
---- bp_runtime_implementation 321 objects, 20544 bytes
|
||||
---- instance 167 objects, 20040 bytes
|
||||
|
@ -227,10 +227,10 @@ Total memory consumption was 258576K = 253 MB
|
|||
---- parse_name_notice 1 object, 40 bytes
|
||||
---- loop_over_scope 1 object, 40 bytes
|
||||
|
||||
37.5% was used for memory not allocated for objects:
|
||||
37.3% was used for memory not allocated for objects:
|
||||
|
||||
15.9% text stream storage 42248212 bytes in 265816 claims
|
||||
3.5% dictionary storage 9278976 bytes in 16372 claims
|
||||
3.4% dictionary storage 9278976 bytes in 16372 claims
|
||||
---- sorting 1056 bytes in 3 claims
|
||||
2.7% source text 7200000 bytes in 3 claims
|
||||
4.0% source text details 10800000 bytes in 2 claims
|
||||
|
@ -238,12 +238,12 @@ Total memory consumption was 258576K = 253 MB
|
|||
---- small word set array 105600 bytes in 22 claims
|
||||
0.8% inter symbols storage 2280320 bytes in 13937 claims
|
||||
6.3% inter bytecode storage 16802820 bytes in 14 claims
|
||||
3.3% inter links storage 8750208 bytes in 246 claims
|
||||
3.2% inter links storage 8750208 bytes in 246 claims
|
||||
0.6% instance-of-kind counting 1695204 bytes in 1 claim
|
||||
---- compilation workspace for objects 21856 bytes in 25 claims
|
||||
---- lists for type-checking invocations 16000 bytes in 1 claim
|
||||
---- emitter array storage 12320 bytes in 8 claims
|
||||
---- code generation workspace for objects 9200 bytes in 9 claims
|
||||
|
||||
19.9% was overhead - 52842896 bytes = 51604K = 50 MB
|
||||
20.2% was overhead - 53715824 bytes = 52456K = 51 MB
|
||||
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
100.0% in inform7 run
|
||||
67.0% in compilation to Inter
|
||||
26.2% in //Phrases::Manager::compile_first_block//
|
||||
8.3% in //Phrases::Manager::compile_as_needed//
|
||||
6.8% in //Strings::compile_responses//
|
||||
6.1% in //InferenceSubjects::emit_all//
|
||||
4.3% in //MajorNodes::pre_pass//
|
||||
3.2% in //MajorNodes::pass_1//
|
||||
67.2% in compilation to Inter
|
||||
25.5% in //Phrases::Manager::compile_first_block//
|
||||
8.4% in //Phrases::Manager::compile_as_needed//
|
||||
6.9% in //Strings::compile_responses//
|
||||
6.2% in //InferenceSubjects::emit_all//
|
||||
4.4% in //MajorNodes::pre_pass//
|
||||
3.5% in //MajorNodes::pass_1//
|
||||
1.9% in //Phrases::Manager::RulePrintingRule_routine//
|
||||
1.8% in //Phrases::Manager::rulebooks_array//
|
||||
1.9% in //Phrases::Manager::rulebooks_array//
|
||||
1.0% in //RTVerbs::ConjugateVerb//
|
||||
0.7% in //Phrases::Manager::traverse//
|
||||
0.8% in //Phrases::Manager::traverse//
|
||||
0.5% in //Phrases::Manager::parse_rule_parameters//
|
||||
0.5% in //World::stage_V//
|
||||
0.3% in //MajorNodes::pass_2//
|
||||
|
@ -19,11 +19,11 @@
|
|||
0.1% in //RTKinds::compile_data_type_support_routines//
|
||||
0.1% in //Task::make_built_in_kind_constructors//
|
||||
0.1% in //World::stages_II_and_III//
|
||||
3.4% not specifically accounted for
|
||||
30.7% in running Inter pipeline
|
||||
10.3% in step preparation
|
||||
9.7% in inter step 2/12: link
|
||||
7.0% in inter step 12/12: generate inform6 -> auto.inf
|
||||
3.2% not specifically accounted for
|
||||
30.4% in running Inter pipeline
|
||||
9.6% in inter step 2/12: link
|
||||
9.6% in step preparation
|
||||
7.1% in inter step 12/12: generate inform6 -> auto.inf
|
||||
0.3% in inter step 9/12: make-identifiers-unique
|
||||
0.1% in inter step 10/12: reconcile-verbs
|
||||
0.1% in inter step 11/12: eliminate-redundant-labels
|
||||
|
@ -32,6 +32,6 @@
|
|||
0.1% in inter step 6/12: assimilate
|
||||
0.1% in inter step 7/12: resolve-external-symbols
|
||||
0.1% in inter step 8/12: inspect-plugs
|
||||
2.0% not specifically accounted for
|
||||
2.4% not specifically accounted for
|
||||
1.9% in supervisor
|
||||
0.2% not specifically accounted for
|
||||
0.4% not specifically accounted for
|
||||
|
|
|
@ -268,7 +268,7 @@ DECLARE_CLASS(rubric_holder)
|
|||
@e anl_entry_CLASS
|
||||
@e action_pattern_CLASS
|
||||
@e action_name_list_CLASS
|
||||
@e ap_optional_clause_CLASS
|
||||
@e ap_clause_CLASS
|
||||
@e scene_connector_CLASS
|
||||
@e understanding_item_CLASS
|
||||
@e understanding_reference_CLASS
|
||||
|
@ -302,7 +302,7 @@ DECLARE_CLASS(spatial_data)
|
|||
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(anl_entry, 1000)
|
||||
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(action_pattern, 100)
|
||||
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(action_name_list, 1000)
|
||||
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(ap_optional_clause, 400)
|
||||
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(ap_clause, 400)
|
||||
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(scene_connector, 1000)
|
||||
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(understanding_item, 100)
|
||||
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(understanding_reference, 100)
|
||||
|
|
261
inform7/if-module/Chapter 4/Action Pattern Clauses.w
Normal file
261
inform7/if-module/Chapter 4/Action Pattern Clauses.w
Normal file
|
@ -0,0 +1,261 @@
|
|||
[APClauses::] Action Pattern Clauses.
|
||||
|
||||
Pattern-matches on individual nouns in an action are called clauses.
|
||||
|
||||
@
|
||||
|
||||
@e ACTOR_AP_CLAUSE from 1
|
||||
@e NOUN_AP_CLAUSE
|
||||
@e SECOND_AP_CLAUSE
|
||||
@e IN_AP_CLAUSE
|
||||
@e IN_THE_PRESENCE_OF_AP_CLAUSE
|
||||
@e WHEN_AP_CLAUSE
|
||||
@e GOING_FROM_AP_CLAUSE
|
||||
@e GOING_TO_AP_CLAUSE
|
||||
@e GOING_BY_AP_CLAUSE
|
||||
@e GOING_THROUGH_AP_CLAUSE
|
||||
@e PUSHING_AP_CLAUSE
|
||||
@e STV_AP_CLAUSE
|
||||
|
||||
=
|
||||
typedef struct ap_clause {
|
||||
int clause_ID;
|
||||
struct stacked_variable *stv_to_match;
|
||||
struct parse_node *clause_spec;
|
||||
int clause_options;
|
||||
struct ap_clause *next;
|
||||
CLASS_DEFINITION
|
||||
} ap_clause;
|
||||
|
||||
@ The clause options are a bitmap. Some are meaningful only for one or two
|
||||
clauses.
|
||||
|
||||
@d ALLOW_REGION_AS_ROOM_APCOPT 1
|
||||
@d DO_NOT_VALIDATE_APCOPT 2
|
||||
|
||||
@ =
|
||||
int APClauses::opt(ap_clause *apoc, int opt) {
|
||||
return (((apoc) && (apoc->clause_options)) & opt)?TRUE:FALSE;
|
||||
}
|
||||
|
||||
void APClauses::set_opt(ap_clause *apoc, int opt) {
|
||||
if (apoc == NULL) internal_error("no such apoc");
|
||||
apoc->clause_options |= opt;
|
||||
}
|
||||
|
||||
void APClauses::clear_opt(ap_clause *apoc, int opt) {
|
||||
if (apoc == NULL) internal_error("no such apoc");
|
||||
if (apoc->clause_options & opt) apoc->clause_options -= opt;
|
||||
}
|
||||
|
||||
parse_node *APClauses::get_actor(action_pattern *ap) {
|
||||
return APClauses::get_val(ap, ACTOR_AP_CLAUSE);
|
||||
}
|
||||
|
||||
void APClauses::set_actor(action_pattern *ap, parse_node *val) {
|
||||
APClauses::set_val(ap, ACTOR_AP_CLAUSE, val);
|
||||
}
|
||||
|
||||
parse_node *APClauses::get_noun(action_pattern *ap) {
|
||||
return APClauses::get_val(ap, NOUN_AP_CLAUSE);
|
||||
}
|
||||
|
||||
void APClauses::set_noun(action_pattern *ap, parse_node *val) {
|
||||
APClauses::set_val(ap, NOUN_AP_CLAUSE, val);
|
||||
}
|
||||
|
||||
parse_node *APClauses::get_second(action_pattern *ap) {
|
||||
return APClauses::get_val(ap, SECOND_AP_CLAUSE);
|
||||
}
|
||||
|
||||
void APClauses::set_second(action_pattern *ap, parse_node *val) {
|
||||
APClauses::set_val(ap, SECOND_AP_CLAUSE, val);
|
||||
}
|
||||
|
||||
parse_node *APClauses::get_presence(action_pattern *ap) {
|
||||
return APClauses::get_val(ap, IN_THE_PRESENCE_OF_AP_CLAUSE);
|
||||
}
|
||||
|
||||
void APClauses::set_presence(action_pattern *ap, parse_node *val) {
|
||||
APClauses::set_val(ap, IN_THE_PRESENCE_OF_AP_CLAUSE, val);
|
||||
}
|
||||
|
||||
parse_node *APClauses::get_room(action_pattern *ap) {
|
||||
return APClauses::get_val(ap, IN_AP_CLAUSE);
|
||||
}
|
||||
|
||||
void APClauses::set_room(action_pattern *ap, parse_node *val) {
|
||||
APClauses::set_val(ap, IN_AP_CLAUSE, val);
|
||||
}
|
||||
|
||||
parse_node *APClauses::get_val(action_pattern *ap, int C) {
|
||||
ap_clause *apoc = APClauses::clause(ap, C);
|
||||
return (apoc)?(apoc->clause_spec):NULL;
|
||||
}
|
||||
|
||||
void APClauses::set_val(action_pattern *ap, int C, parse_node *val) {
|
||||
if (val == NULL) {
|
||||
ap_clause *apoc = APClauses::clause(ap, C);
|
||||
if (apoc) apoc->clause_spec = val;
|
||||
} else {
|
||||
ap_clause *apoc = APClauses::ensure_clause(ap, C);
|
||||
apoc->clause_spec = val;
|
||||
}
|
||||
}
|
||||
|
||||
void APClauses::nullify_nonspecific(action_pattern *ap, int C) {
|
||||
ap_clause *apoc = APClauses::clause(ap, C);
|
||||
if (apoc) apoc->clause_spec = ActionPatterns::nullify_nonspecific_references(apoc->clause_spec);
|
||||
}
|
||||
|
||||
ap_clause *APClauses::clause(action_pattern *ap, int C) {
|
||||
return APClauses::find_clause(ap, C, FALSE);
|
||||
}
|
||||
|
||||
ap_clause *APClauses::ensure_clause(action_pattern *ap, int C) {
|
||||
return APClauses::find_clause(ap, C, TRUE);
|
||||
}
|
||||
|
||||
ap_clause *APClauses::find_clause(action_pattern *ap, int clause, int make) {
|
||||
if (ap) {
|
||||
ap_clause *last = NULL;
|
||||
for (ap_clause *apoc = ap->ap_clauses; apoc; apoc = apoc->next) {
|
||||
if (apoc->clause_ID == clause)
|
||||
return apoc;
|
||||
last = apoc;
|
||||
}
|
||||
if (make) {
|
||||
ap_clause *new_apoc = APClauses::apoc_new(clause, NULL, NULL);
|
||||
if (last == NULL) ap->ap_clauses = new_apoc;
|
||||
else last->next = new_apoc;
|
||||
return new_apoc;
|
||||
}
|
||||
} else {
|
||||
if (make) internal_error("cannot make clause in null AP");
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ap_clause *APClauses::find_stv(action_pattern *ap, stacked_variable *stv) {
|
||||
if (ap)
|
||||
for (ap_clause *apoc = ap->ap_clauses; apoc; apoc = apoc->next)
|
||||
if (apoc->stv_to_match == stv)
|
||||
return apoc;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ap_clause *APClauses::apoc_new(int clause, stacked_variable *stv, parse_node *spec) {
|
||||
ap_clause *apoc = CREATE(ap_clause);
|
||||
apoc->clause_ID = clause;
|
||||
apoc->stv_to_match = stv;
|
||||
apoc->clause_spec = spec;
|
||||
apoc->next = NULL;
|
||||
apoc->clause_options = FALSE;
|
||||
return apoc;
|
||||
}
|
||||
|
||||
void APClauses::ap_add_optional_clause(action_pattern *ap, stacked_variable *stv,
|
||||
wording W) {
|
||||
if (stv == NULL) internal_error("no stacked variable for apoc");
|
||||
ap_clause *apoc = APClauses::apoc_new(STV_AP_CLAUSE, stv,
|
||||
ParseActionPatterns::verified_action_parameter(W));
|
||||
int oid = StackedVariables::get_owner_id(apoc->stv_to_match);
|
||||
int off = StackedVariables::get_offset(apoc->stv_to_match);
|
||||
if (ap->ap_clauses == NULL) {
|
||||
ap->ap_clauses = apoc;
|
||||
apoc->next = NULL;
|
||||
} else {
|
||||
ap_clause *oapoc = ap->ap_clauses, *papoc = NULL;
|
||||
while (oapoc) {
|
||||
if (oapoc->stv_to_match) {
|
||||
int ooff = StackedVariables::get_offset(oapoc->stv_to_match);
|
||||
if (off < ooff) {
|
||||
if (oapoc == ap->ap_clauses) {
|
||||
apoc->next = ap->ap_clauses;
|
||||
ap->ap_clauses = apoc;
|
||||
papoc = NULL;
|
||||
} else {
|
||||
apoc->next = papoc->next;
|
||||
papoc->next = apoc;
|
||||
papoc = NULL;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
papoc = oapoc;
|
||||
oapoc = oapoc->next;
|
||||
}
|
||||
if (papoc) {
|
||||
apoc->next = NULL;
|
||||
papoc->next = apoc;
|
||||
}
|
||||
}
|
||||
|
||||
if (oid == 20007 /* i.e., going */ ) {
|
||||
switch (off) {
|
||||
case 0: ap->from_spec = apoc->clause_spec;
|
||||
APClauses::set_opt(apoc, ALLOW_REGION_AS_ROOM_APCOPT); break;
|
||||
case 1: ap->to_spec = apoc->clause_spec;
|
||||
APClauses::set_opt(apoc, ALLOW_REGION_AS_ROOM_APCOPT); break;
|
||||
case 2: ap->through_spec = apoc->clause_spec; break;
|
||||
case 3: ap->by_spec = apoc->clause_spec; break;
|
||||
case 4: ap->pushing_spec = apoc->clause_spec; break;
|
||||
}
|
||||
}
|
||||
ap->chief_action_owner_id = oid;
|
||||
}
|
||||
|
||||
int APClauses::ap_count_optional_clauses(action_pattern *ap) {
|
||||
int n = 0;
|
||||
if (ap)
|
||||
for (ap_clause *apoc = ap->ap_clauses; apoc; apoc = apoc->next)
|
||||
if (apoc->stv_to_match)
|
||||
if ((ap->chief_action_owner_id != 20007) ||
|
||||
(StackedVariables::get_offset(apoc->stv_to_match) >= 5))
|
||||
n++;
|
||||
return n;
|
||||
}
|
||||
|
||||
int APClauses::has_stv_clauses(action_pattern *ap) {
|
||||
if ((ap) && (APClauses::nudge_to_stv_apoc(ap->ap_clauses))) return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int APClauses::compare_specificity_of_apoc_list(action_pattern *ap1, action_pattern *ap2) {
|
||||
int rct1 = APClauses::ap_count_optional_clauses(ap1);
|
||||
int rct2 = APClauses::ap_count_optional_clauses(ap2);
|
||||
|
||||
if (rct1 > rct2) return 1;
|
||||
if (rct1 < rct2) return -1;
|
||||
if (rct1 == 0) return 0;
|
||||
if (ap1->chief_action_owner_id != ap2->chief_action_owner_id) return 0;
|
||||
|
||||
ap_clause *apoc1 = APClauses::nudge_to_stv_apoc(ap1->ap_clauses),
|
||||
*apoc2 = APClauses::nudge_to_stv_apoc(ap2->ap_clauses);
|
||||
while ((apoc1) && (apoc2)) {
|
||||
int off1 = StackedVariables::get_offset(apoc1->stv_to_match);
|
||||
int off2 = StackedVariables::get_offset(apoc2->stv_to_match);
|
||||
if (off1 == off2) {
|
||||
int rv = Specifications::compare_specificity(apoc1->clause_spec, apoc2->clause_spec, NULL);
|
||||
if (rv != 0) return rv;
|
||||
apoc1 = APClauses::nudge_to_stv_apoc(apoc1->next);
|
||||
apoc2 = APClauses::nudge_to_stv_apoc(apoc2->next);
|
||||
}
|
||||
if (off1 < off2) apoc1 = APClauses::nudge_to_stv_apoc(apoc1->next);
|
||||
if (off1 > off2) apoc2 = APClauses::nudge_to_stv_apoc(apoc2->next);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
ap_clause *APClauses::nudge_to_stv_apoc(ap_clause *apoc) {
|
||||
while ((apoc) && (apoc->stv_to_match == NULL)) apoc = apoc->next;
|
||||
return apoc;
|
||||
}
|
||||
|
||||
int APClauses::validate(ap_clause *apoc, kind *K) {
|
||||
if ((apoc) &&
|
||||
(APClauses::opt(apoc, DO_NOT_VALIDATE_APCOPT) == FALSE) &&
|
||||
(Dash::validate_parameter(apoc->clause_spec, K) == FALSE))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
|
@ -20,19 +20,6 @@ object instead of an action -- "reaching inside the cabinet". These
|
|||
not-really-action APs are used in no other context, and employ the
|
||||
|parameter_spec| field below, ignoring the rest.
|
||||
|
||||
@e ACTOR_AP_CLAUSE from 1
|
||||
@e NOUN_AP_CLAUSE
|
||||
@e SECOND_AP_CLAUSE
|
||||
@e IN_AP_CLAUSE
|
||||
@e IN_THE_PRESENCE_OF_AP_CLAUSE
|
||||
@e WHEN_AP_CLAUSE
|
||||
@e GOING_FROM_AP_CLAUSE
|
||||
@e GOING_TO_AP_CLAUSE
|
||||
@e GOING_BY_AP_CLAUSE
|
||||
@e GOING_THROUGH_AP_CLAUSE
|
||||
@e PUSHING_AP_CLAUSE
|
||||
@e STV_AP_CLAUSE
|
||||
|
||||
=
|
||||
typedef struct action_pattern {
|
||||
struct wording text_of_pattern; /* text giving rise to this AP */
|
||||
|
@ -41,21 +28,14 @@ typedef struct action_pattern {
|
|||
|
||||
int applies_to_any_actor; /* treat player and other people equally */
|
||||
int request; /* a request from the player for someone to do this? */
|
||||
struct parse_node *actor_spec;
|
||||
struct parse_node *noun_spec;
|
||||
int noun_any;
|
||||
struct parse_node *second_spec;
|
||||
int second_any;
|
||||
struct parse_node *room_spec; /* in... */
|
||||
int room_any;
|
||||
struct parse_node *when; /* when... (any condition here) */
|
||||
|
||||
struct parse_node *from_spec; /* for the "going" action only */
|
||||
struct parse_node *to_spec; /* ditto */
|
||||
struct parse_node *by_spec; /* ditto */
|
||||
struct parse_node *through_spec; /* ditto */
|
||||
struct parse_node *pushing_spec; /* ditto */
|
||||
int nowhere_flag; /* ditto: a flag for "going nowhere" */
|
||||
struct ap_optional_clause *ap_clauses;
|
||||
struct ap_clause *ap_clauses;
|
||||
int chief_action_owner_id; /* stacked variable ID number of main action */
|
||||
struct time_period *duration; /* to hold "for the third time", etc. */
|
||||
|
||||
|
@ -65,31 +45,6 @@ typedef struct action_pattern {
|
|||
int valid; /* recording success or failure in parsing to an AP */
|
||||
} action_pattern;
|
||||
|
||||
@
|
||||
|
||||
@d ALLOW_REGION_AS_ROOM_APCOPT 1
|
||||
|
||||
=
|
||||
typedef struct ap_optional_clause {
|
||||
int clause_ID;
|
||||
struct stacked_variable *stv_to_match;
|
||||
struct parse_node *clause_spec;
|
||||
int clause_options;
|
||||
struct ap_optional_clause *next;
|
||||
CLASS_DEFINITION
|
||||
} ap_optional_clause;
|
||||
|
||||
@ =
|
||||
parse_node *ActionPatterns::get_presence(action_pattern *ap) {
|
||||
ap_optional_clause *apoc = ActionPatterns::find_clause(ap, IN_THE_PRESENCE_OF_AP_CLAUSE, FALSE);
|
||||
return (apoc)?(apoc->clause_spec):NULL;
|
||||
}
|
||||
|
||||
void ActionPatterns::set_presence(action_pattern *ap, parse_node *val) {
|
||||
ap_optional_clause *apoc = ActionPatterns::find_clause(ap, IN_THE_PRESENCE_OF_AP_CLAUSE, TRUE);
|
||||
apoc->clause_spec = val;
|
||||
}
|
||||
|
||||
@ When we parse action patterns, we record why they fail, in order to make
|
||||
it easier to produce helpful error messages. (We can't simply fire off
|
||||
errors at the time they occur, because text is often parsed in several
|
||||
|
@ -121,13 +76,9 @@ action_pattern ActionPatterns::new(void) {
|
|||
action_pattern ap;
|
||||
ap.text_of_pattern = EMPTY_WORDING;
|
||||
ap.action_list = NULL;
|
||||
ap.actor_spec = NULL;
|
||||
ap.noun_spec = NULL; ap.second_spec = NULL; ap.room_spec = NULL;
|
||||
ap.noun_any = FALSE; ap.second_any = FALSE; ap.room_any = FALSE;
|
||||
ap.parameter_spec = NULL;
|
||||
ap.parameter_kind = K_object;
|
||||
ap.valid = FALSE;
|
||||
ap.when = NULL;
|
||||
ap.from_spec = NULL;
|
||||
ap.to_spec = NULL;
|
||||
ap.by_spec = NULL;
|
||||
|
@ -142,142 +93,6 @@ action_pattern ActionPatterns::new(void) {
|
|||
return ap;
|
||||
}
|
||||
|
||||
ap_optional_clause *ActionPatterns::find_clause(action_pattern *ap, int clause, int make) {
|
||||
if (ap) {
|
||||
ap_optional_clause *last = NULL;
|
||||
for (ap_optional_clause *apoc = ap->ap_clauses; apoc; apoc = apoc->next) {
|
||||
if (apoc->clause_ID == clause)
|
||||
return apoc;
|
||||
last = apoc;
|
||||
}
|
||||
if (make) {
|
||||
ap_optional_clause *new_apoc = ActionPatterns::apoc_new(clause, NULL, NULL);
|
||||
if (last == NULL) ap->ap_clauses = new_apoc;
|
||||
else last->next = new_apoc;
|
||||
return new_apoc;
|
||||
}
|
||||
} else {
|
||||
if (make) internal_error("cannot make clause in null AP");
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ap_optional_clause *ActionPatterns::find_stv(action_pattern *ap, stacked_variable *stv) {
|
||||
if (ap)
|
||||
for (ap_optional_clause *apoc = ap->ap_clauses; apoc; apoc = apoc->next)
|
||||
if (apoc->stv_to_match == stv)
|
||||
return apoc;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ap_optional_clause *ActionPatterns::apoc_new(int clause, stacked_variable *stv, parse_node *spec) {
|
||||
ap_optional_clause *apoc = CREATE(ap_optional_clause);
|
||||
apoc->clause_ID = clause;
|
||||
apoc->stv_to_match = stv;
|
||||
apoc->clause_spec = spec;
|
||||
apoc->next = NULL;
|
||||
apoc->clause_options = FALSE;
|
||||
return apoc;
|
||||
}
|
||||
|
||||
void ActionPatterns::ap_add_optional_clause(action_pattern *ap, stacked_variable *stv,
|
||||
wording W) {
|
||||
if (stv == NULL) internal_error("no stacked variable for apoc");
|
||||
ap_optional_clause *apoc = ActionPatterns::apoc_new(STV_AP_CLAUSE, stv,
|
||||
ParseActionPatterns::verified_action_parameter(W));
|
||||
int oid = StackedVariables::get_owner_id(apoc->stv_to_match);
|
||||
int off = StackedVariables::get_offset(apoc->stv_to_match);
|
||||
if (ap->ap_clauses == NULL) {
|
||||
ap->ap_clauses = apoc;
|
||||
apoc->next = NULL;
|
||||
} else {
|
||||
ap_optional_clause *oapoc = ap->ap_clauses, *papoc = NULL;
|
||||
while (oapoc) {
|
||||
if (oapoc->stv_to_match) {
|
||||
int ooff = StackedVariables::get_offset(oapoc->stv_to_match);
|
||||
if (off < ooff) {
|
||||
if (oapoc == ap->ap_clauses) {
|
||||
apoc->next = ap->ap_clauses;
|
||||
ap->ap_clauses = apoc;
|
||||
papoc = NULL;
|
||||
} else {
|
||||
apoc->next = papoc->next;
|
||||
papoc->next = apoc;
|
||||
papoc = NULL;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
papoc = oapoc;
|
||||
oapoc = oapoc->next;
|
||||
}
|
||||
if (papoc) {
|
||||
apoc->next = NULL;
|
||||
papoc->next = apoc;
|
||||
}
|
||||
}
|
||||
|
||||
if (oid == 20007 /* i.e., going */ ) {
|
||||
switch (off) {
|
||||
case 0: ap->from_spec = apoc->clause_spec;
|
||||
apoc->clause_options |= ALLOW_REGION_AS_ROOM_APCOPT; break;
|
||||
case 1: ap->to_spec = apoc->clause_spec;
|
||||
apoc->clause_options |= ALLOW_REGION_AS_ROOM_APCOPT; break;
|
||||
case 2: ap->through_spec = apoc->clause_spec; break;
|
||||
case 3: ap->by_spec = apoc->clause_spec; break;
|
||||
case 4: ap->pushing_spec = apoc->clause_spec; break;
|
||||
}
|
||||
}
|
||||
ap->chief_action_owner_id = oid;
|
||||
}
|
||||
|
||||
int ActionPatterns::ap_count_optional_clauses(action_pattern *ap) {
|
||||
int n = 0;
|
||||
if (ap)
|
||||
for (ap_optional_clause *apoc = ap->ap_clauses; apoc; apoc = apoc->next)
|
||||
if (apoc->stv_to_match)
|
||||
if ((ap->chief_action_owner_id != 20007) ||
|
||||
(StackedVariables::get_offset(apoc->stv_to_match) >= 5))
|
||||
n++;
|
||||
return n;
|
||||
}
|
||||
|
||||
int ActionPatterns::has_stv_clauses(action_pattern *ap) {
|
||||
if ((ap) && (ActionPatterns::nudge_to_stv_apoc(ap->ap_clauses))) return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int ActionPatterns::compare_specificity_of_apoc_list(action_pattern *ap1, action_pattern *ap2) {
|
||||
int rct1 = ActionPatterns::ap_count_optional_clauses(ap1);
|
||||
int rct2 = ActionPatterns::ap_count_optional_clauses(ap2);
|
||||
|
||||
if (rct1 > rct2) return 1;
|
||||
if (rct1 < rct2) return -1;
|
||||
if (rct1 == 0) return 0;
|
||||
if (ap1->chief_action_owner_id != ap2->chief_action_owner_id) return 0;
|
||||
|
||||
ap_optional_clause *apoc1 = ActionPatterns::nudge_to_stv_apoc(ap1->ap_clauses),
|
||||
*apoc2 = ActionPatterns::nudge_to_stv_apoc(ap2->ap_clauses);
|
||||
while ((apoc1) && (apoc2)) {
|
||||
int off1 = StackedVariables::get_offset(apoc1->stv_to_match);
|
||||
int off2 = StackedVariables::get_offset(apoc2->stv_to_match);
|
||||
if (off1 == off2) {
|
||||
int rv = Specifications::compare_specificity(apoc1->clause_spec, apoc2->clause_spec, NULL);
|
||||
if (rv != 0) return rv;
|
||||
apoc1 = ActionPatterns::nudge_to_stv_apoc(apoc1->next);
|
||||
apoc2 = ActionPatterns::nudge_to_stv_apoc(apoc2->next);
|
||||
}
|
||||
if (off1 < off2) apoc1 = ActionPatterns::nudge_to_stv_apoc(apoc1->next);
|
||||
if (off1 > off2) apoc2 = ActionPatterns::nudge_to_stv_apoc(apoc2->next);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
ap_optional_clause *ActionPatterns::nudge_to_stv_apoc(ap_optional_clause *apoc) {
|
||||
while ((apoc) && (apoc->stv_to_match == NULL)) apoc = apoc->next;
|
||||
return apoc;
|
||||
}
|
||||
|
||||
void ActionPatterns::log(action_pattern *ap) {
|
||||
if (ap == NULL) LOG(" [Null]");
|
||||
else {
|
||||
|
@ -286,18 +101,18 @@ void ActionPatterns::log(action_pattern *ap) {
|
|||
LOG(" Action: ");
|
||||
if (ap->action_list == NULL) LOG("unspecified");
|
||||
else ActionNameLists::log_briefly(ap->action_list);
|
||||
if (ap->noun_spec) LOG(" Noun: $P", ap->noun_spec);
|
||||
if (ap->second_spec) LOG(" Second: $P", ap->second_spec);
|
||||
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 (ap->from_spec) LOG(" From: $P", ap->from_spec);
|
||||
if (ap->to_spec) LOG(" To: $P", ap->to_spec);
|
||||
if (ap->by_spec) LOG(" By: $P", ap->by_spec);
|
||||
if (ap->through_spec) LOG(" Through: $P", ap->through_spec);
|
||||
if (ap->pushing_spec) LOG(" Pushing: $P", ap->pushing_spec);
|
||||
if (ap->room_spec) LOG(" Room: $P", ap->room_spec);
|
||||
if (APClauses::get_room(ap)) LOG(" Room: $P", APClauses::get_room(ap));
|
||||
if (ap->parameter_spec) LOG(" Parameter: $P", ap->parameter_spec);
|
||||
if (ActionPatterns::get_presence(ap)) LOG(" Presence: $P", ActionPatterns::get_presence(ap));
|
||||
if (APClauses::get_presence(ap)) LOG(" Presence: $P", APClauses::get_presence(ap));
|
||||
if (ap->nowhere_flag) LOG(" Nowhere ");
|
||||
if (ap->when) LOG(" When: $P ", ap->when);
|
||||
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");
|
||||
|
@ -310,18 +125,18 @@ void ActionPatterns::write(OUTPUT_STREAM, action_pattern *ap) {
|
|||
WRITE("<action: ");
|
||||
if (ap->action_list == NULL) WRITE("unspecified");
|
||||
else ActionNameLists::log_briefly(ap->action_list);
|
||||
if (ap->noun_spec) WRITE(" noun: %P", ap->noun_spec);
|
||||
if (ap->second_spec) WRITE(" second: %P", ap->second_spec);
|
||||
if (APClauses::get_noun(ap)) WRITE(" noun: %P", APClauses::get_noun(ap));
|
||||
if (APClauses::get_second(ap)) WRITE(" second: %P", APClauses::get_second(ap));
|
||||
if (ap->from_spec) WRITE(" from: %P", ap->from_spec);
|
||||
if (ap->to_spec) WRITE(" to: %P", ap->to_spec);
|
||||
if (ap->by_spec) WRITE(" by: %P", ap->by_spec);
|
||||
if (ap->through_spec) WRITE(" through: %P", ap->through_spec);
|
||||
if (ap->pushing_spec) WRITE(" pushing: %P", ap->pushing_spec);
|
||||
if (ap->room_spec) WRITE(" room: %P", ap->room_spec);
|
||||
if (APClauses::get_room(ap)) WRITE(" room: %P", APClauses::get_room(ap));
|
||||
if (ap->parameter_spec) WRITE(" parameter: %P", ap->parameter_spec);
|
||||
if (ActionPatterns::get_presence(ap)) WRITE(" presence: %P", ActionPatterns::get_presence(ap));
|
||||
if (APClauses::get_presence(ap)) WRITE(" presence: %P", APClauses::get_presence(ap));
|
||||
if (ap->nowhere_flag) WRITE(" nowhere");
|
||||
if (ap->when) WRITE(" when: %P", ap->when);
|
||||
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); }
|
||||
WRITE(">");
|
||||
}
|
||||
|
@ -374,13 +189,13 @@ int ActionPatterns::object_based(action_pattern *ap) {
|
|||
int ActionPatterns::is_unspecific(action_pattern *ap) {
|
||||
action_name *an = ActionPatterns::required_action(ap);
|
||||
if (an == NULL) return TRUE;
|
||||
if ((ActionSemantics::must_have_noun(an)) && (ap->noun_spec == NULL)) return TRUE;
|
||||
if ((ActionSemantics::must_have_second(an)) && (ap->second_spec == NULL)) return TRUE;
|
||||
if ((ActionSemantics::must_have_noun(an)) && (APClauses::get_noun(ap) == NULL)) return TRUE;
|
||||
if ((ActionSemantics::must_have_second(an)) && (APClauses::get_second(ap) == NULL)) return TRUE;
|
||||
if ((ActionSemantics::can_have_noun(an)) &&
|
||||
(ActionPatterns::ap_clause_is_unspecific(ap->noun_spec))) return TRUE;
|
||||
(ActionPatterns::ap_clause_is_unspecific(APClauses::get_noun(ap)))) return TRUE;
|
||||
if ((ActionSemantics::can_have_second(an)) &&
|
||||
(ActionPatterns::ap_clause_is_unspecific(ap->second_spec))) return TRUE;
|
||||
if (ActionPatterns::ap_clause_is_unspecific(ap->actor_spec)) return TRUE;
|
||||
(ActionPatterns::ap_clause_is_unspecific(APClauses::get_second(ap)))) return TRUE;
|
||||
if (ActionPatterns::ap_clause_is_unspecific(APClauses::get_actor(ap))) return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -391,10 +206,10 @@ int ActionPatterns::ap_clause_is_unspecific(parse_node *spec) {
|
|||
}
|
||||
|
||||
int ActionPatterns::is_overspecific(action_pattern *ap) {
|
||||
if (ap->when != NULL) return TRUE;
|
||||
if (ap->room_spec != NULL) return TRUE;
|
||||
if (ActionPatterns::get_presence(ap) != NULL) return TRUE;
|
||||
if (ActionPatterns::has_stv_clauses(ap)) return TRUE;
|
||||
if (APClauses::get_val(ap, WHEN_AP_CLAUSE) != NULL) return TRUE;
|
||||
if (APClauses::get_room(ap) != NULL) return TRUE;
|
||||
if (APClauses::get_presence(ap) != NULL) return TRUE;
|
||||
if (APClauses::has_stv_clauses(ap)) return TRUE;
|
||||
if (ap->nowhere_flag) return TRUE;
|
||||
if (ap->applies_to_any_actor) return TRUE;
|
||||
if (ap->duration) return TRUE;
|
||||
|
@ -420,7 +235,7 @@ void ActionPatterns::categorise_as(action_pattern *ap, wording W) {
|
|||
return;
|
||||
}
|
||||
|
||||
if (ap->actor_spec) {
|
||||
if (APClauses::get_actor(ap)) {
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_NamedAPWithActor),
|
||||
"behaviour characterised by named action patterns can only specify the action",
|
||||
"not the actor: as a result, it cannot include requests to other people to "
|
||||
|
@ -484,7 +299,7 @@ used in sorting algorithms.
|
|||
=
|
||||
int ActionPatterns::ap_count_rooms(action_pattern *ap) {
|
||||
int c = 0;
|
||||
if (ap->room_spec) c += 2;
|
||||
if (APClauses::get_room(ap)) c += 2;
|
||||
if (ap->from_spec) c += 2;
|
||||
if (ap->to_spec) c += 2;
|
||||
return c;
|
||||
|
@ -505,17 +320,17 @@ int ActionPatterns::count_aspects(action_pattern *ap) {
|
|||
(ap->by_spec) ||
|
||||
(ap->through_spec))
|
||||
c++;
|
||||
if ((ap->room_spec) ||
|
||||
if ((APClauses::get_room(ap)) ||
|
||||
(ap->from_spec) ||
|
||||
(ap->to_spec))
|
||||
c++;
|
||||
if ((ap->nowhere_flag) ||
|
||||
(ap->noun_spec) ||
|
||||
(ap->second_spec) ||
|
||||
(ap->actor_spec))
|
||||
(APClauses::get_noun(ap)) ||
|
||||
(APClauses::get_second(ap)) ||
|
||||
(APClauses::get_actor(ap)))
|
||||
c++;
|
||||
if (ActionPatterns::get_presence(ap)) c++;
|
||||
if ((ap->duration) || (ap->when)) c++;
|
||||
if (APClauses::get_presence(ap)) c++;
|
||||
if ((ap->duration) || (APClauses::get_val(ap, WHEN_AP_CLAUSE))) c++;
|
||||
if (ap->parameter_spec) c++;
|
||||
return c;
|
||||
}
|
||||
|
@ -559,16 +374,16 @@ int ActionPatterns::compare_specificity(action_pattern *ap1, action_pattern *ap2
|
|||
if (rct1 > rct2) return 1;
|
||||
if (rct1 < rct2) return -1;
|
||||
|
||||
if ((ap1->from_spec) && (ap1->room_spec == NULL)
|
||||
&& (ap2->room_spec) && (ap2->from_spec == NULL)) {
|
||||
rv = Specifications::compare_specificity(ap1->from_spec, ap2->room_spec, NULL);
|
||||
if ((ap1->from_spec) && (APClauses::get_room(ap1) == NULL)
|
||||
&& (APClauses::get_room(ap2)) && (ap2->from_spec == NULL)) {
|
||||
rv = Specifications::compare_specificity(ap1->from_spec, APClauses::get_room(ap2), NULL);
|
||||
if (rv != 0) return rv;
|
||||
suspend_usual_from_and_room = TRUE;
|
||||
}
|
||||
|
||||
if ((ap2->from_spec) && (ap2->room_spec == NULL)
|
||||
&& (ap1->room_spec) && (ap1->from_spec == NULL)) {
|
||||
rv = Specifications::compare_specificity(ap1->room_spec, ap2->from_spec, NULL);
|
||||
if ((ap2->from_spec) && (APClauses::get_room(ap2) == NULL)
|
||||
&& (APClauses::get_room(ap1)) && (ap1->from_spec == NULL)) {
|
||||
rv = Specifications::compare_specificity(APClauses::get_room(ap1), ap2->from_spec, NULL);
|
||||
if (rv != 0) return rv;
|
||||
suspend_usual_from_and_room = TRUE;
|
||||
}
|
||||
|
@ -579,7 +394,7 @@ int ActionPatterns::compare_specificity(action_pattern *ap1, action_pattern *ap2
|
|||
}
|
||||
|
||||
if (suspend_usual_from_and_room == FALSE) {
|
||||
rv = Specifications::compare_specificity(ap1->room_spec, ap2->room_spec, NULL);
|
||||
rv = Specifications::compare_specificity(APClauses::get_room(ap1), APClauses::get_room(ap2), NULL);
|
||||
if (rv != 0) return rv;
|
||||
}
|
||||
|
||||
|
@ -588,22 +403,22 @@ int ActionPatterns::compare_specificity(action_pattern *ap1, action_pattern *ap2
|
|||
|
||||
c_s_stage_law = I"III.2.3 - Action/Where/In The Presence Of";
|
||||
|
||||
rv = Specifications::compare_specificity(ActionPatterns::get_presence(ap1), ActionPatterns::get_presence(ap2), NULL);
|
||||
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 = ActionPatterns::compare_specificity_of_apoc_list(ap1, ap2);
|
||||
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(ap1->second_spec, ap2->second_spec, NULL);
|
||||
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(ap1->noun_spec, ap2->noun_spec, NULL);
|
||||
rv = Specifications::compare_specificity(APClauses::get_noun(ap1), APClauses::get_noun(ap2), NULL);
|
||||
if (rv != 0) return rv;
|
||||
|
||||
if ((ap1->nowhere_flag) && (ap2->nowhere_flag == FALSE)) return -1;
|
||||
|
@ -611,7 +426,7 @@ int ActionPatterns::compare_specificity(action_pattern *ap1, action_pattern *ap2
|
|||
|
||||
c_s_stage_law = I"III.3.3 - Action/What/Actor Performing Action";
|
||||
|
||||
rv = Specifications::compare_specificity(ap1->actor_spec, ap2->actor_spec, NULL);
|
||||
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";
|
||||
|
@ -626,7 +441,7 @@ int ActionPatterns::compare_specificity(action_pattern *ap1, action_pattern *ap2
|
|||
|
||||
c_s_stage_law = I"III.5.2 - Action/When/Circumstances";
|
||||
|
||||
rv = Conditions::compare_specificity_of_CONDITIONs(ap1->when, ap2->when);
|
||||
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";
|
||||
|
@ -655,9 +470,18 @@ void ActionPatterns::put_action_object_into_ap(action_pattern *ap, int pos, word
|
|||
Node::set_text(spec, W);
|
||||
LOGIF(ACTION_PATTERN_PARSING, "PAOIA (position %d) %W = $P\n", pos, W, spec);
|
||||
switch(pos) {
|
||||
case 1: ap->noun_spec = spec; ap->noun_any = any_flag; break;
|
||||
case 2: ap->second_spec = spec; ap->second_any = any_flag; break;
|
||||
case 3: ap->room_spec = spec; ap->room_any = any_flag; break;
|
||||
case 1: APClauses::set_val(ap, NOUN_AP_CLAUSE, spec);
|
||||
if (any_flag) APClauses::set_opt(APClauses::clause(ap, NOUN_AP_CLAUSE), DO_NOT_VALIDATE_APCOPT);
|
||||
else APClauses::clear_opt(APClauses::clause(ap, NOUN_AP_CLAUSE), DO_NOT_VALIDATE_APCOPT);
|
||||
break;
|
||||
case 2: APClauses::set_val(ap, SECOND_AP_CLAUSE, spec);
|
||||
if (any_flag) APClauses::set_opt(APClauses::clause(ap, SECOND_AP_CLAUSE), DO_NOT_VALIDATE_APCOPT);
|
||||
else APClauses::clear_opt(APClauses::clause(ap, SECOND_AP_CLAUSE), DO_NOT_VALIDATE_APCOPT);
|
||||
break;
|
||||
case 3: APClauses::set_val(ap, IN_AP_CLAUSE, spec);
|
||||
if (any_flag) APClauses::set_opt(APClauses::clause(ap, IN_AP_CLAUSE), DO_NOT_VALIDATE_APCOPT);
|
||||
else APClauses::clear_opt(APClauses::clause(ap, IN_AP_CLAUSE), DO_NOT_VALIDATE_APCOPT);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -681,12 +505,12 @@ int ActionPatterns::pta_acceptable(parse_node *spec) {
|
|||
}
|
||||
|
||||
int ActionPatterns::makes_callings(action_pattern *ap) {
|
||||
if (Descriptions::makes_callings(ap->noun_spec)) return TRUE;
|
||||
if (Descriptions::makes_callings(ap->second_spec)) return TRUE;
|
||||
if (Descriptions::makes_callings(ap->actor_spec)) return TRUE;
|
||||
if (Descriptions::makes_callings(ap->room_spec)) return TRUE;
|
||||
if (Descriptions::makes_callings(APClauses::get_noun(ap))) return TRUE;
|
||||
if (Descriptions::makes_callings(APClauses::get_second(ap))) return TRUE;
|
||||
if (Descriptions::makes_callings(APClauses::get_actor(ap))) return TRUE;
|
||||
if (Descriptions::makes_callings(APClauses::get_room(ap))) return TRUE;
|
||||
if (Descriptions::makes_callings(ap->parameter_spec)) return TRUE;
|
||||
if (Descriptions::makes_callings(ActionPatterns::get_presence(ap))) return TRUE;
|
||||
if (Descriptions::makes_callings(APClauses::get_presence(ap))) return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
|
@ -107,8 +107,8 @@ These are always present tense, and can't be negated.
|
|||
|
||||
=
|
||||
<action-pattern> ::=
|
||||
asking <action-parameter> to try <action-pattern-core> | ==> { ACTOR_REQUESTED, RP[2] }; action_pattern *ap = *XP; ap->request = TRUE; ap->actor_spec = RP[1];
|
||||
<action-parameter> trying <action-pattern-core> | ==> { ACTOR_NAMED, RP[2] }; ap = *XP; ap->request = FALSE; ap->actor_spec = RP[1];
|
||||
asking <action-parameter> to try <action-pattern-core> | ==> { ACTOR_REQUESTED, RP[2] }; action_pattern *ap = *XP; ap->request = TRUE; APClauses::set_actor(ap, RP[1]);
|
||||
<action-parameter> trying <action-pattern-core> | ==> { ACTOR_NAMED, RP[2] }; ap = *XP; ap->request = FALSE; APClauses::set_actor(ap, RP[1]);
|
||||
an actor trying <action-pattern-core> | ==> { ACTOR_EXPLICITLY_UNIVERSAL, RP[1] }; ap = *XP; ap->applies_to_any_actor = TRUE;
|
||||
an actor <action-pattern-core> | ==> { ACTOR_EXPLICITLY_UNIVERSAL, RP[1] }; ap = *XP; ap->applies_to_any_actor = TRUE;
|
||||
trying <action-pattern-core> | ==> { ACTOR_EXPLICITLY_PLAYER, RP[1] };
|
||||
|
@ -121,9 +121,9 @@ four combinations:
|
|||
|
||||
=
|
||||
<we-are-action-pattern> ::=
|
||||
we are asking <action-parameter> to try <action-pattern-core> | ==> { ACTOR_REQUESTED, RP[2] }; action_pattern *ap = *XP; ap->request = TRUE; ap->actor_spec = RP[1];
|
||||
asking <action-parameter> to try <action-pattern-core> | ==> { ACTOR_REQUESTED, RP[2] }; ap = *XP; ap->request = TRUE; ap->actor_spec = RP[1];
|
||||
<action-parameter> trying <action-pattern-core> | ==> { ACTOR_NAMED, RP[2] }; ap = *XP; ap->request = FALSE; ap->actor_spec = RP[1];
|
||||
we are asking <action-parameter> to try <action-pattern-core> | ==> { ACTOR_REQUESTED, RP[2] }; action_pattern *ap = *XP; ap->request = TRUE; APClauses::set_actor(ap, RP[1]);
|
||||
asking <action-parameter> to try <action-pattern-core> | ==> { ACTOR_REQUESTED, RP[2] }; ap = *XP; ap->request = TRUE; APClauses::set_actor(ap, RP[1]);
|
||||
<action-parameter> trying <action-pattern-core> | ==> { ACTOR_NAMED, RP[2] }; ap = *XP; ap->request = FALSE; APClauses::set_actor(ap, RP[1]);
|
||||
an actor trying <action-pattern-core> | ==> { ACTOR_EXPLICITLY_UNIVERSAL, RP[1] }; ap = *XP; ap->applies_to_any_actor = TRUE;
|
||||
an actor <action-pattern-core> | ==> { ACTOR_EXPLICITLY_UNIVERSAL, RP[1] }; ap = *XP; ap->applies_to_any_actor = TRUE;
|
||||
we are trying <action-pattern-core> | ==> { ACTOR_EXPLICITLY_PLAYER, RP[1] };
|
||||
|
@ -132,9 +132,9 @@ four combinations:
|
|||
<action-pattern-core-actor> ==> { ACTOR_IMPLICITLY_PLAYER, RP[1] };
|
||||
|
||||
<action-pattern-negated> ::=
|
||||
we are not asking <action-parameter> to try <action-pattern-core> | ==> { ACTOR_REQUESTED, RP[2] }; action_pattern *ap = *XP; ap->request = TRUE; ap->actor_spec = RP[1];
|
||||
not asking <action-parameter> to try <action-pattern-core> | ==> { ACTOR_REQUESTED, RP[2] }; ap = *XP; ap->request = TRUE; ap->actor_spec = RP[1];
|
||||
<action-parameter> not trying <action-pattern-core> | ==> { ACTOR_NAMED, RP[2] }; ap = *XP; ap->request = FALSE; ap->actor_spec = RP[1];
|
||||
we are not asking <action-parameter> to try <action-pattern-core> | ==> { ACTOR_REQUESTED, RP[2] }; action_pattern *ap = *XP; ap->request = TRUE; APClauses::set_actor(ap, RP[1]);
|
||||
not asking <action-parameter> to try <action-pattern-core> | ==> { ACTOR_REQUESTED, RP[2] }; ap = *XP; ap->request = TRUE; APClauses::set_actor(ap, RP[1]);
|
||||
<action-parameter> not trying <action-pattern-core> | ==> { ACTOR_NAMED, RP[2] }; ap = *XP; ap->request = FALSE; APClauses::set_actor(ap, RP[1]);
|
||||
an actor not trying <action-pattern-core> | ==> { ACTOR_EXPLICITLY_UNIVERSAL, RP[1] }; ap = *XP; ap->applies_to_any_actor = TRUE;
|
||||
an actor not <action-pattern-core> | ==> { ACTOR_EXPLICITLY_UNIVERSAL, RP[1] }; ap = *XP; ap->applies_to_any_actor = TRUE;
|
||||
we are not trying <action-pattern-core> | ==> { ACTOR_EXPLICITLY_PLAYER, RP[1] };
|
||||
|
@ -143,16 +143,16 @@ four combinations:
|
|||
not <action-pattern-core-actor> ==> { ACTOR_IMPLICITLY_PLAYER, RP[1] };
|
||||
|
||||
<action-pattern-past> ::=
|
||||
we have asked <action-parameter> to try <action-pattern-core> | ==> { ACTOR_REQUESTED, RP[2] }; action_pattern *ap = *XP; ap->request = TRUE; ap->actor_spec = RP[1];
|
||||
<action-parameter> has tried <action-pattern-core> | ==> { ACTOR_NAMED, RP[2] }; ap = *XP; ap->request = FALSE; ap->actor_spec = RP[1];
|
||||
we have asked <action-parameter> to try <action-pattern-core> | ==> { ACTOR_REQUESTED, RP[2] }; action_pattern *ap = *XP; ap->request = TRUE; APClauses::set_actor(ap, RP[1]);
|
||||
<action-parameter> has tried <action-pattern-core> | ==> { ACTOR_NAMED, RP[2] }; ap = *XP; ap->request = FALSE; APClauses::set_actor(ap, RP[1]);
|
||||
an actor has tried <action-pattern-core> | ==> { ACTOR_EXPLICITLY_UNIVERSAL, RP[1] }; ap = *XP; ap->applies_to_any_actor = TRUE;
|
||||
an actor has <action-pattern-past-core> | ==> { ACTOR_EXPLICITLY_UNIVERSAL, RP[1] }; ap = *XP; ap->applies_to_any_actor = TRUE;
|
||||
we have tried <action-pattern-core> | ==> { ACTOR_EXPLICITLY_PLAYER, RP[1] };
|
||||
we have <action-pattern-past-core> ==> { ACTOR_EXPLICITLY_PLAYER, RP[1] };
|
||||
|
||||
<action-pattern-past-negated> ::=
|
||||
we have not asked <action-parameter> to try <action-pattern-core> | ==> { ACTOR_REQUESTED, RP[2] }; action_pattern *ap = *XP; ap->request = TRUE; ap->actor_spec = RP[1];
|
||||
<action-parameter> has not tried <action-pattern-core> | ==> { ACTOR_NAMED, RP[2] }; ap = *XP; ap->request = FALSE; ap->actor_spec = RP[1];
|
||||
we have not asked <action-parameter> to try <action-pattern-core> | ==> { ACTOR_REQUESTED, RP[2] }; action_pattern *ap = *XP; ap->request = TRUE; APClauses::set_actor(ap, RP[1]);
|
||||
<action-parameter> has not tried <action-pattern-core> | ==> { ACTOR_NAMED, RP[2] }; ap = *XP; ap->request = FALSE; APClauses::set_actor(ap, RP[1]);
|
||||
an actor has not tried <action-pattern-core> | ==> { ACTOR_EXPLICITLY_UNIVERSAL, RP[1] }; ap = *XP; ap->applies_to_any_actor = TRUE;
|
||||
an actor has not <action-pattern-past-core> | ==> { ACTOR_EXPLICITLY_UNIVERSAL, RP[1] }; ap = *XP; ap->applies_to_any_actor = TRUE;
|
||||
we have not tried <action-pattern-core> | ==> { ACTOR_EXPLICITLY_PLAYER, RP[1] };
|
||||
|
@ -173,7 +173,7 @@ actorless possibility can always be written.
|
|||
=
|
||||
<action-pattern-core-actor> ::=
|
||||
<action-pattern-core> | ==> { ACTOR_IMPLICITLY_PLAYER, RP[1] };
|
||||
<actor-description> <action-pattern-core> ==> { ACTOR_NAMED, RP[2] }; action_pattern *ap = *XP; ap->request = FALSE; ap->actor_spec = RP[1];
|
||||
<actor-description> <action-pattern-core> ==> { ACTOR_NAMED, RP[2] }; action_pattern *ap = *XP; ap->request = FALSE; APClauses::set_actor(ap, RP[1]);
|
||||
|
||||
@ And this voracious token matches the actor's name as an initial excerpt,
|
||||
which is much faster than exhaustive searching. It tries to break just before
|
||||
|
@ -331,7 +331,7 @@ a condition attached with "when":
|
|||
|
||||
=
|
||||
<ap-common-core> ::=
|
||||
<ap-common-core-inner> when/while <condition-in-ap> | ==> { 0, RP[1] }; action_pattern *ap = *XP; ap->when = RP[2]; if (pap_failure_reason == MISC_PAPF) pap_failure_reason = WHENOKAY_PAPF;
|
||||
<ap-common-core-inner> when/while <condition-in-ap> | ==> { 0, RP[1] }; action_pattern *ap = *XP; APClauses::set_val(ap, WHEN_AP_CLAUSE, RP[2]); if (pap_failure_reason == MISC_PAPF) pap_failure_reason = WHENOKAY_PAPF;
|
||||
<ap-common-core-inner> | ==> { 0, RP[1] };
|
||||
... when/while <condition-in-ap> | ==> { 0, NULL }; pap_failure_reason = WHENOKAY_PAPF; return FALSE; /* used only to diagnose problems */
|
||||
... when/while ... ==> { 0, NULL }; if (pap_failure_reason != WHENOKAY_PAPF) pap_failure_reason = WHEN_PAPF; return FALSE; /* used only to diagnose problems */
|
||||
|
@ -368,7 +368,7 @@ to enable Inform to set up a stack frame if there isn't one already, and so on.
|
|||
|
||||
=
|
||||
<ap-common-core-inner> ::=
|
||||
<ap-common-core-inner-inner> in the presence of <action-parameter> | ==> { 0, RP[1] }; ActionPatterns::set_presence(RP[1], RP[2]);
|
||||
<ap-common-core-inner-inner> in the presence of <action-parameter> | ==> { 0, RP[1] }; APClauses::set_presence(RP[1], RP[2]);
|
||||
<ap-common-core-inner-inner> ==> { 0, RP[1] };
|
||||
|
||||
@ Level 5 now. The initial "in" clause, e.g., "in the Pantry", requires
|
||||
|
@ -388,7 +388,7 @@ is valid as an AP, but this enables many natural-looking rules to be written
|
|||
}
|
||||
action_pattern ap = ActionPatterns::new();
|
||||
ap.valid = TRUE; ap.text_of_pattern = W;
|
||||
ap.room_spec = RP[1];
|
||||
APClauses::set_room(&ap, RP[1]);
|
||||
==> { 0, ActionPatterns::ap_store(ap) };
|
||||
|
||||
@ And that's as far down as we go: to level 6. Most of the complexity is gone
|
||||
|
@ -491,10 +491,10 @@ action_pattern ParseActionPatterns::dash(wording W) {
|
|||
ap.action_list = NULL;
|
||||
ap.valid = TRUE;
|
||||
|
||||
ap.actor_spec = ActionPatterns::nullify_nonspecific_references(ap.actor_spec);
|
||||
ap.noun_spec = ActionPatterns::nullify_nonspecific_references(ap.noun_spec);
|
||||
ap.second_spec = ActionPatterns::nullify_nonspecific_references(ap.second_spec);
|
||||
ap.room_spec = ActionPatterns::nullify_nonspecific_references(ap.room_spec);
|
||||
APClauses::set_actor(&ap, ActionPatterns::nullify_nonspecific_references(APClauses::get_actor(&ap)));
|
||||
APClauses::set_noun(&ap, ActionPatterns::nullify_nonspecific_references(APClauses::get_noun(&ap)));
|
||||
APClauses::set_second(&ap, ActionPatterns::nullify_nonspecific_references(APClauses::get_second(&ap)));
|
||||
APClauses::nullify_nonspecific(&ap, IN_AP_CLAUSE);
|
||||
|
||||
int ch = PluginCalls::check_going(ap.from_spec, ap.to_spec, ap.by_spec, ap.through_spec, ap.pushing_spec);
|
||||
if (ch == FALSE) ap.valid = FALSE;
|
||||
|
@ -532,14 +532,14 @@ away as they are recorded.
|
|||
LOGIF(ACTION_PATTERN_PARSING,
|
||||
"Special clauses found on <%W>\n", Wordings::from(W, i));
|
||||
if (last_stv_specified == NULL) j = i-1;
|
||||
else ActionPatterns::ap_add_optional_clause(&ap, last_stv_specified, Wordings::new(k, i-1));
|
||||
else APClauses::ap_add_optional_clause(&ap, last_stv_specified, Wordings::new(k, i-1));
|
||||
k = i+1;
|
||||
last_stv_specified = stv;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
if (last_stv_specified != NULL)
|
||||
ActionPatterns::ap_add_optional_clause(&ap, last_stv_specified, Wordings::new(k, Wordings::last_wn(W)));
|
||||
APClauses::ap_add_optional_clause(&ap, last_stv_specified, Wordings::new(k, Wordings::last_wn(W)));
|
||||
if (j >= 0) W = Wordings::up_to(W, j);
|
||||
}
|
||||
|
||||
|
@ -586,8 +586,10 @@ crucial word position except for the one matched.
|
|||
@<Check the validity of this speculative AP@>;
|
||||
if ((trial_ap.valid) && (one_was_valid == FALSE) && (ActionNameLists::word_position(entry) == first_position)) {
|
||||
one_was_valid = TRUE;
|
||||
ap.noun_spec = trial_ap.noun_spec; ap.second_spec = trial_ap.second_spec;
|
||||
ap.room_spec = trial_ap.room_spec; ap.nowhere_flag = trial_ap.nowhere_flag;
|
||||
APClauses::set_noun(&ap, APClauses::get_noun(&trial_ap));
|
||||
APClauses::set_second(&ap, APClauses::get_second(&trial_ap));
|
||||
APClauses::set_room(&ap, APClauses::get_room(&trial_ap));
|
||||
ap.nowhere_flag = trial_ap.nowhere_flag;
|
||||
ap.valid = TRUE;
|
||||
}
|
||||
if (trial_ap.valid == FALSE) ActionNameLists::mark_for_deletion(entry);
|
||||
|
@ -652,7 +654,8 @@ description.
|
|||
}
|
||||
|
||||
@<Fill out the noun, second, room and nowhere fields of the AP as if this action were right@> =
|
||||
trial_ap.noun_spec = NULL; trial_ap.second_spec = NULL; trial_ap.room_spec = NULL; trial_ap.nowhere_flag = FALSE;
|
||||
trial_ap.ap_clauses = NULL;
|
||||
APClauses::set_room(&trial_ap, NULL); trial_ap.nowhere_flag = FALSE;
|
||||
if (Wordings::nonempty(ActionNameLists::par(entry, 0))) {
|
||||
if ((ActionNameLists::action(entry) == going_action) && (<going-action-irregular-operand>(ActionNameLists::par(entry, 0)))) {
|
||||
if (<<r>> == FALSE) trial_ap.nowhere_flag = TRUE;
|
||||
|
@ -665,8 +668,9 @@ description.
|
|||
&& (K_understanding)
|
||||
&& (Kinds::eq(ActionSemantics::kind_of_second(ActionNameLists::action(entry)), K_understanding))
|
||||
&& (<understanding-action-irregular-operand>(ActionNameLists::par(entry, 1)))) {
|
||||
trial_ap.second_spec = Rvalues::from_grammar_verb(NULL); /* Why no GV here? */
|
||||
Node::set_text(trial_ap.second_spec, ActionNameLists::par(entry, 1));
|
||||
parse_node *val = Rvalues::from_grammar_verb(NULL); /* Why no GV here? */
|
||||
Node::set_text(val, ActionNameLists::par(entry, 1));
|
||||
APClauses::set_second(&trial_ap, val);
|
||||
} else {
|
||||
ActionPatterns::put_action_object_into_ap(&trial_ap, 2, ActionNameLists::par(entry, 1));
|
||||
}
|
||||
|
@ -684,14 +688,11 @@ description.
|
|||
check_s = ActionSemantics::kind_of_second(ActionNameLists::action(entry));
|
||||
}
|
||||
trial_ap.valid = TRUE;
|
||||
if ((trial_ap.noun_any == FALSE) &&
|
||||
(Dash::validate_parameter(trial_ap.noun_spec, check_n) == FALSE))
|
||||
if (APClauses::validate(APClauses::clause(&trial_ap, NOUN_AP_CLAUSE), check_n) == FALSE)
|
||||
trial_ap.valid = FALSE;
|
||||
if ((trial_ap.second_any == FALSE) &&
|
||||
(Dash::validate_parameter(trial_ap.second_spec, check_s) == FALSE))
|
||||
if (APClauses::validate(APClauses::clause(&trial_ap, SECOND_AP_CLAUSE), check_s) == FALSE)
|
||||
trial_ap.valid = FALSE;
|
||||
if ((trial_ap.room_any == FALSE) &&
|
||||
(Dash::validate_parameter(trial_ap.room_spec, K_object) == FALSE))
|
||||
if (APClauses::validate(APClauses::clause(&trial_ap, IN_AP_CLAUSE), K_object) == FALSE)
|
||||
trial_ap.valid = FALSE;
|
||||
|
||||
@<Adjudicate between topic and other actions@> =
|
||||
|
|
|
@ -45,6 +45,7 @@ Chapter 4: Actions
|
|||
Action Name Names
|
||||
Action Name Lists
|
||||
Action Patterns
|
||||
Action Pattern Clauses
|
||||
Parse Action Patterns
|
||||
Named Action Patterns
|
||||
|
||||
|
|
|
@ -6,9 +6,9 @@ Compiling APs.
|
|||
|
||||
=
|
||||
void RTActionPatterns::emit_try(action_pattern *ap, int store_instead) {
|
||||
parse_node *spec0 = ap->noun_spec; /* the noun */
|
||||
parse_node *spec1 = ap->second_spec; /* the second noun */
|
||||
parse_node *spec2 = ap->actor_spec; /* the actor */
|
||||
parse_node *spec0 = APClauses::get_noun(ap); /* the noun */
|
||||
parse_node *spec1 = APClauses::get_second(ap); /* the second noun */
|
||||
parse_node *spec2 = APClauses::get_actor(ap); /* the actor */
|
||||
|
||||
if ((K_understanding) && (Rvalues::is_CONSTANT_of_kind(spec0, K_understanding)) &&
|
||||
(<subject-pronoun>(Node::get_text(spec0)) == FALSE))
|
||||
|
@ -278,28 +278,28 @@ void RTActionPatterns::as_stored_action(value_holster *VH, action_pattern *ap) {
|
|||
Emit::array_action_entry(an);
|
||||
|
||||
int request_bits = ap->request;
|
||||
if (ap->noun_spec) {
|
||||
if ((K_understanding) && (Rvalues::is_CONSTANT_of_kind(ap->noun_spec, K_understanding))) {
|
||||
if (APClauses::get_noun(ap)) {
|
||||
if ((K_understanding) && (Rvalues::is_CONSTANT_of_kind(APClauses::get_noun(ap), K_understanding))) {
|
||||
request_bits = request_bits | 16;
|
||||
TEMPORARY_TEXT(BC)
|
||||
literal_text *lt = TextLiterals::compile_literal(NULL, FALSE, Node::get_text(ap->noun_spec));
|
||||
literal_text *lt = TextLiterals::compile_literal(NULL, FALSE, Node::get_text(APClauses::get_noun(ap)));
|
||||
Emit::array_iname_entry(lt->lt_sba_iname);
|
||||
DISCARD_TEXT(BC)
|
||||
} else Specifications::Compiler::emit(ap->noun_spec);
|
||||
} else Specifications::Compiler::emit(APClauses::get_noun(ap));
|
||||
} else {
|
||||
Emit::array_numeric_entry(0);
|
||||
}
|
||||
if (ap->second_spec) {
|
||||
if ((K_understanding) && (Rvalues::is_CONSTANT_of_kind(ap->second_spec, K_understanding))) {
|
||||
if (APClauses::get_second(ap)) {
|
||||
if ((K_understanding) && (Rvalues::is_CONSTANT_of_kind(APClauses::get_second(ap), K_understanding))) {
|
||||
request_bits = request_bits | 32;
|
||||
literal_text *lt = TextLiterals::compile_literal(NULL, TRUE, Node::get_text(ap->second_spec));
|
||||
literal_text *lt = TextLiterals::compile_literal(NULL, TRUE, Node::get_text(APClauses::get_second(ap)));
|
||||
Emit::array_iname_entry(lt->lt_sba_iname);
|
||||
} else Specifications::Compiler::emit(ap->second_spec);
|
||||
} else Specifications::Compiler::emit(APClauses::get_second(ap));
|
||||
} else {
|
||||
Emit::array_numeric_entry(0);
|
||||
}
|
||||
if (ap->actor_spec) {
|
||||
Specifications::Compiler::emit(ap->actor_spec);
|
||||
if (APClauses::get_actor(ap)) {
|
||||
Specifications::Compiler::emit(APClauses::get_actor(ap));
|
||||
} else
|
||||
Emit::array_iname_entry(RTInstances::iname(I_yourself));
|
||||
Emit::array_numeric_entry((inter_ti) request_bits);
|
||||
|
@ -356,7 +356,7 @@ void RTActionPatterns::emit_pattern_match(action_pattern ap, int naming_mode) {
|
|||
=
|
||||
void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern ap, int naming_mode) {
|
||||
int cpm_count = 0, needed[MAX_CPM_CLAUSES];
|
||||
ap_optional_clause *needed_apoc[MAX_CPM_CLAUSES];
|
||||
ap_clause *needed_apoc[MAX_CPM_CLAUSES];
|
||||
LOGIF(ACTION_PATTERN_COMPILATION, "Compiling action pattern:\n $A", &ap);
|
||||
|
||||
if (ap.duration) {
|
||||
|
@ -368,11 +368,11 @@ void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern a
|
|||
if (naming_mode == FALSE) {
|
||||
if (ap.applies_to_any_actor == FALSE) {
|
||||
int impose = FALSE;
|
||||
if (ap.actor_spec != NULL) {
|
||||
if (APClauses::get_actor(&ap) != NULL) {
|
||||
impose = TRUE;
|
||||
nonlocal_variable *var = Lvalues::get_nonlocal_variable_if_any(ap.actor_spec);
|
||||
nonlocal_variable *var = Lvalues::get_nonlocal_variable_if_any(APClauses::get_actor(&ap));
|
||||
if ((var) && (var == player_VAR)) impose = FALSE;
|
||||
instance *I = Rvalues::to_object_instance(ap.actor_spec);
|
||||
instance *I = Rvalues::to_object_instance(APClauses::get_actor(&ap));
|
||||
if ((I) && (I == I_yourself)) impose = FALSE;
|
||||
}
|
||||
if (impose) {
|
||||
|
@ -382,7 +382,7 @@ void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern a
|
|||
} else {
|
||||
CPMC_NEEDED(REQUESTER_DOESNT_EXIST_CPMC, NULL);
|
||||
}
|
||||
if (ap.actor_spec) {
|
||||
if (APClauses::get_actor(&ap)) {
|
||||
CPMC_NEEDED(ACTOR_MATCHES_CPMC, NULL);
|
||||
}
|
||||
} else {
|
||||
|
@ -399,11 +399,11 @@ void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern a
|
|||
if (ActionNameLists::testing(ap.action_list)) {
|
||||
CPMC_NEEDED(ACTION_MATCHES_CPMC, NULL);
|
||||
}
|
||||
if ((ap.action_list == NULL) && (ap.noun_spec)) {
|
||||
if ((ap.action_list == NULL) && (APClauses::get_noun(&ap))) {
|
||||
CPMC_NEEDED(NOUN_EXISTS_CPMC, NULL);
|
||||
CPMC_NEEDED(NOUN_IS_INP1_CPMC, NULL);
|
||||
}
|
||||
if ((ap.action_list == NULL) && (ap.second_spec)) {
|
||||
if ((ap.action_list == NULL) && (APClauses::get_second(&ap))) {
|
||||
CPMC_NEEDED(SECOND_EXISTS_CPMC, NULL);
|
||||
CPMC_NEEDED(SECOND_IS_INP1_CPMC, NULL);
|
||||
}
|
||||
|
@ -414,11 +414,11 @@ void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern a
|
|||
}
|
||||
|
||||
if (Kinds::Behaviour::is_object(kind_of_noun)) {
|
||||
if (ap.noun_spec) {
|
||||
if (APClauses::get_noun(&ap)) {
|
||||
CPMC_NEEDED(NOUN_MATCHES_AS_OBJECT_CPMC, NULL);
|
||||
}
|
||||
} else {
|
||||
if (ap.noun_spec) {
|
||||
if (APClauses::get_noun(&ap)) {
|
||||
CPMC_NEEDED(NOUN_MATCHES_AS_VALUE_CPMC, NULL);
|
||||
}
|
||||
}
|
||||
|
@ -427,18 +427,18 @@ void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern a
|
|||
if (kind_of_second == NULL) kind_of_second = K_object;
|
||||
}
|
||||
if (Kinds::Behaviour::is_object(kind_of_second)) {
|
||||
if (ap.second_spec) {
|
||||
if (APClauses::get_second(&ap)) {
|
||||
CPMC_NEEDED(SECOND_MATCHES_AS_OBJECT_CPMC, NULL);
|
||||
}
|
||||
} else {
|
||||
if (ap.second_spec) {
|
||||
if (APClauses::get_second(&ap)) {
|
||||
CPMC_NEEDED(SECOND_MATCHES_AS_VALUE_CPMC, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
if (ap.room_spec) {
|
||||
if (APClauses::get_room(&ap)) {
|
||||
if ((ap.applies_to_any_actor == FALSE) && (naming_mode == FALSE) &&
|
||||
(ap.actor_spec == NULL)) {
|
||||
(APClauses::get_actor(&ap) == NULL)) {
|
||||
CPMC_NEEDED(PLAYER_LOCATION_MATCHES_CPMC, NULL);
|
||||
} else {
|
||||
CPMC_NEEDED(ACTOR_IN_RIGHT_PLACE_CPMC, NULL);
|
||||
|
@ -450,7 +450,7 @@ void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern a
|
|||
CPMC_NEEDED(PARAMETER_MATCHES_CPMC, NULL);
|
||||
}
|
||||
|
||||
ap_optional_clause *apoc = ap.ap_clauses;
|
||||
ap_clause *apoc = ap.ap_clauses;
|
||||
while (apoc) {
|
||||
if ((apoc->clause_ID == STV_AP_CLAUSE) && (apoc->clause_spec)) {
|
||||
CPMC_NEEDED(OPTIONAL_CLAUSE_CPMC, apoc);
|
||||
|
@ -472,14 +472,14 @@ void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern a
|
|||
}
|
||||
}
|
||||
|
||||
if (ActionPatterns::get_presence(&ap) != NULL) {
|
||||
if (APClauses::get_presence(&ap) != NULL) {
|
||||
instance *to_be_present =
|
||||
Specifications::object_exactly_described_if_any(ActionPatterns::get_presence(&ap));
|
||||
Specifications::object_exactly_described_if_any(APClauses::get_presence(&ap));
|
||||
if (to_be_present) {
|
||||
CPMC_NEEDED(PRESENCE_OF_MATCHES_CPMC, NULL);
|
||||
CPMC_NEEDED(PRESENCE_OF_IN_SCOPE_CPMC, NULL);
|
||||
} else {
|
||||
wording PC = Descriptions::get_calling(ActionPatterns::get_presence(&ap));
|
||||
wording PC = Descriptions::get_calling(APClauses::get_presence(&ap));
|
||||
if (Wordings::nonempty(PC)) {
|
||||
CPMC_NEEDED(LOOP_OVER_SCOPE_WITH_CALLING_CPMC, NULL);
|
||||
} else {
|
||||
|
@ -487,7 +487,7 @@ void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern a
|
|||
}
|
||||
}
|
||||
}
|
||||
if (ap.when != NULL) {
|
||||
if (APClauses::get_val(&ap, WHEN_AP_CLAUSE) != NULL) {
|
||||
CPMC_NEEDED(SET_SELF_TO_ACTOR_CPMC, NULL);
|
||||
CPMC_NEEDED(WHEN_CONDITION_HOLDS_CPMC, NULL);
|
||||
}
|
||||
|
@ -606,7 +606,7 @@ void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern a
|
|||
Produce::inv_primitive(Emit::tree(), AND_BIP);
|
||||
Produce::down(Emit::tree()); downs++;
|
||||
}
|
||||
ap_optional_clause *apoc = needed_apoc[i];
|
||||
ap_clause *apoc = needed_apoc[i];
|
||||
@<Emit CPM condition piece@>;
|
||||
}
|
||||
}
|
||||
|
@ -643,7 +643,7 @@ void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern a
|
|||
Produce::up(Emit::tree());
|
||||
break;
|
||||
case ACTOR_MATCHES_CPMC:
|
||||
RTActionPatterns::compile_pattern_match_clause(f, VH, I6_actor_VAR, ap.actor_spec, K_object, FALSE);
|
||||
RTActionPatterns::compile_pattern_match_clause(f, VH, I6_actor_VAR, APClauses::get_actor(&ap), K_object, FALSE);
|
||||
break;
|
||||
case ACTION_MATCHES_CPMC:
|
||||
RTActions::emit_anl(ap.action_list);
|
||||
|
@ -669,25 +669,25 @@ void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern a
|
|||
Produce::up(Emit::tree());
|
||||
break;
|
||||
case NOUN_MATCHES_AS_OBJECT_CPMC:
|
||||
RTActionPatterns::compile_pattern_match_clause(f, VH, I6_noun_VAR, ap.noun_spec,
|
||||
RTActionPatterns::compile_pattern_match_clause(f, VH, I6_noun_VAR, APClauses::get_noun(&ap),
|
||||
kind_of_noun, FALSE);
|
||||
break;
|
||||
case NOUN_MATCHES_AS_VALUE_CPMC:
|
||||
RTActionPatterns::compile_pattern_match_clause(f, VH,
|
||||
RTTemporaryVariables::from_iname(Hierarchy::find(PARSED_NUMBER_HL), kind_of_noun),
|
||||
ap.noun_spec, kind_of_noun, FALSE);
|
||||
APClauses::get_noun(&ap), kind_of_noun, FALSE);
|
||||
break;
|
||||
case SECOND_MATCHES_AS_OBJECT_CPMC:
|
||||
RTActionPatterns::compile_pattern_match_clause(f, VH, I6_second_VAR, ap.second_spec,
|
||||
RTActionPatterns::compile_pattern_match_clause(f, VH, I6_second_VAR, APClauses::get_second(&ap),
|
||||
kind_of_second, FALSE);
|
||||
break;
|
||||
case SECOND_MATCHES_AS_VALUE_CPMC:
|
||||
RTActionPatterns::compile_pattern_match_clause(f, VH,
|
||||
RTTemporaryVariables::from_iname(Hierarchy::find(PARSED_NUMBER_HL), kind_of_second),
|
||||
ap.second_spec, kind_of_second, FALSE);
|
||||
APClauses::get_second(&ap), kind_of_second, FALSE);
|
||||
break;
|
||||
case PLAYER_LOCATION_MATCHES_CPMC:
|
||||
RTActionPatterns::compile_pattern_match_clause(f, VH, real_location_VAR, ap.room_spec, K_object, TRUE);
|
||||
RTActionPatterns::compile_pattern_match_clause(f, VH, real_location_VAR, APClauses::get_room(&ap), K_object, TRUE);
|
||||
break;
|
||||
case ACTOR_IN_RIGHT_PLACE_CPMC:
|
||||
Produce::inv_primitive(Emit::tree(), STORE_BIP);
|
||||
|
@ -701,7 +701,7 @@ void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern a
|
|||
break;
|
||||
case ACTOR_LOCATION_MATCHES_CPMC:
|
||||
RTActionPatterns::compile_pattern_match_clause(f,
|
||||
VH, actor_location_VAR, ap.room_spec, K_object, TRUE);
|
||||
VH, actor_location_VAR, APClauses::get_room(&ap), K_object, TRUE);
|
||||
break;
|
||||
case PARAMETER_MATCHES_CPMC: {
|
||||
kind *saved_kind = NonlocalVariables::kind(parameter_object_VAR);
|
||||
|
@ -715,7 +715,7 @@ void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern a
|
|||
kind *K = StackedVariables::get_kind(apoc->stv_to_match);
|
||||
RTActionPatterns::compile_pattern_match_clause(f, VH,
|
||||
RTTemporaryVariables::from_existing_variable(apoc->stv_to_match->underlying_var, K),
|
||||
apoc->clause_spec, K, ((apoc->clause_options) & ALLOW_REGION_AS_ROOM_APCOPT)?TRUE:FALSE);
|
||||
apoc->clause_spec, K, APClauses::opt(apoc, ALLOW_REGION_AS_ROOM_APCOPT));
|
||||
break;
|
||||
}
|
||||
case NOWHERE_CPMC:
|
||||
|
@ -758,15 +758,15 @@ void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern a
|
|||
break;
|
||||
case PRESENCE_OF_MATCHES_CPMC: {
|
||||
instance *to_be_present =
|
||||
Specifications::object_exactly_described_if_any(ActionPatterns::get_presence(&ap));
|
||||
Specifications::object_exactly_described_if_any(APClauses::get_presence(&ap));
|
||||
RTActionPatterns::compile_pattern_match_clause(FALSE, VH,
|
||||
RTTemporaryVariables::from_iname(RTInstances::iname(to_be_present), K_object),
|
||||
ActionPatterns::get_presence(&ap), K_object, FALSE);
|
||||
APClauses::get_presence(&ap), K_object, FALSE);
|
||||
break;
|
||||
}
|
||||
case PRESENCE_OF_IN_SCOPE_CPMC: {
|
||||
instance *to_be_present =
|
||||
Specifications::object_exactly_described_if_any(ActionPatterns::get_presence(&ap));
|
||||
Specifications::object_exactly_described_if_any(APClauses::get_presence(&ap));
|
||||
Produce::inv_call_iname(Emit::tree(), Hierarchy::find(TESTSCOPE_HL));
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val_iname(Emit::tree(), K_value, RTInstances::iname(to_be_present));
|
||||
|
@ -775,10 +775,10 @@ void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern a
|
|||
break;
|
||||
}
|
||||
case LOOP_OVER_SCOPE_WITH_CALLING_CPMC: {
|
||||
loop_over_scope *los = LoopingOverScope::new(ActionPatterns::get_presence(&ap));
|
||||
wording PC = Descriptions::get_calling(ActionPatterns::get_presence(&ap));
|
||||
loop_over_scope *los = LoopingOverScope::new(APClauses::get_presence(&ap));
|
||||
wording PC = Descriptions::get_calling(APClauses::get_presence(&ap));
|
||||
local_variable *lvar = LocalVariables::ensure_called_local(PC,
|
||||
Specifications::to_kind(ActionPatterns::get_presence(&ap)));
|
||||
Specifications::to_kind(APClauses::get_presence(&ap)));
|
||||
inter_symbol *lvar_s = LocalVariables::declare_this(lvar, FALSE, 8);
|
||||
Produce::inv_primitive(Emit::tree(), SEQUENTIAL_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
|
@ -804,7 +804,7 @@ void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern a
|
|||
break;
|
||||
}
|
||||
case LOOP_OVER_SCOPE_WITHOUT_CALLING_CPMC: {
|
||||
loop_over_scope *los = LoopingOverScope::new(ActionPatterns::get_presence(&ap));
|
||||
loop_over_scope *los = LoopingOverScope::new(APClauses::get_presence(&ap));
|
||||
Produce::inv_primitive(Emit::tree(), SEQUENTIAL_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::inv_primitive(Emit::tree(), STORE_BIP);
|
||||
|
@ -836,7 +836,7 @@ void RTActionPatterns::compile_pattern_match(value_holster *VH, action_pattern a
|
|||
Produce::up(Emit::tree());
|
||||
break;
|
||||
case WHEN_CONDITION_HOLDS_CPMC:
|
||||
Specifications::Compiler::emit_as_val(K_value, ap.when);
|
||||
Specifications::Compiler::emit_as_val(K_value, APClauses::get_val(&ap, WHEN_AP_CLAUSE));
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -845,10 +845,10 @@ void RTActionPatterns::emit_past_tense(action_pattern *ap) {
|
|||
int bad_form = FALSE;
|
||||
Produce::inv_call_iname(Emit::tree(), Hierarchy::find(TESTACTIONBITMAP_HL));
|
||||
Produce::down(Emit::tree());
|
||||
if (ap->noun_spec == NULL)
|
||||
if (APClauses::get_noun(ap) == NULL)
|
||||
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, 0);
|
||||
else
|
||||
Specifications::Compiler::emit_as_val(K_value, ap->noun_spec);
|
||||
Specifications::Compiler::emit_as_val(K_value, APClauses::get_noun(ap));
|
||||
int L = ActionNameLists::length(ap->action_list);
|
||||
if (L == 0)
|
||||
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, (inter_ti) -1);
|
||||
|
@ -861,14 +861,14 @@ void RTActionPatterns::emit_past_tense(action_pattern *ap) {
|
|||
}
|
||||
Produce::up(Emit::tree());
|
||||
|
||||
if (ActionPatterns::pta_acceptable(ap->noun_spec) == FALSE) bad_form = TRUE;
|
||||
if (ActionPatterns::pta_acceptable(ap->second_spec) == FALSE) bad_form = TRUE;
|
||||
if (ActionPatterns::pta_acceptable(ap->actor_spec) == FALSE) bad_form = TRUE;
|
||||
if (ap->room_spec) bad_form = TRUE;
|
||||
if (ActionPatterns::pta_acceptable(APClauses::get_noun(ap)) == FALSE) bad_form = TRUE;
|
||||
if (ActionPatterns::pta_acceptable(APClauses::get_second(ap)) == FALSE) bad_form = TRUE;
|
||||
if (ActionPatterns::pta_acceptable(APClauses::get_actor(ap)) == FALSE) bad_form = TRUE;
|
||||
if (APClauses::get_room(ap)) bad_form = TRUE;
|
||||
if (ap->parameter_spec) bad_form = TRUE;
|
||||
if (ActionPatterns::get_presence(ap)) bad_form = TRUE;
|
||||
if (ap->when) bad_form = TRUE;
|
||||
if (ActionPatterns::has_stv_clauses(ap)) bad_form = TRUE;
|
||||
if (APClauses::get_presence(ap)) bad_form = TRUE;
|
||||
if (APClauses::get_val(ap, WHEN_AP_CLAUSE)) bad_form = TRUE;
|
||||
if (APClauses::has_stv_clauses(ap)) bad_form = TRUE;
|
||||
|
||||
if (bad_form)
|
||||
@<Issue too complex PT problem@>;
|
||||
|
|
|
@ -510,8 +510,8 @@ result.
|
|||
permit_trying_omission = pto;
|
||||
if (r) {
|
||||
action_pattern *ap = <<rp>>;
|
||||
if ((ap->actor_spec) &&
|
||||
(Dash::validate_parameter(ap->actor_spec, K_person) == FALSE)) {
|
||||
if ((APClauses::get_actor(ap)) &&
|
||||
(Dash::validate_parameter(APClauses::get_actor(ap), K_person) == FALSE)) {
|
||||
r = <action-pattern>(W);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue